From 398eec2a3b7313694b3ff5ff271b8ffeba780ef9 Mon Sep 17 00:00:00 2001
From: Sibidharan <sibidharan@icloud.com>
Date: Tue, 29 Nov 2022 17:42:53 +0000
Subject: [PATCH] image upload done; masonry wip

---
 .vscode/tasks.json                            |   12 +
 htdocs/_templates/_head.php                   |    2 +
 htdocs/_templates/index/calltoaction.php      |   10 +-
 htdocs/_templates/index/photogram.php         |  236 +-
 htdocs/composer.json                          |    5 +
 htdocs/composer.lock                          |  464 ++
 htdocs/libs/app/Post.class.php                |   15 +-
 htdocs/libs/includes/Session.class.php        |   19 +
 htdocs/libs/load.php                          |    2 +
 htdocs/test.php                               |   12 +-
 htdocs/vendor/autoload.php                    |   25 +
 htdocs/vendor/bin/carbon                      |  120 +
 htdocs/vendor/composer/ClassLoader.php        |  572 ++
 htdocs/vendor/composer/InstalledVersions.php  |  352 ++
 htdocs/vendor/composer/LICENSE                |   21 +
 htdocs/vendor/composer/autoload_classmap.php  |   15 +
 htdocs/vendor/composer/autoload_files.php     |   12 +
 .../vendor/composer/autoload_namespaces.php   |    9 +
 htdocs/vendor/composer/autoload_psr4.php      |   14 +
 htdocs/vendor/composer/autoload_real.php      |   57 +
 htdocs/vendor/composer/autoload_static.php    |   70 +
 htdocs/vendor/composer/installed.json         |  466 ++
 htdocs/vendor/composer/installed.php          |   74 +
 htdocs/vendor/composer/platform_check.php     |   26 +
 htdocs/vendor/nesbot/carbon/LICENSE           |   19 +
 htdocs/vendor/nesbot/carbon/bin/carbon        |   23 +
 htdocs/vendor/nesbot/carbon/bin/carbon.bat    |    4 +
 htdocs/vendor/nesbot/carbon/composer.json     |  120 +
 htdocs/vendor/nesbot/carbon/extension.neon    |    5 +
 .../Carbon/PHPStan/AbstractMacroBuiltin.php   |   36 +
 .../Carbon/PHPStan/AbstractMacroStatic.php    |   45 +
 .../lazy/Carbon/PHPStan/MacroStrongType.php   |   45 +
 .../lazy/Carbon/PHPStan/MacroWeakType.php     |   51 +
 .../lazy/Carbon/TranslatorStrongType.php      |   52 +
 .../carbon/lazy/Carbon/TranslatorWeakType.php |   32 +
 htdocs/vendor/nesbot/carbon/readme.md         |  153 +
 .../carbon/src/Carbon/AbstractTranslator.php  |  397 ++
 .../nesbot/carbon/src/Carbon/Carbon.php       |  523 ++
 .../src/Carbon/CarbonConverterInterface.php   |   19 +
 .../carbon/src/Carbon/CarbonImmutable.php     |  582 ++
 .../carbon/src/Carbon/CarbonInterface.php     | 5078 +++++++++++++++++
 .../carbon/src/Carbon/CarbonInterval.php      | 2807 +++++++++
 .../nesbot/carbon/src/Carbon/CarbonPeriod.php | 2653 +++++++++
 .../carbon/src/Carbon/CarbonTimeZone.php      |  320 ++
 .../nesbot/carbon/src/Carbon/Cli/Invoker.php  |   38 +
 .../Carbon/Doctrine/CarbonDoctrineType.php    |   23 +
 .../Carbon/Doctrine/CarbonImmutableType.php   |   37 +
 .../carbon/src/Carbon/Doctrine/CarbonType.php |   37 +
 .../Carbon/Doctrine/CarbonTypeConverter.php   |  123 +
 .../Doctrine/DateTimeDefaultPrecision.php     |   37 +
 .../Carbon/Doctrine/DateTimeImmutableType.php |   24 +
 .../src/Carbon/Doctrine/DateTimeType.php      |   16 +
 .../Exceptions/BadComparisonUnitException.php |   48 +
 .../BadFluentConstructorException.php         |   49 +
 .../Exceptions/BadFluentSetterException.php   |   49 +
 .../Exceptions/BadMethodCallException.php     |   17 +
 .../Exceptions/EndLessPeriodException.php     |   19 +
 .../src/Carbon/Exceptions/Exception.php       |   17 +
 .../Carbon/Exceptions/ImmutableException.php  |   48 +
 .../Exceptions/InvalidArgumentException.php   |   17 +
 .../Exceptions/InvalidCastException.php       |   19 +
 .../Exceptions/InvalidDateException.php       |   67 +
 .../Exceptions/InvalidFormatException.php     |   19 +
 .../Exceptions/InvalidIntervalException.php   |   19 +
 .../Exceptions/InvalidPeriodDateException.php |   19 +
 .../InvalidPeriodParameterException.php       |   19 +
 .../Exceptions/InvalidTimeZoneException.php   |   19 +
 .../Exceptions/InvalidTypeException.php       |   19 +
 .../Exceptions/NotACarbonClassException.php   |   50 +
 .../Carbon/Exceptions/NotAPeriodException.php |   19 +
 .../Exceptions/NotLocaleAwareException.php    |   32 +
 .../Carbon/Exceptions/OutOfRangeException.php |  101 +
 .../Carbon/Exceptions/ParseErrorException.php |   88 +
 .../Carbon/Exceptions/RuntimeException.php    |   17 +
 .../src/Carbon/Exceptions/UnitException.php   |   19 +
 .../Exceptions/UnitNotConfiguredException.php |   48 +
 .../Exceptions/UnknownGetterException.php     |   49 +
 .../Exceptions/UnknownMethodException.php     |   49 +
 .../Exceptions/UnknownSetterException.php     |   49 +
 .../Exceptions/UnknownUnitException.php       |   48 +
 .../Exceptions/UnreachableException.php       |   19 +
 .../nesbot/carbon/src/Carbon/Factory.php      |  326 ++
 .../carbon/src/Carbon/FactoryImmutable.php    |  243 +
 .../nesbot/carbon/src/Carbon/Lang/aa.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/aa_DJ.php   |   44 +
 .../nesbot/carbon/src/Carbon/Lang/aa_ER.php   |   28 +
 .../carbon/src/Carbon/Lang/aa_ER@saaho.php    |   28 +
 .../nesbot/carbon/src/Carbon/Lang/aa_ET.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/af.php      |   79 +
 .../nesbot/carbon/src/Carbon/Lang/af_NA.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/af_ZA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/agq.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/agr.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/agr_PE.php  |   44 +
 .../nesbot/carbon/src/Carbon/Lang/ak.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ak_GH.php   |   40 +
 .../nesbot/carbon/src/Carbon/Lang/am.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/am_ET.php   |   58 +
 .../nesbot/carbon/src/Carbon/Lang/an.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/an_ES.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/anp.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/anp_IN.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar.php      |   93 +
 .../nesbot/carbon/src/Carbon/Lang/ar_AE.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_BH.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_DJ.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_DZ.php   |   92 +
 .../nesbot/carbon/src/Carbon/Lang/ar_EG.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_EH.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_ER.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_IL.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_IN.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/ar_IQ.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_JO.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_KM.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_KW.php   |   93 +
 .../nesbot/carbon/src/Carbon/Lang/ar_LB.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_LY.php   |   92 +
 .../nesbot/carbon/src/Carbon/Lang/ar_MA.php   |   92 +
 .../nesbot/carbon/src/Carbon/Lang/ar_MR.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_OM.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_PS.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_QA.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_SA.php   |   92 +
 .../nesbot/carbon/src/Carbon/Lang/ar_SD.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_SO.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_SS.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ar_SY.php   |   27 +
 .../carbon/src/Carbon/Lang/ar_Shakl.php       |   95 +
 .../nesbot/carbon/src/Carbon/Lang/ar_TD.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ar_TN.php   |   91 +
 .../nesbot/carbon/src/Carbon/Lang/ar_YE.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/as.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/as_IN.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/asa.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ast.php     |   59 +
 .../nesbot/carbon/src/Carbon/Lang/ast_ES.php  |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ayc.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ayc_PE.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/az.php      |  128 +
 .../nesbot/carbon/src/Carbon/Lang/az_AZ.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/az_Cyrl.php |   20 +
 .../nesbot/carbon/src/Carbon/Lang/az_IR.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/az_Latn.php |   29 +
 .../nesbot/carbon/src/Carbon/Lang/bas.php     |   32 +
 .../nesbot/carbon/src/Carbon/Lang/be.php      |  173 +
 .../nesbot/carbon/src/Carbon/Lang/be_BY.php   |   22 +
 .../carbon/src/Carbon/Lang/be_BY@latin.php    |   27 +
 .../nesbot/carbon/src/Carbon/Lang/bem.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/bem_ZM.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/ber.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ber_DZ.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ber_MA.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/bez.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/bg.php      |  114 +
 .../nesbot/carbon/src/Carbon/Lang/bg_BG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/bhb.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/bhb_IN.php  |   26 +
 .../nesbot/carbon/src/Carbon/Lang/bho.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/bho_IN.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/bi.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/bi_VU.php   |   53 +
 .../nesbot/carbon/src/Carbon/Lang/bm.php      |   70 +
 .../nesbot/carbon/src/Carbon/Lang/bn.php      |  100 +
 .../nesbot/carbon/src/Carbon/Lang/bn_BD.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/bn_IN.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/bo.php      |   71 +
 .../nesbot/carbon/src/Carbon/Lang/bo_CN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/bo_IN.php   |   29 +
 .../nesbot/carbon/src/Carbon/Lang/br.php      |   76 +
 .../nesbot/carbon/src/Carbon/Lang/br_FR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/brx.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/brx_IN.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/bs.php      |   97 +
 .../nesbot/carbon/src/Carbon/Lang/bs_BA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php |   28 +
 .../nesbot/carbon/src/Carbon/Lang/bs_Latn.php |   13 +
 .../nesbot/carbon/src/Carbon/Lang/byn.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/byn_ER.php  |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ca.php      |  117 +
 .../nesbot/carbon/src/Carbon/Lang/ca_AD.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ca_ES.php   |   12 +
 .../carbon/src/Carbon/Lang/ca_ES_Valencia.php |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ca_FR.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ca_IT.php   |   13 +
 .../nesbot/carbon/src/Carbon/Lang/ccp.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ccp_IN.php  |   14 +
 .../nesbot/carbon/src/Carbon/Lang/ce.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ce_RU.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/cgg.php     |   31 +
 .../nesbot/carbon/src/Carbon/Lang/chr.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/chr_US.php  |   58 +
 .../nesbot/carbon/src/Carbon/Lang/ckb.php     |   89 +
 .../nesbot/carbon/src/Carbon/Lang/cmn.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/cmn_TW.php  |   54 +
 .../nesbot/carbon/src/Carbon/Lang/crh.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/crh_UA.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/cs.php      |  123 +
 .../nesbot/carbon/src/Carbon/Lang/cs_CZ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/csb.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/csb_PL.php  |   41 +
 .../nesbot/carbon/src/Carbon/Lang/cu.php      |   52 +
 .../nesbot/carbon/src/Carbon/Lang/cv.php      |   65 +
 .../nesbot/carbon/src/Carbon/Lang/cv_RU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/cy.php      |   79 +
 .../nesbot/carbon/src/Carbon/Lang/cy_GB.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/da.php      |   81 +
 .../nesbot/carbon/src/Carbon/Lang/da_DK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/da_GL.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/dav.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/de.php      |  117 +
 .../nesbot/carbon/src/Carbon/Lang/de_AT.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/de_BE.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/de_CH.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/de_DE.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/de_IT.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/de_LI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/de_LU.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/dje.php     |   40 +
 .../nesbot/carbon/src/Carbon/Lang/doi.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/doi_IN.php  |   31 +
 .../nesbot/carbon/src/Carbon/Lang/dsb.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/dsb_DE.php  |   60 +
 .../nesbot/carbon/src/Carbon/Lang/dua.php     |   56 +
 .../nesbot/carbon/src/Carbon/Lang/dv.php      |   89 +
 .../nesbot/carbon/src/Carbon/Lang/dv_MV.php   |   87 +
 .../nesbot/carbon/src/Carbon/Lang/dyo.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/dz.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/dz_BT.php   |   43 +
 .../nesbot/carbon/src/Carbon/Lang/ebu.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ee.php      |   56 +
 .../nesbot/carbon/src/Carbon/Lang/ee_TG.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/el.php      |   93 +
 .../nesbot/carbon/src/Carbon/Lang/el_CY.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/el_GR.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/en.php      |   87 +
 .../nesbot/carbon/src/Carbon/Lang/en_001.php  |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_150.php  |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_AG.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/en_AI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_AS.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_AT.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_AU.php   |   31 +
 .../nesbot/carbon/src/Carbon/Lang/en_BB.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_BE.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_BI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_BM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_BS.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_BW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_BZ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_CA.php   |   29 +
 .../nesbot/carbon/src/Carbon/Lang/en_CC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_CH.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_CK.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_CM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_CX.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_CY.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/en_DE.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_DG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_DK.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/en_DM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_ER.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_FI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_FJ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_FK.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_FM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GB.php   |   30 +
 .../nesbot/carbon/src/Carbon/Lang/en_GD.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GH.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_GU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_GY.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_HK.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/en_IE.php   |   31 +
 .../nesbot/carbon/src/Carbon/Lang/en_IL.php   |   29 +
 .../nesbot/carbon/src/Carbon/Lang/en_IM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_IN.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/en_IO.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_ISO.php  |   21 +
 .../nesbot/carbon/src/Carbon/Lang/en_JE.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_JM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_KE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_KI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_KN.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_KY.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_LC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_LR.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_LS.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MH.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_MO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_MP.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MS.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_MU.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MW.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_MY.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NA.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NF.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NG.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/en_NL.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NR.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NU.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_NZ.php   |   31 +
 .../nesbot/carbon/src/Carbon/Lang/en_PG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_PH.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/en_PK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_PN.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_PR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_PW.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_RW.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SB.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SD.php   |   15 +
 .../nesbot/carbon/src/Carbon/Lang/en_SE.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SG.php   |   24 +
 .../nesbot/carbon/src/Carbon/Lang/en_SH.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SI.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SL.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SS.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SX.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_SZ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_TC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_TK.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_TO.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_TT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_TV.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_TZ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_UG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_UM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_US.php   |   12 +
 .../carbon/src/Carbon/Lang/en_US_Posix.php    |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_VC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_VG.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_VI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_VU.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/en_WS.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/en_ZA.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/en_ZM.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/en_ZW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/eo.php      |   77 +
 .../nesbot/carbon/src/Carbon/Lang/es.php      |  121 +
 .../nesbot/carbon/src/Carbon/Lang/es_419.php  |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_AR.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_BO.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_BR.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_BZ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_CL.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_CO.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_CR.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_CU.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_DO.php   |   31 +
 .../nesbot/carbon/src/Carbon/Lang/es_EA.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_EC.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_ES.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/es_GQ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_GT.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_HN.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_IC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/es_MX.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/es_NI.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_PA.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_PE.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_PH.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/es_PR.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_PY.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/es_SV.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/es_US.php   |   38 +
 .../nesbot/carbon/src/Carbon/Lang/es_UY.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/es_VE.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/et.php      |   93 +
 .../nesbot/carbon/src/Carbon/Lang/et_EE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/eu.php      |   67 +
 .../nesbot/carbon/src/Carbon/Lang/eu_ES.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ewo.php     |   55 +
 .../nesbot/carbon/src/Carbon/Lang/fa.php      |   84 +
 .../nesbot/carbon/src/Carbon/Lang/fa_AF.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/fa_IR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ff.php      |   60 +
 .../nesbot/carbon/src/Carbon/Lang/ff_CM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ff_GN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ff_MR.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/ff_SN.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/fi.php      |   88 +
 .../nesbot/carbon/src/Carbon/Lang/fi_FI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fil.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/fil_PH.php  |   62 +
 .../nesbot/carbon/src/Carbon/Lang/fo.php      |   69 +
 .../nesbot/carbon/src/Carbon/Lang/fo_DK.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/fo_FO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr.php      |  123 +
 .../nesbot/carbon/src/Carbon/Lang/fr_BE.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/fr_BF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_BI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_BJ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_BL.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CA.php   |   25 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CD.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CH.php   |   24 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_CM.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/fr_DJ.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/fr_DZ.php   |   23 +
 .../nesbot/carbon/src/Carbon/Lang/fr_FR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_GA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_GF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_GN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_GP.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_GQ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_HT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_KM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_LU.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MA.php   |   15 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MC.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_ML.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MQ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MR.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/fr_MU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_NC.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_NE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_PF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_PM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_RE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_RW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_SC.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_SN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_SY.php   |   23 +
 .../nesbot/carbon/src/Carbon/Lang/fr_TD.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/fr_TG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_TN.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/fr_VU.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/fr_WF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fr_YT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/fur.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/fur_IT.php  |   39 +
 .../nesbot/carbon/src/Carbon/Lang/fy.php      |   76 +
 .../nesbot/carbon/src/Carbon/Lang/fy_DE.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/fy_NL.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ga.php      |   77 +
 .../nesbot/carbon/src/Carbon/Lang/ga_IE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/gd.php      |   75 +
 .../nesbot/carbon/src/Carbon/Lang/gd_GB.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/gez.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/gez_ER.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/gez_ET.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/gl.php      |   98 +
 .../nesbot/carbon/src/Carbon/Lang/gl_ES.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/gom.php     |   15 +
 .../carbon/src/Carbon/Lang/gom_Latn.php       |   79 +
 .../nesbot/carbon/src/Carbon/Lang/gsw.php     |   49 +
 .../nesbot/carbon/src/Carbon/Lang/gsw_CH.php  |   12 +
 .../nesbot/carbon/src/Carbon/Lang/gsw_FR.php  |   20 +
 .../nesbot/carbon/src/Carbon/Lang/gsw_LI.php  |   20 +
 .../nesbot/carbon/src/Carbon/Lang/gu.php      |   82 +
 .../nesbot/carbon/src/Carbon/Lang/gu_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/guz.php     |   47 +
 .../nesbot/carbon/src/Carbon/Lang/gv.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/gv_GB.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ha.php      |   60 +
 .../nesbot/carbon/src/Carbon/Lang/ha_GH.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ha_NE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ha_NG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/hak.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/hak_TW.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/haw.php     |   54 +
 .../nesbot/carbon/src/Carbon/Lang/he.php      |   86 +
 .../nesbot/carbon/src/Carbon/Lang/he_IL.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/hi.php      |   82 +
 .../nesbot/carbon/src/Carbon/Lang/hi_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/hif.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/hif_FJ.php  |   54 +
 .../nesbot/carbon/src/Carbon/Lang/hne.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/hne_IN.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/hr.php      |  111 +
 .../nesbot/carbon/src/Carbon/Lang/hr_BA.php   |   32 +
 .../nesbot/carbon/src/Carbon/Lang/hr_HR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/hsb.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/hsb_DE.php  |   60 +
 .../nesbot/carbon/src/Carbon/Lang/ht.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ht_HT.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/hu.php      |  118 +
 .../nesbot/carbon/src/Carbon/Lang/hu_HU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/hy.php      |   95 +
 .../nesbot/carbon/src/Carbon/Lang/hy_AM.php   |   24 +
 .../nesbot/carbon/src/Carbon/Lang/i18n.php    |   23 +
 .../nesbot/carbon/src/Carbon/Lang/ia.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ia_FR.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/id.php      |   92 +
 .../nesbot/carbon/src/Carbon/Lang/id_ID.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ig.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ig_NG.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ii.php      |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ik.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ik_CA.php   |   50 +
 .../nesbot/carbon/src/Carbon/Lang/in.php      |   12 +
 .../nesbot/carbon/src/Carbon/Lang/is.php      |   55 +
 .../nesbot/carbon/src/Carbon/Lang/is_IS.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/it.php      |  115 +
 .../nesbot/carbon/src/Carbon/Lang/it_CH.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/it_IT.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/it_SM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/it_VA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/iu.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/iu_CA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/iw.php      |   58 +
 .../nesbot/carbon/src/Carbon/Lang/ja.php      |  102 +
 .../nesbot/carbon/src/Carbon/Lang/ja_JP.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/jgo.php     |   13 +
 .../nesbot/carbon/src/Carbon/Lang/jmc.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/jv.php      |   71 +
 .../nesbot/carbon/src/Carbon/Lang/ka.php      |  204 +
 .../nesbot/carbon/src/Carbon/Lang/ka_GE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/kab.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/kab_DZ.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/kam.php     |   50 +
 .../nesbot/carbon/src/Carbon/Lang/kde.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/kea.php     |   49 +
 .../nesbot/carbon/src/Carbon/Lang/khq.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ki.php      |   55 +
 .../nesbot/carbon/src/Carbon/Lang/kk.php      |  103 +
 .../nesbot/carbon/src/Carbon/Lang/kk_KZ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/kkj.php     |   13 +
 .../nesbot/carbon/src/Carbon/Lang/kl.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/kl_GL.php   |   64 +
 .../nesbot/carbon/src/Carbon/Lang/kln.php     |   31 +
 .../nesbot/carbon/src/Carbon/Lang/km.php      |   71 +
 .../nesbot/carbon/src/Carbon/Lang/km_KH.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/kn.php      |   75 +
 .../nesbot/carbon/src/Carbon/Lang/kn_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ko.php      |   91 +
 .../nesbot/carbon/src/Carbon/Lang/ko_KP.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/ko_KR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/kok.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/kok_IN.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ks.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ks_IN.php   |   51 +
 .../src/Carbon/Lang/ks_IN@devanagari.php      |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ksb.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ksf.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ksh.php     |   57 +
 .../nesbot/carbon/src/Carbon/Lang/ku.php      |   40 +
 .../nesbot/carbon/src/Carbon/Lang/ku_TR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/kw.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/kw_GB.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ky.php      |  106 +
 .../nesbot/carbon/src/Carbon/Lang/ky_KG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/lag.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/lb.php      |   88 +
 .../nesbot/carbon/src/Carbon/Lang/lb_LU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/lg.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/lg_UG.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/li.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/li_NL.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/lij.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/lij_IT.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/lkt.php     |   41 +
 .../nesbot/carbon/src/Carbon/Lang/ln.php      |   60 +
 .../nesbot/carbon/src/Carbon/Lang/ln_AO.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/ln_CD.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/ln_CF.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/ln_CG.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/lo.php      |   62 +
 .../nesbot/carbon/src/Carbon/Lang/lo_LA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/lrc.php     |   17 +
 .../nesbot/carbon/src/Carbon/Lang/lrc_IQ.php  |   13 +
 .../nesbot/carbon/src/Carbon/Lang/lt.php      |  135 +
 .../nesbot/carbon/src/Carbon/Lang/lt_LT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/lu.php      |   28 +
 .../nesbot/carbon/src/Carbon/Lang/luo.php     |   55 +
 .../nesbot/carbon/src/Carbon/Lang/luy.php     |   57 +
 .../nesbot/carbon/src/Carbon/Lang/lv.php      |  183 +
 .../nesbot/carbon/src/Carbon/Lang/lv_LV.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/lzh.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/lzh_TW.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/mag.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mag_IN.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/mai.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mai_IN.php  |   51 +
 .../nesbot/carbon/src/Carbon/Lang/mas.php     |   51 +
 .../nesbot/carbon/src/Carbon/Lang/mas_TZ.php  |   14 +
 .../nesbot/carbon/src/Carbon/Lang/mer.php     |   43 +
 .../nesbot/carbon/src/Carbon/Lang/mfe.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mfe_MU.php  |   53 +
 .../nesbot/carbon/src/Carbon/Lang/mg.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mg_MG.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/mgh.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/mgo.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/mhr.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mhr_RU.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/mi.php      |   66 +
 .../nesbot/carbon/src/Carbon/Lang/mi_NZ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/miq.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/miq_NI.php  |   28 +
 .../nesbot/carbon/src/Carbon/Lang/mjw.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mjw_IN.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/mk.php      |  116 +
 .../nesbot/carbon/src/Carbon/Lang/mk_MK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ml.php      |   76 +
 .../nesbot/carbon/src/Carbon/Lang/ml_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/mn.php      |  116 +
 .../nesbot/carbon/src/Carbon/Lang/mn_MN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/mni.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/mni_IN.php  |   35 +
 .../nesbot/carbon/src/Carbon/Lang/mo.php      |   12 +
 .../nesbot/carbon/src/Carbon/Lang/mr.php      |   86 +
 .../nesbot/carbon/src/Carbon/Lang/mr_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ms.php      |  104 +
 .../nesbot/carbon/src/Carbon/Lang/ms_BN.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/ms_MY.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/ms_SG.php   |   22 +
 .../nesbot/carbon/src/Carbon/Lang/mt.php      |   65 +
 .../nesbot/carbon/src/Carbon/Lang/mt_MT.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/mua.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/my.php      |   70 +
 .../nesbot/carbon/src/Carbon/Lang/my_MM.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/mzn.php     |   25 +
 .../nesbot/carbon/src/Carbon/Lang/nan.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/nan_TW.php  |   55 +
 .../carbon/src/Carbon/Lang/nan_TW@latin.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/naq.php     |   52 +
 .../nesbot/carbon/src/Carbon/Lang/nb.php      |   84 +
 .../nesbot/carbon/src/Carbon/Lang/nb_NO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nb_SJ.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/nd.php      |   54 +
 .../nesbot/carbon/src/Carbon/Lang/nds.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/nds_DE.php  |   60 +
 .../nesbot/carbon/src/Carbon/Lang/nds_NL.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ne.php      |   82 +
 .../nesbot/carbon/src/Carbon/Lang/ne_IN.php   |   25 +
 .../nesbot/carbon/src/Carbon/Lang/ne_NP.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nhn.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/nhn_MX.php  |   50 +
 .../nesbot/carbon/src/Carbon/Lang/niu.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/niu_NU.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/nl.php      |  113 +
 .../nesbot/carbon/src/Carbon/Lang/nl_AW.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/nl_BE.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/nl_BQ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nl_CW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nl_NL.php   |   24 +
 .../nesbot/carbon/src/Carbon/Lang/nl_SR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nl_SX.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nmg.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/nn.php      |   78 +
 .../nesbot/carbon/src/Carbon/Lang/nn_NO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/nnh.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/no.php      |   28 +
 .../nesbot/carbon/src/Carbon/Lang/nr.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/nr_ZA.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/nso.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/nso_ZA.php  |   54 +
 .../nesbot/carbon/src/Carbon/Lang/nus.php     |   36 +
 .../nesbot/carbon/src/Carbon/Lang/nyn.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/oc.php      |  100 +
 .../nesbot/carbon/src/Carbon/Lang/oc_FR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/om.php      |   60 +
 .../nesbot/carbon/src/Carbon/Lang/om_ET.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/om_KE.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/or.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/or_IN.php   |   51 +
 .../nesbot/carbon/src/Carbon/Lang/os.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/os_RU.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/pa.php      |   76 +
 .../nesbot/carbon/src/Carbon/Lang/pa_Arab.php |   26 +
 .../nesbot/carbon/src/Carbon/Lang/pa_Guru.php |   27 +
 .../nesbot/carbon/src/Carbon/Lang/pa_IN.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/pa_PK.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/pap.php     |   39 +
 .../nesbot/carbon/src/Carbon/Lang/pap_AW.php  |   16 +
 .../nesbot/carbon/src/Carbon/Lang/pap_CW.php  |   16 +
 .../nesbot/carbon/src/Carbon/Lang/pl.php      |  126 +
 .../nesbot/carbon/src/Carbon/Lang/pl_PL.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/prg.php     |   52 +
 .../nesbot/carbon/src/Carbon/Lang/ps.php      |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ps_AF.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt.php      |  116 +
 .../nesbot/carbon/src/Carbon/Lang/pt_AO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_BR.php   |   39 +
 .../nesbot/carbon/src/Carbon/Lang/pt_CH.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_CV.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_GQ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_GW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_LU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_MO.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/pt_MZ.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/pt_PT.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/pt_ST.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/pt_TL.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/qu.php      |   22 +
 .../nesbot/carbon/src/Carbon/Lang/qu_BO.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/qu_EC.php   |   14 +
 .../nesbot/carbon/src/Carbon/Lang/quz.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/quz_PE.php  |   54 +
 .../nesbot/carbon/src/Carbon/Lang/raj.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/raj_IN.php  |   47 +
 .../nesbot/carbon/src/Carbon/Lang/rm.php      |   51 +
 .../nesbot/carbon/src/Carbon/Lang/rn.php      |   56 +
 .../nesbot/carbon/src/Carbon/Lang/ro.php      |   77 +
 .../nesbot/carbon/src/Carbon/Lang/ro_MD.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/ro_RO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/rof.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ru.php      |  191 +
 .../nesbot/carbon/src/Carbon/Lang/ru_BY.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ru_KG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ru_KZ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ru_MD.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ru_RU.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ru_UA.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/rw.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/rw_RW.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/rwk.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/sa.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sa_IN.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/sah.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sah_RU.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/saq.php     |   27 +
 .../nesbot/carbon/src/Carbon/Lang/sat.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sat_IN.php  |   54 +
 .../nesbot/carbon/src/Carbon/Lang/sbp.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/sc.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sc_IT.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/sd.php      |   81 +
 .../nesbot/carbon/src/Carbon/Lang/sd_IN.php   |   26 +
 .../src/Carbon/Lang/sd_IN@devanagari.php      |   27 +
 .../nesbot/carbon/src/Carbon/Lang/se.php      |   73 +
 .../nesbot/carbon/src/Carbon/Lang/se_FI.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/se_NO.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/se_SE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/seh.php     |   26 +
 .../nesbot/carbon/src/Carbon/Lang/ses.php     |   56 +
 .../nesbot/carbon/src/Carbon/Lang/sg.php      |   52 +
 .../nesbot/carbon/src/Carbon/Lang/sgs.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sgs_LT.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/sh.php      |   68 +
 .../nesbot/carbon/src/Carbon/Lang/shi.php     |   57 +
 .../carbon/src/Carbon/Lang/shi_Latn.php       |   33 +
 .../carbon/src/Carbon/Lang/shi_Tfng.php       |   12 +
 .../nesbot/carbon/src/Carbon/Lang/shn.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/shn_MM.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/shs.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/shs_CA.php  |   38 +
 .../nesbot/carbon/src/Carbon/Lang/si.php      |   78 +
 .../nesbot/carbon/src/Carbon/Lang/si_LK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sid.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sid_ET.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/sk.php      |   83 +
 .../nesbot/carbon/src/Carbon/Lang/sk_SK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sl.php      |  129 +
 .../nesbot/carbon/src/Carbon/Lang/sl_SI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sm.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/sm_WS.php   |   53 +
 .../nesbot/carbon/src/Carbon/Lang/smn.php     |   57 +
 .../nesbot/carbon/src/Carbon/Lang/sn.php      |   55 +
 .../nesbot/carbon/src/Carbon/Lang/so.php      |   74 +
 .../nesbot/carbon/src/Carbon/Lang/so_DJ.php   |   20 +
 .../nesbot/carbon/src/Carbon/Lang/so_ET.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/so_KE.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/so_SO.php   |   16 +
 .../nesbot/carbon/src/Carbon/Lang/sq.php      |   79 +
 .../nesbot/carbon/src/Carbon/Lang/sq_AL.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sq_MK.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/sq_XK.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/sr.php      |  112 +
 .../nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php |  112 +
 .../carbon/src/Carbon/Lang/sr_Cyrl_BA.php     |   23 +
 .../carbon/src/Carbon/Lang/sr_Cyrl_ME.php     |  109 +
 .../carbon/src/Carbon/Lang/sr_Cyrl_XK.php     |   14 +
 .../nesbot/carbon/src/Carbon/Lang/sr_Latn.php |   12 +
 .../carbon/src/Carbon/Lang/sr_Latn_BA.php     |   23 +
 .../carbon/src/Carbon/Lang/sr_Latn_ME.php     |   66 +
 .../carbon/src/Carbon/Lang/sr_Latn_XK.php     |   14 +
 .../nesbot/carbon/src/Carbon/Lang/sr_ME.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sr_RS.php   |   16 +
 .../carbon/src/Carbon/Lang/sr_RS@latin.php    |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ss.php      |   78 +
 .../nesbot/carbon/src/Carbon/Lang/ss_ZA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/st.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/st_ZA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/sv.php      |   87 +
 .../nesbot/carbon/src/Carbon/Lang/sv_AX.php   |   19 +
 .../nesbot/carbon/src/Carbon/Lang/sv_FI.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sv_SE.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/sw.php      |   74 +
 .../nesbot/carbon/src/Carbon/Lang/sw_CD.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/sw_KE.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/sw_TZ.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/sw_UG.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/szl.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/szl_PL.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/ta.php      |   97 +
 .../nesbot/carbon/src/Carbon/Lang/ta_IN.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ta_LK.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ta_MY.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/ta_SG.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/tcy.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tcy_IN.php  |   39 +
 .../nesbot/carbon/src/Carbon/Lang/te.php      |   89 +
 .../nesbot/carbon/src/Carbon/Lang/te_IN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/teo.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/teo_KE.php  |   14 +
 .../nesbot/carbon/src/Carbon/Lang/tet.php     |   64 +
 .../nesbot/carbon/src/Carbon/Lang/tg.php      |  104 +
 .../nesbot/carbon/src/Carbon/Lang/tg_TJ.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/th.php      |   73 +
 .../nesbot/carbon/src/Carbon/Lang/th_TH.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/the.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/the_NP.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/ti.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ti_ER.php   |   56 +
 .../nesbot/carbon/src/Carbon/Lang/ti_ET.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/tig.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tig_ER.php  |   56 +
 .../nesbot/carbon/src/Carbon/Lang/tk.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tk_TM.php   |   77 +
 .../nesbot/carbon/src/Carbon/Lang/tl.php      |   61 +
 .../nesbot/carbon/src/Carbon/Lang/tl_PH.php   |   18 +
 .../nesbot/carbon/src/Carbon/Lang/tlh.php     |   72 +
 .../nesbot/carbon/src/Carbon/Lang/tn.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tn_ZA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/to.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/to_TO.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/tpi.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tpi_PG.php  |   55 +
 .../nesbot/carbon/src/Carbon/Lang/tr.php      |  121 +
 .../nesbot/carbon/src/Carbon/Lang/tr_CY.php   |   23 +
 .../nesbot/carbon/src/Carbon/Lang/tr_TR.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ts.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ts_ZA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/tt.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/tt_RU.php   |   39 +
 .../carbon/src/Carbon/Lang/tt_RU@iqtelif.php  |   28 +
 .../nesbot/carbon/src/Carbon/Lang/twq.php     |   14 +
 .../nesbot/carbon/src/Carbon/Lang/tzl.php     |   65 +
 .../nesbot/carbon/src/Carbon/Lang/tzm.php     |   57 +
 .../carbon/src/Carbon/Lang/tzm_Latn.php       |   64 +
 .../nesbot/carbon/src/Carbon/Lang/ug.php      |   90 +
 .../nesbot/carbon/src/Carbon/Lang/ug_CN.php   |   17 +
 .../nesbot/carbon/src/Carbon/Lang/uk.php      |  212 +
 .../nesbot/carbon/src/Carbon/Lang/uk_UA.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/unm.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/unm_US.php  |   57 +
 .../nesbot/carbon/src/Carbon/Lang/ur.php      |   94 +
 .../nesbot/carbon/src/Carbon/Lang/ur_IN.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/ur_PK.php   |   27 +
 .../nesbot/carbon/src/Carbon/Lang/uz.php      |   85 +
 .../nesbot/carbon/src/Carbon/Lang/uz_Arab.php |   28 +
 .../nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php |   20 +
 .../nesbot/carbon/src/Carbon/Lang/uz_Latn.php |   74 +
 .../nesbot/carbon/src/Carbon/Lang/uz_UZ.php   |   27 +
 .../carbon/src/Carbon/Lang/uz_UZ@cyrillic.php |   27 +
 .../nesbot/carbon/src/Carbon/Lang/vai.php     |   35 +
 .../carbon/src/Carbon/Lang/vai_Latn.php       |   27 +
 .../carbon/src/Carbon/Lang/vai_Vaii.php       |   12 +
 .../nesbot/carbon/src/Carbon/Lang/ve.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/ve_ZA.php   |   49 +
 .../nesbot/carbon/src/Carbon/Lang/vi.php      |   76 +
 .../nesbot/carbon/src/Carbon/Lang/vi_VN.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/vo.php      |   52 +
 .../nesbot/carbon/src/Carbon/Lang/vun.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/wa.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/wa_BE.php   |   55 +
 .../nesbot/carbon/src/Carbon/Lang/wae.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/wae_CH.php  |   31 +
 .../nesbot/carbon/src/Carbon/Lang/wal.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/wal_ET.php  |   27 +
 .../nesbot/carbon/src/Carbon/Lang/wo.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/wo_SN.php   |   39 +
 .../nesbot/carbon/src/Carbon/Lang/xh.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/xh_ZA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/xog.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/yav.php     |   28 +
 .../nesbot/carbon/src/Carbon/Lang/yi.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/yi_US.php   |   54 +
 .../nesbot/carbon/src/Carbon/Lang/yo.php      |   65 +
 .../nesbot/carbon/src/Carbon/Lang/yo_BJ.php   |   28 +
 .../nesbot/carbon/src/Carbon/Lang/yo_NG.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/yue.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/yue_HK.php  |   28 +
 .../carbon/src/Carbon/Lang/yue_Hans.php       |   12 +
 .../carbon/src/Carbon/Lang/yue_Hant.php       |   12 +
 .../nesbot/carbon/src/Carbon/Lang/yuw.php     |   15 +
 .../nesbot/carbon/src/Carbon/Lang/yuw_PG.php  |   26 +
 .../nesbot/carbon/src/Carbon/Lang/zgh.php     |   80 +
 .../nesbot/carbon/src/Carbon/Lang/zh.php      |   29 +
 .../nesbot/carbon/src/Carbon/Lang/zh_CN.php   |   33 +
 .../nesbot/carbon/src/Carbon/Lang/zh_HK.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/zh_Hans.php |  109 +
 .../carbon/src/Carbon/Lang/zh_Hans_HK.php     |   12 +
 .../carbon/src/Carbon/Lang/zh_Hans_MO.php     |   12 +
 .../carbon/src/Carbon/Lang/zh_Hans_SG.php     |   12 +
 .../nesbot/carbon/src/Carbon/Lang/zh_Hant.php |  111 +
 .../carbon/src/Carbon/Lang/zh_Hant_HK.php     |   12 +
 .../carbon/src/Carbon/Lang/zh_Hant_MO.php     |   12 +
 .../carbon/src/Carbon/Lang/zh_Hant_TW.php     |   12 +
 .../nesbot/carbon/src/Carbon/Lang/zh_MO.php   |   21 +
 .../nesbot/carbon/src/Carbon/Lang/zh_SG.php   |   26 +
 .../nesbot/carbon/src/Carbon/Lang/zh_TW.php   |   12 +
 .../nesbot/carbon/src/Carbon/Lang/zh_YUE.php  |   20 +
 .../nesbot/carbon/src/Carbon/Lang/zu.php      |   15 +
 .../nesbot/carbon/src/Carbon/Lang/zu_ZA.php   |   54 +
 .../nesbot/carbon/src/Carbon/Language.php     |  342 ++
 .../src/Carbon/Laravel/ServiceProvider.php    |  127 +
 .../carbon/src/Carbon/List/languages.php      | 1239 ++++
 .../nesbot/carbon/src/Carbon/List/regions.php |  265 +
 .../src/Carbon/PHPStan/AbstractMacro.php      |  283 +
 .../carbon/src/Carbon/PHPStan/Macro.php       |   34 +
 .../src/Carbon/PHPStan/MacroExtension.php     |   78 +
 .../src/Carbon/PHPStan/MacroScanner.php       |   63 +
 .../carbon/src/Carbon/Traits/Boundaries.php   |  443 ++
 .../nesbot/carbon/src/Carbon/Traits/Cast.php  |   43 +
 .../carbon/src/Carbon/Traits/Comparison.php   | 1099 ++++
 .../carbon/src/Carbon/Traits/Converter.php    |  636 +++
 .../carbon/src/Carbon/Traits/Creator.php      |  950 +++
 .../nesbot/carbon/src/Carbon/Traits/Date.php  | 2706 +++++++++
 .../Carbon/Traits/DeprecatedProperties.php    |   61 +
 .../carbon/src/Carbon/Traits/Difference.php   | 1169 ++++
 .../src/Carbon/Traits/IntervalRounding.php    |   57 +
 .../carbon/src/Carbon/Traits/IntervalStep.php |   93 +
 .../carbon/src/Carbon/Traits/Localization.php |  838 +++
 .../nesbot/carbon/src/Carbon/Traits/Macro.php |  136 +
 .../nesbot/carbon/src/Carbon/Traits/Mixin.php |  191 +
 .../carbon/src/Carbon/Traits/Modifiers.php    |  472 ++
 .../carbon/src/Carbon/Traits/Mutability.php   |   71 +
 .../Carbon/Traits/ObjectInitialisation.php    |   22 +
 .../carbon/src/Carbon/Traits/Options.php      |  471 ++
 .../carbon/src/Carbon/Traits/Rounding.php     |  258 +
 .../src/Carbon/Traits/Serialization.php       |  304 +
 .../nesbot/carbon/src/Carbon/Traits/Test.php  |  226 +
 .../carbon/src/Carbon/Traits/Timestamp.php    |  198 +
 .../src/Carbon/Traits/ToStringFormat.php      |   56 +
 .../nesbot/carbon/src/Carbon/Traits/Units.php |  406 ++
 .../nesbot/carbon/src/Carbon/Traits/Week.php  |  219 +
 .../nesbot/carbon/src/Carbon/Translator.php   |   32 +
 .../carbon/src/Carbon/TranslatorImmutable.php |   99 +
 .../Carbon/TranslatorStrongTypeInterface.php  |   22 +
 .../vendor/symfony/polyfill-mbstring/LICENSE  |   19 +
 .../symfony/polyfill-mbstring/Mbstring.php    |  874 +++
 .../symfony/polyfill-mbstring/README.md       |   13 +
 .../Resources/unidata/lowerCase.php           | 1397 +++++
 .../Resources/unidata/titleCaseRegexp.php     |    5 +
 .../Resources/unidata/upperCase.php           | 1489 +++++
 .../symfony/polyfill-mbstring/bootstrap.php   |  147 +
 .../symfony/polyfill-mbstring/bootstrap80.php |  143 +
 .../symfony/polyfill-mbstring/composer.json   |   41 +
 htdocs/vendor/symfony/polyfill-php80/LICENSE  |   19 +
 .../vendor/symfony/polyfill-php80/Php80.php   |  115 +
 .../symfony/polyfill-php80/PhpToken.php       |  103 +
 .../vendor/symfony/polyfill-php80/README.md   |   25 +
 .../Resources/stubs/Attribute.php             |   31 +
 .../Resources/stubs/PhpToken.php              |   16 +
 .../Resources/stubs/Stringable.php            |   20 +
 .../Resources/stubs/UnhandledMatchError.php   |   16 +
 .../Resources/stubs/ValueError.php            |   16 +
 .../symfony/polyfill-php80/bootstrap.php      |   42 +
 .../symfony/polyfill-php80/composer.json      |   40 +
 .../symfony/translation-contracts/.gitignore  |    3 +
 .../translation-contracts/CHANGELOG.md        |    5 +
 .../symfony/translation-contracts/LICENSE     |   19 +
 .../LocaleAwareInterface.php                  |   27 +
 .../symfony/translation-contracts/README.md   |    9 +
 .../Test/TranslatorTest.php                   |  384 ++
 .../TranslatableInterface.php                 |   20 +
 .../TranslatorInterface.php                   |   68 +
 .../translation-contracts/TranslatorTrait.php |  231 +
 .../translation-contracts/composer.json       |   40 +
 .../vendor/symfony/translation/CHANGELOG.md   |  182 +
 .../Catalogue/AbstractOperation.php           |  203 +
 .../translation/Catalogue/MergeOperation.php  |   72 +
 .../Catalogue/OperationInterface.php          |   61 +
 .../translation/Catalogue/TargetOperation.php |   86 +
 .../CatalogueMetadataAwareInterface.php       |   44 +
 .../Command/TranslationPullCommand.php        |  187 +
 .../Command/TranslationPushCommand.php        |  188 +
 .../translation/Command/TranslationTrait.php  |   77 +
 .../translation/Command/XliffLintCommand.php  |  278 +
 .../TranslationDataCollector.php              |  160 +
 .../translation/DataCollectorTranslator.php   |  162 +
 .../TranslationDumperPass.php                 |   35 +
 .../TranslationExtractorPass.php              |   40 +
 .../DependencyInjection/TranslatorPass.php    |   74 +
 .../TranslatorPathsPass.php                   |  147 +
 .../translation/Dumper/CsvFileDumper.php      |   60 +
 .../translation/Dumper/DumperInterface.php    |   30 +
 .../symfony/translation/Dumper/FileDumper.php |  108 +
 .../translation/Dumper/IcuResFileDumper.php   |  104 +
 .../translation/Dumper/IniFileDumper.php      |   45 +
 .../translation/Dumper/JsonFileDumper.php     |   40 +
 .../translation/Dumper/MoFileDumper.php       |   82 +
 .../translation/Dumper/PhpFileDumper.php      |   38 +
 .../translation/Dumper/PoFileDumper.php       |  137 +
 .../translation/Dumper/QtFileDumper.php       |   61 +
 .../translation/Dumper/XliffFileDumper.php    |  227 +
 .../translation/Dumper/YamlFileDumper.php     |   62 +
 .../Exception/ExceptionInterface.php          |   21 +
 .../Exception/IncompleteDsnException.php      |   24 +
 .../Exception/InvalidArgumentException.php    |   21 +
 .../Exception/InvalidResourceException.php    |   21 +
 .../translation/Exception/LogicException.php  |   21 +
 .../MissingRequiredOptionException.php        |   25 +
 .../Exception/NotFoundResourceException.php   |   21 +
 .../Exception/ProviderException.php           |   41 +
 .../Exception/ProviderExceptionInterface.php  |   23 +
 .../Exception/RuntimeException.php            |   21 +
 .../Exception/UnsupportedSchemeException.php  |   54 +
 .../Extractor/AbstractFileExtractor.php       |   67 +
 .../translation/Extractor/ChainExtractor.php  |   57 +
 .../Extractor/ExtractorInterface.php          |   35 +
 .../translation/Extractor/PhpExtractor.php    |  330 ++
 .../Extractor/PhpStringTokenParser.php        |  136 +
 .../translation/Formatter/IntlFormatter.php   |   60 +
 .../Formatter/IntlFormatterInterface.php      |   27 +
 .../Formatter/MessageFormatter.php            |   56 +
 .../Formatter/MessageFormatterInterface.php   |   28 +
 .../translation/IdentityTranslator.php        |   26 +
 htdocs/vendor/symfony/translation/LICENSE     |   19 +
 .../translation/Loader/ArrayLoader.php        |   58 +
 .../translation/Loader/CsvFileLoader.php      |   65 +
 .../symfony/translation/Loader/FileLoader.php |   62 +
 .../translation/Loader/IcuDatFileLoader.php   |   61 +
 .../translation/Loader/IcuResFileLoader.php   |   89 +
 .../translation/Loader/IniFileLoader.php      |   28 +
 .../translation/Loader/JsonFileLoader.php     |   54 +
 .../translation/Loader/LoaderInterface.php    |   32 +
 .../translation/Loader/MoFileLoader.php       |  140 +
 .../translation/Loader/PhpFileLoader.php      |   42 +
 .../translation/Loader/PoFileLoader.php       |  149 +
 .../translation/Loader/QtFileLoader.php       |   82 +
 .../translation/Loader/XliffFileLoader.php    |  236 +
 .../translation/Loader/YamlFileLoader.php     |   54 +
 .../symfony/translation/LocaleSwitcher.php    |   75 +
 .../symfony/translation/LoggingTranslator.php |  129 +
 .../symfony/translation/MessageCatalogue.php  |  368 ++
 .../translation/MessageCatalogueInterface.php |  124 +
 .../translation/MetadataAwareInterface.php    |   44 +
 .../Provider/AbstractProviderFactory.php      |   45 +
 .../symfony/translation/Provider/Dsn.php      |  110 +
 .../Provider/FilteringProvider.php            |   65 +
 .../translation/Provider/NullProvider.php     |   39 +
 .../Provider/NullProviderFactory.php          |   34 +
 .../Provider/ProviderFactoryInterface.php     |   26 +
 .../Provider/ProviderInterface.php            |   32 +
 .../TranslationProviderCollection.php         |   57 +
 .../TranslationProviderCollectionFactory.php  |   57 +
 .../PseudoLocalizationTranslator.php          |  368 ++
 htdocs/vendor/symfony/translation/README.md   |   46 +
 .../translation/Reader/TranslationReader.php  |   62 +
 .../Reader/TranslationReaderInterface.php     |   27 +
 .../Resources/bin/translation-status.php      |  278 +
 .../translation/Resources/data/parents.json   |  141 +
 .../translation/Resources/functions.php       |   22 +
 .../schemas/xliff-core-1.2-transitional.xsd   | 2261 ++++++++
 .../Resources/schemas/xliff-core-2.0.xsd      |  411 ++
 .../translation/Resources/schemas/xml.xsd     |  309 +
 .../Test/ProviderFactoryTestCase.php          |  155 +
 .../translation/Test/ProviderTestCase.php     |   84 +
 .../translation/TranslatableMessage.php       |   62 +
 .../vendor/symfony/translation/Translator.php |  474 ++
 .../symfony/translation/TranslatorBag.php     |  108 +
 .../translation/TranslatorBagInterface.php    |   36 +
 .../translation/Util/ArrayConverter.php       |   97 +
 .../symfony/translation/Util/XliffUtils.php   |  191 +
 .../translation/Writer/TranslationWriter.php  |   71 +
 .../Writer/TranslationWriterInterface.php     |   33 +
 .../vendor/symfony/translation/composer.json  |   61 +
 1070 files changed, 75482 insertions(+), 220 deletions(-)
 create mode 100644 .vscode/tasks.json
 create mode 100644 htdocs/composer.json
 create mode 100644 htdocs/composer.lock
 create mode 100644 htdocs/vendor/autoload.php
 create mode 100755 htdocs/vendor/bin/carbon
 create mode 100644 htdocs/vendor/composer/ClassLoader.php
 create mode 100644 htdocs/vendor/composer/InstalledVersions.php
 create mode 100644 htdocs/vendor/composer/LICENSE
 create mode 100644 htdocs/vendor/composer/autoload_classmap.php
 create mode 100644 htdocs/vendor/composer/autoload_files.php
 create mode 100644 htdocs/vendor/composer/autoload_namespaces.php
 create mode 100644 htdocs/vendor/composer/autoload_psr4.php
 create mode 100644 htdocs/vendor/composer/autoload_real.php
 create mode 100644 htdocs/vendor/composer/autoload_static.php
 create mode 100644 htdocs/vendor/composer/installed.json
 create mode 100644 htdocs/vendor/composer/installed.php
 create mode 100644 htdocs/vendor/composer/platform_check.php
 create mode 100644 htdocs/vendor/nesbot/carbon/LICENSE
 create mode 100755 htdocs/vendor/nesbot/carbon/bin/carbon
 create mode 100644 htdocs/vendor/nesbot/carbon/bin/carbon.bat
 create mode 100644 htdocs/vendor/nesbot/carbon/composer.json
 create mode 100644 htdocs/vendor/nesbot/carbon/extension.neon
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/readme.md
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Carbon.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Factory.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/asa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bas.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bez.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bm.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dav.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dje.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dua.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/guz.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/haw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ii.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/in.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kam.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kde.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kea.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/khq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ki.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kln.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lag.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luy.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mer.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mua.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/naq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nd.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/no.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nus.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/prg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rm.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rof.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/saq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/seh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ses.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/smn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tet.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/twq.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vun.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xog.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yav.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Language.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/List/languages.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/List/regions.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/Translator.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php
 create mode 100644 htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/LICENSE
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/Mbstring.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/README.md
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/bootstrap.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/bootstrap80.php
 create mode 100644 htdocs/vendor/symfony/polyfill-mbstring/composer.json
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/LICENSE
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Php80.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/PhpToken.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/README.md
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/bootstrap.php
 create mode 100644 htdocs/vendor/symfony/polyfill-php80/composer.json
 create mode 100644 htdocs/vendor/symfony/translation-contracts/.gitignore
 create mode 100644 htdocs/vendor/symfony/translation-contracts/CHANGELOG.md
 create mode 100644 htdocs/vendor/symfony/translation-contracts/LICENSE
 create mode 100644 htdocs/vendor/symfony/translation-contracts/LocaleAwareInterface.php
 create mode 100644 htdocs/vendor/symfony/translation-contracts/README.md
 create mode 100644 htdocs/vendor/symfony/translation-contracts/Test/TranslatorTest.php
 create mode 100644 htdocs/vendor/symfony/translation-contracts/TranslatableInterface.php
 create mode 100644 htdocs/vendor/symfony/translation-contracts/TranslatorInterface.php
 create mode 100644 htdocs/vendor/symfony/translation-contracts/TranslatorTrait.php
 create mode 100644 htdocs/vendor/symfony/translation-contracts/composer.json
 create mode 100644 htdocs/vendor/symfony/translation/CHANGELOG.md
 create mode 100644 htdocs/vendor/symfony/translation/Catalogue/AbstractOperation.php
 create mode 100644 htdocs/vendor/symfony/translation/Catalogue/MergeOperation.php
 create mode 100644 htdocs/vendor/symfony/translation/Catalogue/OperationInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Catalogue/TargetOperation.php
 create mode 100644 htdocs/vendor/symfony/translation/CatalogueMetadataAwareInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Command/TranslationPullCommand.php
 create mode 100644 htdocs/vendor/symfony/translation/Command/TranslationPushCommand.php
 create mode 100644 htdocs/vendor/symfony/translation/Command/TranslationTrait.php
 create mode 100644 htdocs/vendor/symfony/translation/Command/XliffLintCommand.php
 create mode 100644 htdocs/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
 create mode 100644 htdocs/vendor/symfony/translation/DataCollectorTranslator.php
 create mode 100644 htdocs/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php
 create mode 100644 htdocs/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php
 create mode 100644 htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPass.php
 create mode 100644 htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/CsvFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/DumperInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/FileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/IcuResFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/IniFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/JsonFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/MoFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/PhpFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/PoFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/QtFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/XliffFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Dumper/YamlFileDumper.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/ExceptionInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/IncompleteDsnException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/InvalidArgumentException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/InvalidResourceException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/LogicException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/MissingRequiredOptionException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/NotFoundResourceException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/ProviderException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/ProviderExceptionInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/RuntimeException.php
 create mode 100644 htdocs/vendor/symfony/translation/Exception/UnsupportedSchemeException.php
 create mode 100644 htdocs/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
 create mode 100644 htdocs/vendor/symfony/translation/Extractor/ChainExtractor.php
 create mode 100644 htdocs/vendor/symfony/translation/Extractor/ExtractorInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Extractor/PhpExtractor.php
 create mode 100644 htdocs/vendor/symfony/translation/Extractor/PhpStringTokenParser.php
 create mode 100644 htdocs/vendor/symfony/translation/Formatter/IntlFormatter.php
 create mode 100644 htdocs/vendor/symfony/translation/Formatter/IntlFormatterInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Formatter/MessageFormatter.php
 create mode 100644 htdocs/vendor/symfony/translation/Formatter/MessageFormatterInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/IdentityTranslator.php
 create mode 100644 htdocs/vendor/symfony/translation/LICENSE
 create mode 100644 htdocs/vendor/symfony/translation/Loader/ArrayLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/CsvFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/FileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/IcuDatFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/IcuResFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/IniFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/JsonFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/LoaderInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/MoFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/PhpFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/PoFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/QtFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/XliffFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/Loader/YamlFileLoader.php
 create mode 100644 htdocs/vendor/symfony/translation/LocaleSwitcher.php
 create mode 100644 htdocs/vendor/symfony/translation/LoggingTranslator.php
 create mode 100644 htdocs/vendor/symfony/translation/MessageCatalogue.php
 create mode 100644 htdocs/vendor/symfony/translation/MessageCatalogueInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/MetadataAwareInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/AbstractProviderFactory.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/Dsn.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/FilteringProvider.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/NullProvider.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/NullProviderFactory.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/ProviderFactoryInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/ProviderInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/TranslationProviderCollection.php
 create mode 100644 htdocs/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php
 create mode 100644 htdocs/vendor/symfony/translation/PseudoLocalizationTranslator.php
 create mode 100644 htdocs/vendor/symfony/translation/README.md
 create mode 100644 htdocs/vendor/symfony/translation/Reader/TranslationReader.php
 create mode 100644 htdocs/vendor/symfony/translation/Reader/TranslationReaderInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Resources/bin/translation-status.php
 create mode 100644 htdocs/vendor/symfony/translation/Resources/data/parents.json
 create mode 100644 htdocs/vendor/symfony/translation/Resources/functions.php
 create mode 100644 htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd
 create mode 100644 htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd
 create mode 100644 htdocs/vendor/symfony/translation/Resources/schemas/xml.xsd
 create mode 100644 htdocs/vendor/symfony/translation/Test/ProviderFactoryTestCase.php
 create mode 100644 htdocs/vendor/symfony/translation/Test/ProviderTestCase.php
 create mode 100644 htdocs/vendor/symfony/translation/TranslatableMessage.php
 create mode 100644 htdocs/vendor/symfony/translation/Translator.php
 create mode 100644 htdocs/vendor/symfony/translation/TranslatorBag.php
 create mode 100644 htdocs/vendor/symfony/translation/TranslatorBagInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/Util/ArrayConverter.php
 create mode 100644 htdocs/vendor/symfony/translation/Util/XliffUtils.php
 create mode 100644 htdocs/vendor/symfony/translation/Writer/TranslationWriter.php
 create mode 100644 htdocs/vendor/symfony/translation/Writer/TranslationWriterInterface.php
 create mode 100644 htdocs/vendor/symfony/translation/composer.json

diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 00000000..f2274c88
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,12 @@
+{
+    // See https://go.microsoft.com/fwlink/?LinkId=733558
+    // for the documentation about the tasks.json format
+    "version": "2.0.0",
+    "tasks": [
+        {
+            "label": "Apache Error",
+            "type": "shell",
+            "command": "tail -f /var/log/apache2/error.log"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/htdocs/_templates/_head.php b/htdocs/_templates/_head.php
index 4a9da841..47ef5d1a 100644
--- a/htdocs/_templates/_head.php
+++ b/htdocs/_templates/_head.php
@@ -8,7 +8,9 @@
 
     <!-- Bootstrap core CSS -->
     <link href="<?=get_config('base_path')?>assets/dist/css/bootstrap.min.css" rel="stylesheet">
+    <!-- JS has to be loaded in footer not header as it impacts page load time. -->
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
+    <script src="https://cdn.jsdelivr.net/npm/masonry-layout@4.2.2/dist/masonry.pkgd.min.js" integrity="sha384-GNFwBvfVxBkLMJpYMOABq3c+d3KnQxudP/mGPkzpZSTYykLBNsZEnG2D9G/X/+7D" crossorigin="anonymous" async></script>
     <script>
     // Initialize the agent at application startup.
     const fpPromise = import('https://openfpcdn.io/fingerprintjs/v3')
diff --git a/htdocs/_templates/index/calltoaction.php b/htdocs/_templates/index/calltoaction.php
index 3a4fd963..8058064a 100644
--- a/htdocs/_templates/index/calltoaction.php
+++ b/htdocs/_templates/index/calltoaction.php
@@ -1,12 +1,18 @@
 <?php
 
+if (isset($_POST['post_text']) and isset($_FILES['post_image'])) {
+    $image_tmp = $_FILES['post_image']['tmp_name'];
+    $text = $_POST['post_text'];
+    Post::registerPost($text, $image_tmp);
+}
+
 ?>
 
 <section class="py-5 text-center container">
 	<div class="row py-lg-5">
-		<form method="post" action="sg.php" enctype="multipart/form-data">
+		<form method="post" action="/" enctype="multipart/form-data">
 			<div class="col-lg-6 col-md-8 mx-auto">
-				<h1 class="fw-light">What are you upto,
+				<h1 id="greeting" class="fw-light">What are you upto,
 					<?=Session::getUser()->getUsername()?>?
 				</h1>
 				<p class="lead text-muted">Share a photo that talks about it.</p>
diff --git a/htdocs/_templates/index/photogram.php b/htdocs/_templates/index/photogram.php
index 19b460c9..cd31ce2d 100644
--- a/htdocs/_templates/index/photogram.php
+++ b/htdocs/_templates/index/photogram.php
@@ -1,225 +1,39 @@
 <div class="album py-5 bg-light">
 	<div class="container">
 
-		<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
-					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
-						<div class="d-flex justify-content-between align-items-center">
-							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
-							</div>
-							<small class="text-muted">9 mins</small>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="col">
-				<div class="card shadow-sm">
-					<svg class="bd-placeholder-img card-img-top" width="100%" height="225"
-						xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Placeholder: Thumbnail"
-						preserveAspectRatio="xMidYMid slice" focusable="false">
-						<title>Placeholder</title>
-						<rect width="100%" height="100%" fill="#55595c" /><text x="50%" y="50%" fill="#eceeef"
-							dy=".3em">Thumbnail</text>
-					</svg>
-
+		<div class="row" data-masonry='{"percentPosition": true }'>
+			<?php
+                $posts = Post::getAllPosts();
+				use Carbon\Carbon;
+foreach ($posts as $post) {
+    $p = new Post($post['id']);
+    $uploaded_time = Carbon::parse($p->getUploadedTime());
+    $uploaded_time_str = $uploaded_time->diffForHumans();
+    ?>
+			<div class="col-lg-4 mb-4">
+				<div class="card">
+					<img class="bd-placeholder-img card-img-top" src="<?=$p->getImageUri()?>">
 					<div class="card-body">
-						<p class="card-text">This is a wider card with supporting text below as a natural lead-in to
-							additional
-							content. This content is a little bit longer.</p>
+						<p class="card-text"><?=$p->getPostText()?></p>
 						<div class="d-flex justify-content-between align-items-center">
 							<div class="btn-group">
-								<button type="button" class="btn btn-sm btn-outline-secondary">View</button>
-								<button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+								<button type="button" class="btn btn-sm btn-outline-primary">Like</button>
+								<button type="button" class="btn btn-sm btn-outline-success">Share</button>
+								<?php
+								$user = Session::getUser();
+								if (Session::isOwnerOf($p->getOwner())) {
+								?>
+								<button type="button" class="btn btn-sm btn-outline-danger">Delete</button>
+								<?}?>
 							</div>
-							<small class="text-muted">9 mins</small>
+							<small class="text-muted"><?=$uploaded_time_str?></small>
 						</div>
 					</div>
 				</div>
 			</div>
+			<?php
+				}
+				?>
 		</div>
 	</div>
 </div>
\ No newline at end of file
diff --git a/htdocs/composer.json b/htdocs/composer.json
new file mode 100644
index 00000000..b6490806
--- /dev/null
+++ b/htdocs/composer.json
@@ -0,0 +1,5 @@
+{
+    "require": {
+        "nesbot/carbon": "^2.63"
+    }
+}
diff --git a/htdocs/composer.lock b/htdocs/composer.lock
new file mode 100644
index 00000000..a6647c99
--- /dev/null
+++ b/htdocs/composer.lock
@@ -0,0 +1,464 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "53ab1fa8da0ed553839a2d5eebab746b",
+    "packages": [
+        {
+            "name": "nesbot/carbon",
+            "version": "2.63.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/briannesbitt/Carbon.git",
+                "reference": "ad35dd71a6a212b98e4b87e97389b6fa85f0e347"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ad35dd71a6a212b98e4b87e97389b6fa85f0e347",
+                "reference": "ad35dd71a6a212b98e4b87e97389b6fa85f0e347",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "php": "^7.1.8 || ^8.0",
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+            },
+            "require-dev": {
+                "doctrine/dbal": "^2.0 || ^3.0",
+                "doctrine/orm": "^2.7",
+                "friendsofphp/php-cs-fixer": "^3.0",
+                "kylekatarnls/multi-tester": "^2.0",
+                "ondrejmirtes/better-reflection": "*",
+                "phpmd/phpmd": "^2.9",
+                "phpstan/extension-installer": "^1.0",
+                "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+                "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+                "squizlabs/php_codesniffer": "^3.4"
+            },
+            "bin": [
+                "bin/carbon"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-3.x": "3.x-dev",
+                    "dev-master": "2.x-dev"
+                },
+                "laravel": {
+                    "providers": [
+                        "Carbon\\Laravel\\ServiceProvider"
+                    ]
+                },
+                "phpstan": {
+                    "includes": [
+                        "extension.neon"
+                    ]
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Carbon\\": "src/Carbon/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Brian Nesbitt",
+                    "email": "brian@nesbot.com",
+                    "homepage": "https://markido.com"
+                },
+                {
+                    "name": "kylekatarnls",
+                    "homepage": "https://github.com/kylekatarnls"
+                }
+            ],
+            "description": "An API extension for DateTime that supports 281 different languages.",
+            "homepage": "https://carbon.nesbot.com",
+            "keywords": [
+                "date",
+                "datetime",
+                "time"
+            ],
+            "support": {
+                "docs": "https://carbon.nesbot.com/docs",
+                "issues": "https://github.com/briannesbitt/Carbon/issues",
+                "source": "https://github.com/briannesbitt/Carbon"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sponsors/kylekatarnls",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/Carbon#sponsor",
+                    "type": "opencollective"
+                },
+                {
+                    "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-30T18:34:28+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.27.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-11-03T14:55:06+00:00"
+        },
+        {
+            "name": "symfony/translation",
+            "version": "v6.1.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/translation.git",
+                "reference": "e6cd330e5a072518f88d65148f3f165541807494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494",
+                "reference": "e6cd330e5a072518f88d65148f3f165541807494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/translation-contracts": "^2.3|^3.0"
+            },
+            "conflict": {
+                "symfony/config": "<5.4",
+                "symfony/console": "<5.4",
+                "symfony/dependency-injection": "<5.4",
+                "symfony/http-kernel": "<5.4",
+                "symfony/twig-bundle": "<5.4",
+                "symfony/yaml": "<5.4"
+            },
+            "provide": {
+                "symfony/translation-implementation": "2.3|3.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^5.4|^6.0",
+                "symfony/console": "^5.4|^6.0",
+                "symfony/dependency-injection": "^5.4|^6.0",
+                "symfony/finder": "^5.4|^6.0",
+                "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+                "symfony/http-kernel": "^5.4|^6.0",
+                "symfony/intl": "^5.4|^6.0",
+                "symfony/polyfill-intl-icu": "^1.21",
+                "symfony/routing": "^5.4|^6.0",
+                "symfony/service-contracts": "^1.1.2|^2|^3",
+                "symfony/yaml": "^5.4|^6.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "To use logging capability in translator",
+                "symfony/config": "",
+                "symfony/yaml": ""
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\Translation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides tools to internationalize your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/translation/tree/v6.1.6"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-10-07T08:04:03+00:00"
+        },
+        {
+            "name": "symfony/translation-contracts",
+            "version": "v3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/translation-contracts.git",
+                "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc",
+                "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "suggest": {
+                "symfony/translation-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Translation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Test/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to translation",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-06-27T17:24:16+00:00"
+        }
+    ],
+    "packages-dev": [],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": [],
+    "platform-dev": [],
+    "plugin-api-version": "2.3.0"
+}
diff --git a/htdocs/libs/app/Post.class.php b/htdocs/libs/app/Post.class.php
index af87fe43..18fedcd1 100644
--- a/htdocs/libs/app/Post.class.php
+++ b/htdocs/libs/app/Post.class.php
@@ -1,9 +1,12 @@
 <?php
 
 include_once __DIR__ . "/../traits/SQLGetterSetter.trait.php";
+
+use Carbon\Carbon; //including a namespace
+
 class Post
 {
-    use SQLGetterSetter;
+    use SQLGetterSetter; //including a trait
 
     public static function registerPost($text, $image_tmp)
     {
@@ -12,7 +15,7 @@ class Post
             $image_name = md5($author.time()) . image_type_to_extension(exif_imagetype($image_tmp));
             $image_path = get_config('upload_path') . $image_name;
             if (move_uploaded_file($image_tmp, $image_path)) {
-                $image_uri = "/images/$image_name";
+                $image_uri = "/files/$image_name";
                 $insert_command = "INSERT INTO `posts` (`post_text`, `multiple_images`, `image_uri`, `like_count`, `uploaded_time`, `owner`) VALUES ('$text', 0, '$image_uri', '0', now(), '$author')";
                 $db = Database::getConnection();
                 if ($db->query($insert_command)) {
@@ -27,6 +30,14 @@ class Post
         }
     }
 
+    public static function getAllPosts()
+    {
+        $db = Database::getConnection();
+        $sql = "SELECT * FROM `posts` ORDER BY `uploaded_time` DESC";
+        $result = $db->query($sql);
+        return iterator_to_array($result);
+    }
+
     public function __construct($id)
     {
         $this->id = $id;
diff --git a/htdocs/libs/includes/Session.class.php b/htdocs/libs/includes/Session.class.php
index ab00fd24..be3c73c5 100644
--- a/htdocs/libs/includes/Session.class.php
+++ b/htdocs/libs/includes/Session.class.php
@@ -58,6 +58,25 @@ class Session
         return Session::$usersession;
     }
 
+    /**
+     * Takes an email as input and returns if the session user has same email
+     *
+     * @param string $owner
+     * @return boolean
+     */
+    public static function isOwnerOf($owner){
+        $sess_user = Session::getUser();
+        if($sess_user){
+            if($sess_user->getEmail() == $owner){
+                return true;
+            }else{
+                return false;
+            }
+        } else {
+            return false;
+        }
+    }
+
 
     public static function loadTemplate($name)
     {
diff --git a/htdocs/libs/load.php b/htdocs/libs/load.php
index 7f80b671..e77b6f7f 100644
--- a/htdocs/libs/load.php
+++ b/htdocs/libs/load.php
@@ -1,6 +1,7 @@
 <?php
 
 //TODO: Implement autoload of class files
+require 'vendor/autoload.php';
 include_once 'includes/Session.class.php';
 include_once 'includes/Mic.class.php';
 include_once 'includes/User.class.php';
@@ -9,6 +10,7 @@ include_once 'includes/UserSession.class.php';
 include_once 'includes/WebAPI.class.php';
 include_once 'app/Post.class.php';
 
+
 global $__site_config;
 /*
 Note: Location of configuration
diff --git a/htdocs/test.php b/htdocs/test.php
index 93ce7c43..626fd1e2 100644
--- a/htdocs/test.php
+++ b/htdocs/test.php
@@ -3,9 +3,11 @@ include 'libs/load.php';
 ?>
 <pre>
 <?php
-echo Session::getUser()->getEmail();
-$image_tmp = $_FILES['post_image']['tmp_name'];
-$text = $_POST['post_text'];
-echo $image_tmp;
-Post::registerPost($text, $image_tmp);
+// echo Session::getUser()->getEmail();
+// $image_tmp = $_FILES['post_image']['tmp_name'];
+// $text = $_POST['post_text'];
+// echo $image_tmp;
+// Post::registerPost($text, $image_tmp);
+
+Post::getAllPosts();
 ?></pre>
\ No newline at end of file
diff --git a/htdocs/vendor/autoload.php b/htdocs/vendor/autoload.php
new file mode 100644
index 00000000..c893a016
--- /dev/null
+++ b/htdocs/vendor/autoload.php
@@ -0,0 +1,25 @@
+<?php
+
+// autoload.php @generated by Composer
+
+if (PHP_VERSION_ID < 50600) {
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, $err);
+        } elseif (!headers_sent()) {
+            echo $err;
+        }
+    }
+    trigger_error(
+        $err,
+        E_USER_ERROR
+    );
+}
+
+require_once __DIR__ . '/composer/autoload_real.php';
+
+return ComposerAutoloaderIniteeda4349afdfc2c28c86c81f0a71e547::getLoader();
diff --git a/htdocs/vendor/bin/carbon b/htdocs/vendor/bin/carbon
new file mode 100755
index 00000000..05f6df2b
--- /dev/null
+++ b/htdocs/vendor/bin/carbon
@@ -0,0 +1,120 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * Proxy PHP file generated by Composer
+ *
+ * This file includes the referenced bin path (../nesbot/carbon/bin/carbon)
+ * using a stream wrapper to prevent the shebang from being output on PHP<8
+ *
+ * @generated
+ */
+
+namespace Composer;
+
+$GLOBALS['_composer_bin_dir'] = __DIR__;
+$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
+
+if (PHP_VERSION_ID < 80000) {
+    if (!class_exists('Composer\BinProxyWrapper')) {
+        /**
+         * @internal
+         */
+        final class BinProxyWrapper
+        {
+            private $handle;
+            private $position;
+            private $realpath;
+
+            public function stream_open($path, $mode, $options, &$opened_path)
+            {
+                // get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
+                $opened_path = substr($path, 17);
+                $this->realpath = realpath($opened_path) ?: $opened_path;
+                $opened_path = $this->realpath;
+                $this->handle = fopen($this->realpath, $mode);
+                $this->position = 0;
+
+                return (bool) $this->handle;
+            }
+
+            public function stream_read($count)
+            {
+                $data = fread($this->handle, $count);
+
+                if ($this->position === 0) {
+                    $data = preg_replace('{^#!.*\r?\n}', '', $data);
+                }
+
+                $this->position += strlen($data);
+
+                return $data;
+            }
+
+            public function stream_cast($castAs)
+            {
+                return $this->handle;
+            }
+
+            public function stream_close()
+            {
+                fclose($this->handle);
+            }
+
+            public function stream_lock($operation)
+            {
+                return $operation ? flock($this->handle, $operation) : true;
+            }
+
+            public function stream_seek($offset, $whence)
+            {
+                if (0 === fseek($this->handle, $offset, $whence)) {
+                    $this->position = ftell($this->handle);
+                    return true;
+                }
+
+                return false;
+            }
+
+            public function stream_tell()
+            {
+                return $this->position;
+            }
+
+            public function stream_eof()
+            {
+                return feof($this->handle);
+            }
+
+            public function stream_stat()
+            {
+                return array();
+            }
+
+            public function stream_set_option($option, $arg1, $arg2)
+            {
+                return true;
+            }
+
+            public function url_stat($path, $flags)
+            {
+                $path = substr($path, 17);
+                if (file_exists($path)) {
+                    return stat($path);
+                }
+
+                return false;
+            }
+        }
+    }
+
+    if (
+        (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
+        || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
+    ) {
+        include("phpvfscomposer://" . __DIR__ . '/..'.'/nesbot/carbon/bin/carbon');
+        exit(0);
+    }
+}
+
+include __DIR__ . '/..'.'/nesbot/carbon/bin/carbon';
diff --git a/htdocs/vendor/composer/ClassLoader.php b/htdocs/vendor/composer/ClassLoader.php
new file mode 100644
index 00000000..afef3fa2
--- /dev/null
+++ b/htdocs/vendor/composer/ClassLoader.php
@@ -0,0 +1,572 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ *     $loader = new \Composer\Autoload\ClassLoader();
+ *
+ *     // register classes with namespaces
+ *     $loader->add('Symfony\Component', __DIR__.'/component');
+ *     $loader->add('Symfony',           __DIR__.'/framework');
+ *
+ *     // activate the autoloader
+ *     $loader->register();
+ *
+ *     // to enable searching the include path (eg. for PEAR packages)
+ *     $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see    https://www.php-fig.org/psr/psr-0/
+ * @see    https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+    /** @var ?string */
+    private $vendorDir;
+
+    // PSR-4
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<string, int>>
+     */
+    private $prefixLengthsPsr4 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<int, string>>
+     */
+    private $prefixDirsPsr4 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, string>
+     */
+    private $fallbackDirsPsr4 = array();
+
+    // PSR-0
+    /**
+     * @var array[]
+     * @psalm-var array<string, array<string, string[]>>
+     */
+    private $prefixesPsr0 = array();
+    /**
+     * @var array[]
+     * @psalm-var array<string, string>
+     */
+    private $fallbackDirsPsr0 = array();
+
+    /** @var bool */
+    private $useIncludePath = false;
+
+    /**
+     * @var string[]
+     * @psalm-var array<string, string>
+     */
+    private $classMap = array();
+
+    /** @var bool */
+    private $classMapAuthoritative = false;
+
+    /**
+     * @var bool[]
+     * @psalm-var array<string, bool>
+     */
+    private $missingClasses = array();
+
+    /** @var ?string */
+    private $apcuPrefix;
+
+    /**
+     * @var self[]
+     */
+    private static $registeredLoaders = array();
+
+    /**
+     * @param ?string $vendorDir
+     */
+    public function __construct($vendorDir = null)
+    {
+        $this->vendorDir = $vendorDir;
+    }
+
+    /**
+     * @return string[]
+     */
+    public function getPrefixes()
+    {
+        if (!empty($this->prefixesPsr0)) {
+            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+        }
+
+        return array();
+    }
+
+    /**
+     * @return array[]
+     * @psalm-return array<string, array<int, string>>
+     */
+    public function getPrefixesPsr4()
+    {
+        return $this->prefixDirsPsr4;
+    }
+
+    /**
+     * @return array[]
+     * @psalm-return array<string, string>
+     */
+    public function getFallbackDirs()
+    {
+        return $this->fallbackDirsPsr0;
+    }
+
+    /**
+     * @return array[]
+     * @psalm-return array<string, string>
+     */
+    public function getFallbackDirsPsr4()
+    {
+        return $this->fallbackDirsPsr4;
+    }
+
+    /**
+     * @return string[] Array of classname => path
+     * @psalm-return array<string, string>
+     */
+    public function getClassMap()
+    {
+        return $this->classMap;
+    }
+
+    /**
+     * @param string[] $classMap Class to filename map
+     * @psalm-param array<string, string> $classMap
+     *
+     * @return void
+     */
+    public function addClassMap(array $classMap)
+    {
+        if ($this->classMap) {
+            $this->classMap = array_merge($this->classMap, $classMap);
+        } else {
+            $this->classMap = $classMap;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix, either
+     * appending or prepending to the ones previously set for this prefix.
+     *
+     * @param string          $prefix  The prefix
+     * @param string[]|string $paths   The PSR-0 root directories
+     * @param bool            $prepend Whether to prepend the directories
+     *
+     * @return void
+     */
+    public function add($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            if ($prepend) {
+                $this->fallbackDirsPsr0 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr0
+                );
+            } else {
+                $this->fallbackDirsPsr0 = array_merge(
+                    $this->fallbackDirsPsr0,
+                    (array) $paths
+                );
+            }
+
+            return;
+        }
+
+        $first = $prefix[0];
+        if (!isset($this->prefixesPsr0[$first][$prefix])) {
+            $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+            return;
+        }
+        if ($prepend) {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixesPsr0[$first][$prefix]
+            );
+        } else {
+            $this->prefixesPsr0[$first][$prefix] = array_merge(
+                $this->prefixesPsr0[$first][$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace, either
+     * appending or prepending to the ones previously set for this namespace.
+     *
+     * @param string          $prefix  The prefix/namespace, with trailing '\\'
+     * @param string[]|string $paths   The PSR-4 base directories
+     * @param bool            $prepend Whether to prepend the directories
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return void
+     */
+    public function addPsr4($prefix, $paths, $prepend = false)
+    {
+        if (!$prefix) {
+            // Register directories for the root namespace.
+            if ($prepend) {
+                $this->fallbackDirsPsr4 = array_merge(
+                    (array) $paths,
+                    $this->fallbackDirsPsr4
+                );
+            } else {
+                $this->fallbackDirsPsr4 = array_merge(
+                    $this->fallbackDirsPsr4,
+                    (array) $paths
+                );
+            }
+        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+            // Register directories for a new namespace.
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        } elseif ($prepend) {
+            // Prepend directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                (array) $paths,
+                $this->prefixDirsPsr4[$prefix]
+            );
+        } else {
+            // Append directories for an already registered namespace.
+            $this->prefixDirsPsr4[$prefix] = array_merge(
+                $this->prefixDirsPsr4[$prefix],
+                (array) $paths
+            );
+        }
+    }
+
+    /**
+     * Registers a set of PSR-0 directories for a given prefix,
+     * replacing any others previously set for this prefix.
+     *
+     * @param string          $prefix The prefix
+     * @param string[]|string $paths  The PSR-0 base directories
+     *
+     * @return void
+     */
+    public function set($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr0 = (array) $paths;
+        } else {
+            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Registers a set of PSR-4 directories for a given namespace,
+     * replacing any others previously set for this namespace.
+     *
+     * @param string          $prefix The prefix/namespace, with trailing '\\'
+     * @param string[]|string $paths  The PSR-4 base directories
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return void
+     */
+    public function setPsr4($prefix, $paths)
+    {
+        if (!$prefix) {
+            $this->fallbackDirsPsr4 = (array) $paths;
+        } else {
+            $length = strlen($prefix);
+            if ('\\' !== $prefix[$length - 1]) {
+                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+            }
+            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+            $this->prefixDirsPsr4[$prefix] = (array) $paths;
+        }
+    }
+
+    /**
+     * Turns on searching the include path for class files.
+     *
+     * @param bool $useIncludePath
+     *
+     * @return void
+     */
+    public function setUseIncludePath($useIncludePath)
+    {
+        $this->useIncludePath = $useIncludePath;
+    }
+
+    /**
+     * Can be used to check if the autoloader uses the include path to check
+     * for classes.
+     *
+     * @return bool
+     */
+    public function getUseIncludePath()
+    {
+        return $this->useIncludePath;
+    }
+
+    /**
+     * Turns off searching the prefix and fallback directories for classes
+     * that have not been registered with the class map.
+     *
+     * @param bool $classMapAuthoritative
+     *
+     * @return void
+     */
+    public function setClassMapAuthoritative($classMapAuthoritative)
+    {
+        $this->classMapAuthoritative = $classMapAuthoritative;
+    }
+
+    /**
+     * Should class lookup fail if not found in the current class map?
+     *
+     * @return bool
+     */
+    public function isClassMapAuthoritative()
+    {
+        return $this->classMapAuthoritative;
+    }
+
+    /**
+     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+     *
+     * @param string|null $apcuPrefix
+     *
+     * @return void
+     */
+    public function setApcuPrefix($apcuPrefix)
+    {
+        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+    }
+
+    /**
+     * The APCu prefix in use, or null if APCu caching is not enabled.
+     *
+     * @return string|null
+     */
+    public function getApcuPrefix()
+    {
+        return $this->apcuPrefix;
+    }
+
+    /**
+     * Registers this instance as an autoloader.
+     *
+     * @param bool $prepend Whether to prepend the autoloader or not
+     *
+     * @return void
+     */
+    public function register($prepend = false)
+    {
+        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+        if (null === $this->vendorDir) {
+            return;
+        }
+
+        if ($prepend) {
+            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+        } else {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+            self::$registeredLoaders[$this->vendorDir] = $this;
+        }
+    }
+
+    /**
+     * Unregisters this instance as an autoloader.
+     *
+     * @return void
+     */
+    public function unregister()
+    {
+        spl_autoload_unregister(array($this, 'loadClass'));
+
+        if (null !== $this->vendorDir) {
+            unset(self::$registeredLoaders[$this->vendorDir]);
+        }
+    }
+
+    /**
+     * Loads the given class or interface.
+     *
+     * @param  string    $class The name of the class
+     * @return true|null True if loaded, null otherwise
+     */
+    public function loadClass($class)
+    {
+        if ($file = $this->findFile($class)) {
+            includeFile($file);
+
+            return true;
+        }
+
+        return null;
+    }
+
+    /**
+     * Finds the path to the file where the class is defined.
+     *
+     * @param string $class The name of the class
+     *
+     * @return string|false The path if found, false otherwise
+     */
+    public function findFile($class)
+    {
+        // class map lookup
+        if (isset($this->classMap[$class])) {
+            return $this->classMap[$class];
+        }
+        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+            return false;
+        }
+        if (null !== $this->apcuPrefix) {
+            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+            if ($hit) {
+                return $file;
+            }
+        }
+
+        $file = $this->findFileWithExtension($class, '.php');
+
+        // Search for Hack files if we are running on HHVM
+        if (false === $file && defined('HHVM_VERSION')) {
+            $file = $this->findFileWithExtension($class, '.hh');
+        }
+
+        if (null !== $this->apcuPrefix) {
+            apcu_add($this->apcuPrefix.$class, $file);
+        }
+
+        if (false === $file) {
+            // Remember that this class does not exist.
+            $this->missingClasses[$class] = true;
+        }
+
+        return $file;
+    }
+
+    /**
+     * Returns the currently registered loaders indexed by their corresponding vendor directories.
+     *
+     * @return self[]
+     */
+    public static function getRegisteredLoaders()
+    {
+        return self::$registeredLoaders;
+    }
+
+    /**
+     * @param  string       $class
+     * @param  string       $ext
+     * @return string|false
+     */
+    private function findFileWithExtension($class, $ext)
+    {
+        // PSR-4 lookup
+        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+        $first = $class[0];
+        if (isset($this->prefixLengthsPsr4[$first])) {
+            $subPath = $class;
+            while (false !== $lastPos = strrpos($subPath, '\\')) {
+                $subPath = substr($subPath, 0, $lastPos);
+                $search = $subPath . '\\';
+                if (isset($this->prefixDirsPsr4[$search])) {
+                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
+                        if (file_exists($file = $dir . $pathEnd)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-4 fallback dirs
+        foreach ($this->fallbackDirsPsr4 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 lookup
+        if (false !== $pos = strrpos($class, '\\')) {
+            // namespaced class name
+            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+        } else {
+            // PEAR-like class name
+            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+        }
+
+        if (isset($this->prefixesPsr0[$first])) {
+            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+                if (0 === strpos($class, $prefix)) {
+                    foreach ($dirs as $dir) {
+                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                            return $file;
+                        }
+                    }
+                }
+            }
+        }
+
+        // PSR-0 fallback dirs
+        foreach ($this->fallbackDirsPsr0 as $dir) {
+            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+                return $file;
+            }
+        }
+
+        // PSR-0 include paths.
+        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+            return $file;
+        }
+
+        return false;
+    }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ *
+ * @param  string $file
+ * @return void
+ * @private
+ */
+function includeFile($file)
+{
+    include $file;
+}
diff --git a/htdocs/vendor/composer/InstalledVersions.php b/htdocs/vendor/composer/InstalledVersions.php
new file mode 100644
index 00000000..c6b54af7
--- /dev/null
+++ b/htdocs/vendor/composer/InstalledVersions.php
@@ -0,0 +1,352 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ *     Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require its presence, you can require `composer-runtime-api ^2.0`
+ *
+ * @final
+ */
+class InstalledVersions
+{
+    /**
+     * @var mixed[]|null
+     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
+     */
+    private static $installed;
+
+    /**
+     * @var bool|null
+     */
+    private static $canGetVendors;
+
+    /**
+     * @var array[]
+     * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+     */
+    private static $installedByVendor = array();
+
+    /**
+     * Returns a list of all package names which are present, either by being installed, replaced or provided
+     *
+     * @return string[]
+     * @psalm-return list<string>
+     */
+    public static function getInstalledPackages()
+    {
+        $packages = array();
+        foreach (self::getInstalled() as $installed) {
+            $packages[] = array_keys($installed['versions']);
+        }
+
+        if (1 === \count($packages)) {
+            return $packages[0];
+        }
+
+        return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+    }
+
+    /**
+     * Returns a list of all package names with a specific type e.g. 'library'
+     *
+     * @param  string   $type
+     * @return string[]
+     * @psalm-return list<string>
+     */
+    public static function getInstalledPackagesByType($type)
+    {
+        $packagesByType = array();
+
+        foreach (self::getInstalled() as $installed) {
+            foreach ($installed['versions'] as $name => $package) {
+                if (isset($package['type']) && $package['type'] === $type) {
+                    $packagesByType[] = $name;
+                }
+            }
+        }
+
+        return $packagesByType;
+    }
+
+    /**
+     * Checks whether the given package is installed
+     *
+     * This also returns true if the package name is provided or replaced by another package
+     *
+     * @param  string $packageName
+     * @param  bool   $includeDevRequirements
+     * @return bool
+     */
+    public static function isInstalled($packageName, $includeDevRequirements = true)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (isset($installed['versions'][$packageName])) {
+                return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Checks whether the given package satisfies a version constraint
+     *
+     * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+     *
+     *   Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+     *
+     * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality
+     * @param  string        $packageName
+     * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+     * @return bool
+     */
+    public static function satisfies(VersionParser $parser, $packageName, $constraint)
+    {
+        $constraint = $parser->parseConstraints($constraint);
+        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+        return $provided->matches($constraint);
+    }
+
+    /**
+     * Returns a version constraint representing all the range(s) which are installed for a given package
+     *
+     * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+     * whether a given version of a package is installed, and not just whether it exists
+     *
+     * @param  string $packageName
+     * @return string Version constraint usable with composer/semver
+     */
+    public static function getVersionRanges($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            $ranges = array();
+            if (isset($installed['versions'][$packageName]['pretty_version'])) {
+                $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+            }
+            if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+            }
+            if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+            }
+            if (array_key_exists('provided', $installed['versions'][$packageName])) {
+                $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+            }
+
+            return implode(' || ', $ranges);
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+     */
+    public static function getVersion($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['version'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['version'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+     */
+    public static function getPrettyVersion($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['pretty_version'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+     */
+    public static function getReference($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            if (!isset($installed['versions'][$packageName]['reference'])) {
+                return null;
+            }
+
+            return $installed['versions'][$packageName]['reference'];
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @param  string      $packageName
+     * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+     */
+    public static function getInstallPath($packageName)
+    {
+        foreach (self::getInstalled() as $installed) {
+            if (!isset($installed['versions'][$packageName])) {
+                continue;
+            }
+
+            return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+        }
+
+        throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+    }
+
+    /**
+     * @return array
+     * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
+     */
+    public static function getRootPackage()
+    {
+        $installed = self::getInstalled();
+
+        return $installed[0]['root'];
+    }
+
+    /**
+     * Returns the raw installed.php data for custom implementations
+     *
+     * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+     * @return array[]
+     * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
+     */
+    public static function getRawData()
+    {
+        @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+        if (null === self::$installed) {
+            // only require the installed.php file if this file is loaded from its dumped location,
+            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+            if (substr(__DIR__, -8, 1) !== 'C') {
+                self::$installed = include __DIR__ . '/installed.php';
+            } else {
+                self::$installed = array();
+            }
+        }
+
+        return self::$installed;
+    }
+
+    /**
+     * Returns the raw data of all installed.php which are currently loaded for custom implementations
+     *
+     * @return array[]
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+     */
+    public static function getAllRawData()
+    {
+        return self::getInstalled();
+    }
+
+    /**
+     * Lets you reload the static array from another file
+     *
+     * This is only useful for complex integrations in which a project needs to use
+     * this class but then also needs to execute another project's autoloader in process,
+     * and wants to ensure both projects have access to their version of installed.php.
+     *
+     * A typical case would be PHPUnit, where it would need to make sure it reads all
+     * the data it needs from this class, then call reload() with
+     * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+     * the project in which it runs can then also use this class safely, without
+     * interference between PHPUnit's dependencies and the project's dependencies.
+     *
+     * @param  array[] $data A vendor/composer/installed.php data set
+     * @return void
+     *
+     * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
+     */
+    public static function reload($data)
+    {
+        self::$installed = $data;
+        self::$installedByVendor = array();
+    }
+
+    /**
+     * @return array[]
+     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
+     */
+    private static function getInstalled()
+    {
+        if (null === self::$canGetVendors) {
+            self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+        }
+
+        $installed = array();
+
+        if (self::$canGetVendors) {
+            foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+                if (isset(self::$installedByVendor[$vendorDir])) {
+                    $installed[] = self::$installedByVendor[$vendorDir];
+                } elseif (is_file($vendorDir.'/composer/installed.php')) {
+                    $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+                        self::$installed = $installed[count($installed) - 1];
+                    }
+                }
+            }
+        }
+
+        if (null === self::$installed) {
+            // only require the installed.php file if this file is loaded from its dumped location,
+            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+            if (substr(__DIR__, -8, 1) !== 'C') {
+                self::$installed = require __DIR__ . '/installed.php';
+            } else {
+                self::$installed = array();
+            }
+        }
+        $installed[] = self::$installed;
+
+        return $installed;
+    }
+}
diff --git a/htdocs/vendor/composer/LICENSE b/htdocs/vendor/composer/LICENSE
new file mode 100644
index 00000000..f27399a0
--- /dev/null
+++ b/htdocs/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/htdocs/vendor/composer/autoload_classmap.php b/htdocs/vendor/composer/autoload_classmap.php
new file mode 100644
index 00000000..5490b88d
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_classmap.php
@@ -0,0 +1,15 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
+    'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
+    'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+    'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+    'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+);
diff --git a/htdocs/vendor/composer/autoload_files.php b/htdocs/vendor/composer/autoload_files.php
new file mode 100644
index 00000000..891af3d5
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_files.php
@@ -0,0 +1,12 @@
+<?php
+
+// autoload_files.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
+    'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
+    'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
+);
diff --git a/htdocs/vendor/composer/autoload_namespaces.php b/htdocs/vendor/composer/autoload_namespaces.php
new file mode 100644
index 00000000..15a2ff3a
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+);
diff --git a/htdocs/vendor/composer/autoload_psr4.php b/htdocs/vendor/composer/autoload_psr4.php
new file mode 100644
index 00000000..9a87d722
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_psr4.php
@@ -0,0 +1,14 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(__DIR__);
+$baseDir = dirname($vendorDir);
+
+return array(
+    'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'),
+    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+    'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'),
+    'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
+    'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'),
+);
diff --git a/htdocs/vendor/composer/autoload_real.php b/htdocs/vendor/composer/autoload_real.php
new file mode 100644
index 00000000..9389d3aa
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_real.php
@@ -0,0 +1,57 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderIniteeda4349afdfc2c28c86c81f0a71e547
+{
+    private static $loader;
+
+    public static function loadClassLoader($class)
+    {
+        if ('Composer\Autoload\ClassLoader' === $class) {
+            require __DIR__ . '/ClassLoader.php';
+        }
+    }
+
+    /**
+     * @return \Composer\Autoload\ClassLoader
+     */
+    public static function getLoader()
+    {
+        if (null !== self::$loader) {
+            return self::$loader;
+        }
+
+        require __DIR__ . '/platform_check.php';
+
+        spl_autoload_register(array('ComposerAutoloaderIniteeda4349afdfc2c28c86c81f0a71e547', 'loadClassLoader'), true, true);
+        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
+        spl_autoload_unregister(array('ComposerAutoloaderIniteeda4349afdfc2c28c86c81f0a71e547', 'loadClassLoader'));
+
+        require __DIR__ . '/autoload_static.php';
+        call_user_func(\Composer\Autoload\ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547::getInitializer($loader));
+
+        $loader->register(true);
+
+        $includeFiles = \Composer\Autoload\ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547::$files;
+        foreach ($includeFiles as $fileIdentifier => $file) {
+            composerRequireeeda4349afdfc2c28c86c81f0a71e547($fileIdentifier, $file);
+        }
+
+        return $loader;
+    }
+}
+
+/**
+ * @param string $fileIdentifier
+ * @param string $file
+ * @return void
+ */
+function composerRequireeeda4349afdfc2c28c86c81f0a71e547($fileIdentifier, $file)
+{
+    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+        $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+
+        require $file;
+    }
+}
diff --git a/htdocs/vendor/composer/autoload_static.php b/htdocs/vendor/composer/autoload_static.php
new file mode 100644
index 00000000..09ba5eb3
--- /dev/null
+++ b/htdocs/vendor/composer/autoload_static.php
@@ -0,0 +1,70 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547
+{
+    public static $files = array (
+        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
+        'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
+        'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
+    );
+
+    public static $prefixLengthsPsr4 = array (
+        'S' => 
+        array (
+            'Symfony\\Polyfill\\Php80\\' => 23,
+            'Symfony\\Polyfill\\Mbstring\\' => 26,
+            'Symfony\\Contracts\\Translation\\' => 30,
+            'Symfony\\Component\\Translation\\' => 30,
+        ),
+        'C' => 
+        array (
+            'Carbon\\' => 7,
+        ),
+    );
+
+    public static $prefixDirsPsr4 = array (
+        'Symfony\\Polyfill\\Php80\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-php80',
+        ),
+        'Symfony\\Polyfill\\Mbstring\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
+        ),
+        'Symfony\\Contracts\\Translation\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/translation-contracts',
+        ),
+        'Symfony\\Component\\Translation\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/symfony/translation',
+        ),
+        'Carbon\\' => 
+        array (
+            0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon',
+        ),
+    );
+
+    public static $classMap = array (
+        'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
+        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+        'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php',
+        'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
+        'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php',
+        'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php',
+    );
+
+    public static function getInitializer(ClassLoader $loader)
+    {
+        return \Closure::bind(function () use ($loader) {
+            $loader->prefixLengthsPsr4 = ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547::$prefixLengthsPsr4;
+            $loader->prefixDirsPsr4 = ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547::$prefixDirsPsr4;
+            $loader->classMap = ComposerStaticIniteeda4349afdfc2c28c86c81f0a71e547::$classMap;
+
+        }, null, ClassLoader::class);
+    }
+}
diff --git a/htdocs/vendor/composer/installed.json b/htdocs/vendor/composer/installed.json
new file mode 100644
index 00000000..c663e6cb
--- /dev/null
+++ b/htdocs/vendor/composer/installed.json
@@ -0,0 +1,466 @@
+{
+    "packages": [
+        {
+            "name": "nesbot/carbon",
+            "version": "2.63.0",
+            "version_normalized": "2.63.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/briannesbitt/Carbon.git",
+                "reference": "ad35dd71a6a212b98e4b87e97389b6fa85f0e347"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/ad35dd71a6a212b98e4b87e97389b6fa85f0e347",
+                "reference": "ad35dd71a6a212b98e4b87e97389b6fa85f0e347",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "php": "^7.1.8 || ^8.0",
+                "symfony/polyfill-mbstring": "^1.0",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+            },
+            "require-dev": {
+                "doctrine/dbal": "^2.0 || ^3.0",
+                "doctrine/orm": "^2.7",
+                "friendsofphp/php-cs-fixer": "^3.0",
+                "kylekatarnls/multi-tester": "^2.0",
+                "ondrejmirtes/better-reflection": "*",
+                "phpmd/phpmd": "^2.9",
+                "phpstan/extension-installer": "^1.0",
+                "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+                "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+                "squizlabs/php_codesniffer": "^3.4"
+            },
+            "time": "2022-10-30T18:34:28+00:00",
+            "bin": [
+                "bin/carbon"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-3.x": "3.x-dev",
+                    "dev-master": "2.x-dev"
+                },
+                "laravel": {
+                    "providers": [
+                        "Carbon\\Laravel\\ServiceProvider"
+                    ]
+                },
+                "phpstan": {
+                    "includes": [
+                        "extension.neon"
+                    ]
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Carbon\\": "src/Carbon/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Brian Nesbitt",
+                    "email": "brian@nesbot.com",
+                    "homepage": "https://markido.com"
+                },
+                {
+                    "name": "kylekatarnls",
+                    "homepage": "https://github.com/kylekatarnls"
+                }
+            ],
+            "description": "An API extension for DateTime that supports 281 different languages.",
+            "homepage": "https://carbon.nesbot.com",
+            "keywords": [
+                "date",
+                "datetime",
+                "time"
+            ],
+            "support": {
+                "docs": "https://carbon.nesbot.com/docs",
+                "issues": "https://github.com/briannesbitt/Carbon/issues",
+                "source": "https://github.com/briannesbitt/Carbon"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sponsors/kylekatarnls",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/Carbon#sponsor",
+                    "type": "opencollective"
+                },
+                {
+                    "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../nesbot/carbon"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.27.0",
+            "version_normalized": "1.27.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "time": "2022-11-03T14:55:06+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-mbstring"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.27.0",
+            "version_normalized": "1.27.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "time": "2022-11-03T14:55:06+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "1.27-dev"
+                },
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/polyfill-php80"
+        },
+        {
+            "name": "symfony/translation",
+            "version": "v6.1.6",
+            "version_normalized": "6.1.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/translation.git",
+                "reference": "e6cd330e5a072518f88d65148f3f165541807494"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/translation/zipball/e6cd330e5a072518f88d65148f3f165541807494",
+                "reference": "e6cd330e5a072518f88d65148f3f165541807494",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/translation-contracts": "^2.3|^3.0"
+            },
+            "conflict": {
+                "symfony/config": "<5.4",
+                "symfony/console": "<5.4",
+                "symfony/dependency-injection": "<5.4",
+                "symfony/http-kernel": "<5.4",
+                "symfony/twig-bundle": "<5.4",
+                "symfony/yaml": "<5.4"
+            },
+            "provide": {
+                "symfony/translation-implementation": "2.3|3.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^5.4|^6.0",
+                "symfony/console": "^5.4|^6.0",
+                "symfony/dependency-injection": "^5.4|^6.0",
+                "symfony/finder": "^5.4|^6.0",
+                "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+                "symfony/http-kernel": "^5.4|^6.0",
+                "symfony/intl": "^5.4|^6.0",
+                "symfony/polyfill-intl-icu": "^1.21",
+                "symfony/routing": "^5.4|^6.0",
+                "symfony/service-contracts": "^1.1.2|^2|^3",
+                "symfony/yaml": "^5.4|^6.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "To use logging capability in translator",
+                "symfony/config": "",
+                "symfony/yaml": ""
+            },
+            "time": "2022-10-07T08:04:03+00:00",
+            "type": "library",
+            "installation-source": "dist",
+            "autoload": {
+                "files": [
+                    "Resources/functions.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\Translation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides tools to internationalize your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/translation/tree/v6.1.6"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/translation"
+        },
+        {
+            "name": "symfony/translation-contracts",
+            "version": "v3.1.1",
+            "version_normalized": "3.1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/translation-contracts.git",
+                "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/606be0f48e05116baef052f7f3abdb345c8e02cc",
+                "reference": "606be0f48e05116baef052f7f3abdb345c8e02cc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "suggest": {
+                "symfony/translation-implementation": ""
+            },
+            "time": "2022-06-27T17:24:16+00:00",
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.1-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "installation-source": "dist",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Translation\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Test/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to translation",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/translation-contracts/tree/v3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "install-path": "../symfony/translation-contracts"
+        }
+    ],
+    "dev": true,
+    "dev-package-names": []
+}
diff --git a/htdocs/vendor/composer/installed.php b/htdocs/vendor/composer/installed.php
new file mode 100644
index 00000000..c17ab449
--- /dev/null
+++ b/htdocs/vendor/composer/installed.php
@@ -0,0 +1,74 @@
+<?php return array(
+    'root' => array(
+        'name' => '__root__',
+        'pretty_version' => 'dev-master',
+        'version' => 'dev-master',
+        'reference' => '75d51b3ad7b451d7a814db4e092d10b32b4fbc13',
+        'type' => 'library',
+        'install_path' => __DIR__ . '/../../',
+        'aliases' => array(),
+        'dev' => true,
+    ),
+    'versions' => array(
+        '__root__' => array(
+            'pretty_version' => 'dev-master',
+            'version' => 'dev-master',
+            'reference' => '75d51b3ad7b451d7a814db4e092d10b32b4fbc13',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../../',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'nesbot/carbon' => array(
+            'pretty_version' => '2.63.0',
+            'version' => '2.63.0.0',
+            'reference' => 'ad35dd71a6a212b98e4b87e97389b6fa85f0e347',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../nesbot/carbon',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'symfony/polyfill-mbstring' => array(
+            'pretty_version' => 'v1.27.0',
+            'version' => '1.27.0.0',
+            'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'symfony/polyfill-php80' => array(
+            'pretty_version' => 'v1.27.0',
+            'version' => '1.27.0.0',
+            'reference' => '7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/polyfill-php80',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'symfony/translation' => array(
+            'pretty_version' => 'v6.1.6',
+            'version' => '6.1.6.0',
+            'reference' => 'e6cd330e5a072518f88d65148f3f165541807494',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/translation',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'symfony/translation-contracts' => array(
+            'pretty_version' => 'v3.1.1',
+            'version' => '3.1.1.0',
+            'reference' => '606be0f48e05116baef052f7f3abdb345c8e02cc',
+            'type' => 'library',
+            'install_path' => __DIR__ . '/../symfony/translation-contracts',
+            'aliases' => array(),
+            'dev_requirement' => false,
+        ),
+        'symfony/translation-implementation' => array(
+            'dev_requirement' => false,
+            'provided' => array(
+                0 => '2.3|3.0',
+            ),
+        ),
+    ),
+);
diff --git a/htdocs/vendor/composer/platform_check.php b/htdocs/vendor/composer/platform_check.php
new file mode 100644
index 00000000..4c3a5d68
--- /dev/null
+++ b/htdocs/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+<?php
+
+// platform_check.php @generated by Composer
+
+$issues = array();
+
+if (!(PHP_VERSION_ID >= 80100)) {
+    $issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+    if (!headers_sent()) {
+        header('HTTP/1.1 500 Internal Server Error');
+    }
+    if (!ini_get('display_errors')) {
+        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+        } elseif (!headers_sent()) {
+            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+        }
+    }
+    trigger_error(
+        'Composer detected issues in your platform: ' . implode(' ', $issues),
+        E_USER_ERROR
+    );
+}
diff --git a/htdocs/vendor/nesbot/carbon/LICENSE b/htdocs/vendor/nesbot/carbon/LICENSE
new file mode 100644
index 00000000..6de45ebf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) Brian Nesbitt
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/htdocs/vendor/nesbot/carbon/bin/carbon b/htdocs/vendor/nesbot/carbon/bin/carbon
new file mode 100755
index 00000000..b53ab738
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/bin/carbon
@@ -0,0 +1,23 @@
+#!/usr/bin/env php
+<?php
+
+use Carbon\Cli\Invoker;
+
+$dir = __DIR__.'/..';
+
+if (!file_exists($dir.'/autoload.php')) {
+    $dir = __DIR__.'/../vendor';
+}
+
+if (!file_exists($dir.'/autoload.php')) {
+    $dir = __DIR__.'/../../..';
+}
+
+if (!file_exists($dir.'/autoload.php')) {
+    echo 'Autoload not found.';
+    exit(1);
+}
+
+require $dir.'/autoload.php';
+
+exit((new Invoker())(...$argv) ? 0 : 1);
diff --git a/htdocs/vendor/nesbot/carbon/bin/carbon.bat b/htdocs/vendor/nesbot/carbon/bin/carbon.bat
new file mode 100644
index 00000000..84599d34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/bin/carbon.bat
@@ -0,0 +1,4 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/carbon
+php "%BIN_TARGET%" %*
diff --git a/htdocs/vendor/nesbot/carbon/composer.json b/htdocs/vendor/nesbot/carbon/composer.json
new file mode 100644
index 00000000..cdbbc121
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/composer.json
@@ -0,0 +1,120 @@
+{
+    "name": "nesbot/carbon",
+    "description": "An API extension for DateTime that supports 281 different languages.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "date",
+        "time",
+        "DateTime"
+    ],
+    "authors": [
+        {
+            "name": "Brian Nesbitt",
+            "email": "brian@nesbot.com",
+            "homepage": "https://markido.com"
+        },
+        {
+            "name": "kylekatarnls",
+            "homepage": "https://github.com/kylekatarnls"
+        }
+    ],
+    "homepage": "https://carbon.nesbot.com",
+    "support": {
+        "issues": "https://github.com/briannesbitt/Carbon/issues",
+        "source": "https://github.com/briannesbitt/Carbon",
+        "docs": "https://carbon.nesbot.com/docs"
+    },
+    "funding": [
+        {
+            "url": "https://github.com/sponsors/kylekatarnls",
+            "type": "github"
+        },
+        {
+            "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
+            "type": "tidelift"
+        },
+        {
+            "url": "https://opencollective.com/Carbon#sponsor",
+            "type": "opencollective"
+        }
+    ],
+    "require": {
+        "php": "^7.1.8 || ^8.0",
+        "ext-json": "*",
+        "symfony/polyfill-mbstring": "^1.0",
+        "symfony/polyfill-php80": "^1.16",
+        "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0"
+    },
+    "require-dev": {
+        "doctrine/dbal": "^2.0 || ^3.0",
+        "doctrine/orm": "^2.7",
+        "friendsofphp/php-cs-fixer": "^3.0",
+        "kylekatarnls/multi-tester": "^2.0",
+        "ondrejmirtes/better-reflection": "*",
+        "phpmd/phpmd": "^2.9",
+        "phpstan/extension-installer": "^1.0",
+        "phpstan/phpstan": "^0.12.99 || ^1.7.14",
+        "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6",
+        "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20",
+        "squizlabs/php_codesniffer": "^3.4"
+    },
+    "minimum-stability": "dev",
+    "prefer-stable": true,
+    "autoload": {
+        "psr-4": {
+            "Carbon\\": "src/Carbon/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Tests\\": "tests/"
+        },
+        "files": [
+            "tests/Laravel/ServiceProvider.php"
+        ]
+    },
+    "bin": [
+        "bin/carbon"
+    ],
+    "config": {
+        "allow-plugins": {
+            "phpstan/extension-installer": true,
+            "composer/package-versions-deprecated": true
+        },
+        "process-timeout": 0,
+        "sort-packages": true
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-3.x": "3.x-dev",
+            "dev-master": "2.x-dev"
+        },
+        "laravel": {
+            "providers": [
+                "Carbon\\Laravel\\ServiceProvider"
+            ]
+        },
+        "phpstan": {
+            "includes": [
+                "extension.neon"
+            ]
+        }
+    },
+    "scripts": {
+        "phpcs": "php-cs-fixer fix -v --diff --dry-run",
+        "phpdoc": "php phpdoc.php",
+        "phpmd": "phpmd src text /phpmd.xml",
+        "phpstan": "phpstan analyse --configuration phpstan.neon",
+        "phpunit": "phpunit --verbose",
+        "style-check": [
+            "@phpcs",
+            "@phpstan",
+            "@phpmd"
+        ],
+        "test": [
+            "@phpunit",
+            "@style-check"
+        ]
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/extension.neon b/htdocs/vendor/nesbot/carbon/extension.neon
new file mode 100644
index 00000000..33bf794f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/extension.neon
@@ -0,0 +1,5 @@
+services:
+    -
+        class: Carbon\PHPStan\MacroExtension
+        tags:
+            - phpstan.broker.methodsClassReflectionExtension
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php
new file mode 100644
index 00000000..ba7cf632
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php
@@ -0,0 +1,36 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use PHPStan\BetterReflection\Reflection;
+use ReflectionMethod;
+
+if (!class_exists(AbstractReflectionMacro::class, false)) {
+    abstract class AbstractReflectionMacro extends AbstractMacro
+    {
+        /**
+         * {@inheritdoc}
+         */
+        public function getReflection(): ?ReflectionMethod
+        {
+            if ($this->reflectionFunction instanceof Reflection\ReflectionMethod) {
+                return new Reflection\Adapter\ReflectionMethod($this->reflectionFunction);
+            }
+
+            return $this->reflectionFunction instanceof ReflectionMethod
+                ? $this->reflectionFunction
+                : null;
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php
new file mode 100644
index 00000000..bd4c8e80
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php
@@ -0,0 +1,45 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use PHPStan\BetterReflection\Reflection;
+use ReflectionMethod;
+
+if (!class_exists(AbstractReflectionMacro::class, false)) {
+    abstract class AbstractReflectionMacro extends AbstractMacro
+    {
+        /**
+         * {@inheritdoc}
+         */
+        public function getReflection(): ?Reflection\Adapter\ReflectionMethod
+        {
+            if ($this->reflectionFunction instanceof Reflection\Adapter\ReflectionMethod) {
+                return $this->reflectionFunction;
+            }
+
+            if ($this->reflectionFunction instanceof Reflection\ReflectionMethod) {
+                return new Reflection\Adapter\ReflectionMethod($this->reflectionFunction);
+            }
+
+            return $this->reflectionFunction instanceof ReflectionMethod
+                ? new Reflection\Adapter\ReflectionMethod(
+                    Reflection\ReflectionMethod::createFromName(
+                        $this->reflectionFunction->getDeclaringClass()->getName(),
+                        $this->reflectionFunction->getName()
+                    )
+                )
+                : null;
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php
new file mode 100644
index 00000000..f615b3a6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php
@@ -0,0 +1,45 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+if (!class_exists(LazyMacro::class, false)) {
+    abstract class LazyMacro extends AbstractReflectionMacro
+    {
+        /**
+         * {@inheritdoc}
+         */
+        public function getFileName(): ?string
+        {
+            $file = $this->reflectionFunction->getFileName();
+
+            return (($file ? realpath($file) : null) ?: $file) ?: null;
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getStartLine(): ?int
+        {
+            return $this->reflectionFunction->getStartLine();
+        }
+
+        /**
+         * {@inheritdoc}
+         */
+        public function getEndLine(): ?int
+        {
+            return $this->reflectionFunction->getEndLine();
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php
new file mode 100644
index 00000000..bf64c1dd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php
@@ -0,0 +1,51 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+if (!class_exists(LazyMacro::class, false)) {
+    abstract class LazyMacro extends AbstractReflectionMacro
+    {
+        /**
+         * {@inheritdoc}
+         *
+         * @return string|false
+         */
+        public function getFileName()
+        {
+            $file = $this->reflectionFunction->getFileName();
+
+            return (($file ? realpath($file) : null) ?: $file) ?: null;
+        }
+
+        /**
+         * {@inheritdoc}
+         *
+         * @return int|false
+         */
+        public function getStartLine()
+        {
+            return $this->reflectionFunction->getStartLine();
+        }
+
+        /**
+         * {@inheritdoc}
+         *
+         * @return int|false
+         */
+        public function getEndLine()
+        {
+            return $this->reflectionFunction->getEndLine();
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php
new file mode 100644
index 00000000..d35308a6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+if (!class_exists(LazyTranslator::class, false)) {
+    class LazyTranslator extends AbstractTranslator implements TranslatorStrongTypeInterface
+    {
+        public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
+        {
+            return $this->translate($id, $parameters, $domain, $locale);
+        }
+
+        public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages')
+        {
+            $messages = $this->getPrivateProperty($catalogue, 'messages');
+
+            if (isset($messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id])) {
+                return $messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id];
+            }
+
+            if (isset($messages[$domain][$id])) {
+                return $messages[$domain][$id];
+            }
+
+            $fallbackCatalogue = $this->getPrivateProperty($catalogue, 'fallbackCatalogue');
+
+            if ($fallbackCatalogue !== null) {
+                return $this->getFromCatalogue($fallbackCatalogue, $id, $domain);
+            }
+
+            return $id;
+        }
+
+        private function getPrivateProperty($instance, string $field)
+        {
+            return (function (string $field) {
+                return $this->$field;
+            })->call($instance, $field);
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php b/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php
new file mode 100644
index 00000000..94dbdc30
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+if (!class_exists(LazyTranslator::class, false)) {
+    class LazyTranslator extends AbstractTranslator
+    {
+        /**
+         * Returns the translation.
+         *
+         * @param string|null $id
+         * @param array       $parameters
+         * @param string|null $domain
+         * @param string|null $locale
+         *
+         * @return string
+         */
+        public function trans($id, array $parameters = [], $domain = null, $locale = null)
+        {
+            return $this->translate($id, $parameters, $domain, $locale);
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/readme.md b/htdocs/vendor/nesbot/carbon/readme.md
new file mode 100644
index 00000000..c04a0e95
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/readme.md
@@ -0,0 +1,153 @@
+# Carbon
+
+[![Latest Stable Version](https://img.shields.io/packagist/v/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon)
+[![Total Downloads](https://img.shields.io/packagist/dt/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon)
+[![GitHub Actions](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fbriannesbitt%2FCarbon%2Fbadge&style=flat-square&label=Build&logo=none)](https://actions-badge.atrox.dev/briannesbitt/Carbon/goto)
+[![codecov.io](https://img.shields.io/codecov/c/github/briannesbitt/Carbon.svg?style=flat-square)](https://codecov.io/github/briannesbitt/Carbon?branch=master)
+[![Tidelift](https://tidelift.com/badges/github/briannesbitt/Carbon)](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme)
+
+An international PHP extension for DateTime. [https://carbon.nesbot.com](https://carbon.nesbot.com)
+
+```php
+<?php
+
+use Carbon\Carbon;
+
+printf("Right now is %s", Carbon::now()->toDateTimeString());
+printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver'));  //implicit __toString()
+$tomorrow = Carbon::now()->addDay();
+$lastWeek = Carbon::now()->subWeek();
+$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4);
+
+$officialDate = Carbon::now()->toRfc2822String();
+
+$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
+
+$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
+
+$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
+
+// Don't really want this to happen so mock now
+Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1));
+
+// comparisons are always done in UTC
+if (Carbon::now()->gte($internetWillBlowUpOn)) {
+    die();
+}
+
+// Phew! Return to normal behaviour
+Carbon::setTestNow();
+
+if (Carbon::now()->isWeekend()) {
+    echo 'Party!';
+}
+// Over 200 languages (and over 500 regional variants) supported:
+echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'
+echo Carbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans(); // '2分钟前'
+echo Carbon::parse('2019-07-23 14:51')->isoFormat('LLLL'); // 'Tuesday, July 23, 2019 2:51 PM'
+echo Carbon::parse('2019-07-23 14:51')->locale('fr_FR')->isoFormat('LLLL'); // 'mardi 23 juillet 2019 14:51'
+
+// ... but also does 'from now', 'after' and 'before'
+// rolling up to seconds, minutes, hours, days, months, years
+
+$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays();
+```
+
+[Get supported nesbot/carbon with the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme)
+
+## Installation
+
+### With Composer
+
+```
+$ composer require nesbot/carbon
+```
+
+```json
+{
+    "require": {
+        "nesbot/carbon": "^2.16"
+    }
+}
+```
+
+```php
+<?php
+require 'vendor/autoload.php';
+
+use Carbon\Carbon;
+
+printf("Now: %s", Carbon::now());
+```
+
+### Without Composer
+
+Why are you not using [composer](https://getcomposer.org/)? Download the Carbon [latest release](https://github.com/briannesbitt/Carbon/releases) and put the contents of the ZIP archive into a directory in your project. Then require the file `autoload.php` to get all classes and dependencies loaded on need.
+
+```php
+<?php
+require 'path-to-Carbon-directory/autoload.php';
+
+use Carbon\Carbon;
+
+printf("Now: %s", Carbon::now());
+```
+
+## Docs
+
+[https://carbon.nesbot.com/docs](https://carbon.nesbot.com/docs)
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## Credits
+
+### Contributors
+
+This project exists thanks to all the people who contribute. 
+
+<a href="https://github.com/briannesbitt/Carbon/graphs/contributors" target="_blank"><img src="https://opencollective.com/Carbon/contributors.svg?width=890&button=false" /></a>
+
+### Translators
+
+[Thanks to people helping us to translate Carbon in so many languages](https://carbon.nesbot.com/contribute/translators/)
+
+### Sponsors
+
+Support this project by becoming a sponsor. Your logo will show up here with a link to your website.
+
+<a href="https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme" target="_blank"><img src="https://carbon.nesbot.com/tidelift-brand.png" width="256" height="64"></a>
+<a href="https://casinohex.org/canada/?utm_source=opencollective&amp;utm_medium=github&amp;utm_campaign=Carbon" target="_blank"><img src="https://images.opencollective.com/hexcasinoca/2da3af2/logo/256.png" width="85" height="64"></a>
+
+<a href="https://github.com/taylorotwell" target="_blank"><img src="https://avatars.githubusercontent.com/u/463230?s=128&v=4" width="64" height="64"></a>
+<a href="https://github.com/usefathom" target="_blank"><img src="https://avatars.githubusercontent.com/u/38684088?s=128&v=4" width="64" height="64"></a>
+<a href="https://github.com/tobischulz" target="_blank"><img src="https://avatars.githubusercontent.com/u/576014?s=128&v=4" width="64" height="64"></a>
+
+<a href="https://opencollective.com/Carbon/sponsor/0/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/0/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/1/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/1/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/2/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/2/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/3/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/3/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/4/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/4/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/5/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/5/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/6/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/6/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/7/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/7/avatar.svg"></a>
+<a href="https://opencollective.com/Carbon/sponsor/8/website" target="_blank"><img src="https://opencollective.com/Carbon/sponsor/8/avatar.svg"></a>
+
+[[Become a sponsor](https://opencollective.com/Carbon#sponsor)]
+
+### Backers
+
+Thank you to all our backers! 🙏
+
+<a href="https://opencollective.com/Carbon#backers" target="_blank"><img src="https://opencollective.com/Carbon/backers.svg?width=890"></a>
+
+[[Become a backer](https://opencollective.com/Carbon#backer)]
+
+## Carbon for enterprise
+
+Available as part of the Tidelift Subscription.
+
+The maintainers of ``Carbon`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=enterprise&utm_term=repo)
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php b/htdocs/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php
new file mode 100644
index 00000000..949e159b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php
@@ -0,0 +1,397 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Closure;
+use ReflectionException;
+use ReflectionFunction;
+use Symfony\Component\Translation;
+use Symfony\Component\Translation\Formatter\MessageFormatterInterface;
+use Symfony\Component\Translation\Loader\ArrayLoader;
+
+abstract class AbstractTranslator extends Translation\Translator
+{
+    /**
+     * Translator singletons for each language.
+     *
+     * @var array
+     */
+    protected static $singletons = [];
+
+    /**
+     * List of custom localized messages.
+     *
+     * @var array
+     */
+    protected $messages = [];
+
+    /**
+     * List of custom directories that contain translation files.
+     *
+     * @var string[]
+     */
+    protected $directories = [];
+
+    /**
+     * Set to true while constructing.
+     *
+     * @var bool
+     */
+    protected $initializing = false;
+
+    /**
+     * List of locales aliases.
+     *
+     * @var string[]
+     */
+    protected $aliases = [
+        'me' => 'sr_Latn_ME',
+        'scr' => 'sh',
+    ];
+
+    /**
+     * Return a singleton instance of Translator.
+     *
+     * @param string|null $locale optional initial locale ("en" - english by default)
+     *
+     * @return static
+     */
+    public static function get($locale = null)
+    {
+        $locale = $locale ?: 'en';
+        $key = static::class === Translator::class ? $locale : static::class.'|'.$locale;
+
+        if (!isset(static::$singletons[$key])) {
+            static::$singletons[$key] = new static($locale);
+        }
+
+        return static::$singletons[$key];
+    }
+
+    public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
+    {
+        parent::setLocale($locale);
+        $this->initializing = true;
+        $this->directories = [__DIR__.'/Lang'];
+        $this->addLoader('array', new ArrayLoader());
+        parent::__construct($locale, $formatter, $cacheDir, $debug);
+        $this->initializing = false;
+    }
+
+    /**
+     * Returns the list of directories translation files are searched in.
+     *
+     * @return array
+     */
+    public function getDirectories(): array
+    {
+        return $this->directories;
+    }
+
+    /**
+     * Set list of directories translation files are searched in.
+     *
+     * @param array $directories new directories list
+     *
+     * @return $this
+     */
+    public function setDirectories(array $directories)
+    {
+        $this->directories = $directories;
+
+        return $this;
+    }
+
+    /**
+     * Add a directory to the list translation files are searched in.
+     *
+     * @param string $directory new directory
+     *
+     * @return $this
+     */
+    public function addDirectory(string $directory)
+    {
+        $this->directories[] = $directory;
+
+        return $this;
+    }
+
+    /**
+     * Remove a directory from the list translation files are searched in.
+     *
+     * @param string $directory directory path
+     *
+     * @return $this
+     */
+    public function removeDirectory(string $directory)
+    {
+        $search = rtrim(strtr($directory, '\\', '/'), '/');
+
+        return $this->setDirectories(array_filter($this->getDirectories(), function ($item) use ($search) {
+            return rtrim(strtr($item, '\\', '/'), '/') !== $search;
+        }));
+    }
+
+    /**
+     * Reset messages of a locale (all locale if no locale passed).
+     * Remove custom messages and reload initial messages from matching
+     * file in Lang directory.
+     *
+     * @param string|null $locale
+     *
+     * @return bool
+     */
+    public function resetMessages($locale = null)
+    {
+        if ($locale === null) {
+            $this->messages = [];
+
+            return true;
+        }
+
+        foreach ($this->getDirectories() as $directory) {
+            $data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale);
+
+            if ($data !== false) {
+                $this->messages[$locale] = $data;
+                $this->addResource('array', $this->messages[$locale], $locale);
+
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns the list of files matching a given locale prefix (or all if empty).
+     *
+     * @param string $prefix prefix required to filter result
+     *
+     * @return array
+     */
+    public function getLocalesFiles($prefix = '')
+    {
+        $files = [];
+
+        foreach ($this->getDirectories() as $directory) {
+            $directory = rtrim($directory, '\\/');
+
+            foreach (glob("$directory/$prefix*.php") as $file) {
+                $files[] = $file;
+            }
+        }
+
+        return array_unique($files);
+    }
+
+    /**
+     * Returns the list of internally available locales and already loaded custom locales.
+     * (It will ignore custom translator dynamic loading.)
+     *
+     * @param string $prefix prefix required to filter result
+     *
+     * @return array
+     */
+    public function getAvailableLocales($prefix = '')
+    {
+        $locales = [];
+        foreach ($this->getLocalesFiles($prefix) as $file) {
+            $locales[] = substr($file, strrpos($file, '/') + 1, -4);
+        }
+
+        return array_unique(array_merge($locales, array_keys($this->messages)));
+    }
+
+    protected function translate(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string
+    {
+        if ($domain === null) {
+            $domain = 'messages';
+        }
+
+        $catalogue = $this->getCatalogue($locale);
+        $format = $this instanceof TranslatorStrongTypeInterface
+            ? $this->getFromCatalogue($catalogue, (string) $id, $domain)
+            : $this->getCatalogue($locale)->get((string) $id, $domain); // @codeCoverageIgnore
+
+        if ($format instanceof Closure) {
+            // @codeCoverageIgnoreStart
+            try {
+                $count = (new ReflectionFunction($format))->getNumberOfRequiredParameters();
+            } catch (ReflectionException $exception) {
+                $count = 0;
+            }
+            // @codeCoverageIgnoreEnd
+
+            return $format(
+                ...array_values($parameters),
+                ...array_fill(0, max(0, $count - \count($parameters)), null)
+            );
+        }
+
+        return parent::trans($id, $parameters, $domain, $locale);
+    }
+
+    /**
+     * Init messages language from matching file in Lang directory.
+     *
+     * @param string $locale
+     *
+     * @return bool
+     */
+    protected function loadMessagesFromFile($locale)
+    {
+        return isset($this->messages[$locale]) || $this->resetMessages($locale);
+    }
+
+    /**
+     * Set messages of a locale and take file first if present.
+     *
+     * @param string $locale
+     * @param array  $messages
+     *
+     * @return $this
+     */
+    public function setMessages($locale, $messages)
+    {
+        $this->loadMessagesFromFile($locale);
+        $this->addResource('array', $messages, $locale);
+        $this->messages[$locale] = array_merge(
+            $this->messages[$locale] ?? [],
+            $messages
+        );
+
+        return $this;
+    }
+
+    /**
+     * Set messages of the current locale and take file first if present.
+     *
+     * @param array $messages
+     *
+     * @return $this
+     */
+    public function setTranslations($messages)
+    {
+        return $this->setMessages($this->getLocale(), $messages);
+    }
+
+    /**
+     * Get messages of a locale, if none given, return all the
+     * languages.
+     *
+     * @param string|null $locale
+     *
+     * @return array
+     */
+    public function getMessages($locale = null)
+    {
+        return $locale === null ? $this->messages : $this->messages[$locale];
+    }
+
+    /**
+     * Set the current translator locale and indicate if the source locale file exists
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public function setLocale($locale)
+    {
+        $locale = preg_replace_callback('/[-_]([a-z]{2,}|\d{2,})/', function ($matches) {
+            // _2-letters or YUE is a region, _3+-letters is a variant
+            $upper = strtoupper($matches[1]);
+
+            if ($upper === 'YUE' || $upper === 'ISO' || \strlen($upper) < 3) {
+                return "_$upper";
+            }
+
+            return '_'.ucfirst($matches[1]);
+        }, strtolower($locale));
+
+        $previousLocale = $this->getLocale();
+
+        if ($previousLocale === $locale && isset($this->messages[$locale])) {
+            return true;
+        }
+
+        unset(static::$singletons[$previousLocale]);
+
+        if ($locale === 'auto') {
+            $completeLocale = setlocale(LC_TIME, '0');
+            $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale);
+            $locales = $this->getAvailableLocales($locale);
+
+            $completeLocaleChunks = preg_split('/[_.-]+/', $completeLocale);
+
+            $getScore = function ($language) use ($completeLocaleChunks) {
+                return self::compareChunkLists($completeLocaleChunks, preg_split('/[_.-]+/', $language));
+            };
+
+            usort($locales, function ($first, $second) use ($getScore) {
+                return $getScore($second) <=> $getScore($first);
+            });
+
+            $locale = $locales[0];
+        }
+
+        if (isset($this->aliases[$locale])) {
+            $locale = $this->aliases[$locale];
+        }
+
+        // If subtag (ex: en_CA) first load the macro (ex: en) to have a fallback
+        if (str_contains($locale, '_') &&
+            $this->loadMessagesFromFile($macroLocale = preg_replace('/^([^_]+).*$/', '$1', $locale))
+        ) {
+            parent::setLocale($macroLocale);
+        }
+
+        if (!$this->loadMessagesFromFile($locale) && !$this->initializing) {
+            return false;
+        }
+
+        parent::setLocale($locale);
+
+        return true;
+    }
+
+    /**
+     * Show locale on var_dump().
+     *
+     * @return array
+     */
+    public function __debugInfo()
+    {
+        return [
+            'locale' => $this->getLocale(),
+        ];
+    }
+
+    private static function compareChunkLists($referenceChunks, $chunks)
+    {
+        $score = 0;
+
+        foreach ($referenceChunks as $index => $chunk) {
+            if (!isset($chunks[$index])) {
+                $score++;
+
+                continue;
+            }
+
+            if (strtolower($chunks[$index]) === strtolower($chunk)) {
+                $score += 10;
+            }
+        }
+
+        return $score;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Carbon.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Carbon.php
new file mode 100644
index 00000000..e327590e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Carbon.php
@@ -0,0 +1,523 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Traits\Date;
+use Carbon\Traits\DeprecatedProperties;
+use DateTime;
+use DateTimeInterface;
+use DateTimeZone;
+
+/**
+ * A simple API extension for DateTime.
+ *
+ * @mixin DeprecatedProperties
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @property      int                 $year
+ * @property      int                 $yearIso
+ * @property      int                 $month
+ * @property      int                 $day
+ * @property      int                 $hour
+ * @property      int                 $minute
+ * @property      int                 $second
+ * @property      int                 $micro
+ * @property      int                 $microsecond
+ * @property      int|float|string    $timestamp                                                                           seconds since the Unix Epoch
+ * @property      string              $englishDayOfWeek                                                                    the day of week in English
+ * @property      string              $shortEnglishDayOfWeek                                                               the abbreviated day of week in English
+ * @property      string              $englishMonth                                                                        the month in English
+ * @property      string              $shortEnglishMonth                                                                   the abbreviated month in English
+ * @property      int                 $milliseconds
+ * @property      int                 $millisecond
+ * @property      int                 $milli
+ * @property      int                 $week                                                                                1 through 53
+ * @property      int                 $isoWeek                                                                             1 through 53
+ * @property      int                 $weekYear                                                                            year according to week format
+ * @property      int                 $isoWeekYear                                                                         year according to ISO week format
+ * @property      int                 $dayOfYear                                                                           1 through 366
+ * @property      int                 $age                                                                                 does a diffInYears() with default parameters
+ * @property      int                 $offset                                                                              the timezone offset in seconds from UTC
+ * @property      int                 $offsetMinutes                                                                       the timezone offset in minutes from UTC
+ * @property      int                 $offsetHours                                                                         the timezone offset in hours from UTC
+ * @property      CarbonTimeZone      $timezone                                                                            the current timezone
+ * @property      CarbonTimeZone      $tz                                                                                  alias of $timezone
+ * @property-read int                 $dayOfWeek                                                                           0 (for Sunday) through 6 (for Saturday)
+ * @property-read int                 $dayOfWeekIso                                                                        1 (for Monday) through 7 (for Sunday)
+ * @property-read int                 $weekOfYear                                                                          ISO-8601 week number of year, weeks starting on Monday
+ * @property-read int                 $daysInMonth                                                                         number of days in the given month
+ * @property-read string              $latinMeridiem                                                                       "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
+ * @property-read string              $latinUpperMeridiem                                                                  "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
+ * @property-read string              $timezoneAbbreviatedName                                                             the current timezone abbreviated name
+ * @property-read string              $tzAbbrName                                                                          alias of $timezoneAbbreviatedName
+ * @property-read string              $dayName                                                                             long name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string              $shortDayName                                                                        short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string              $minDayName                                                                          very short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string              $monthName                                                                           long name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string              $shortMonthName                                                                      short name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string              $meridiem                                                                            lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read string              $upperMeridiem                                                                       uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read int                 $noZeroHour                                                                          current hour from 1 to 24
+ * @property-read int                 $weeksInYear                                                                         51 through 53
+ * @property-read int                 $isoWeeksInYear                                                                      51 through 53
+ * @property-read int                 $weekOfMonth                                                                         1 through 5
+ * @property-read int                 $weekNumberInMonth                                                                   1 through 5
+ * @property-read int                 $firstWeekDay                                                                        0 through 6
+ * @property-read int                 $lastWeekDay                                                                         0 through 6
+ * @property-read int                 $daysInYear                                                                          365 or 366
+ * @property-read int                 $quarter                                                                             the quarter of this instance, 1 - 4
+ * @property-read int                 $decade                                                                              the decade of this instance
+ * @property-read int                 $century                                                                             the century of this instance
+ * @property-read int                 $millennium                                                                          the millennium of this instance
+ * @property-read bool                $dst                                                                                 daylight savings time indicator, true if DST, false otherwise
+ * @property-read bool                $local                                                                               checks if the timezone is local, true if local, false otherwise
+ * @property-read bool                $utc                                                                                 checks if the timezone is UTC, true if UTC, false otherwise
+ * @property-read string              $timezoneName                                                                        the current timezone name
+ * @property-read string              $tzName                                                                              alias of $timezoneName
+ * @property-read string              $locale                                                                              locale of the current instance
+ *
+ * @method        bool                isUtc()                                                                              Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
+ * @method        bool                isLocal()                                                                            Check if the current instance has non-UTC timezone.
+ * @method        bool                isValid()                                                                            Check if the current instance is a valid date.
+ * @method        bool                isDST()                                                                              Check if the current instance is in a daylight saving time.
+ * @method        bool                isSunday()                                                                           Checks if the instance day is sunday.
+ * @method        bool                isMonday()                                                                           Checks if the instance day is monday.
+ * @method        bool                isTuesday()                                                                          Checks if the instance day is tuesday.
+ * @method        bool                isWednesday()                                                                        Checks if the instance day is wednesday.
+ * @method        bool                isThursday()                                                                         Checks if the instance day is thursday.
+ * @method        bool                isFriday()                                                                           Checks if the instance day is friday.
+ * @method        bool                isSaturday()                                                                         Checks if the instance day is saturday.
+ * @method        bool                isSameYear(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentYear()                                                                      Checks if the instance is in the same year as the current moment.
+ * @method        bool                isNextYear()                                                                         Checks if the instance is in the same year as the current moment next year.
+ * @method        bool                isLastYear()                                                                         Checks if the instance is in the same year as the current moment last year.
+ * @method        bool                isSameWeek(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentWeek()                                                                      Checks if the instance is in the same week as the current moment.
+ * @method        bool                isNextWeek()                                                                         Checks if the instance is in the same week as the current moment next week.
+ * @method        bool                isLastWeek()                                                                         Checks if the instance is in the same week as the current moment last week.
+ * @method        bool                isSameDay(Carbon|DateTimeInterface|string|null $date = null)                         Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentDay()                                                                       Checks if the instance is in the same day as the current moment.
+ * @method        bool                isNextDay()                                                                          Checks if the instance is in the same day as the current moment next day.
+ * @method        bool                isLastDay()                                                                          Checks if the instance is in the same day as the current moment last day.
+ * @method        bool                isSameHour(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentHour()                                                                      Checks if the instance is in the same hour as the current moment.
+ * @method        bool                isNextHour()                                                                         Checks if the instance is in the same hour as the current moment next hour.
+ * @method        bool                isLastHour()                                                                         Checks if the instance is in the same hour as the current moment last hour.
+ * @method        bool                isSameMinute(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentMinute()                                                                    Checks if the instance is in the same minute as the current moment.
+ * @method        bool                isNextMinute()                                                                       Checks if the instance is in the same minute as the current moment next minute.
+ * @method        bool                isLastMinute()                                                                       Checks if the instance is in the same minute as the current moment last minute.
+ * @method        bool                isSameSecond(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentSecond()                                                                    Checks if the instance is in the same second as the current moment.
+ * @method        bool                isNextSecond()                                                                       Checks if the instance is in the same second as the current moment next second.
+ * @method        bool                isLastSecond()                                                                       Checks if the instance is in the same second as the current moment last second.
+ * @method        bool                isSameMicro(Carbon|DateTimeInterface|string|null $date = null)                       Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentMicro()                                                                     Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool                isNextMicro()                                                                        Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool                isLastMicro()                                                                        Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool                isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null)                 Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentMicrosecond()                                                               Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool                isNextMicrosecond()                                                                  Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool                isLastMicrosecond()                                                                  Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool                isCurrentMonth()                                                                     Checks if the instance is in the same month as the current moment.
+ * @method        bool                isNextMonth()                                                                        Checks if the instance is in the same month as the current moment next month.
+ * @method        bool                isLastMonth()                                                                        Checks if the instance is in the same month as the current moment last month.
+ * @method        bool                isCurrentQuarter()                                                                   Checks if the instance is in the same quarter as the current moment.
+ * @method        bool                isNextQuarter()                                                                      Checks if the instance is in the same quarter as the current moment next quarter.
+ * @method        bool                isLastQuarter()                                                                      Checks if the instance is in the same quarter as the current moment last quarter.
+ * @method        bool                isSameDecade(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentDecade()                                                                    Checks if the instance is in the same decade as the current moment.
+ * @method        bool                isNextDecade()                                                                       Checks if the instance is in the same decade as the current moment next decade.
+ * @method        bool                isLastDecade()                                                                       Checks if the instance is in the same decade as the current moment last decade.
+ * @method        bool                isSameCentury(Carbon|DateTimeInterface|string|null $date = null)                     Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentCentury()                                                                   Checks if the instance is in the same century as the current moment.
+ * @method        bool                isNextCentury()                                                                      Checks if the instance is in the same century as the current moment next century.
+ * @method        bool                isLastCentury()                                                                      Checks if the instance is in the same century as the current moment last century.
+ * @method        bool                isSameMillennium(Carbon|DateTimeInterface|string|null $date = null)                  Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                isCurrentMillennium()                                                                Checks if the instance is in the same millennium as the current moment.
+ * @method        bool                isNextMillennium()                                                                   Checks if the instance is in the same millennium as the current moment next millennium.
+ * @method        bool                isLastMillennium()                                                                   Checks if the instance is in the same millennium as the current moment last millennium.
+ * @method        $this               years(int $value)                                                                    Set current instance year to the given value.
+ * @method        $this               year(int $value)                                                                     Set current instance year to the given value.
+ * @method        $this               setYears(int $value)                                                                 Set current instance year to the given value.
+ * @method        $this               setYear(int $value)                                                                  Set current instance year to the given value.
+ * @method        $this               months(int $value)                                                                   Set current instance month to the given value.
+ * @method        $this               month(int $value)                                                                    Set current instance month to the given value.
+ * @method        $this               setMonths(int $value)                                                                Set current instance month to the given value.
+ * @method        $this               setMonth(int $value)                                                                 Set current instance month to the given value.
+ * @method        $this               days(int $value)                                                                     Set current instance day to the given value.
+ * @method        $this               day(int $value)                                                                      Set current instance day to the given value.
+ * @method        $this               setDays(int $value)                                                                  Set current instance day to the given value.
+ * @method        $this               setDay(int $value)                                                                   Set current instance day to the given value.
+ * @method        $this               hours(int $value)                                                                    Set current instance hour to the given value.
+ * @method        $this               hour(int $value)                                                                     Set current instance hour to the given value.
+ * @method        $this               setHours(int $value)                                                                 Set current instance hour to the given value.
+ * @method        $this               setHour(int $value)                                                                  Set current instance hour to the given value.
+ * @method        $this               minutes(int $value)                                                                  Set current instance minute to the given value.
+ * @method        $this               minute(int $value)                                                                   Set current instance minute to the given value.
+ * @method        $this               setMinutes(int $value)                                                               Set current instance minute to the given value.
+ * @method        $this               setMinute(int $value)                                                                Set current instance minute to the given value.
+ * @method        $this               seconds(int $value)                                                                  Set current instance second to the given value.
+ * @method        $this               second(int $value)                                                                   Set current instance second to the given value.
+ * @method        $this               setSeconds(int $value)                                                               Set current instance second to the given value.
+ * @method        $this               setSecond(int $value)                                                                Set current instance second to the given value.
+ * @method        $this               millis(int $value)                                                                   Set current instance millisecond to the given value.
+ * @method        $this               milli(int $value)                                                                    Set current instance millisecond to the given value.
+ * @method        $this               setMillis(int $value)                                                                Set current instance millisecond to the given value.
+ * @method        $this               setMilli(int $value)                                                                 Set current instance millisecond to the given value.
+ * @method        $this               milliseconds(int $value)                                                             Set current instance millisecond to the given value.
+ * @method        $this               millisecond(int $value)                                                              Set current instance millisecond to the given value.
+ * @method        $this               setMilliseconds(int $value)                                                          Set current instance millisecond to the given value.
+ * @method        $this               setMillisecond(int $value)                                                           Set current instance millisecond to the given value.
+ * @method        $this               micros(int $value)                                                                   Set current instance microsecond to the given value.
+ * @method        $this               micro(int $value)                                                                    Set current instance microsecond to the given value.
+ * @method        $this               setMicros(int $value)                                                                Set current instance microsecond to the given value.
+ * @method        $this               setMicro(int $value)                                                                 Set current instance microsecond to the given value.
+ * @method        $this               microseconds(int $value)                                                             Set current instance microsecond to the given value.
+ * @method        $this               microsecond(int $value)                                                              Set current instance microsecond to the given value.
+ * @method        $this               setMicroseconds(int $value)                                                          Set current instance microsecond to the given value.
+ * @method        $this               setMicrosecond(int $value)                                                           Set current instance microsecond to the given value.
+ * @method        $this               addYears(int $value = 1)                                                             Add years (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addYear()                                                                            Add one year to the instance (using date interval).
+ * @method        $this               subYears(int $value = 1)                                                             Sub years (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subYear()                                                                            Sub one year to the instance (using date interval).
+ * @method        $this               addYearsWithOverflow(int $value = 1)                                                 Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addYearWithOverflow()                                                                Add one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subYearsWithOverflow(int $value = 1)                                                 Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subYearWithOverflow()                                                                Sub one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addYearsWithoutOverflow(int $value = 1)                                              Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addYearWithoutOverflow()                                                             Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearsWithoutOverflow(int $value = 1)                                              Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearWithoutOverflow()                                                             Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addYearsWithNoOverflow(int $value = 1)                                               Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addYearWithNoOverflow()                                                              Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearsWithNoOverflow(int $value = 1)                                               Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearWithNoOverflow()                                                              Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addYearsNoOverflow(int $value = 1)                                                   Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addYearNoOverflow()                                                                  Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearsNoOverflow(int $value = 1)                                                   Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subYearNoOverflow()                                                                  Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonths(int $value = 1)                                                            Add months (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMonth()                                                                           Add one month to the instance (using date interval).
+ * @method        $this               subMonths(int $value = 1)                                                            Sub months (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMonth()                                                                           Sub one month to the instance (using date interval).
+ * @method        $this               addMonthsWithOverflow(int $value = 1)                                                Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addMonthWithOverflow()                                                               Add one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subMonthsWithOverflow(int $value = 1)                                                Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subMonthWithOverflow()                                                               Sub one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addMonthsWithoutOverflow(int $value = 1)                                             Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonthWithoutOverflow()                                                            Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthsWithoutOverflow(int $value = 1)                                             Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthWithoutOverflow()                                                            Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonthsWithNoOverflow(int $value = 1)                                              Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonthWithNoOverflow()                                                             Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthsWithNoOverflow(int $value = 1)                                              Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthWithNoOverflow()                                                             Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonthsNoOverflow(int $value = 1)                                                  Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMonthNoOverflow()                                                                 Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthsNoOverflow(int $value = 1)                                                  Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMonthNoOverflow()                                                                 Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDays(int $value = 1)                                                              Add days (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addDay()                                                                             Add one day to the instance (using date interval).
+ * @method        $this               subDays(int $value = 1)                                                              Sub days (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subDay()                                                                             Sub one day to the instance (using date interval).
+ * @method        $this               addHours(int $value = 1)                                                             Add hours (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addHour()                                                                            Add one hour to the instance (using date interval).
+ * @method        $this               subHours(int $value = 1)                                                             Sub hours (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subHour()                                                                            Sub one hour to the instance (using date interval).
+ * @method        $this               addMinutes(int $value = 1)                                                           Add minutes (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMinute()                                                                          Add one minute to the instance (using date interval).
+ * @method        $this               subMinutes(int $value = 1)                                                           Sub minutes (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMinute()                                                                          Sub one minute to the instance (using date interval).
+ * @method        $this               addSeconds(int $value = 1)                                                           Add seconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addSecond()                                                                          Add one second to the instance (using date interval).
+ * @method        $this               subSeconds(int $value = 1)                                                           Sub seconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subSecond()                                                                          Sub one second to the instance (using date interval).
+ * @method        $this               addMillis(int $value = 1)                                                            Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMilli()                                                                           Add one millisecond to the instance (using date interval).
+ * @method        $this               subMillis(int $value = 1)                                                            Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMilli()                                                                           Sub one millisecond to the instance (using date interval).
+ * @method        $this               addMilliseconds(int $value = 1)                                                      Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMillisecond()                                                                     Add one millisecond to the instance (using date interval).
+ * @method        $this               subMilliseconds(int $value = 1)                                                      Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMillisecond()                                                                     Sub one millisecond to the instance (using date interval).
+ * @method        $this               addMicros(int $value = 1)                                                            Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMicro()                                                                           Add one microsecond to the instance (using date interval).
+ * @method        $this               subMicros(int $value = 1)                                                            Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMicro()                                                                           Sub one microsecond to the instance (using date interval).
+ * @method        $this               addMicroseconds(int $value = 1)                                                      Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMicrosecond()                                                                     Add one microsecond to the instance (using date interval).
+ * @method        $this               subMicroseconds(int $value = 1)                                                      Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMicrosecond()                                                                     Sub one microsecond to the instance (using date interval).
+ * @method        $this               addMillennia(int $value = 1)                                                         Add millennia (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addMillennium()                                                                      Add one millennium to the instance (using date interval).
+ * @method        $this               subMillennia(int $value = 1)                                                         Sub millennia (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subMillennium()                                                                      Sub one millennium to the instance (using date interval).
+ * @method        $this               addMillenniaWithOverflow(int $value = 1)                                             Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addMillenniumWithOverflow()                                                          Add one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subMillenniaWithOverflow(int $value = 1)                                             Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subMillenniumWithOverflow()                                                          Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addMillenniaWithoutOverflow(int $value = 1)                                          Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMillenniumWithoutOverflow()                                                       Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniaWithoutOverflow(int $value = 1)                                          Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniumWithoutOverflow()                                                       Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMillenniaWithNoOverflow(int $value = 1)                                           Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMillenniumWithNoOverflow()                                                        Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniaWithNoOverflow(int $value = 1)                                           Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniumWithNoOverflow()                                                        Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMillenniaNoOverflow(int $value = 1)                                               Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addMillenniumNoOverflow()                                                            Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniaNoOverflow(int $value = 1)                                               Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subMillenniumNoOverflow()                                                            Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturies(int $value = 1)                                                         Add centuries (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addCentury()                                                                         Add one century to the instance (using date interval).
+ * @method        $this               subCenturies(int $value = 1)                                                         Sub centuries (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subCentury()                                                                         Sub one century to the instance (using date interval).
+ * @method        $this               addCenturiesWithOverflow(int $value = 1)                                             Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addCenturyWithOverflow()                                                             Add one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subCenturiesWithOverflow(int $value = 1)                                             Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subCenturyWithOverflow()                                                             Sub one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addCenturiesWithoutOverflow(int $value = 1)                                          Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturyWithoutOverflow()                                                          Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturiesWithoutOverflow(int $value = 1)                                          Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturyWithoutOverflow()                                                          Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturiesWithNoOverflow(int $value = 1)                                           Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturyWithNoOverflow()                                                           Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturiesWithNoOverflow(int $value = 1)                                           Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturyWithNoOverflow()                                                           Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturiesNoOverflow(int $value = 1)                                               Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addCenturyNoOverflow()                                                               Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturiesNoOverflow(int $value = 1)                                               Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subCenturyNoOverflow()                                                               Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecades(int $value = 1)                                                           Add decades (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addDecade()                                                                          Add one decade to the instance (using date interval).
+ * @method        $this               subDecades(int $value = 1)                                                           Sub decades (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subDecade()                                                                          Sub one decade to the instance (using date interval).
+ * @method        $this               addDecadesWithOverflow(int $value = 1)                                               Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addDecadeWithOverflow()                                                              Add one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subDecadesWithOverflow(int $value = 1)                                               Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subDecadeWithOverflow()                                                              Sub one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addDecadesWithoutOverflow(int $value = 1)                                            Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecadeWithoutOverflow()                                                           Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadesWithoutOverflow(int $value = 1)                                            Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadeWithoutOverflow()                                                           Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecadesWithNoOverflow(int $value = 1)                                             Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecadeWithNoOverflow()                                                            Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadesWithNoOverflow(int $value = 1)                                             Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadeWithNoOverflow()                                                            Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecadesNoOverflow(int $value = 1)                                                 Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addDecadeNoOverflow()                                                                Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadesNoOverflow(int $value = 1)                                                 Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subDecadeNoOverflow()                                                                Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuarters(int $value = 1)                                                          Add quarters (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addQuarter()                                                                         Add one quarter to the instance (using date interval).
+ * @method        $this               subQuarters(int $value = 1)                                                          Sub quarters (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subQuarter()                                                                         Sub one quarter to the instance (using date interval).
+ * @method        $this               addQuartersWithOverflow(int $value = 1)                                              Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addQuarterWithOverflow()                                                             Add one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subQuartersWithOverflow(int $value = 1)                                              Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               subQuarterWithOverflow()                                                             Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        $this               addQuartersWithoutOverflow(int $value = 1)                                           Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuarterWithoutOverflow()                                                          Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuartersWithoutOverflow(int $value = 1)                                           Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuarterWithoutOverflow()                                                          Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuartersWithNoOverflow(int $value = 1)                                            Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuarterWithNoOverflow()                                                           Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuartersWithNoOverflow(int $value = 1)                                            Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuarterWithNoOverflow()                                                           Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuartersNoOverflow(int $value = 1)                                                Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addQuarterNoOverflow()                                                               Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuartersNoOverflow(int $value = 1)                                                Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               subQuarterNoOverflow()                                                               Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        $this               addWeeks(int $value = 1)                                                             Add weeks (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addWeek()                                                                            Add one week to the instance (using date interval).
+ * @method        $this               subWeeks(int $value = 1)                                                             Sub weeks (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subWeek()                                                                            Sub one week to the instance (using date interval).
+ * @method        $this               addWeekdays(int $value = 1)                                                          Add weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        $this               addWeekday()                                                                         Add one weekday to the instance (using date interval).
+ * @method        $this               subWeekdays(int $value = 1)                                                          Sub weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        $this               subWeekday()                                                                         Sub one weekday to the instance (using date interval).
+ * @method        $this               addRealMicros(int $value = 1)                                                        Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMicro()                                                                       Add one microsecond to the instance (using timestamp).
+ * @method        $this               subRealMicros(int $value = 1)                                                        Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMicro()                                                                       Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod        microsUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        $this               addRealMicroseconds(int $value = 1)                                                  Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMicrosecond()                                                                 Add one microsecond to the instance (using timestamp).
+ * @method        $this               subRealMicroseconds(int $value = 1)                                                  Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMicrosecond()                                                                 Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod        microsecondsUntil($endDate = null, int $factor = 1)                                  Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        $this               addRealMillis(int $value = 1)                                                        Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMilli()                                                                       Add one millisecond to the instance (using timestamp).
+ * @method        $this               subRealMillis(int $value = 1)                                                        Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMilli()                                                                       Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod        millisUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        $this               addRealMilliseconds(int $value = 1)                                                  Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMillisecond()                                                                 Add one millisecond to the instance (using timestamp).
+ * @method        $this               subRealMilliseconds(int $value = 1)                                                  Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMillisecond()                                                                 Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod        millisecondsUntil($endDate = null, int $factor = 1)                                  Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        $this               addRealSeconds(int $value = 1)                                                       Add seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealSecond()                                                                      Add one second to the instance (using timestamp).
+ * @method        $this               subRealSeconds(int $value = 1)                                                       Sub seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealSecond()                                                                      Sub one second to the instance (using timestamp).
+ * @method        CarbonPeriod        secondsUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
+ * @method        $this               addRealMinutes(int $value = 1)                                                       Add minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMinute()                                                                      Add one minute to the instance (using timestamp).
+ * @method        $this               subRealMinutes(int $value = 1)                                                       Sub minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMinute()                                                                      Sub one minute to the instance (using timestamp).
+ * @method        CarbonPeriod        minutesUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
+ * @method        $this               addRealHours(int $value = 1)                                                         Add hours (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealHour()                                                                        Add one hour to the instance (using timestamp).
+ * @method        $this               subRealHours(int $value = 1)                                                         Sub hours (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealHour()                                                                        Sub one hour to the instance (using timestamp).
+ * @method        CarbonPeriod        hoursUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
+ * @method        $this               addRealDays(int $value = 1)                                                          Add days (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealDay()                                                                         Add one day to the instance (using timestamp).
+ * @method        $this               subRealDays(int $value = 1)                                                          Sub days (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealDay()                                                                         Sub one day to the instance (using timestamp).
+ * @method        CarbonPeriod        daysUntil($endDate = null, int $factor = 1)                                          Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
+ * @method        $this               addRealWeeks(int $value = 1)                                                         Add weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealWeek()                                                                        Add one week to the instance (using timestamp).
+ * @method        $this               subRealWeeks(int $value = 1)                                                         Sub weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealWeek()                                                                        Sub one week to the instance (using timestamp).
+ * @method        CarbonPeriod        weeksUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
+ * @method        $this               addRealMonths(int $value = 1)                                                        Add months (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMonth()                                                                       Add one month to the instance (using timestamp).
+ * @method        $this               subRealMonths(int $value = 1)                                                        Sub months (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMonth()                                                                       Sub one month to the instance (using timestamp).
+ * @method        CarbonPeriod        monthsUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
+ * @method        $this               addRealQuarters(int $value = 1)                                                      Add quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealQuarter()                                                                     Add one quarter to the instance (using timestamp).
+ * @method        $this               subRealQuarters(int $value = 1)                                                      Sub quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealQuarter()                                                                     Sub one quarter to the instance (using timestamp).
+ * @method        CarbonPeriod        quartersUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
+ * @method        $this               addRealYears(int $value = 1)                                                         Add years (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealYear()                                                                        Add one year to the instance (using timestamp).
+ * @method        $this               subRealYears(int $value = 1)                                                         Sub years (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealYear()                                                                        Sub one year to the instance (using timestamp).
+ * @method        CarbonPeriod        yearsUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
+ * @method        $this               addRealDecades(int $value = 1)                                                       Add decades (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealDecade()                                                                      Add one decade to the instance (using timestamp).
+ * @method        $this               subRealDecades(int $value = 1)                                                       Sub decades (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealDecade()                                                                      Sub one decade to the instance (using timestamp).
+ * @method        CarbonPeriod        decadesUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
+ * @method        $this               addRealCenturies(int $value = 1)                                                     Add centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealCentury()                                                                     Add one century to the instance (using timestamp).
+ * @method        $this               subRealCenturies(int $value = 1)                                                     Sub centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealCentury()                                                                     Sub one century to the instance (using timestamp).
+ * @method        CarbonPeriod        centuriesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
+ * @method        $this               addRealMillennia(int $value = 1)                                                     Add millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               addRealMillennium()                                                                  Add one millennium to the instance (using timestamp).
+ * @method        $this               subRealMillennia(int $value = 1)                                                     Sub millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        $this               subRealMillennium()                                                                  Sub one millennium to the instance (using timestamp).
+ * @method        CarbonPeriod        millenniaUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
+ * @method        $this               roundYear(float $precision = 1, string $function = "round")                          Round the current instance year with given precision using the given function.
+ * @method        $this               roundYears(float $precision = 1, string $function = "round")                         Round the current instance year with given precision using the given function.
+ * @method        $this               floorYear(float $precision = 1)                                                      Truncate the current instance year with given precision.
+ * @method        $this               floorYears(float $precision = 1)                                                     Truncate the current instance year with given precision.
+ * @method        $this               ceilYear(float $precision = 1)                                                       Ceil the current instance year with given precision.
+ * @method        $this               ceilYears(float $precision = 1)                                                      Ceil the current instance year with given precision.
+ * @method        $this               roundMonth(float $precision = 1, string $function = "round")                         Round the current instance month with given precision using the given function.
+ * @method        $this               roundMonths(float $precision = 1, string $function = "round")                        Round the current instance month with given precision using the given function.
+ * @method        $this               floorMonth(float $precision = 1)                                                     Truncate the current instance month with given precision.
+ * @method        $this               floorMonths(float $precision = 1)                                                    Truncate the current instance month with given precision.
+ * @method        $this               ceilMonth(float $precision = 1)                                                      Ceil the current instance month with given precision.
+ * @method        $this               ceilMonths(float $precision = 1)                                                     Ceil the current instance month with given precision.
+ * @method        $this               roundDay(float $precision = 1, string $function = "round")                           Round the current instance day with given precision using the given function.
+ * @method        $this               roundDays(float $precision = 1, string $function = "round")                          Round the current instance day with given precision using the given function.
+ * @method        $this               floorDay(float $precision = 1)                                                       Truncate the current instance day with given precision.
+ * @method        $this               floorDays(float $precision = 1)                                                      Truncate the current instance day with given precision.
+ * @method        $this               ceilDay(float $precision = 1)                                                        Ceil the current instance day with given precision.
+ * @method        $this               ceilDays(float $precision = 1)                                                       Ceil the current instance day with given precision.
+ * @method        $this               roundHour(float $precision = 1, string $function = "round")                          Round the current instance hour with given precision using the given function.
+ * @method        $this               roundHours(float $precision = 1, string $function = "round")                         Round the current instance hour with given precision using the given function.
+ * @method        $this               floorHour(float $precision = 1)                                                      Truncate the current instance hour with given precision.
+ * @method        $this               floorHours(float $precision = 1)                                                     Truncate the current instance hour with given precision.
+ * @method        $this               ceilHour(float $precision = 1)                                                       Ceil the current instance hour with given precision.
+ * @method        $this               ceilHours(float $precision = 1)                                                      Ceil the current instance hour with given precision.
+ * @method        $this               roundMinute(float $precision = 1, string $function = "round")                        Round the current instance minute with given precision using the given function.
+ * @method        $this               roundMinutes(float $precision = 1, string $function = "round")                       Round the current instance minute with given precision using the given function.
+ * @method        $this               floorMinute(float $precision = 1)                                                    Truncate the current instance minute with given precision.
+ * @method        $this               floorMinutes(float $precision = 1)                                                   Truncate the current instance minute with given precision.
+ * @method        $this               ceilMinute(float $precision = 1)                                                     Ceil the current instance minute with given precision.
+ * @method        $this               ceilMinutes(float $precision = 1)                                                    Ceil the current instance minute with given precision.
+ * @method        $this               roundSecond(float $precision = 1, string $function = "round")                        Round the current instance second with given precision using the given function.
+ * @method        $this               roundSeconds(float $precision = 1, string $function = "round")                       Round the current instance second with given precision using the given function.
+ * @method        $this               floorSecond(float $precision = 1)                                                    Truncate the current instance second with given precision.
+ * @method        $this               floorSeconds(float $precision = 1)                                                   Truncate the current instance second with given precision.
+ * @method        $this               ceilSecond(float $precision = 1)                                                     Ceil the current instance second with given precision.
+ * @method        $this               ceilSeconds(float $precision = 1)                                                    Ceil the current instance second with given precision.
+ * @method        $this               roundMillennium(float $precision = 1, string $function = "round")                    Round the current instance millennium with given precision using the given function.
+ * @method        $this               roundMillennia(float $precision = 1, string $function = "round")                     Round the current instance millennium with given precision using the given function.
+ * @method        $this               floorMillennium(float $precision = 1)                                                Truncate the current instance millennium with given precision.
+ * @method        $this               floorMillennia(float $precision = 1)                                                 Truncate the current instance millennium with given precision.
+ * @method        $this               ceilMillennium(float $precision = 1)                                                 Ceil the current instance millennium with given precision.
+ * @method        $this               ceilMillennia(float $precision = 1)                                                  Ceil the current instance millennium with given precision.
+ * @method        $this               roundCentury(float $precision = 1, string $function = "round")                       Round the current instance century with given precision using the given function.
+ * @method        $this               roundCenturies(float $precision = 1, string $function = "round")                     Round the current instance century with given precision using the given function.
+ * @method        $this               floorCentury(float $precision = 1)                                                   Truncate the current instance century with given precision.
+ * @method        $this               floorCenturies(float $precision = 1)                                                 Truncate the current instance century with given precision.
+ * @method        $this               ceilCentury(float $precision = 1)                                                    Ceil the current instance century with given precision.
+ * @method        $this               ceilCenturies(float $precision = 1)                                                  Ceil the current instance century with given precision.
+ * @method        $this               roundDecade(float $precision = 1, string $function = "round")                        Round the current instance decade with given precision using the given function.
+ * @method        $this               roundDecades(float $precision = 1, string $function = "round")                       Round the current instance decade with given precision using the given function.
+ * @method        $this               floorDecade(float $precision = 1)                                                    Truncate the current instance decade with given precision.
+ * @method        $this               floorDecades(float $precision = 1)                                                   Truncate the current instance decade with given precision.
+ * @method        $this               ceilDecade(float $precision = 1)                                                     Ceil the current instance decade with given precision.
+ * @method        $this               ceilDecades(float $precision = 1)                                                    Ceil the current instance decade with given precision.
+ * @method        $this               roundQuarter(float $precision = 1, string $function = "round")                       Round the current instance quarter with given precision using the given function.
+ * @method        $this               roundQuarters(float $precision = 1, string $function = "round")                      Round the current instance quarter with given precision using the given function.
+ * @method        $this               floorQuarter(float $precision = 1)                                                   Truncate the current instance quarter with given precision.
+ * @method        $this               floorQuarters(float $precision = 1)                                                  Truncate the current instance quarter with given precision.
+ * @method        $this               ceilQuarter(float $precision = 1)                                                    Ceil the current instance quarter with given precision.
+ * @method        $this               ceilQuarters(float $precision = 1)                                                   Ceil the current instance quarter with given precision.
+ * @method        $this               roundMillisecond(float $precision = 1, string $function = "round")                   Round the current instance millisecond with given precision using the given function.
+ * @method        $this               roundMilliseconds(float $precision = 1, string $function = "round")                  Round the current instance millisecond with given precision using the given function.
+ * @method        $this               floorMillisecond(float $precision = 1)                                               Truncate the current instance millisecond with given precision.
+ * @method        $this               floorMilliseconds(float $precision = 1)                                              Truncate the current instance millisecond with given precision.
+ * @method        $this               ceilMillisecond(float $precision = 1)                                                Ceil the current instance millisecond with given precision.
+ * @method        $this               ceilMilliseconds(float $precision = 1)                                               Ceil the current instance millisecond with given precision.
+ * @method        $this               roundMicrosecond(float $precision = 1, string $function = "round")                   Round the current instance microsecond with given precision using the given function.
+ * @method        $this               roundMicroseconds(float $precision = 1, string $function = "round")                  Round the current instance microsecond with given precision using the given function.
+ * @method        $this               floorMicrosecond(float $precision = 1)                                               Truncate the current instance microsecond with given precision.
+ * @method        $this               floorMicroseconds(float $precision = 1)                                              Truncate the current instance microsecond with given precision.
+ * @method        $this               ceilMicrosecond(float $precision = 1)                                                Ceil the current instance microsecond with given precision.
+ * @method        $this               ceilMicroseconds(float $precision = 1)                                               Ceil the current instance microsecond with given precision.
+ * @method        string              shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)          Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)           Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)          Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)           Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)     Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)      Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)   Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string              longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)    Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        static Carbon|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new Carbon object according to the specified format.
+ * @method        static Carbon       __set_state(array $array)                                                            https://php.net/manual/en/datetime.set-state.php
+ *
+ * </autodoc>
+ */
+class Carbon extends DateTime implements CarbonInterface
+{
+    use Date;
+
+    /**
+     * Returns true if the current class/instance is mutable.
+     *
+     * @return bool
+     */
+    public static function isMutable()
+    {
+        return true;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
new file mode 100644
index 00000000..1ce967b2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use DateTimeInterface;
+
+interface CarbonConverterInterface
+{
+    public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface;
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
new file mode 100644
index 00000000..6d1194ee
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php
@@ -0,0 +1,582 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Traits\Date;
+use Carbon\Traits\DeprecatedProperties;
+use DateTimeImmutable;
+use DateTimeInterface;
+use DateTimeZone;
+
+/**
+ * A simple API extension for DateTimeImmutable.
+ *
+ * @mixin DeprecatedProperties
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @property      int                          $year
+ * @property      int                          $yearIso
+ * @property      int                          $month
+ * @property      int                          $day
+ * @property      int                          $hour
+ * @property      int                          $minute
+ * @property      int                          $second
+ * @property      int                          $micro
+ * @property      int                          $microsecond
+ * @property      int|float|string             $timestamp                                                                           seconds since the Unix Epoch
+ * @property      string                       $englishDayOfWeek                                                                    the day of week in English
+ * @property      string                       $shortEnglishDayOfWeek                                                               the abbreviated day of week in English
+ * @property      string                       $englishMonth                                                                        the month in English
+ * @property      string                       $shortEnglishMonth                                                                   the abbreviated month in English
+ * @property      int                          $milliseconds
+ * @property      int                          $millisecond
+ * @property      int                          $milli
+ * @property      int                          $week                                                                                1 through 53
+ * @property      int                          $isoWeek                                                                             1 through 53
+ * @property      int                          $weekYear                                                                            year according to week format
+ * @property      int                          $isoWeekYear                                                                         year according to ISO week format
+ * @property      int                          $dayOfYear                                                                           1 through 366
+ * @property      int                          $age                                                                                 does a diffInYears() with default parameters
+ * @property      int                          $offset                                                                              the timezone offset in seconds from UTC
+ * @property      int                          $offsetMinutes                                                                       the timezone offset in minutes from UTC
+ * @property      int                          $offsetHours                                                                         the timezone offset in hours from UTC
+ * @property      CarbonTimeZone               $timezone                                                                            the current timezone
+ * @property      CarbonTimeZone               $tz                                                                                  alias of $timezone
+ * @property-read int                          $dayOfWeek                                                                           0 (for Sunday) through 6 (for Saturday)
+ * @property-read int                          $dayOfWeekIso                                                                        1 (for Monday) through 7 (for Sunday)
+ * @property-read int                          $weekOfYear                                                                          ISO-8601 week number of year, weeks starting on Monday
+ * @property-read int                          $daysInMonth                                                                         number of days in the given month
+ * @property-read string                       $latinMeridiem                                                                       "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
+ * @property-read string                       $latinUpperMeridiem                                                                  "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
+ * @property-read string                       $timezoneAbbreviatedName                                                             the current timezone abbreviated name
+ * @property-read string                       $tzAbbrName                                                                          alias of $timezoneAbbreviatedName
+ * @property-read string                       $dayName                                                                             long name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string                       $shortDayName                                                                        short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string                       $minDayName                                                                          very short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string                       $monthName                                                                           long name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string                       $shortMonthName                                                                      short name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string                       $meridiem                                                                            lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read string                       $upperMeridiem                                                                       uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read int                          $noZeroHour                                                                          current hour from 1 to 24
+ * @property-read int                          $weeksInYear                                                                         51 through 53
+ * @property-read int                          $isoWeeksInYear                                                                      51 through 53
+ * @property-read int                          $weekOfMonth                                                                         1 through 5
+ * @property-read int                          $weekNumberInMonth                                                                   1 through 5
+ * @property-read int                          $firstWeekDay                                                                        0 through 6
+ * @property-read int                          $lastWeekDay                                                                         0 through 6
+ * @property-read int                          $daysInYear                                                                          365 or 366
+ * @property-read int                          $quarter                                                                             the quarter of this instance, 1 - 4
+ * @property-read int                          $decade                                                                              the decade of this instance
+ * @property-read int                          $century                                                                             the century of this instance
+ * @property-read int                          $millennium                                                                          the millennium of this instance
+ * @property-read bool                         $dst                                                                                 daylight savings time indicator, true if DST, false otherwise
+ * @property-read bool                         $local                                                                               checks if the timezone is local, true if local, false otherwise
+ * @property-read bool                         $utc                                                                                 checks if the timezone is UTC, true if UTC, false otherwise
+ * @property-read string                       $timezoneName                                                                        the current timezone name
+ * @property-read string                       $tzName                                                                              alias of $timezoneName
+ * @property-read string                       $locale                                                                              locale of the current instance
+ *
+ * @method        bool                         isUtc()                                                                              Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
+ * @method        bool                         isLocal()                                                                            Check if the current instance has non-UTC timezone.
+ * @method        bool                         isValid()                                                                            Check if the current instance is a valid date.
+ * @method        bool                         isDST()                                                                              Check if the current instance is in a daylight saving time.
+ * @method        bool                         isSunday()                                                                           Checks if the instance day is sunday.
+ * @method        bool                         isMonday()                                                                           Checks if the instance day is monday.
+ * @method        bool                         isTuesday()                                                                          Checks if the instance day is tuesday.
+ * @method        bool                         isWednesday()                                                                        Checks if the instance day is wednesday.
+ * @method        bool                         isThursday()                                                                         Checks if the instance day is thursday.
+ * @method        bool                         isFriday()                                                                           Checks if the instance day is friday.
+ * @method        bool                         isSaturday()                                                                         Checks if the instance day is saturday.
+ * @method        bool                         isSameYear(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentYear()                                                                      Checks if the instance is in the same year as the current moment.
+ * @method        bool                         isNextYear()                                                                         Checks if the instance is in the same year as the current moment next year.
+ * @method        bool                         isLastYear()                                                                         Checks if the instance is in the same year as the current moment last year.
+ * @method        bool                         isSameWeek(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentWeek()                                                                      Checks if the instance is in the same week as the current moment.
+ * @method        bool                         isNextWeek()                                                                         Checks if the instance is in the same week as the current moment next week.
+ * @method        bool                         isLastWeek()                                                                         Checks if the instance is in the same week as the current moment last week.
+ * @method        bool                         isSameDay(Carbon|DateTimeInterface|string|null $date = null)                         Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentDay()                                                                       Checks if the instance is in the same day as the current moment.
+ * @method        bool                         isNextDay()                                                                          Checks if the instance is in the same day as the current moment next day.
+ * @method        bool                         isLastDay()                                                                          Checks if the instance is in the same day as the current moment last day.
+ * @method        bool                         isSameHour(Carbon|DateTimeInterface|string|null $date = null)                        Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentHour()                                                                      Checks if the instance is in the same hour as the current moment.
+ * @method        bool                         isNextHour()                                                                         Checks if the instance is in the same hour as the current moment next hour.
+ * @method        bool                         isLastHour()                                                                         Checks if the instance is in the same hour as the current moment last hour.
+ * @method        bool                         isSameMinute(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentMinute()                                                                    Checks if the instance is in the same minute as the current moment.
+ * @method        bool                         isNextMinute()                                                                       Checks if the instance is in the same minute as the current moment next minute.
+ * @method        bool                         isLastMinute()                                                                       Checks if the instance is in the same minute as the current moment last minute.
+ * @method        bool                         isSameSecond(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentSecond()                                                                    Checks if the instance is in the same second as the current moment.
+ * @method        bool                         isNextSecond()                                                                       Checks if the instance is in the same second as the current moment next second.
+ * @method        bool                         isLastSecond()                                                                       Checks if the instance is in the same second as the current moment last second.
+ * @method        bool                         isSameMicro(Carbon|DateTimeInterface|string|null $date = null)                       Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentMicro()                                                                     Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool                         isNextMicro()                                                                        Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool                         isLastMicro()                                                                        Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool                         isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null)                 Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentMicrosecond()                                                               Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool                         isNextMicrosecond()                                                                  Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool                         isLastMicrosecond()                                                                  Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool                         isCurrentMonth()                                                                     Checks if the instance is in the same month as the current moment.
+ * @method        bool                         isNextMonth()                                                                        Checks if the instance is in the same month as the current moment next month.
+ * @method        bool                         isLastMonth()                                                                        Checks if the instance is in the same month as the current moment last month.
+ * @method        bool                         isCurrentQuarter()                                                                   Checks if the instance is in the same quarter as the current moment.
+ * @method        bool                         isNextQuarter()                                                                      Checks if the instance is in the same quarter as the current moment next quarter.
+ * @method        bool                         isLastQuarter()                                                                      Checks if the instance is in the same quarter as the current moment last quarter.
+ * @method        bool                         isSameDecade(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentDecade()                                                                    Checks if the instance is in the same decade as the current moment.
+ * @method        bool                         isNextDecade()                                                                       Checks if the instance is in the same decade as the current moment next decade.
+ * @method        bool                         isLastDecade()                                                                       Checks if the instance is in the same decade as the current moment last decade.
+ * @method        bool                         isSameCentury(Carbon|DateTimeInterface|string|null $date = null)                     Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentCentury()                                                                   Checks if the instance is in the same century as the current moment.
+ * @method        bool                         isNextCentury()                                                                      Checks if the instance is in the same century as the current moment next century.
+ * @method        bool                         isLastCentury()                                                                      Checks if the instance is in the same century as the current moment last century.
+ * @method        bool                         isSameMillennium(Carbon|DateTimeInterface|string|null $date = null)                  Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool                         isCurrentMillennium()                                                                Checks if the instance is in the same millennium as the current moment.
+ * @method        bool                         isNextMillennium()                                                                   Checks if the instance is in the same millennium as the current moment next millennium.
+ * @method        bool                         isLastMillennium()                                                                   Checks if the instance is in the same millennium as the current moment last millennium.
+ * @method        CarbonImmutable              years(int $value)                                                                    Set current instance year to the given value.
+ * @method        CarbonImmutable              year(int $value)                                                                     Set current instance year to the given value.
+ * @method        CarbonImmutable              setYears(int $value)                                                                 Set current instance year to the given value.
+ * @method        CarbonImmutable              setYear(int $value)                                                                  Set current instance year to the given value.
+ * @method        CarbonImmutable              months(int $value)                                                                   Set current instance month to the given value.
+ * @method        CarbonImmutable              month(int $value)                                                                    Set current instance month to the given value.
+ * @method        CarbonImmutable              setMonths(int $value)                                                                Set current instance month to the given value.
+ * @method        CarbonImmutable              setMonth(int $value)                                                                 Set current instance month to the given value.
+ * @method        CarbonImmutable              days(int $value)                                                                     Set current instance day to the given value.
+ * @method        CarbonImmutable              day(int $value)                                                                      Set current instance day to the given value.
+ * @method        CarbonImmutable              setDays(int $value)                                                                  Set current instance day to the given value.
+ * @method        CarbonImmutable              setDay(int $value)                                                                   Set current instance day to the given value.
+ * @method        CarbonImmutable              hours(int $value)                                                                    Set current instance hour to the given value.
+ * @method        CarbonImmutable              hour(int $value)                                                                     Set current instance hour to the given value.
+ * @method        CarbonImmutable              setHours(int $value)                                                                 Set current instance hour to the given value.
+ * @method        CarbonImmutable              setHour(int $value)                                                                  Set current instance hour to the given value.
+ * @method        CarbonImmutable              minutes(int $value)                                                                  Set current instance minute to the given value.
+ * @method        CarbonImmutable              minute(int $value)                                                                   Set current instance minute to the given value.
+ * @method        CarbonImmutable              setMinutes(int $value)                                                               Set current instance minute to the given value.
+ * @method        CarbonImmutable              setMinute(int $value)                                                                Set current instance minute to the given value.
+ * @method        CarbonImmutable              seconds(int $value)                                                                  Set current instance second to the given value.
+ * @method        CarbonImmutable              second(int $value)                                                                   Set current instance second to the given value.
+ * @method        CarbonImmutable              setSeconds(int $value)                                                               Set current instance second to the given value.
+ * @method        CarbonImmutable              setSecond(int $value)                                                                Set current instance second to the given value.
+ * @method        CarbonImmutable              millis(int $value)                                                                   Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              milli(int $value)                                                                    Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              setMillis(int $value)                                                                Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              setMilli(int $value)                                                                 Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              milliseconds(int $value)                                                             Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              millisecond(int $value)                                                              Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              setMilliseconds(int $value)                                                          Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              setMillisecond(int $value)                                                           Set current instance millisecond to the given value.
+ * @method        CarbonImmutable              micros(int $value)                                                                   Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              micro(int $value)                                                                    Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              setMicros(int $value)                                                                Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              setMicro(int $value)                                                                 Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              microseconds(int $value)                                                             Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              microsecond(int $value)                                                              Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              setMicroseconds(int $value)                                                          Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              setMicrosecond(int $value)                                                           Set current instance microsecond to the given value.
+ * @method        CarbonImmutable              addYears(int $value = 1)                                                             Add years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addYear()                                                                            Add one year to the instance (using date interval).
+ * @method        CarbonImmutable              subYears(int $value = 1)                                                             Sub years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subYear()                                                                            Sub one year to the instance (using date interval).
+ * @method        CarbonImmutable              addYearsWithOverflow(int $value = 1)                                                 Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addYearWithOverflow()                                                                Add one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subYearsWithOverflow(int $value = 1)                                                 Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subYearWithOverflow()                                                                Sub one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addYearsWithoutOverflow(int $value = 1)                                              Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addYearWithoutOverflow()                                                             Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearsWithoutOverflow(int $value = 1)                                              Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearWithoutOverflow()                                                             Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addYearsWithNoOverflow(int $value = 1)                                               Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addYearWithNoOverflow()                                                              Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearsWithNoOverflow(int $value = 1)                                               Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearWithNoOverflow()                                                              Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addYearsNoOverflow(int $value = 1)                                                   Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addYearNoOverflow()                                                                  Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearsNoOverflow(int $value = 1)                                                   Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subYearNoOverflow()                                                                  Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonths(int $value = 1)                                                            Add months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMonth()                                                                           Add one month to the instance (using date interval).
+ * @method        CarbonImmutable              subMonths(int $value = 1)                                                            Sub months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMonth()                                                                           Sub one month to the instance (using date interval).
+ * @method        CarbonImmutable              addMonthsWithOverflow(int $value = 1)                                                Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addMonthWithOverflow()                                                               Add one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subMonthsWithOverflow(int $value = 1)                                                Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subMonthWithOverflow()                                                               Sub one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addMonthsWithoutOverflow(int $value = 1)                                             Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonthWithoutOverflow()                                                            Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthsWithoutOverflow(int $value = 1)                                             Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthWithoutOverflow()                                                            Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonthsWithNoOverflow(int $value = 1)                                              Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonthWithNoOverflow()                                                             Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthsWithNoOverflow(int $value = 1)                                              Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthWithNoOverflow()                                                             Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonthsNoOverflow(int $value = 1)                                                  Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMonthNoOverflow()                                                                 Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthsNoOverflow(int $value = 1)                                                  Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMonthNoOverflow()                                                                 Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDays(int $value = 1)                                                              Add days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addDay()                                                                             Add one day to the instance (using date interval).
+ * @method        CarbonImmutable              subDays(int $value = 1)                                                              Sub days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subDay()                                                                             Sub one day to the instance (using date interval).
+ * @method        CarbonImmutable              addHours(int $value = 1)                                                             Add hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addHour()                                                                            Add one hour to the instance (using date interval).
+ * @method        CarbonImmutable              subHours(int $value = 1)                                                             Sub hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subHour()                                                                            Sub one hour to the instance (using date interval).
+ * @method        CarbonImmutable              addMinutes(int $value = 1)                                                           Add minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMinute()                                                                          Add one minute to the instance (using date interval).
+ * @method        CarbonImmutable              subMinutes(int $value = 1)                                                           Sub minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMinute()                                                                          Sub one minute to the instance (using date interval).
+ * @method        CarbonImmutable              addSeconds(int $value = 1)                                                           Add seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addSecond()                                                                          Add one second to the instance (using date interval).
+ * @method        CarbonImmutable              subSeconds(int $value = 1)                                                           Sub seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subSecond()                                                                          Sub one second to the instance (using date interval).
+ * @method        CarbonImmutable              addMillis(int $value = 1)                                                            Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMilli()                                                                           Add one millisecond to the instance (using date interval).
+ * @method        CarbonImmutable              subMillis(int $value = 1)                                                            Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMilli()                                                                           Sub one millisecond to the instance (using date interval).
+ * @method        CarbonImmutable              addMilliseconds(int $value = 1)                                                      Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMillisecond()                                                                     Add one millisecond to the instance (using date interval).
+ * @method        CarbonImmutable              subMilliseconds(int $value = 1)                                                      Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMillisecond()                                                                     Sub one millisecond to the instance (using date interval).
+ * @method        CarbonImmutable              addMicros(int $value = 1)                                                            Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMicro()                                                                           Add one microsecond to the instance (using date interval).
+ * @method        CarbonImmutable              subMicros(int $value = 1)                                                            Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMicro()                                                                           Sub one microsecond to the instance (using date interval).
+ * @method        CarbonImmutable              addMicroseconds(int $value = 1)                                                      Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMicrosecond()                                                                     Add one microsecond to the instance (using date interval).
+ * @method        CarbonImmutable              subMicroseconds(int $value = 1)                                                      Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMicrosecond()                                                                     Sub one microsecond to the instance (using date interval).
+ * @method        CarbonImmutable              addMillennia(int $value = 1)                                                         Add millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addMillennium()                                                                      Add one millennium to the instance (using date interval).
+ * @method        CarbonImmutable              subMillennia(int $value = 1)                                                         Sub millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subMillennium()                                                                      Sub one millennium to the instance (using date interval).
+ * @method        CarbonImmutable              addMillenniaWithOverflow(int $value = 1)                                             Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addMillenniumWithOverflow()                                                          Add one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subMillenniaWithOverflow(int $value = 1)                                             Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subMillenniumWithOverflow()                                                          Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addMillenniaWithoutOverflow(int $value = 1)                                          Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMillenniumWithoutOverflow()                                                       Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniaWithoutOverflow(int $value = 1)                                          Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniumWithoutOverflow()                                                       Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMillenniaWithNoOverflow(int $value = 1)                                           Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMillenniumWithNoOverflow()                                                        Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniaWithNoOverflow(int $value = 1)                                           Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniumWithNoOverflow()                                                        Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMillenniaNoOverflow(int $value = 1)                                               Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addMillenniumNoOverflow()                                                            Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniaNoOverflow(int $value = 1)                                               Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subMillenniumNoOverflow()                                                            Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturies(int $value = 1)                                                         Add centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addCentury()                                                                         Add one century to the instance (using date interval).
+ * @method        CarbonImmutable              subCenturies(int $value = 1)                                                         Sub centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subCentury()                                                                         Sub one century to the instance (using date interval).
+ * @method        CarbonImmutable              addCenturiesWithOverflow(int $value = 1)                                             Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addCenturyWithOverflow()                                                             Add one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subCenturiesWithOverflow(int $value = 1)                                             Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subCenturyWithOverflow()                                                             Sub one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addCenturiesWithoutOverflow(int $value = 1)                                          Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturyWithoutOverflow()                                                          Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturiesWithoutOverflow(int $value = 1)                                          Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturyWithoutOverflow()                                                          Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturiesWithNoOverflow(int $value = 1)                                           Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturyWithNoOverflow()                                                           Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturiesWithNoOverflow(int $value = 1)                                           Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturyWithNoOverflow()                                                           Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturiesNoOverflow(int $value = 1)                                               Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addCenturyNoOverflow()                                                               Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturiesNoOverflow(int $value = 1)                                               Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subCenturyNoOverflow()                                                               Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecades(int $value = 1)                                                           Add decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addDecade()                                                                          Add one decade to the instance (using date interval).
+ * @method        CarbonImmutable              subDecades(int $value = 1)                                                           Sub decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subDecade()                                                                          Sub one decade to the instance (using date interval).
+ * @method        CarbonImmutable              addDecadesWithOverflow(int $value = 1)                                               Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addDecadeWithOverflow()                                                              Add one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subDecadesWithOverflow(int $value = 1)                                               Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subDecadeWithOverflow()                                                              Sub one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addDecadesWithoutOverflow(int $value = 1)                                            Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecadeWithoutOverflow()                                                           Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadesWithoutOverflow(int $value = 1)                                            Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadeWithoutOverflow()                                                           Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecadesWithNoOverflow(int $value = 1)                                             Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecadeWithNoOverflow()                                                            Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadesWithNoOverflow(int $value = 1)                                             Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadeWithNoOverflow()                                                            Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecadesNoOverflow(int $value = 1)                                                 Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addDecadeNoOverflow()                                                                Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadesNoOverflow(int $value = 1)                                                 Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subDecadeNoOverflow()                                                                Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuarters(int $value = 1)                                                          Add quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addQuarter()                                                                         Add one quarter to the instance (using date interval).
+ * @method        CarbonImmutable              subQuarters(int $value = 1)                                                          Sub quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subQuarter()                                                                         Sub one quarter to the instance (using date interval).
+ * @method        CarbonImmutable              addQuartersWithOverflow(int $value = 1)                                              Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addQuarterWithOverflow()                                                             Add one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subQuartersWithOverflow(int $value = 1)                                              Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              subQuarterWithOverflow()                                                             Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonImmutable              addQuartersWithoutOverflow(int $value = 1)                                           Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuarterWithoutOverflow()                                                          Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuartersWithoutOverflow(int $value = 1)                                           Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuarterWithoutOverflow()                                                          Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuartersWithNoOverflow(int $value = 1)                                            Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuarterWithNoOverflow()                                                           Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuartersWithNoOverflow(int $value = 1)                                            Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuarterWithNoOverflow()                                                           Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuartersNoOverflow(int $value = 1)                                                Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addQuarterNoOverflow()                                                               Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuartersNoOverflow(int $value = 1)                                                Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              subQuarterNoOverflow()                                                               Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonImmutable              addWeeks(int $value = 1)                                                             Add weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addWeek()                                                                            Add one week to the instance (using date interval).
+ * @method        CarbonImmutable              subWeeks(int $value = 1)                                                             Sub weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subWeek()                                                                            Sub one week to the instance (using date interval).
+ * @method        CarbonImmutable              addWeekdays(int $value = 1)                                                          Add weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              addWeekday()                                                                         Add one weekday to the instance (using date interval).
+ * @method        CarbonImmutable              subWeekdays(int $value = 1)                                                          Sub weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonImmutable              subWeekday()                                                                         Sub one weekday to the instance (using date interval).
+ * @method        CarbonImmutable              addRealMicros(int $value = 1)                                                        Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMicro()                                                                       Add one microsecond to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMicros(int $value = 1)                                                        Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMicro()                                                                       Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod                 microsUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonImmutable              addRealMicroseconds(int $value = 1)                                                  Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMicrosecond()                                                                 Add one microsecond to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMicroseconds(int $value = 1)                                                  Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMicrosecond()                                                                 Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod                 microsecondsUntil($endDate = null, int $factor = 1)                                  Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonImmutable              addRealMillis(int $value = 1)                                                        Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMilli()                                                                       Add one millisecond to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMillis(int $value = 1)                                                        Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMilli()                                                                       Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod                 millisUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonImmutable              addRealMilliseconds(int $value = 1)                                                  Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMillisecond()                                                                 Add one millisecond to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMilliseconds(int $value = 1)                                                  Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMillisecond()                                                                 Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod                 millisecondsUntil($endDate = null, int $factor = 1)                                  Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonImmutable              addRealSeconds(int $value = 1)                                                       Add seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealSecond()                                                                      Add one second to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealSeconds(int $value = 1)                                                       Sub seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealSecond()                                                                      Sub one second to the instance (using timestamp).
+ * @method        CarbonPeriod                 secondsUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
+ * @method        CarbonImmutable              addRealMinutes(int $value = 1)                                                       Add minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMinute()                                                                      Add one minute to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMinutes(int $value = 1)                                                       Sub minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMinute()                                                                      Sub one minute to the instance (using timestamp).
+ * @method        CarbonPeriod                 minutesUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
+ * @method        CarbonImmutable              addRealHours(int $value = 1)                                                         Add hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealHour()                                                                        Add one hour to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealHours(int $value = 1)                                                         Sub hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealHour()                                                                        Sub one hour to the instance (using timestamp).
+ * @method        CarbonPeriod                 hoursUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
+ * @method        CarbonImmutable              addRealDays(int $value = 1)                                                          Add days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealDay()                                                                         Add one day to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealDays(int $value = 1)                                                          Sub days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealDay()                                                                         Sub one day to the instance (using timestamp).
+ * @method        CarbonPeriod                 daysUntil($endDate = null, int $factor = 1)                                          Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
+ * @method        CarbonImmutable              addRealWeeks(int $value = 1)                                                         Add weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealWeek()                                                                        Add one week to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealWeeks(int $value = 1)                                                         Sub weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealWeek()                                                                        Sub one week to the instance (using timestamp).
+ * @method        CarbonPeriod                 weeksUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
+ * @method        CarbonImmutable              addRealMonths(int $value = 1)                                                        Add months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMonth()                                                                       Add one month to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMonths(int $value = 1)                                                        Sub months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMonth()                                                                       Sub one month to the instance (using timestamp).
+ * @method        CarbonPeriod                 monthsUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
+ * @method        CarbonImmutable              addRealQuarters(int $value = 1)                                                      Add quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealQuarter()                                                                     Add one quarter to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealQuarters(int $value = 1)                                                      Sub quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealQuarter()                                                                     Sub one quarter to the instance (using timestamp).
+ * @method        CarbonPeriod                 quartersUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
+ * @method        CarbonImmutable              addRealYears(int $value = 1)                                                         Add years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealYear()                                                                        Add one year to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealYears(int $value = 1)                                                         Sub years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealYear()                                                                        Sub one year to the instance (using timestamp).
+ * @method        CarbonPeriod                 yearsUntil($endDate = null, int $factor = 1)                                         Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
+ * @method        CarbonImmutable              addRealDecades(int $value = 1)                                                       Add decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealDecade()                                                                      Add one decade to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealDecades(int $value = 1)                                                       Sub decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealDecade()                                                                      Sub one decade to the instance (using timestamp).
+ * @method        CarbonPeriod                 decadesUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
+ * @method        CarbonImmutable              addRealCenturies(int $value = 1)                                                     Add centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealCentury()                                                                     Add one century to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealCenturies(int $value = 1)                                                     Sub centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealCentury()                                                                     Sub one century to the instance (using timestamp).
+ * @method        CarbonPeriod                 centuriesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
+ * @method        CarbonImmutable              addRealMillennia(int $value = 1)                                                     Add millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              addRealMillennium()                                                                  Add one millennium to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMillennia(int $value = 1)                                                     Sub millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonImmutable              subRealMillennium()                                                                  Sub one millennium to the instance (using timestamp).
+ * @method        CarbonPeriod                 millenniaUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
+ * @method        CarbonImmutable              roundYear(float $precision = 1, string $function = "round")                          Round the current instance year with given precision using the given function.
+ * @method        CarbonImmutable              roundYears(float $precision = 1, string $function = "round")                         Round the current instance year with given precision using the given function.
+ * @method        CarbonImmutable              floorYear(float $precision = 1)                                                      Truncate the current instance year with given precision.
+ * @method        CarbonImmutable              floorYears(float $precision = 1)                                                     Truncate the current instance year with given precision.
+ * @method        CarbonImmutable              ceilYear(float $precision = 1)                                                       Ceil the current instance year with given precision.
+ * @method        CarbonImmutable              ceilYears(float $precision = 1)                                                      Ceil the current instance year with given precision.
+ * @method        CarbonImmutable              roundMonth(float $precision = 1, string $function = "round")                         Round the current instance month with given precision using the given function.
+ * @method        CarbonImmutable              roundMonths(float $precision = 1, string $function = "round")                        Round the current instance month with given precision using the given function.
+ * @method        CarbonImmutable              floorMonth(float $precision = 1)                                                     Truncate the current instance month with given precision.
+ * @method        CarbonImmutable              floorMonths(float $precision = 1)                                                    Truncate the current instance month with given precision.
+ * @method        CarbonImmutable              ceilMonth(float $precision = 1)                                                      Ceil the current instance month with given precision.
+ * @method        CarbonImmutable              ceilMonths(float $precision = 1)                                                     Ceil the current instance month with given precision.
+ * @method        CarbonImmutable              roundDay(float $precision = 1, string $function = "round")                           Round the current instance day with given precision using the given function.
+ * @method        CarbonImmutable              roundDays(float $precision = 1, string $function = "round")                          Round the current instance day with given precision using the given function.
+ * @method        CarbonImmutable              floorDay(float $precision = 1)                                                       Truncate the current instance day with given precision.
+ * @method        CarbonImmutable              floorDays(float $precision = 1)                                                      Truncate the current instance day with given precision.
+ * @method        CarbonImmutable              ceilDay(float $precision = 1)                                                        Ceil the current instance day with given precision.
+ * @method        CarbonImmutable              ceilDays(float $precision = 1)                                                       Ceil the current instance day with given precision.
+ * @method        CarbonImmutable              roundHour(float $precision = 1, string $function = "round")                          Round the current instance hour with given precision using the given function.
+ * @method        CarbonImmutable              roundHours(float $precision = 1, string $function = "round")                         Round the current instance hour with given precision using the given function.
+ * @method        CarbonImmutable              floorHour(float $precision = 1)                                                      Truncate the current instance hour with given precision.
+ * @method        CarbonImmutable              floorHours(float $precision = 1)                                                     Truncate the current instance hour with given precision.
+ * @method        CarbonImmutable              ceilHour(float $precision = 1)                                                       Ceil the current instance hour with given precision.
+ * @method        CarbonImmutable              ceilHours(float $precision = 1)                                                      Ceil the current instance hour with given precision.
+ * @method        CarbonImmutable              roundMinute(float $precision = 1, string $function = "round")                        Round the current instance minute with given precision using the given function.
+ * @method        CarbonImmutable              roundMinutes(float $precision = 1, string $function = "round")                       Round the current instance minute with given precision using the given function.
+ * @method        CarbonImmutable              floorMinute(float $precision = 1)                                                    Truncate the current instance minute with given precision.
+ * @method        CarbonImmutable              floorMinutes(float $precision = 1)                                                   Truncate the current instance minute with given precision.
+ * @method        CarbonImmutable              ceilMinute(float $precision = 1)                                                     Ceil the current instance minute with given precision.
+ * @method        CarbonImmutable              ceilMinutes(float $precision = 1)                                                    Ceil the current instance minute with given precision.
+ * @method        CarbonImmutable              roundSecond(float $precision = 1, string $function = "round")                        Round the current instance second with given precision using the given function.
+ * @method        CarbonImmutable              roundSeconds(float $precision = 1, string $function = "round")                       Round the current instance second with given precision using the given function.
+ * @method        CarbonImmutable              floorSecond(float $precision = 1)                                                    Truncate the current instance second with given precision.
+ * @method        CarbonImmutable              floorSeconds(float $precision = 1)                                                   Truncate the current instance second with given precision.
+ * @method        CarbonImmutable              ceilSecond(float $precision = 1)                                                     Ceil the current instance second with given precision.
+ * @method        CarbonImmutable              ceilSeconds(float $precision = 1)                                                    Ceil the current instance second with given precision.
+ * @method        CarbonImmutable              roundMillennium(float $precision = 1, string $function = "round")                    Round the current instance millennium with given precision using the given function.
+ * @method        CarbonImmutable              roundMillennia(float $precision = 1, string $function = "round")                     Round the current instance millennium with given precision using the given function.
+ * @method        CarbonImmutable              floorMillennium(float $precision = 1)                                                Truncate the current instance millennium with given precision.
+ * @method        CarbonImmutable              floorMillennia(float $precision = 1)                                                 Truncate the current instance millennium with given precision.
+ * @method        CarbonImmutable              ceilMillennium(float $precision = 1)                                                 Ceil the current instance millennium with given precision.
+ * @method        CarbonImmutable              ceilMillennia(float $precision = 1)                                                  Ceil the current instance millennium with given precision.
+ * @method        CarbonImmutable              roundCentury(float $precision = 1, string $function = "round")                       Round the current instance century with given precision using the given function.
+ * @method        CarbonImmutable              roundCenturies(float $precision = 1, string $function = "round")                     Round the current instance century with given precision using the given function.
+ * @method        CarbonImmutable              floorCentury(float $precision = 1)                                                   Truncate the current instance century with given precision.
+ * @method        CarbonImmutable              floorCenturies(float $precision = 1)                                                 Truncate the current instance century with given precision.
+ * @method        CarbonImmutable              ceilCentury(float $precision = 1)                                                    Ceil the current instance century with given precision.
+ * @method        CarbonImmutable              ceilCenturies(float $precision = 1)                                                  Ceil the current instance century with given precision.
+ * @method        CarbonImmutable              roundDecade(float $precision = 1, string $function = "round")                        Round the current instance decade with given precision using the given function.
+ * @method        CarbonImmutable              roundDecades(float $precision = 1, string $function = "round")                       Round the current instance decade with given precision using the given function.
+ * @method        CarbonImmutable              floorDecade(float $precision = 1)                                                    Truncate the current instance decade with given precision.
+ * @method        CarbonImmutable              floorDecades(float $precision = 1)                                                   Truncate the current instance decade with given precision.
+ * @method        CarbonImmutable              ceilDecade(float $precision = 1)                                                     Ceil the current instance decade with given precision.
+ * @method        CarbonImmutable              ceilDecades(float $precision = 1)                                                    Ceil the current instance decade with given precision.
+ * @method        CarbonImmutable              roundQuarter(float $precision = 1, string $function = "round")                       Round the current instance quarter with given precision using the given function.
+ * @method        CarbonImmutable              roundQuarters(float $precision = 1, string $function = "round")                      Round the current instance quarter with given precision using the given function.
+ * @method        CarbonImmutable              floorQuarter(float $precision = 1)                                                   Truncate the current instance quarter with given precision.
+ * @method        CarbonImmutable              floorQuarters(float $precision = 1)                                                  Truncate the current instance quarter with given precision.
+ * @method        CarbonImmutable              ceilQuarter(float $precision = 1)                                                    Ceil the current instance quarter with given precision.
+ * @method        CarbonImmutable              ceilQuarters(float $precision = 1)                                                   Ceil the current instance quarter with given precision.
+ * @method        CarbonImmutable              roundMillisecond(float $precision = 1, string $function = "round")                   Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonImmutable              roundMilliseconds(float $precision = 1, string $function = "round")                  Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonImmutable              floorMillisecond(float $precision = 1)                                               Truncate the current instance millisecond with given precision.
+ * @method        CarbonImmutable              floorMilliseconds(float $precision = 1)                                              Truncate the current instance millisecond with given precision.
+ * @method        CarbonImmutable              ceilMillisecond(float $precision = 1)                                                Ceil the current instance millisecond with given precision.
+ * @method        CarbonImmutable              ceilMilliseconds(float $precision = 1)                                               Ceil the current instance millisecond with given precision.
+ * @method        CarbonImmutable              roundMicrosecond(float $precision = 1, string $function = "round")                   Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonImmutable              roundMicroseconds(float $precision = 1, string $function = "round")                  Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonImmutable              floorMicrosecond(float $precision = 1)                                               Truncate the current instance microsecond with given precision.
+ * @method        CarbonImmutable              floorMicroseconds(float $precision = 1)                                              Truncate the current instance microsecond with given precision.
+ * @method        CarbonImmutable              ceilMicrosecond(float $precision = 1)                                                Ceil the current instance microsecond with given precision.
+ * @method        CarbonImmutable              ceilMicroseconds(float $precision = 1)                                               Ceil the current instance microsecond with given precision.
+ * @method        string                       shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)          Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)           Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)          Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)           Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)     Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)      Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)   Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string                       longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)    Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        static CarbonImmutable|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new CarbonImmutable object according to the specified format.
+ * @method        static CarbonImmutable       __set_state(array $array)                                                            https://php.net/manual/en/datetime.set-state.php
+ *
+ * </autodoc>
+ */
+class CarbonImmutable extends DateTimeImmutable implements CarbonInterface
+{
+    use Date {
+        __clone as dateTraitClone;
+    }
+
+    public function __clone()
+    {
+        $this->dateTraitClone();
+        $this->endOfTime = false;
+        $this->startOfTime = false;
+    }
+
+    /**
+     * Create a very old date representing start of time.
+     *
+     * @return static
+     */
+    public static function startOfTime(): self
+    {
+        $date = static::parse('0001-01-01')->years(self::getStartOfTimeYear());
+        $date->startOfTime = true;
+
+        return $date;
+    }
+
+    /**
+     * Create a very far date representing end of time.
+     *
+     * @return static
+     */
+    public static function endOfTime(): self
+    {
+        $date = static::parse('9999-12-31 23:59:59.999999')->years(self::getEndOfTimeYear());
+        $date->endOfTime = true;
+
+        return $date;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    private static function getEndOfTimeYear(): int
+    {
+        if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
+            return 145261681241552;
+        }
+
+        // Remove if https://bugs.php.net/bug.php?id=81107 is fixed
+        if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) {
+            return 1118290769066902787;
+        }
+
+        return PHP_INT_MAX;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    private static function getStartOfTimeYear(): int
+    {
+        if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
+            return -135908816449551;
+        }
+
+        // Remove if https://bugs.php.net/bug.php?id=81107 is fixed
+        if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) {
+            return -1118290769066898816;
+        }
+
+        return max(PHP_INT_MIN, -9223372036854773760);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
new file mode 100644
index 00000000..c3db8504
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php
@@ -0,0 +1,5078 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use BadMethodCallException;
+use Carbon\Exceptions\BadComparisonUnitException;
+use Carbon\Exceptions\ImmutableException;
+use Carbon\Exceptions\InvalidDateException;
+use Carbon\Exceptions\InvalidFormatException;
+use Carbon\Exceptions\UnknownGetterException;
+use Carbon\Exceptions\UnknownMethodException;
+use Carbon\Exceptions\UnknownSetterException;
+use Closure;
+use DateInterval;
+use DateTime;
+use DateTimeImmutable;
+use DateTimeInterface;
+use DateTimeZone;
+use JsonSerializable;
+use ReflectionException;
+use ReturnTypeWillChange;
+use Symfony\Component\Translation\TranslatorInterface;
+use Throwable;
+
+/**
+ * Common interface for Carbon and CarbonImmutable.
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @property      int              $year
+ * @property      int              $yearIso
+ * @property      int              $month
+ * @property      int              $day
+ * @property      int              $hour
+ * @property      int              $minute
+ * @property      int              $second
+ * @property      int              $micro
+ * @property      int              $microsecond
+ * @property      int|float|string $timestamp                                                                         seconds since the Unix Epoch
+ * @property      string           $englishDayOfWeek                                                                  the day of week in English
+ * @property      string           $shortEnglishDayOfWeek                                                             the abbreviated day of week in English
+ * @property      string           $englishMonth                                                                      the month in English
+ * @property      string           $shortEnglishMonth                                                                 the abbreviated month in English
+ * @property      int              $milliseconds
+ * @property      int              $millisecond
+ * @property      int              $milli
+ * @property      int              $week                                                                              1 through 53
+ * @property      int              $isoWeek                                                                           1 through 53
+ * @property      int              $weekYear                                                                          year according to week format
+ * @property      int              $isoWeekYear                                                                       year according to ISO week format
+ * @property      int              $dayOfYear                                                                         1 through 366
+ * @property      int              $age                                                                               does a diffInYears() with default parameters
+ * @property      int              $offset                                                                            the timezone offset in seconds from UTC
+ * @property      int              $offsetMinutes                                                                     the timezone offset in minutes from UTC
+ * @property      int              $offsetHours                                                                       the timezone offset in hours from UTC
+ * @property      CarbonTimeZone   $timezone                                                                          the current timezone
+ * @property      CarbonTimeZone   $tz                                                                                alias of $timezone
+ * @property-read int              $dayOfWeek                                                                         0 (for Sunday) through 6 (for Saturday)
+ * @property-read int              $dayOfWeekIso                                                                      1 (for Monday) through 7 (for Sunday)
+ * @property-read int              $weekOfYear                                                                        ISO-8601 week number of year, weeks starting on Monday
+ * @property-read int              $daysInMonth                                                                       number of days in the given month
+ * @property-read string           $latinMeridiem                                                                     "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
+ * @property-read string           $latinUpperMeridiem                                                                "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
+ * @property-read string           $timezoneAbbreviatedName                                                           the current timezone abbreviated name
+ * @property-read string           $tzAbbrName                                                                        alias of $timezoneAbbreviatedName
+ * @property-read string           $dayName                                                                           long name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $shortDayName                                                                      short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $minDayName                                                                        very short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $monthName                                                                         long name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $shortMonthName                                                                    short name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $meridiem                                                                          lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read string           $upperMeridiem                                                                     uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read int              $noZeroHour                                                                        current hour from 1 to 24
+ * @property-read int              $weeksInYear                                                                       51 through 53
+ * @property-read int              $isoWeeksInYear                                                                    51 through 53
+ * @property-read int              $weekOfMonth                                                                       1 through 5
+ * @property-read int              $weekNumberInMonth                                                                 1 through 5
+ * @property-read int              $firstWeekDay                                                                      0 through 6
+ * @property-read int              $lastWeekDay                                                                       0 through 6
+ * @property-read int              $daysInYear                                                                        365 or 366
+ * @property-read int              $quarter                                                                           the quarter of this instance, 1 - 4
+ * @property-read int              $decade                                                                            the decade of this instance
+ * @property-read int              $century                                                                           the century of this instance
+ * @property-read int              $millennium                                                                        the millennium of this instance
+ * @property-read bool             $dst                                                                               daylight savings time indicator, true if DST, false otherwise
+ * @property-read bool             $local                                                                             checks if the timezone is local, true if local, false otherwise
+ * @property-read bool             $utc                                                                               checks if the timezone is UTC, true if UTC, false otherwise
+ * @property-read string           $timezoneName                                                                      the current timezone name
+ * @property-read string           $tzName                                                                            alias of $timezoneName
+ * @property-read string           $locale                                                                            locale of the current instance
+ *
+ * @method        bool             isUtc()                                                                            Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
+ * @method        bool             isLocal()                                                                          Check if the current instance has non-UTC timezone.
+ * @method        bool             isValid()                                                                          Check if the current instance is a valid date.
+ * @method        bool             isDST()                                                                            Check if the current instance is in a daylight saving time.
+ * @method        bool             isSunday()                                                                         Checks if the instance day is sunday.
+ * @method        bool             isMonday()                                                                         Checks if the instance day is monday.
+ * @method        bool             isTuesday()                                                                        Checks if the instance day is tuesday.
+ * @method        bool             isWednesday()                                                                      Checks if the instance day is wednesday.
+ * @method        bool             isThursday()                                                                       Checks if the instance day is thursday.
+ * @method        bool             isFriday()                                                                         Checks if the instance day is friday.
+ * @method        bool             isSaturday()                                                                       Checks if the instance day is saturday.
+ * @method        bool             isSameYear(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentYear()                                                                    Checks if the instance is in the same year as the current moment.
+ * @method        bool             isNextYear()                                                                       Checks if the instance is in the same year as the current moment next year.
+ * @method        bool             isLastYear()                                                                       Checks if the instance is in the same year as the current moment last year.
+ * @method        bool             isSameWeek(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentWeek()                                                                    Checks if the instance is in the same week as the current moment.
+ * @method        bool             isNextWeek()                                                                       Checks if the instance is in the same week as the current moment next week.
+ * @method        bool             isLastWeek()                                                                       Checks if the instance is in the same week as the current moment last week.
+ * @method        bool             isSameDay(Carbon|DateTimeInterface|string|null $date = null)                       Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentDay()                                                                     Checks if the instance is in the same day as the current moment.
+ * @method        bool             isNextDay()                                                                        Checks if the instance is in the same day as the current moment next day.
+ * @method        bool             isLastDay()                                                                        Checks if the instance is in the same day as the current moment last day.
+ * @method        bool             isSameHour(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentHour()                                                                    Checks if the instance is in the same hour as the current moment.
+ * @method        bool             isNextHour()                                                                       Checks if the instance is in the same hour as the current moment next hour.
+ * @method        bool             isLastHour()                                                                       Checks if the instance is in the same hour as the current moment last hour.
+ * @method        bool             isSameMinute(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMinute()                                                                  Checks if the instance is in the same minute as the current moment.
+ * @method        bool             isNextMinute()                                                                     Checks if the instance is in the same minute as the current moment next minute.
+ * @method        bool             isLastMinute()                                                                     Checks if the instance is in the same minute as the current moment last minute.
+ * @method        bool             isSameSecond(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentSecond()                                                                  Checks if the instance is in the same second as the current moment.
+ * @method        bool             isNextSecond()                                                                     Checks if the instance is in the same second as the current moment next second.
+ * @method        bool             isLastSecond()                                                                     Checks if the instance is in the same second as the current moment last second.
+ * @method        bool             isSameMicro(Carbon|DateTimeInterface|string|null $date = null)                     Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMicro()                                                                   Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool             isNextMicro()                                                                      Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool             isLastMicro()                                                                      Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool             isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null)               Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMicrosecond()                                                             Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool             isNextMicrosecond()                                                                Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool             isLastMicrosecond()                                                                Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool             isCurrentMonth()                                                                   Checks if the instance is in the same month as the current moment.
+ * @method        bool             isNextMonth()                                                                      Checks if the instance is in the same month as the current moment next month.
+ * @method        bool             isLastMonth()                                                                      Checks if the instance is in the same month as the current moment last month.
+ * @method        bool             isCurrentQuarter()                                                                 Checks if the instance is in the same quarter as the current moment.
+ * @method        bool             isNextQuarter()                                                                    Checks if the instance is in the same quarter as the current moment next quarter.
+ * @method        bool             isLastQuarter()                                                                    Checks if the instance is in the same quarter as the current moment last quarter.
+ * @method        bool             isSameDecade(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentDecade()                                                                  Checks if the instance is in the same decade as the current moment.
+ * @method        bool             isNextDecade()                                                                     Checks if the instance is in the same decade as the current moment next decade.
+ * @method        bool             isLastDecade()                                                                     Checks if the instance is in the same decade as the current moment last decade.
+ * @method        bool             isSameCentury(Carbon|DateTimeInterface|string|null $date = null)                   Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentCentury()                                                                 Checks if the instance is in the same century as the current moment.
+ * @method        bool             isNextCentury()                                                                    Checks if the instance is in the same century as the current moment next century.
+ * @method        bool             isLastCentury()                                                                    Checks if the instance is in the same century as the current moment last century.
+ * @method        bool             isSameMillennium(Carbon|DateTimeInterface|string|null $date = null)                Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMillennium()                                                              Checks if the instance is in the same millennium as the current moment.
+ * @method        bool             isNextMillennium()                                                                 Checks if the instance is in the same millennium as the current moment next millennium.
+ * @method        bool             isLastMillennium()                                                                 Checks if the instance is in the same millennium as the current moment last millennium.
+ * @method        CarbonInterface  years(int $value)                                                                  Set current instance year to the given value.
+ * @method        CarbonInterface  year(int $value)                                                                   Set current instance year to the given value.
+ * @method        CarbonInterface  setYears(int $value)                                                               Set current instance year to the given value.
+ * @method        CarbonInterface  setYear(int $value)                                                                Set current instance year to the given value.
+ * @method        CarbonInterface  months(int $value)                                                                 Set current instance month to the given value.
+ * @method        CarbonInterface  month(int $value)                                                                  Set current instance month to the given value.
+ * @method        CarbonInterface  setMonths(int $value)                                                              Set current instance month to the given value.
+ * @method        CarbonInterface  setMonth(int $value)                                                               Set current instance month to the given value.
+ * @method        CarbonInterface  days(int $value)                                                                   Set current instance day to the given value.
+ * @method        CarbonInterface  day(int $value)                                                                    Set current instance day to the given value.
+ * @method        CarbonInterface  setDays(int $value)                                                                Set current instance day to the given value.
+ * @method        CarbonInterface  setDay(int $value)                                                                 Set current instance day to the given value.
+ * @method        CarbonInterface  hours(int $value)                                                                  Set current instance hour to the given value.
+ * @method        CarbonInterface  hour(int $value)                                                                   Set current instance hour to the given value.
+ * @method        CarbonInterface  setHours(int $value)                                                               Set current instance hour to the given value.
+ * @method        CarbonInterface  setHour(int $value)                                                                Set current instance hour to the given value.
+ * @method        CarbonInterface  minutes(int $value)                                                                Set current instance minute to the given value.
+ * @method        CarbonInterface  minute(int $value)                                                                 Set current instance minute to the given value.
+ * @method        CarbonInterface  setMinutes(int $value)                                                             Set current instance minute to the given value.
+ * @method        CarbonInterface  setMinute(int $value)                                                              Set current instance minute to the given value.
+ * @method        CarbonInterface  seconds(int $value)                                                                Set current instance second to the given value.
+ * @method        CarbonInterface  second(int $value)                                                                 Set current instance second to the given value.
+ * @method        CarbonInterface  setSeconds(int $value)                                                             Set current instance second to the given value.
+ * @method        CarbonInterface  setSecond(int $value)                                                              Set current instance second to the given value.
+ * @method        CarbonInterface  millis(int $value)                                                                 Set current instance millisecond to the given value.
+ * @method        CarbonInterface  milli(int $value)                                                                  Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMillis(int $value)                                                              Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMilli(int $value)                                                               Set current instance millisecond to the given value.
+ * @method        CarbonInterface  milliseconds(int $value)                                                           Set current instance millisecond to the given value.
+ * @method        CarbonInterface  millisecond(int $value)                                                            Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMilliseconds(int $value)                                                        Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMillisecond(int $value)                                                         Set current instance millisecond to the given value.
+ * @method        CarbonInterface  micros(int $value)                                                                 Set current instance microsecond to the given value.
+ * @method        CarbonInterface  micro(int $value)                                                                  Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicros(int $value)                                                              Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicro(int $value)                                                               Set current instance microsecond to the given value.
+ * @method        CarbonInterface  microseconds(int $value)                                                           Set current instance microsecond to the given value.
+ * @method        CarbonInterface  microsecond(int $value)                                                            Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicroseconds(int $value)                                                        Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicrosecond(int $value)                                                         Set current instance microsecond to the given value.
+ * @method        CarbonInterface  addYears(int $value = 1)                                                           Add years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addYear()                                                                          Add one year to the instance (using date interval).
+ * @method        CarbonInterface  subYears(int $value = 1)                                                           Sub years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subYear()                                                                          Sub one year to the instance (using date interval).
+ * @method        CarbonInterface  addYearsWithOverflow(int $value = 1)                                               Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addYearWithOverflow()                                                              Add one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subYearsWithOverflow(int $value = 1)                                               Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subYearWithOverflow()                                                              Sub one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addYearsWithoutOverflow(int $value = 1)                                            Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearWithoutOverflow()                                                           Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsWithoutOverflow(int $value = 1)                                            Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearWithoutOverflow()                                                           Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearsWithNoOverflow(int $value = 1)                                             Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearWithNoOverflow()                                                            Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsWithNoOverflow(int $value = 1)                                             Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearWithNoOverflow()                                                            Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearsNoOverflow(int $value = 1)                                                 Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearNoOverflow()                                                                Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsNoOverflow(int $value = 1)                                                 Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearNoOverflow()                                                                Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonths(int $value = 1)                                                          Add months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMonth()                                                                         Add one month to the instance (using date interval).
+ * @method        CarbonInterface  subMonths(int $value = 1)                                                          Sub months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMonth()                                                                         Sub one month to the instance (using date interval).
+ * @method        CarbonInterface  addMonthsWithOverflow(int $value = 1)                                              Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMonthWithOverflow()                                                             Add one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMonthsWithOverflow(int $value = 1)                                              Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMonthWithOverflow()                                                             Sub one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMonthsWithoutOverflow(int $value = 1)                                           Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthWithoutOverflow()                                                          Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsWithoutOverflow(int $value = 1)                                           Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthWithoutOverflow()                                                          Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthsWithNoOverflow(int $value = 1)                                            Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthWithNoOverflow()                                                           Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsWithNoOverflow(int $value = 1)                                            Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthWithNoOverflow()                                                           Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthsNoOverflow(int $value = 1)                                                Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthNoOverflow()                                                               Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsNoOverflow(int $value = 1)                                                Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthNoOverflow()                                                               Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDays(int $value = 1)                                                            Add days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addDay()                                                                           Add one day to the instance (using date interval).
+ * @method        CarbonInterface  subDays(int $value = 1)                                                            Sub days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subDay()                                                                           Sub one day to the instance (using date interval).
+ * @method        CarbonInterface  addHours(int $value = 1)                                                           Add hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addHour()                                                                          Add one hour to the instance (using date interval).
+ * @method        CarbonInterface  subHours(int $value = 1)                                                           Sub hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subHour()                                                                          Sub one hour to the instance (using date interval).
+ * @method        CarbonInterface  addMinutes(int $value = 1)                                                         Add minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMinute()                                                                        Add one minute to the instance (using date interval).
+ * @method        CarbonInterface  subMinutes(int $value = 1)                                                         Sub minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMinute()                                                                        Sub one minute to the instance (using date interval).
+ * @method        CarbonInterface  addSeconds(int $value = 1)                                                         Add seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addSecond()                                                                        Add one second to the instance (using date interval).
+ * @method        CarbonInterface  subSeconds(int $value = 1)                                                         Sub seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subSecond()                                                                        Sub one second to the instance (using date interval).
+ * @method        CarbonInterface  addMillis(int $value = 1)                                                          Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMilli()                                                                         Add one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  subMillis(int $value = 1)                                                          Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMilli()                                                                         Sub one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  addMilliseconds(int $value = 1)                                                    Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMillisecond()                                                                   Add one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  subMilliseconds(int $value = 1)                                                    Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMillisecond()                                                                   Sub one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  addMicros(int $value = 1)                                                          Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMicro()                                                                         Add one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  subMicros(int $value = 1)                                                          Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMicro()                                                                         Sub one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  addMicroseconds(int $value = 1)                                                    Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMicrosecond()                                                                   Add one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  subMicroseconds(int $value = 1)                                                    Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMicrosecond()                                                                   Sub one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  addMillennia(int $value = 1)                                                       Add millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMillennium()                                                                    Add one millennium to the instance (using date interval).
+ * @method        CarbonInterface  subMillennia(int $value = 1)                                                       Sub millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMillennium()                                                                    Sub one millennium to the instance (using date interval).
+ * @method        CarbonInterface  addMillenniaWithOverflow(int $value = 1)                                           Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMillenniumWithOverflow()                                                        Add one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMillenniaWithOverflow(int $value = 1)                                           Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMillenniumWithOverflow()                                                        Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMillenniaWithoutOverflow(int $value = 1)                                        Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumWithoutOverflow()                                                     Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaWithoutOverflow(int $value = 1)                                        Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumWithoutOverflow()                                                     Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniaWithNoOverflow(int $value = 1)                                         Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumWithNoOverflow()                                                      Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaWithNoOverflow(int $value = 1)                                         Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumWithNoOverflow()                                                      Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniaNoOverflow(int $value = 1)                                             Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumNoOverflow()                                                          Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaNoOverflow(int $value = 1)                                             Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumNoOverflow()                                                          Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturies(int $value = 1)                                                       Add centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addCentury()                                                                       Add one century to the instance (using date interval).
+ * @method        CarbonInterface  subCenturies(int $value = 1)                                                       Sub centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subCentury()                                                                       Sub one century to the instance (using date interval).
+ * @method        CarbonInterface  addCenturiesWithOverflow(int $value = 1)                                           Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addCenturyWithOverflow()                                                           Add one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subCenturiesWithOverflow(int $value = 1)                                           Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subCenturyWithOverflow()                                                           Sub one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addCenturiesWithoutOverflow(int $value = 1)                                        Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyWithoutOverflow()                                                        Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesWithoutOverflow(int $value = 1)                                        Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyWithoutOverflow()                                                        Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturiesWithNoOverflow(int $value = 1)                                         Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyWithNoOverflow()                                                         Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesWithNoOverflow(int $value = 1)                                         Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyWithNoOverflow()                                                         Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturiesNoOverflow(int $value = 1)                                             Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyNoOverflow()                                                             Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesNoOverflow(int $value = 1)                                             Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyNoOverflow()                                                             Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecades(int $value = 1)                                                         Add decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addDecade()                                                                        Add one decade to the instance (using date interval).
+ * @method        CarbonInterface  subDecades(int $value = 1)                                                         Sub decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subDecade()                                                                        Sub one decade to the instance (using date interval).
+ * @method        CarbonInterface  addDecadesWithOverflow(int $value = 1)                                             Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addDecadeWithOverflow()                                                            Add one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subDecadesWithOverflow(int $value = 1)                                             Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subDecadeWithOverflow()                                                            Sub one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addDecadesWithoutOverflow(int $value = 1)                                          Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeWithoutOverflow()                                                         Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesWithoutOverflow(int $value = 1)                                          Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeWithoutOverflow()                                                         Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadesWithNoOverflow(int $value = 1)                                           Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeWithNoOverflow()                                                          Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesWithNoOverflow(int $value = 1)                                           Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeWithNoOverflow()                                                          Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadesNoOverflow(int $value = 1)                                               Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeNoOverflow()                                                              Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesNoOverflow(int $value = 1)                                               Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeNoOverflow()                                                              Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarters(int $value = 1)                                                        Add quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addQuarter()                                                                       Add one quarter to the instance (using date interval).
+ * @method        CarbonInterface  subQuarters(int $value = 1)                                                        Sub quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subQuarter()                                                                       Sub one quarter to the instance (using date interval).
+ * @method        CarbonInterface  addQuartersWithOverflow(int $value = 1)                                            Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addQuarterWithOverflow()                                                           Add one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subQuartersWithOverflow(int $value = 1)                                            Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subQuarterWithOverflow()                                                           Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addQuartersWithoutOverflow(int $value = 1)                                         Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterWithoutOverflow()                                                        Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersWithoutOverflow(int $value = 1)                                         Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterWithoutOverflow()                                                        Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuartersWithNoOverflow(int $value = 1)                                          Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterWithNoOverflow()                                                         Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersWithNoOverflow(int $value = 1)                                          Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterWithNoOverflow()                                                         Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuartersNoOverflow(int $value = 1)                                              Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterNoOverflow()                                                             Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersNoOverflow(int $value = 1)                                              Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterNoOverflow()                                                             Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addWeeks(int $value = 1)                                                           Add weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addWeek()                                                                          Add one week to the instance (using date interval).
+ * @method        CarbonInterface  subWeeks(int $value = 1)                                                           Sub weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subWeek()                                                                          Sub one week to the instance (using date interval).
+ * @method        CarbonInterface  addWeekdays(int $value = 1)                                                        Add weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addWeekday()                                                                       Add one weekday to the instance (using date interval).
+ * @method        CarbonInterface  subWeekdays(int $value = 1)                                                        Sub weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subWeekday()                                                                       Sub one weekday to the instance (using date interval).
+ * @method        CarbonInterface  addRealMicros(int $value = 1)                                                      Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMicro()                                                                     Add one microsecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicros(int $value = 1)                                                      Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicro()                                                                     Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod     microsUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonInterface  addRealMicroseconds(int $value = 1)                                                Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMicrosecond()                                                               Add one microsecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicroseconds(int $value = 1)                                                Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicrosecond()                                                               Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod     microsecondsUntil($endDate = null, int $factor = 1)                                Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonInterface  addRealMillis(int $value = 1)                                                      Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMilli()                                                                     Add one millisecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillis(int $value = 1)                                                      Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMilli()                                                                     Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod     millisUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonInterface  addRealMilliseconds(int $value = 1)                                                Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMillisecond()                                                               Add one millisecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMilliseconds(int $value = 1)                                                Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillisecond()                                                               Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod     millisecondsUntil($endDate = null, int $factor = 1)                                Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonInterface  addRealSeconds(int $value = 1)                                                     Add seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealSecond()                                                                    Add one second to the instance (using timestamp).
+ * @method        CarbonInterface  subRealSeconds(int $value = 1)                                                     Sub seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealSecond()                                                                    Sub one second to the instance (using timestamp).
+ * @method        CarbonPeriod     secondsUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
+ * @method        CarbonInterface  addRealMinutes(int $value = 1)                                                     Add minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMinute()                                                                    Add one minute to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMinutes(int $value = 1)                                                     Sub minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMinute()                                                                    Sub one minute to the instance (using timestamp).
+ * @method        CarbonPeriod     minutesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
+ * @method        CarbonInterface  addRealHours(int $value = 1)                                                       Add hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealHour()                                                                      Add one hour to the instance (using timestamp).
+ * @method        CarbonInterface  subRealHours(int $value = 1)                                                       Sub hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealHour()                                                                      Sub one hour to the instance (using timestamp).
+ * @method        CarbonPeriod     hoursUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
+ * @method        CarbonInterface  addRealDays(int $value = 1)                                                        Add days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealDay()                                                                       Add one day to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDays(int $value = 1)                                                        Sub days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDay()                                                                       Sub one day to the instance (using timestamp).
+ * @method        CarbonPeriod     daysUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
+ * @method        CarbonInterface  addRealWeeks(int $value = 1)                                                       Add weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealWeek()                                                                      Add one week to the instance (using timestamp).
+ * @method        CarbonInterface  subRealWeeks(int $value = 1)                                                       Sub weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealWeek()                                                                      Sub one week to the instance (using timestamp).
+ * @method        CarbonPeriod     weeksUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
+ * @method        CarbonInterface  addRealMonths(int $value = 1)                                                      Add months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMonth()                                                                     Add one month to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMonths(int $value = 1)                                                      Sub months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMonth()                                                                     Sub one month to the instance (using timestamp).
+ * @method        CarbonPeriod     monthsUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
+ * @method        CarbonInterface  addRealQuarters(int $value = 1)                                                    Add quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealQuarter()                                                                   Add one quarter to the instance (using timestamp).
+ * @method        CarbonInterface  subRealQuarters(int $value = 1)                                                    Sub quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealQuarter()                                                                   Sub one quarter to the instance (using timestamp).
+ * @method        CarbonPeriod     quartersUntil($endDate = null, int $factor = 1)                                    Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
+ * @method        CarbonInterface  addRealYears(int $value = 1)                                                       Add years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealYear()                                                                      Add one year to the instance (using timestamp).
+ * @method        CarbonInterface  subRealYears(int $value = 1)                                                       Sub years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealYear()                                                                      Sub one year to the instance (using timestamp).
+ * @method        CarbonPeriod     yearsUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
+ * @method        CarbonInterface  addRealDecades(int $value = 1)                                                     Add decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealDecade()                                                                    Add one decade to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDecades(int $value = 1)                                                     Sub decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDecade()                                                                    Sub one decade to the instance (using timestamp).
+ * @method        CarbonPeriod     decadesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
+ * @method        CarbonInterface  addRealCenturies(int $value = 1)                                                   Add centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealCentury()                                                                   Add one century to the instance (using timestamp).
+ * @method        CarbonInterface  subRealCenturies(int $value = 1)                                                   Sub centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealCentury()                                                                   Sub one century to the instance (using timestamp).
+ * @method        CarbonPeriod     centuriesUntil($endDate = null, int $factor = 1)                                   Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
+ * @method        CarbonInterface  addRealMillennia(int $value = 1)                                                   Add millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMillennium()                                                                Add one millennium to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillennia(int $value = 1)                                                   Sub millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillennium()                                                                Sub one millennium to the instance (using timestamp).
+ * @method        CarbonPeriod     millenniaUntil($endDate = null, int $factor = 1)                                   Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
+ * @method        CarbonInterface  roundYear(float $precision = 1, string $function = "round")                        Round the current instance year with given precision using the given function.
+ * @method        CarbonInterface  roundYears(float $precision = 1, string $function = "round")                       Round the current instance year with given precision using the given function.
+ * @method        CarbonInterface  floorYear(float $precision = 1)                                                    Truncate the current instance year with given precision.
+ * @method        CarbonInterface  floorYears(float $precision = 1)                                                   Truncate the current instance year with given precision.
+ * @method        CarbonInterface  ceilYear(float $precision = 1)                                                     Ceil the current instance year with given precision.
+ * @method        CarbonInterface  ceilYears(float $precision = 1)                                                    Ceil the current instance year with given precision.
+ * @method        CarbonInterface  roundMonth(float $precision = 1, string $function = "round")                       Round the current instance month with given precision using the given function.
+ * @method        CarbonInterface  roundMonths(float $precision = 1, string $function = "round")                      Round the current instance month with given precision using the given function.
+ * @method        CarbonInterface  floorMonth(float $precision = 1)                                                   Truncate the current instance month with given precision.
+ * @method        CarbonInterface  floorMonths(float $precision = 1)                                                  Truncate the current instance month with given precision.
+ * @method        CarbonInterface  ceilMonth(float $precision = 1)                                                    Ceil the current instance month with given precision.
+ * @method        CarbonInterface  ceilMonths(float $precision = 1)                                                   Ceil the current instance month with given precision.
+ * @method        CarbonInterface  roundDay(float $precision = 1, string $function = "round")                         Round the current instance day with given precision using the given function.
+ * @method        CarbonInterface  roundDays(float $precision = 1, string $function = "round")                        Round the current instance day with given precision using the given function.
+ * @method        CarbonInterface  floorDay(float $precision = 1)                                                     Truncate the current instance day with given precision.
+ * @method        CarbonInterface  floorDays(float $precision = 1)                                                    Truncate the current instance day with given precision.
+ * @method        CarbonInterface  ceilDay(float $precision = 1)                                                      Ceil the current instance day with given precision.
+ * @method        CarbonInterface  ceilDays(float $precision = 1)                                                     Ceil the current instance day with given precision.
+ * @method        CarbonInterface  roundHour(float $precision = 1, string $function = "round")                        Round the current instance hour with given precision using the given function.
+ * @method        CarbonInterface  roundHours(float $precision = 1, string $function = "round")                       Round the current instance hour with given precision using the given function.
+ * @method        CarbonInterface  floorHour(float $precision = 1)                                                    Truncate the current instance hour with given precision.
+ * @method        CarbonInterface  floorHours(float $precision = 1)                                                   Truncate the current instance hour with given precision.
+ * @method        CarbonInterface  ceilHour(float $precision = 1)                                                     Ceil the current instance hour with given precision.
+ * @method        CarbonInterface  ceilHours(float $precision = 1)                                                    Ceil the current instance hour with given precision.
+ * @method        CarbonInterface  roundMinute(float $precision = 1, string $function = "round")                      Round the current instance minute with given precision using the given function.
+ * @method        CarbonInterface  roundMinutes(float $precision = 1, string $function = "round")                     Round the current instance minute with given precision using the given function.
+ * @method        CarbonInterface  floorMinute(float $precision = 1)                                                  Truncate the current instance minute with given precision.
+ * @method        CarbonInterface  floorMinutes(float $precision = 1)                                                 Truncate the current instance minute with given precision.
+ * @method        CarbonInterface  ceilMinute(float $precision = 1)                                                   Ceil the current instance minute with given precision.
+ * @method        CarbonInterface  ceilMinutes(float $precision = 1)                                                  Ceil the current instance minute with given precision.
+ * @method        CarbonInterface  roundSecond(float $precision = 1, string $function = "round")                      Round the current instance second with given precision using the given function.
+ * @method        CarbonInterface  roundSeconds(float $precision = 1, string $function = "round")                     Round the current instance second with given precision using the given function.
+ * @method        CarbonInterface  floorSecond(float $precision = 1)                                                  Truncate the current instance second with given precision.
+ * @method        CarbonInterface  floorSeconds(float $precision = 1)                                                 Truncate the current instance second with given precision.
+ * @method        CarbonInterface  ceilSecond(float $precision = 1)                                                   Ceil the current instance second with given precision.
+ * @method        CarbonInterface  ceilSeconds(float $precision = 1)                                                  Ceil the current instance second with given precision.
+ * @method        CarbonInterface  roundMillennium(float $precision = 1, string $function = "round")                  Round the current instance millennium with given precision using the given function.
+ * @method        CarbonInterface  roundMillennia(float $precision = 1, string $function = "round")                   Round the current instance millennium with given precision using the given function.
+ * @method        CarbonInterface  floorMillennium(float $precision = 1)                                              Truncate the current instance millennium with given precision.
+ * @method        CarbonInterface  floorMillennia(float $precision = 1)                                               Truncate the current instance millennium with given precision.
+ * @method        CarbonInterface  ceilMillennium(float $precision = 1)                                               Ceil the current instance millennium with given precision.
+ * @method        CarbonInterface  ceilMillennia(float $precision = 1)                                                Ceil the current instance millennium with given precision.
+ * @method        CarbonInterface  roundCentury(float $precision = 1, string $function = "round")                     Round the current instance century with given precision using the given function.
+ * @method        CarbonInterface  roundCenturies(float $precision = 1, string $function = "round")                   Round the current instance century with given precision using the given function.
+ * @method        CarbonInterface  floorCentury(float $precision = 1)                                                 Truncate the current instance century with given precision.
+ * @method        CarbonInterface  floorCenturies(float $precision = 1)                                               Truncate the current instance century with given precision.
+ * @method        CarbonInterface  ceilCentury(float $precision = 1)                                                  Ceil the current instance century with given precision.
+ * @method        CarbonInterface  ceilCenturies(float $precision = 1)                                                Ceil the current instance century with given precision.
+ * @method        CarbonInterface  roundDecade(float $precision = 1, string $function = "round")                      Round the current instance decade with given precision using the given function.
+ * @method        CarbonInterface  roundDecades(float $precision = 1, string $function = "round")                     Round the current instance decade with given precision using the given function.
+ * @method        CarbonInterface  floorDecade(float $precision = 1)                                                  Truncate the current instance decade with given precision.
+ * @method        CarbonInterface  floorDecades(float $precision = 1)                                                 Truncate the current instance decade with given precision.
+ * @method        CarbonInterface  ceilDecade(float $precision = 1)                                                   Ceil the current instance decade with given precision.
+ * @method        CarbonInterface  ceilDecades(float $precision = 1)                                                  Ceil the current instance decade with given precision.
+ * @method        CarbonInterface  roundQuarter(float $precision = 1, string $function = "round")                     Round the current instance quarter with given precision using the given function.
+ * @method        CarbonInterface  roundQuarters(float $precision = 1, string $function = "round")                    Round the current instance quarter with given precision using the given function.
+ * @method        CarbonInterface  floorQuarter(float $precision = 1)                                                 Truncate the current instance quarter with given precision.
+ * @method        CarbonInterface  floorQuarters(float $precision = 1)                                                Truncate the current instance quarter with given precision.
+ * @method        CarbonInterface  ceilQuarter(float $precision = 1)                                                  Ceil the current instance quarter with given precision.
+ * @method        CarbonInterface  ceilQuarters(float $precision = 1)                                                 Ceil the current instance quarter with given precision.
+ * @method        CarbonInterface  roundMillisecond(float $precision = 1, string $function = "round")                 Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonInterface  roundMilliseconds(float $precision = 1, string $function = "round")                Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonInterface  floorMillisecond(float $precision = 1)                                             Truncate the current instance millisecond with given precision.
+ * @method        CarbonInterface  floorMilliseconds(float $precision = 1)                                            Truncate the current instance millisecond with given precision.
+ * @method        CarbonInterface  ceilMillisecond(float $precision = 1)                                              Ceil the current instance millisecond with given precision.
+ * @method        CarbonInterface  ceilMilliseconds(float $precision = 1)                                             Ceil the current instance millisecond with given precision.
+ * @method        CarbonInterface  roundMicrosecond(float $precision = 1, string $function = "round")                 Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonInterface  roundMicroseconds(float $precision = 1, string $function = "round")                Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonInterface  floorMicrosecond(float $precision = 1)                                             Truncate the current instance microsecond with given precision.
+ * @method        CarbonInterface  floorMicroseconds(float $precision = 1)                                            Truncate the current instance microsecond with given precision.
+ * @method        CarbonInterface  ceilMicrosecond(float $precision = 1)                                              Ceil the current instance microsecond with given precision.
+ * @method        CarbonInterface  ceilMicroseconds(float $precision = 1)                                             Ceil the current instance microsecond with given precision.
+ * @method        string           shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)        Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)         Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)        Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)         Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)   Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)    Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)  Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ *
+ * </autodoc>
+ */
+interface CarbonInterface extends DateTimeInterface, JsonSerializable
+{
+    /**
+     * Diff wording options(expressed in octal).
+     */
+    public const NO_ZERO_DIFF = 01;
+    public const JUST_NOW = 02;
+    public const ONE_DAY_WORDS = 04;
+    public const TWO_DAY_WORDS = 010;
+    public const SEQUENTIAL_PARTS_ONLY = 020;
+    public const ROUND = 040;
+    public const FLOOR = 0100;
+    public const CEIL = 0200;
+
+    /**
+     * Diff syntax options.
+     */
+    public const DIFF_ABSOLUTE = 1; // backward compatibility with true
+    public const DIFF_RELATIVE_AUTO = 0; // backward compatibility with false
+    public const DIFF_RELATIVE_TO_NOW = 2;
+    public const DIFF_RELATIVE_TO_OTHER = 3;
+
+    /**
+     * Translate string options.
+     */
+    public const TRANSLATE_MONTHS = 1;
+    public const TRANSLATE_DAYS = 2;
+    public const TRANSLATE_UNITS = 4;
+    public const TRANSLATE_MERIDIEM = 8;
+    public const TRANSLATE_DIFF = 0x10;
+    public const TRANSLATE_ALL = self::TRANSLATE_MONTHS | self::TRANSLATE_DAYS | self::TRANSLATE_UNITS | self::TRANSLATE_MERIDIEM | self::TRANSLATE_DIFF;
+
+    /**
+     * The day constants.
+     */
+    public const SUNDAY = 0;
+    public const MONDAY = 1;
+    public const TUESDAY = 2;
+    public const WEDNESDAY = 3;
+    public const THURSDAY = 4;
+    public const FRIDAY = 5;
+    public const SATURDAY = 6;
+
+    /**
+     * The month constants.
+     * These aren't used by Carbon itself but exist for
+     * convenience sake alone.
+     */
+    public const JANUARY = 1;
+    public const FEBRUARY = 2;
+    public const MARCH = 3;
+    public const APRIL = 4;
+    public const MAY = 5;
+    public const JUNE = 6;
+    public const JULY = 7;
+    public const AUGUST = 8;
+    public const SEPTEMBER = 9;
+    public const OCTOBER = 10;
+    public const NOVEMBER = 11;
+    public const DECEMBER = 12;
+
+    /**
+     * Number of X in Y.
+     */
+    public const YEARS_PER_MILLENNIUM = 1000;
+    public const YEARS_PER_CENTURY = 100;
+    public const YEARS_PER_DECADE = 10;
+    public const MONTHS_PER_YEAR = 12;
+    public const MONTHS_PER_QUARTER = 3;
+    public const QUARTERS_PER_YEAR = 4;
+    public const WEEKS_PER_YEAR = 52;
+    public const WEEKS_PER_MONTH = 4;
+    public const DAYS_PER_YEAR = 365;
+    public const DAYS_PER_WEEK = 7;
+    public const HOURS_PER_DAY = 24;
+    public const MINUTES_PER_HOUR = 60;
+    public const SECONDS_PER_MINUTE = 60;
+    public const MILLISECONDS_PER_SECOND = 1000;
+    public const MICROSECONDS_PER_MILLISECOND = 1000;
+    public const MICROSECONDS_PER_SECOND = 1000000;
+
+    /**
+     * Special settings to get the start of week from current locale culture.
+     */
+    public const WEEK_DAY_AUTO = 'auto';
+
+    /**
+     * RFC7231 DateTime format.
+     *
+     * @var string
+     */
+    public const RFC7231_FORMAT = 'D, d M Y H:i:s \G\M\T';
+
+    /**
+     * Default format to use for __toString method when type juggling occurs.
+     *
+     * @var string
+     */
+    public const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s';
+
+    /**
+     * Format for converting mocked time, includes microseconds.
+     *
+     * @var string
+     */
+    public const MOCK_DATETIME_FORMAT = 'Y-m-d H:i:s.u';
+
+    /**
+     * Pattern detection for ->isoFormat and ::createFromIsoFormat.
+     *
+     * @var string
+     */
+    public const ISO_FORMAT_REGEXP = '(O[YMDHhms]|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY?|g{1,5}|G{1,5}|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?)';
+
+    // <methods>
+
+    /**
+     * Dynamically handle calls to the class.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable
+     *
+     * @return mixed
+     */
+    public function __call($method, $parameters);
+
+    /**
+     * Dynamically handle calls to the class.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @throws BadMethodCallException
+     *
+     * @return mixed
+     */
+    public static function __callStatic($method, $parameters);
+
+    /**
+     * Update constructedObjectId on cloned.
+     */
+    public function __clone();
+
+    /**
+     * Create a new Carbon instance.
+     *
+     * Please see the testing aids section (specifically static::setTestNow())
+     * for more on the possibility of this constructor returning a test instance.
+     *
+     * @param DateTimeInterface|string|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     */
+    public function __construct($time = null, $tz = null);
+
+    /**
+     * Show truthy properties on var_dump().
+     *
+     * @return array
+     */
+    public function __debugInfo();
+
+    /**
+     * Get a part of the Carbon object
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return string|int|bool|DateTimeZone|null
+     */
+    public function __get($name);
+
+    /**
+     * Check if an attribute exists on the object
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function __isset($name);
+
+    /**
+     * Set a part of the Carbon object
+     *
+     * @param string                  $name
+     * @param string|int|DateTimeZone $value
+     *
+     * @throws UnknownSetterException|ReflectionException
+     *
+     * @return void
+     */
+    public function __set($name, $value);
+
+    /**
+     * The __set_state handler.
+     *
+     * @param string|array $dump
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public static function __set_state($dump);
+
+    /**
+     * Returns the list of properties to dump on serialize() called on.
+     *
+     * @return array
+     */
+    public function __sleep();
+
+    /**
+     * Format the instance as a string using the set format
+     *
+     * @example
+     * ```
+     * echo Carbon::now(); // Carbon instances can be casted to string
+     * ```
+     *
+     * @return string
+     */
+    public function __toString();
+
+    /**
+     * Add given units or interval to the current instance.
+     *
+     * @example $date->add('hour', 3)
+     * @example $date->add(15, 'days')
+     * @example $date->add(CarbonInterval::days(4))
+     *
+     * @param string|DateInterval|Closure|CarbonConverterInterface $unit
+     * @param int                                                  $value
+     * @param bool|null                                            $overflow
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function add($unit, $value = 1, $overflow = null);
+
+    /**
+     * Add seconds to the instance using timestamp. Positive $value travels
+     * forward while negative $value travels into the past.
+     *
+     * @param string $unit
+     * @param int    $value
+     *
+     * @return static
+     */
+    public function addRealUnit($unit, $value = 1);
+
+    /**
+     * Add given units to the current instance.
+     *
+     * @param string    $unit
+     * @param int       $value
+     * @param bool|null $overflow
+     *
+     * @return static
+     */
+    public function addUnit($unit, $value = 1, $overflow = null);
+
+    /**
+     * Add any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        amount to add to the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function addUnitNoOverflow($valueUnit, $value, $overflowUnit);
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given to now
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single part)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function ago($syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Modify the current instance to the average of a given instance (default now) and the current instance
+     * (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date
+     *
+     * @return static
+     */
+    public function average($date = null);
+
+    /**
+     * Clone the current instance if it's mutable.
+     *
+     * This method is convenient to ensure you don't mutate the initial object
+     * but avoid to make a useless copy of it if it's already immutable.
+     *
+     * @return static
+     */
+    public function avoidMutation();
+
+    /**
+     * Determines if the instance is between two others.
+     *
+     * The third argument allow you to specify if bounds are included or not (true by default)
+     * but for when you including/excluding bounds may produce different results in your application,
+     * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     * @param bool                                    $equal Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function between($date1, $date2, $equal = true): bool;
+
+    /**
+     * Determines if the instance is between two others, bounds excluded.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return bool
+     */
+    public function betweenExcluded($date1, $date2): bool;
+
+    /**
+     * Determines if the instance is between two others, bounds included.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return bool
+     */
+    public function betweenIncluded($date1, $date2): bool;
+
+    /**
+     * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days,
+     * or a calendar date (e.g. "10/29/2017") otherwise.
+     *
+     * Language, date and time formats will change according to the current locale.
+     *
+     * @param Carbon|\DateTimeInterface|string|null $referenceTime
+     * @param array                                 $formats
+     *
+     * @return string
+     */
+    public function calendar($referenceTime = null, array $formats = []);
+
+    /**
+     * Checks if the (date)time string is in a given format and valid to create a
+     * new instance.
+     *
+     * @example
+     * ```
+     * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true
+     * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function canBeCreatedFromFormat($date, $format);
+
+    /**
+     * Return the Carbon instance passed through, a now instance in the same timezone
+     * if null given or parse the input if string given.
+     *
+     * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date
+     *
+     * @return static
+     */
+    public function carbonize($date = null);
+
+    /**
+     * Cast the current instance into the given class.
+     *
+     * @param string $className The $className::instance() method will be called to cast the current object.
+     *
+     * @return DateTimeInterface
+     */
+    public function cast(string $className);
+
+    /**
+     * Ceil the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return CarbonInterface
+     */
+    public function ceil($precision = 1);
+
+    /**
+     * Ceil the current instance at the given unit with given precision if specified.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     *
+     * @return CarbonInterface
+     */
+    public function ceilUnit($unit, $precision = 1);
+
+    /**
+     * Ceil the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function ceilWeek($weekStartsAt = null);
+
+    /**
+     * Similar to native modify() method of DateTime but can handle more grammars.
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->change('next 2pm');
+     * ```
+     *
+     * @link https://php.net/manual/en/datetime.modify.php
+     *
+     * @param string $modifier
+     *
+     * @return static
+     */
+    public function change($modifier);
+
+    /**
+     * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested.
+     * foreach ($date as $_) {}
+     * serializer($date)
+     * var_export($date)
+     * get_object_vars($date)
+     */
+    public function cleanupDumpProperties();
+
+    /**
+     * @alias copy
+     *
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function clone();
+
+    /**
+     * Get the closest date from the instance (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return static
+     */
+    public function closest($date1, $date2);
+
+    /**
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function copy();
+
+    /**
+     * Create a new Carbon instance from a specific date and time.
+     *
+     * If any of $year, $month or $day are set to null their now() values will
+     * be used.
+     *
+     * If $hour is null it will be set to its now() value and the default
+     * values for $minute and $second will be their now() values.
+     *
+     * If $hour is not null then the default values for $minute and $second
+     * will be 0.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null);
+
+    /**
+     * Create a Carbon instance from just a date. The time portion is set to now.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromDate($year = null, $month = null, $day = null, $tz = null);
+
+    /**
+     * Create a Carbon instance from a specific format.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    #[ReturnTypeWillChange]
+    public static function createFromFormat($format, $time, $tz = null);
+
+    /**
+     * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
+     *
+     * @param string                                             $format     Datetime format
+     * @param string                                             $time
+     * @param DateTimeZone|string|false|null                     $tz         optional timezone
+     * @param string|null                                        $locale     locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use)
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null);
+
+    /**
+     * Create a Carbon instance from a specific format and a string in a given language.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $locale
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromLocaleFormat($format, $locale, $time, $tz = null);
+
+    /**
+     * Create a Carbon instance from a specific ISO format and a string in a given language.
+     *
+     * @param string                         $format Datetime ISO format
+     * @param string                         $locale
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null);
+
+    /**
+     * Create a Carbon instance from just a time. The date portion is set to today.
+     *
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null);
+
+    /**
+     * Create a Carbon instance from a time string. The date portion is set to today.
+     *
+     * @param string                   $time
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromTimeString($time, $tz = null);
+
+    /**
+     * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string          $timestamp
+     * @param \DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function createFromTimestamp($timestamp, $tz = null);
+
+    /**
+     * Create a Carbon instance from a timestamp in milliseconds.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string          $timestamp
+     * @param \DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function createFromTimestampMs($timestamp, $tz = null);
+
+    /**
+     * Create a Carbon instance from a timestamp in milliseconds.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $timestamp
+     *
+     * @return static
+     */
+    public static function createFromTimestampMsUTC($timestamp);
+
+    /**
+     * Create a Carbon instance from an timestamp keeping the timezone to UTC.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $timestamp
+     *
+     * @return static
+     */
+    public static function createFromTimestampUTC($timestamp);
+
+    /**
+     * Create a Carbon instance from just a date. The time portion is set to midnight.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null);
+
+    /**
+     * Create a new safe Carbon instance from a specific date and time.
+     *
+     * If any of $year, $month or $day are set to null their now() values will
+     * be used.
+     *
+     * If $hour is null it will be set to its now() value and the default
+     * values for $minute and $second will be their now() values.
+     *
+     * If $hour is not null then the default values for $minute and $second
+     * will be 0.
+     *
+     * If one of the set values is not valid, an InvalidDateException
+     * will be thrown.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidDateException
+     *
+     * @return static|false
+     */
+    public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null);
+
+    /**
+     * Create a new Carbon instance from a specific date and time using strict validation.
+     *
+     * @see create()
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null);
+
+    /**
+     * Get/set the day of year.
+     *
+     * @param int|null $value new value for day of year if using as setter.
+     *
+     * @return static|int
+     */
+    public function dayOfYear($value = null);
+
+    /**
+     * Get the difference as a CarbonInterval instance.
+     * Return relative interval (negative if $absolute flag is not set to true and the given date is before
+     * current one).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return CarbonInterval
+     */
+    public function diffAsCarbonInterval($date = null, $absolute = true);
+
+    /**
+     * Get the difference by the given interval using a filter closure.
+     *
+     * @param CarbonInterval                                         $ci       An interval to traverse by
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true);
+
+    /**
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @example
+     * ```
+     * echo Carbon::tomorrow()->diffForHumans() . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n";
+     * ```
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'skip' entry, list of units to skip (array of strings or a single string,
+     *                                                             ` it can be the unit name (singular or plural) or its shortcut
+     *                                                             ` (y, m, w, d, h, min, s, ms, µs).
+     *                                                             - 'aUnit' entry, prefer "an hour" over "1 hour" if true
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             - 'minimumUnit' entry determines the smallest unit of time to display can be long or
+     *                                                             `  short form of the units, e.g. 'hour' or 'h' (default value: s)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Get the difference in days rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInDays($date = null, $absolute = true);
+
+    /**
+     * Get the difference in days using a filter closure rounded down.
+     *
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true);
+
+    /**
+     * Get the difference in hours rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInHours($date = null, $absolute = true);
+
+    /**
+     * Get the difference in hours using a filter closure rounded down.
+     *
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true);
+
+    /**
+     * Get the difference in microseconds.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMicroseconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in milliseconds rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMilliseconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in minutes rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMinutes($date = null, $absolute = true);
+
+    /**
+     * Get the difference in months rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMonths($date = null, $absolute = true);
+
+    /**
+     * Get the difference in quarters rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInQuarters($date = null, $absolute = true);
+
+    /**
+     * Get the difference in hours rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealHours($date = null, $absolute = true);
+
+    /**
+     * Get the difference in microseconds using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMicroseconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in milliseconds rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMilliseconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in minutes rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMinutes($date = null, $absolute = true);
+
+    /**
+     * Get the difference in seconds using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealSeconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in seconds rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInSeconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in weekdays rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeekdays($date = null, $absolute = true);
+
+    /**
+     * Get the difference in weekend days using a filter rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeekendDays($date = null, $absolute = true);
+
+    /**
+     * Get the difference in weeks rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeeks($date = null, $absolute = true);
+
+    /**
+     * Get the difference in years
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInYears($date = null, $absolute = true);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOption
+     */
+    public static function disableHumanDiffOption($humanDiffOption);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOption
+     */
+    public static function enableHumanDiffOption($humanDiffOption);
+
+    /**
+     * Modify to end of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function endOf($unit, ...$params);
+
+    /**
+     * Resets the date to end of the century and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfCentury();
+
+    /**
+     * Resets the time to 23:59:59.999999 end of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDay();
+
+    /**
+     * Resets the date to end of the decade and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDecade();
+
+    /**
+     * Modify to end of current hour, minutes and seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfHour();
+
+    /**
+     * Resets the date to end of the millennium and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMillennium();
+
+    /**
+     * Modify to end of current minute, seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMinute();
+
+    /**
+     * Resets the date to end of the month and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMonth();
+
+    /**
+     * Resets the date to end of the quarter and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfQuarter();
+
+    /**
+     * Modify to end of current second, microseconds become 999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->endOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function endOfSecond();
+
+    /**
+     * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n";
+     * ```
+     *
+     * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week
+     *
+     * @return static
+     */
+    public function endOfWeek($weekEndsAt = null);
+
+    /**
+     * Resets the date to end of the year and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfYear();
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true
+     * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see equalTo()
+     *
+     * @return bool
+     */
+    public function eq($date): bool;
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function equalTo($date): bool;
+
+    /**
+     * Set the current locale to the given, execute the passed function, reset the locale to previous one,
+     * then return the result of the closure (or null if the closure was void).
+     *
+     * @param string   $locale locale ex. en
+     * @param callable $func
+     *
+     * @return mixed
+     */
+    public static function executeWithLocale($locale, $func);
+
+    /**
+     * Get the farthest date from the instance (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return static
+     */
+    public function farthest($date1, $date2);
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current month. If no dayOfWeek is provided, modify to the
+     * first day of the current month.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek
+     *
+     * @return static
+     */
+    public function firstOfMonth($dayOfWeek = null);
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current quarter. If no dayOfWeek is provided, modify to the
+     * first day of the current quarter.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function firstOfQuarter($dayOfWeek = null);
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current year. If no dayOfWeek is provided, modify to the
+     * first day of the current year.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function firstOfYear($dayOfWeek = null);
+
+    /**
+     * Get the difference in days as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInDays($date = null, $absolute = true);
+
+    /**
+     * Get the difference in hours as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInHours($date = null, $absolute = true);
+
+    /**
+     * Get the difference in minutes as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInMinutes($date = null, $absolute = true);
+
+    /**
+     * Get the difference in months as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInMonths($date = null, $absolute = true);
+
+    /**
+     * Get the difference in days as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealDays($date = null, $absolute = true);
+
+    /**
+     * Get the difference in hours as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealHours($date = null, $absolute = true);
+
+    /**
+     * Get the difference in minutes as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealMinutes($date = null, $absolute = true);
+
+    /**
+     * Get the difference in months as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealMonths($date = null, $absolute = true);
+
+    /**
+     * Get the difference in seconds as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealSeconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in weeks as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealWeeks($date = null, $absolute = true);
+
+    /**
+     * Get the difference in year as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealYears($date = null, $absolute = true);
+
+    /**
+     * Get the difference in seconds as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInSeconds($date = null, $absolute = true);
+
+    /**
+     * Get the difference in weeks as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInWeeks($date = null, $absolute = true);
+
+    /**
+     * Get the difference in year as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInYears($date = null, $absolute = true);
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return CarbonInterface
+     */
+    public function floor($precision = 1);
+
+    /**
+     * Truncate the current instance at the given unit with given precision if specified.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     *
+     * @return CarbonInterface
+     */
+    public function floorUnit($unit, $precision = 1);
+
+    /**
+     * Truncate the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function floorWeek($weekStartsAt = null);
+
+    /**
+     * Format the instance with the current locale.  You can set the current
+     * locale using setlocale() https://php.net/setlocale.
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat() instead.
+     *             Deprecated since 2.55.0
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function formatLocalized($format);
+
+    /**
+     * @alias diffForHumans
+     *
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Get the difference in a human readable format in the current locale from current
+     * instance to now.
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function fromNow($syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Create an instance from a serialized string.
+     *
+     * @param string $value
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function fromSerialized($value);
+
+    /**
+     * Register a custom macro.
+     *
+     * @param object|callable $macro
+     * @param int             $priority marco with higher priority is tried first
+     *
+     * @return void
+     */
+    public static function genericMacro($macro, $priority = 0);
+
+    /**
+     * Get a part of the Carbon object
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return string|int|bool|DateTimeZone|null
+     */
+    public function get($name);
+
+    /**
+     * Returns the alternative number for a given date property if available in the current locale.
+     *
+     * @param string $key date property
+     *
+     * @return string
+     */
+    public function getAltNumber(string $key): string;
+
+    /**
+     * Returns the list of internally available locales and already loaded custom locales.
+     * (It will ignore custom translator dynamic loading.)
+     *
+     * @return array
+     */
+    public static function getAvailableLocales();
+
+    /**
+     * Returns list of Language object for each available locale. This object allow you to get the ISO name, native
+     * name, region and variant of the locale.
+     *
+     * @return Language[]
+     */
+    public static function getAvailableLocalesInfo();
+
+    /**
+     * Returns list of calendar formats for ISO formatting.
+     *
+     * @param string|null $locale current locale used if null
+     *
+     * @return array
+     */
+    public function getCalendarFormats($locale = null);
+
+    /**
+     * Get the days of the week
+     *
+     * @return array
+     */
+    public static function getDays();
+
+    /**
+     * Get the fallback locale.
+     *
+     * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
+     *
+     * @return string|null
+     */
+    public static function getFallbackLocale();
+
+    /**
+     * List of replacements from date() format to isoFormat().
+     *
+     * @return array
+     */
+    public static function getFormatsToIsoReplacements();
+
+    /**
+     * Return default humanDiff() options (merged flags as integer).
+     *
+     * @return int
+     */
+    public static function getHumanDiffOptions();
+
+    /**
+     * Returns list of locale formats for ISO formatting.
+     *
+     * @param string|null $locale current locale used if null
+     *
+     * @return array
+     */
+    public function getIsoFormats($locale = null);
+
+    /**
+     * Returns list of locale units for ISO formatting.
+     *
+     * @return array
+     */
+    public static function getIsoUnits();
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return array
+     */
+    #[ReturnTypeWillChange]
+    public static function getLastErrors();
+
+    /**
+     * Get the raw callable macro registered globally or locally for a given name.
+     *
+     * @param string $name
+     *
+     * @return callable|null
+     */
+    public function getLocalMacro($name);
+
+    /**
+     * Get the translator of the current instance or the default if none set.
+     *
+     * @return \Symfony\Component\Translation\TranslatorInterface
+     */
+    public function getLocalTranslator();
+
+    /**
+     * Get the current translator locale.
+     *
+     * @return string
+     */
+    public static function getLocale();
+
+    /**
+     * Get the raw callable macro registered globally for a given name.
+     *
+     * @param string $name
+     *
+     * @return callable|null
+     */
+    public static function getMacro($name);
+
+    /**
+     * get midday/noon hour
+     *
+     * @return int
+     */
+    public static function getMidDayAt();
+
+    /**
+     * Returns the offset hour and minute formatted with +/- and a given separator (":" by default).
+     * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first
+     * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something
+     * like "-12:00".
+     *
+     * @param string $separator string to place between hours and minutes (":" by default)
+     *
+     * @return string
+     */
+    public function getOffsetString($separator = ':');
+
+    /**
+     * Returns a unit of the instance padded with 0 by default or any other string if specified.
+     *
+     * @param string $unit      Carbon unit name
+     * @param int    $length    Length of the output (2 by default)
+     * @param string $padString String to use for padding ("0" by default)
+     * @param int    $padType   Side(s) to pad (STR_PAD_LEFT by default)
+     *
+     * @return string
+     */
+    public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = 0);
+
+    /**
+     * Returns a timestamp rounded with the given precision (6 by default).
+     *
+     * @example getPreciseTimestamp()   1532087464437474 (microsecond maximum precision)
+     * @example getPreciseTimestamp(6)  1532087464437474
+     * @example getPreciseTimestamp(5)  153208746443747  (1/100000 second precision)
+     * @example getPreciseTimestamp(4)  15320874644375   (1/10000 second precision)
+     * @example getPreciseTimestamp(3)  1532087464437    (millisecond precision)
+     * @example getPreciseTimestamp(2)  153208746444     (1/100 second precision)
+     * @example getPreciseTimestamp(1)  15320874644      (1/10 second precision)
+     * @example getPreciseTimestamp(0)  1532087464       (second precision)
+     * @example getPreciseTimestamp(-1) 153208746        (10 second precision)
+     * @example getPreciseTimestamp(-2) 15320875         (100 second precision)
+     *
+     * @param int $precision
+     *
+     * @return float
+     */
+    public function getPreciseTimestamp($precision = 6);
+
+    /**
+     * Returns current local settings.
+     *
+     * @return array
+     */
+    public function getSettings();
+
+    /**
+     * Get the Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.
+     *
+     * @return Closure|static the current instance used for testing
+     */
+    public static function getTestNow();
+
+    /**
+     * Return a format from H:i to H:i:s.u according to given unit precision.
+     *
+     * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond"
+     *
+     * @return string
+     */
+    public static function getTimeFormatByPrecision($unitPrecision);
+
+    /**
+     * Returns the timestamp with millisecond precision.
+     *
+     * @return int
+     */
+    public function getTimestampMs();
+
+    /**
+     * Get the translation of the current week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context      whole format string
+     * @param string      $keySuffix    "", "_short" or "_min"
+     * @param string|null $defaultValue default value if translation missing
+     *
+     * @return string
+     */
+    public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null);
+
+    /**
+     * Get the translation of the current abbreviated week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedMinDayName($context = null);
+
+    /**
+     * Get the translation of the current month day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context      whole format string
+     * @param string      $keySuffix    "" or "_short"
+     * @param string|null $defaultValue default value if translation missing
+     *
+     * @return string
+     */
+    public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null);
+
+    /**
+     * Get the translation of the current short week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedShortDayName($context = null);
+
+    /**
+     * Get the translation of the current short month day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedShortMonthName($context = null);
+
+    /**
+     * Returns raw translation message for a given key.
+     *
+     * @param string                                             $key        key to find
+     * @param string|null                                        $locale     current locale used if null
+     * @param string|null                                        $default    default value if translation returns the key
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use
+     *
+     * @return string
+     */
+    public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null);
+
+    /**
+     * Returns raw translation message for a given key.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use
+     * @param string                                             $key        key to find
+     * @param string|null                                        $locale     current locale used if null
+     * @param string|null                                        $default    default value if translation returns the key
+     *
+     * @return string
+     */
+    public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null);
+
+    /**
+     * Get the default translator instance in use.
+     *
+     * @return \Symfony\Component\Translation\TranslatorInterface
+     */
+    public static function getTranslator();
+
+    /**
+     * Get the last day of week
+     *
+     * @return int
+     */
+    public static function getWeekEndsAt();
+
+    /**
+     * Get the first day of week
+     *
+     * @return int
+     */
+    public static function getWeekStartsAt();
+
+    /**
+     * Get weekend days
+     *
+     * @return array
+     */
+    public static function getWeekendDays();
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function greaterThan($date): bool;
+
+    /**
+     * Determines if the instance is greater (after) than or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function greaterThanOrEqualTo($date): bool;
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThan()
+     *
+     * @return bool
+     */
+    public function gt($date): bool;
+
+    /**
+     * Determines if the instance is greater (after) than or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function gte($date): bool;
+
+    /**
+     * Checks if the (date)time string is in a given format.
+     *
+     * @example
+     * ```
+     * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
+     * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function hasFormat($date, $format);
+
+    /**
+     * Checks if the (date)time string is in a given format.
+     *
+     * @example
+     * ```
+     * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true
+     * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function hasFormatWithModifiers($date, $format): bool;
+
+    /**
+     * Checks if macro is registered globally or locally.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function hasLocalMacro($name);
+
+    /**
+     * Return true if the current instance has its own translator.
+     *
+     * @return bool
+     */
+    public function hasLocalTranslator();
+
+    /**
+     * Checks if macro is registered globally.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public static function hasMacro($name);
+
+    /**
+     * Determine if a time string will produce a relative date.
+     *
+     * @param string $time
+     *
+     * @return bool true if time match a relative date, false if absolute or invalid time string
+     */
+    public static function hasRelativeKeywords($time);
+
+    /**
+     * Determine if there is a valid test instance set. A valid test instance
+     * is anything that is not null.
+     *
+     * @return bool true if there is a test instance, otherwise false
+     */
+    public static function hasTestNow();
+
+    /**
+     * Create a Carbon instance from a DateTime one.
+     *
+     * @param DateTimeInterface $date
+     *
+     * @return static
+     */
+    public static function instance($date);
+
+    /**
+     * Returns true if the current date matches the given string.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true
+     * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true
+     * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false
+     * ```
+     *
+     * @param string $tester day name, month name, hour, date, etc. as string
+     *
+     * @return bool
+     */
+    public function is(string $tester);
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThan()
+     *
+     * @return bool
+     */
+    public function isAfter($date): bool;
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThan()
+     *
+     * @return bool
+     */
+    public function isBefore($date): bool;
+
+    /**
+     * Determines if the instance is between two others
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     * @param bool                                    $equal Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function isBetween($date1, $date2, $equal = true): bool;
+
+    /**
+     * Check if its the birthday. Compares the date/month values of the two dates.
+     *
+     * @example
+     * ```
+     * Carbon::now()->subYears(5)->isBirthday(); // true
+     * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false
+     * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true
+     * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
+     *
+     * @return bool
+     */
+    public function isBirthday($date = null);
+
+    /**
+     * Determines if the instance is in the current unit given.
+     *
+     * @example
+     * ```
+     * Carbon::now()->isCurrentUnit('hour'); // true
+     * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false
+     * ```
+     *
+     * @param string $unit The unit to test.
+     *
+     * @throws BadMethodCallException
+     *
+     * @return bool
+     */
+    public function isCurrentUnit($unit);
+
+    /**
+     * Checks if this day is a specific day of the week.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true
+     * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false
+     * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true
+     * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false
+     * ```
+     *
+     * @param int $dayOfWeek
+     *
+     * @return bool
+     */
+    public function isDayOfWeek($dayOfWeek);
+
+    /**
+     * Check if the instance is end of day.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false
+     * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true
+     * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false
+     * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false
+     * ```
+     *
+     * @param bool $checkMicroseconds check time at microseconds precision
+     *
+     * @return bool
+     */
+    public function isEndOfDay($checkMicroseconds = false);
+
+    /**
+     * Returns true if the date was created using CarbonImmutable::endOfTime()
+     *
+     * @return bool
+     */
+    public function isEndOfTime(): bool;
+
+    /**
+     * Determines if the instance is in the future, ie. greater (after) than now.
+     *
+     * @example
+     * ```
+     * Carbon::now()->addHours(5)->isFuture(); // true
+     * Carbon::now()->subHours(5)->isFuture(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isFuture();
+
+    /**
+     * Returns true if the current class/instance is immutable.
+     *
+     * @return bool
+     */
+    public static function isImmutable();
+
+    /**
+     * Check if today is the last day of the Month
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28')->isLastOfMonth(); // true
+     * Carbon::parse('2019-03-28')->isLastOfMonth(); // false
+     * Carbon::parse('2019-03-30')->isLastOfMonth(); // false
+     * Carbon::parse('2019-03-31')->isLastOfMonth(); // true
+     * Carbon::parse('2019-04-30')->isLastOfMonth(); // true
+     * ```
+     *
+     * @return bool
+     */
+    public function isLastOfMonth();
+
+    /**
+     * Determines if the instance is a leap year.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2020-01-01')->isLeapYear(); // true
+     * Carbon::parse('2019-01-01')->isLeapYear(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isLeapYear();
+
+    /**
+     * Determines if the instance is a long year
+     *
+     * @example
+     * ```
+     * Carbon::parse('2015-01-01')->isLongYear(); // true
+     * Carbon::parse('2016-01-01')->isLongYear(); // false
+     * ```
+     *
+     * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates
+     *
+     * @return bool
+     */
+    public function isLongYear();
+
+    /**
+     * Check if the instance is midday.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false
+     * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true
+     * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true
+     * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isMidday();
+
+    /**
+     * Check if the instance is start of day / midnight.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true
+     * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true
+     * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isMidnight();
+
+    /**
+     * Returns true if a property can be changed via setter.
+     *
+     * @param string $unit
+     *
+     * @return bool
+     */
+    public static function isModifiableUnit($unit);
+
+    /**
+     * Returns true if the current class/instance is mutable.
+     *
+     * @return bool
+     */
+    public static function isMutable();
+
+    /**
+     * Determines if the instance is in the past, ie. less (before) than now.
+     *
+     * @example
+     * ```
+     * Carbon::now()->subHours(5)->isPast(); // true
+     * Carbon::now()->addHours(5)->isPast(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isPast();
+
+    /**
+     * Compares the formatted values of the two dates.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true
+     * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false
+     * ```
+     *
+     * @param string                                        $format date formats to compare.
+     * @param \Carbon\Carbon|\DateTimeInterface|string|null $date   instance to compare with or null to use current day.
+     *
+     * @return bool
+     */
+    public function isSameAs($format, $date = null);
+
+    /**
+     * Checks if the passed in date is in the same month as the instance´s month.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date       The instance to compare with or null to use the current date.
+     * @param bool                                   $ofSameYear Check if it is the same month in the same year.
+     *
+     * @return bool
+     */
+    public function isSameMonth($date = null, $ofSameYear = true);
+
+    /**
+     * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed).
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|string|null $date       The instance to compare with or null to use current day.
+     * @param bool                                          $ofSameYear Check if it is the same month in the same year.
+     *
+     * @return bool
+     */
+    public function isSameQuarter($date = null, $ofSameYear = true);
+
+    /**
+     * Determines if the instance is in the current unit given.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true
+     * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false
+     * ```
+     *
+     * @param string                                 $unit singular unit string
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day.
+     *
+     * @throws BadComparisonUnitException
+     *
+     * @return bool
+     */
+    public function isSameUnit($unit, $date = null);
+
+    /**
+     * Check if the instance is start of day / midnight.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true
+     * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true
+     * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false
+     * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true
+     * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false
+     * ```
+     *
+     * @param bool $checkMicroseconds check time at microseconds precision
+     *
+     * @return bool
+     */
+    public function isStartOfDay($checkMicroseconds = false);
+
+    /**
+     * Returns true if the date was created using CarbonImmutable::startOfTime()
+     *
+     * @return bool
+     */
+    public function isStartOfTime(): bool;
+
+    /**
+     * Returns true if the strict mode is globally in use, false else.
+     * (It can be overridden in specific instances.)
+     *
+     * @return bool
+     */
+    public static function isStrictModeEnabled();
+
+    /**
+     * Determines if the instance is today.
+     *
+     * @example
+     * ```
+     * Carbon::today()->isToday(); // true
+     * Carbon::tomorrow()->isToday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isToday();
+
+    /**
+     * Determines if the instance is tomorrow.
+     *
+     * @example
+     * ```
+     * Carbon::tomorrow()->isTomorrow(); // true
+     * Carbon::yesterday()->isTomorrow(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isTomorrow();
+
+    /**
+     * Determines if the instance is a weekday.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-14')->isWeekday(); // false
+     * Carbon::parse('2019-07-15')->isWeekday(); // true
+     * ```
+     *
+     * @return bool
+     */
+    public function isWeekday();
+
+    /**
+     * Determines if the instance is a weekend day.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-14')->isWeekend(); // true
+     * Carbon::parse('2019-07-15')->isWeekend(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isWeekend();
+
+    /**
+     * Determines if the instance is yesterday.
+     *
+     * @example
+     * ```
+     * Carbon::yesterday()->isYesterday(); // true
+     * Carbon::tomorrow()->isYesterday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isYesterday();
+
+    /**
+     * Format in the current language using ISO replacement patterns.
+     *
+     * @param string      $format
+     * @param string|null $originalFormat provide context if a chunk has been passed alone
+     *
+     * @return string
+     */
+    public function isoFormat(string $format, ?string $originalFormat = null): string;
+
+    /**
+     * Get/set the week number using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $week
+     * @param int|null $dayOfWeek
+     * @param int|null $dayOfYear
+     *
+     * @return int|static
+     */
+    public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Set/get the week number of year using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $year      if null, act as a getter, if not null, set the year and return current instance.
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int|static
+     */
+    public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday).
+     *
+     * @param int|null $value new value for weekday if using as setter.
+     *
+     * @return static|int
+     */
+    public function isoWeekday($value = null);
+
+    /**
+     * Get the number of weeks of the current week-year using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int
+     */
+    public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Prepare the object for JSON serialization.
+     *
+     * @return array|string
+     */
+    #[ReturnTypeWillChange]
+    public function jsonSerialize();
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current month. If no dayOfWeek is provided, modify to the
+     * last day of the current month.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek
+     *
+     * @return static
+     */
+    public function lastOfMonth($dayOfWeek = null);
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current quarter. If no dayOfWeek is provided, modify to the
+     * last day of the current quarter.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function lastOfQuarter($dayOfWeek = null);
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current year. If no dayOfWeek is provided, modify to the
+     * last day of the current year.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function lastOfYear($dayOfWeek = null);
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function lessThan($date): bool;
+
+    /**
+     * Determines if the instance is less (before) or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function lessThanOrEqualTo($date): bool;
+
+    /**
+     * Get/set the locale for the current instance.
+     *
+     * @param string|null $locale
+     * @param string      ...$fallbackLocales
+     *
+     * @return $this|string
+     */
+    public function locale(?string $locale = null, ...$fallbackLocales);
+
+    /**
+     * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
+     * Support is considered enabled if the 3 words are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffOneDayWords($locale);
+
+    /**
+     * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
+     * Support is considered enabled if the 4 sentences are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffSyntax($locale);
+
+    /**
+     * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
+     * Support is considered enabled if the 2 words are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffTwoDayWords($locale);
+
+    /**
+     * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
+     * Support is considered enabled if the 4 sentences are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasPeriodSyntax($locale);
+
+    /**
+     * Returns true if the given locale is internally supported and has short-units support.
+     * Support is considered enabled if either year, day or hour has a short variant translated.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasShortUnits($locale);
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThan()
+     *
+     * @return bool
+     */
+    public function lt($date): bool;
+
+    /**
+     * Determines if the instance is less (before) or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function lte($date): bool;
+
+    /**
+     * Register a custom macro.
+     *
+     * @example
+     * ```
+     * $userSettings = [
+     *   'locale' => 'pt',
+     *   'timezone' => 'America/Sao_Paulo',
+     * ];
+     * Carbon::macro('userFormat', function () use ($userSettings) {
+     *   return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar();
+     * });
+     * echo Carbon::yesterday()->hours(11)->userFormat();
+     * ```
+     *
+     * @param string          $name
+     * @param object|callable $macro
+     *
+     * @return void
+     */
+    public static function macro($name, $macro);
+
+    /**
+     * Make a Carbon instance from given variable if possible.
+     *
+     * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
+     * and recurrences). Throw an exception for invalid format, but otherwise return null.
+     *
+     * @param mixed $var
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|null
+     */
+    public static function make($var);
+
+    /**
+     * Get the maximum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return static
+     */
+    public function max($date = null);
+
+    /**
+     * Create a Carbon instance for the greatest supported date.
+     *
+     * @return static
+     */
+    public static function maxValue();
+
+    /**
+     * Get the maximum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see max()
+     *
+     * @return static
+     */
+    public function maximum($date = null);
+
+    /**
+     * Return the meridiem of the current time in the current locale.
+     *
+     * @param bool $isLower if true, returns lowercase variant if available in the current locale.
+     *
+     * @return string
+     */
+    public function meridiem(bool $isLower = false): string;
+
+    /**
+     * Modify to midday, default to self::$midDayAt
+     *
+     * @return static
+     */
+    public function midDay();
+
+    /**
+     * Get the minimum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return static
+     */
+    public function min($date = null);
+
+    /**
+     * Create a Carbon instance for the lowest supported date.
+     *
+     * @return static
+     */
+    public static function minValue();
+
+    /**
+     * Get the minimum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see min()
+     *
+     * @return static
+     */
+    public function minimum($date = null);
+
+    /**
+     * Mix another object into the class.
+     *
+     * @example
+     * ```
+     * Carbon::mixin(new class {
+     *   public function addMoon() {
+     *     return function () {
+     *       return $this->addDays(30);
+     *     };
+     *   }
+     *   public function subMoon() {
+     *     return function () {
+     *       return $this->subDays(30);
+     *     };
+     *   }
+     * });
+     * $fullMoon = Carbon::create('2018-12-22');
+     * $nextFullMoon = $fullMoon->addMoon();
+     * $blackMoon = Carbon::create('2019-01-06');
+     * $previousBlackMoon = $blackMoon->subMoon();
+     * echo "$nextFullMoon\n";
+     * echo "$previousBlackMoon\n";
+     * ```
+     *
+     * @param object|string $mixin
+     *
+     * @throws ReflectionException
+     *
+     * @return void
+     */
+    public static function mixin($mixin);
+
+    /**
+     * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else.
+     *
+     * @see https://php.net/manual/en/datetime.modify.php
+     *
+     * @return static|false
+     */
+    #[ReturnTypeWillChange]
+    public function modify($modify);
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false
+     * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see notEqualTo()
+     *
+     * @return bool
+     */
+    public function ne($date): bool;
+
+    /**
+     * Modify to the next occurrence of a given modifier such as a day of
+     * the week. If no modifier is provided, modify to the next occurrence
+     * of the current day of the week. Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param string|int|null $modifier
+     *
+     * @return static
+     */
+    public function next($modifier = null);
+
+    /**
+     * Go forward to the next weekday.
+     *
+     * @return static
+     */
+    public function nextWeekday();
+
+    /**
+     * Go forward to the next weekend day.
+     *
+     * @return static
+     */
+    public function nextWeekendDay();
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function notEqualTo($date): bool;
+
+    /**
+     * Get a Carbon instance for the current date and time.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function now($tz = null);
+
+    /**
+     * Returns a present instance in the same timezone.
+     *
+     * @return static
+     */
+    public function nowWithSameTz();
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current month. If the calculated occurrence is outside the scope
+     * of the current month, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfMonth($nth, $dayOfWeek);
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current quarter. If the calculated occurrence is outside the scope
+     * of the current quarter, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfQuarter($nth, $dayOfWeek);
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current year. If the calculated occurrence is outside the scope
+     * of the current year, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfYear($nth, $dayOfWeek);
+
+    /**
+     * Return a property with its ordinal.
+     *
+     * @param string      $key
+     * @param string|null $period
+     *
+     * @return string
+     */
+    public function ordinal(string $key, ?string $period = null): string;
+
+    /**
+     * Create a carbon instance from a string.
+     *
+     * This is an alias for the constructor that allows better fluent syntax
+     * as it allows you to do Carbon::parse('Monday next week')->fn() rather
+     * than (new Carbon('Monday next week'))->fn().
+     *
+     * @param string|DateTimeInterface|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function parse($time = null, $tz = null);
+
+    /**
+     * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
+     *
+     * @param string                   $time   date/time string in the given language (may also contain English).
+     * @param string|null              $locale if locale is null or not specified, current global locale will be
+     *                                         used instead.
+     * @param DateTimeZone|string|null $tz     optional timezone for the new instance.
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function parseFromLocale($time, $locale = null, $tz = null);
+
+    /**
+     * Returns standardized plural of a given singular/plural unit name (in English).
+     *
+     * @param string $unit
+     *
+     * @return string
+     */
+    public static function pluralUnit(string $unit): string;
+
+    /**
+     * Modify to the previous occurrence of a given modifier such as a day of
+     * the week. If no dayOfWeek is provided, modify to the previous occurrence
+     * of the current day of the week. Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param string|int|null $modifier
+     *
+     * @return static
+     */
+    public function previous($modifier = null);
+
+    /**
+     * Go backward to the previous weekday.
+     *
+     * @return static
+     */
+    public function previousWeekday();
+
+    /**
+     * Go backward to the previous weekend day.
+     *
+     * @return static
+     */
+    public function previousWeekendDay();
+
+    /**
+     * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+     *
+     * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end      period end date
+     * @param int|\DateInterval|string|null                  $interval period default interval or number of the given $unit
+     * @param string|null                                    $unit     if specified, $interval must be an integer
+     *
+     * @return CarbonPeriod
+     */
+    public function range($end = null, $interval = null, $unit = null);
+
+    /**
+     * Call native PHP DateTime/DateTimeImmutable add() method.
+     *
+     * @param DateInterval $interval
+     *
+     * @return static
+     */
+    public function rawAdd(DateInterval $interval);
+
+    /**
+     * Create a Carbon instance from a specific format.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function rawCreateFromFormat($format, $time, $tz = null);
+
+    /**
+     * @see https://php.net/manual/en/datetime.format.php
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function rawFormat($format);
+
+    /**
+     * Create a carbon instance from a string.
+     *
+     * This is an alias for the constructor that allows better fluent syntax
+     * as it allows you to do Carbon::parse('Monday next week')->fn() rather
+     * than (new Carbon('Monday next week'))->fn().
+     *
+     * @param string|DateTimeInterface|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function rawParse($time = null, $tz = null);
+
+    /**
+     * Call native PHP DateTime/DateTimeImmutable sub() method.
+     *
+     * @param DateInterval $interval
+     *
+     * @return static
+     */
+    public function rawSub(DateInterval $interval);
+
+    /**
+     * Remove all macros and generic macros.
+     */
+    public static function resetMacros();
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Reset the month overflow behavior.
+     *
+     * @return void
+     */
+    public static function resetMonthsOverflow();
+
+    /**
+     * Reset the format used to the default when type juggling a Carbon instance to a string
+     *
+     * @return void
+     */
+    public static function resetToStringFormat();
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Reset the month overflow behavior.
+     *
+     * @return void
+     */
+    public static function resetYearsOverflow();
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     * @param string                              $function
+     *
+     * @return CarbonInterface
+     */
+    public function round($precision = 1, $function = 'round');
+
+    /**
+     * Round the current instance at the given unit with given precision if specified and the given function.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     * @param string    $function
+     *
+     * @return CarbonInterface
+     */
+    public function roundUnit($unit, $precision = 1, $function = 'round');
+
+    /**
+     * Round the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function roundWeek($weekStartsAt = null);
+
+    /**
+     * The number of seconds since midnight.
+     *
+     * @return int
+     */
+    public function secondsSinceMidnight();
+
+    /**
+     * The number of seconds until 23:59:59.
+     *
+     * @return int
+     */
+    public function secondsUntilEndOfDay();
+
+    /**
+     * Return a serialized string of the instance.
+     *
+     * @return string
+     */
+    public function serialize();
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather transform Carbon object before the serialization.
+     *
+     * JSON serialize all Carbon instances using the given callback.
+     *
+     * @param callable $callback
+     *
+     * @return void
+     */
+    public static function serializeUsing($callback);
+
+    /**
+     * Set a part of the Carbon object
+     *
+     * @param string|array            $name
+     * @param string|int|DateTimeZone $value
+     *
+     * @throws ImmutableException|UnknownSetterException
+     *
+     * @return $this
+     */
+    public function set($name, $value = null);
+
+    /**
+     * Set the date with gregorian year, month and day numbers.
+     *
+     * @see https://php.net/manual/en/datetime.setdate.php
+     *
+     * @param int $year
+     * @param int $month
+     * @param int $day
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setDate($year, $month, $day);
+
+    /**
+     * Set the year, month, and date for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date now if null
+     *
+     * @return static
+     */
+    public function setDateFrom($date = null);
+
+    /**
+     * Set the date and time all together.
+     *
+     * @param int $year
+     * @param int $month
+     * @param int $day
+     * @param int $hour
+     * @param int $minute
+     * @param int $second
+     * @param int $microseconds
+     *
+     * @return static
+     */
+    public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0);
+
+    /**
+     * Set the date and time for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date
+     *
+     * @return static
+     */
+    public function setDateTimeFrom($date = null);
+
+    /**
+     * Set the fallback locale.
+     *
+     * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
+     *
+     * @param string $locale
+     */
+    public static function setFallbackLocale($locale);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOptions
+     */
+    public static function setHumanDiffOptions($humanDiffOptions);
+
+    /**
+     * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.
+     *
+     * @see https://php.net/manual/en/datetime.setisodate.php
+     *
+     * @param int $year
+     * @param int $week
+     * @param int $day
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setISODate($year, $week, $day = 1);
+
+    /**
+     * Set the translator for the current instance.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     *
+     * @return $this
+     */
+    public function setLocalTranslator(TranslatorInterface $translator);
+
+    /**
+     * Set the current translator locale and indicate if the source locale file exists.
+     * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function setLocale($locale);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather consider mid-day is always 12pm, then if you need to test if it's an other
+     *             hour, test it explicitly:
+     *                 $date->format('G') == 13
+     *             or to set explicitly to a given hour:
+     *                 $date->setTime(13, 0, 0, 0)
+     *
+     * Set midday/noon hour
+     *
+     * @param int $hour midday hour
+     *
+     * @return void
+     */
+    public static function setMidDayAt($hour);
+
+    /**
+     * Set a Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.  The provided instance will be returned
+     * specifically under the following conditions:
+     *   - A call to the static now() method, ex. Carbon::now()
+     *   - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+     *   - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+     *   - When a string containing the desired time is passed to Carbon::parse().
+     *
+     * Note the timezone parameter was left out of the examples above and
+     * has no affect as the mock value will be returned regardless of its value.
+     *
+     * Only the moment is mocked with setTestNow(), the timezone will still be the one passed
+     * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()).
+     *
+     * To clear the test instance call this method using the default
+     * parameter of null.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param Closure|static|string|false|null $testNow real or mock Carbon instance
+     */
+    public static function setTestNow($testNow = null);
+
+    /**
+     * Set a Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.  The provided instance will be returned
+     * specifically under the following conditions:
+     *   - A call to the static now() method, ex. Carbon::now()
+     *   - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+     *   - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+     *   - When a string containing the desired time is passed to Carbon::parse().
+     *
+     * It will also align default timezone (e.g. call date_default_timezone_set()) with
+     * the second argument or if null, with the timezone of the given date object.
+     *
+     * To clear the test instance call this method using the default
+     * parameter of null.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param Closure|static|string|false|null $testNow real or mock Carbon instance
+     */
+    public static function setTestNowAndTimezone($testNow = null, $tz = null);
+
+    /**
+     * Resets the current time of the DateTime object to a different time.
+     *
+     * @see https://php.net/manual/en/datetime.settime.php
+     *
+     * @param int $hour
+     * @param int $minute
+     * @param int $second
+     * @param int $microseconds
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTime($hour, $minute, $second = 0, $microseconds = 0);
+
+    /**
+     * Set the hour, minute, second and microseconds for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date now if null
+     *
+     * @return static
+     */
+    public function setTimeFrom($date = null);
+
+    /**
+     * Set the time by time string.
+     *
+     * @param string $time
+     *
+     * @return static
+     */
+    public function setTimeFromTimeString($time);
+
+    /**
+     * Set the instance's timestamp.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $unixTimestamp
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTimestamp($unixTimestamp);
+
+    /**
+     * Set the instance's timezone from a string or object.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTimezone($value);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
+     *             use other method or custom format passed to format() method if you need to dump an other string
+     *             format.
+     *
+     * Set the default format used when type juggling a Carbon instance to a string
+     *
+     * @param string|Closure|null $format
+     *
+     * @return void
+     */
+    public static function setToStringFormat($format);
+
+    /**
+     * Set the default translator instance to use.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     *
+     * @return void
+     */
+    public static function setTranslator(TranslatorInterface $translator);
+
+    /**
+     * Set specified unit to new given value.
+     *
+     * @param string $unit  year, month, day, hour, minute, second or microsecond
+     * @param int    $value new value for given unit
+     *
+     * @return static
+     */
+    public function setUnit($unit, $value = null);
+
+    /**
+     * Set any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        new value for the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function setUnitNoOverflow($valueUnit, $value, $overflowUnit);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use UTF-8 language packages on every machine.
+     *
+     * Set if UTF8 will be used for localized date/time.
+     *
+     * @param bool $utf8
+     */
+    public static function setUtf8($utf8);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
+     *             or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
+     *             start of week according to current locale selected and implicitly the end of week.
+     *
+     * Set the last day of week
+     *
+     * @param int|string $day week end day (or 'auto' to get the day before the first day of week
+     *                        from Carbon::getLocale() culture).
+     *
+     * @return void
+     */
+    public static function setWeekEndsAt($day);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
+     *             'first_day_of_week' locale setting to change the start of week according to current locale
+     *             selected and implicitly the end of week.
+     *
+     * Set the first day of week
+     *
+     * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture).
+     *
+     * @return void
+     */
+    public static function setWeekStartsAt($day);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather consider week-end is always saturday and sunday, and if you have some custom
+     *             week-end days to handle, give to those days an other name and create a macro for them:
+     *
+     *             ```
+     *             Carbon::macro('isDayOff', function ($date) {
+     *                 return $date->isSunday() || $date->isMonday();
+     *             });
+     *             Carbon::macro('isNotDayOff', function ($date) {
+     *                 return !$date->isDayOff();
+     *             });
+     *             if ($someDate->isDayOff()) ...
+     *             if ($someDate->isNotDayOff()) ...
+     *             // Add 5 not-off days
+     *             $count = 5;
+     *             while ($someDate->isDayOff() || ($count-- > 0)) {
+     *                 $someDate->addDay();
+     *             }
+     *             ```
+     *
+     * Set weekend days
+     *
+     * @param array $days
+     *
+     * @return void
+     */
+    public static function setWeekendDays($days);
+
+    /**
+     * Set specific options.
+     *  - strictMode: true|false|null
+     *  - monthOverflow: true|false|null
+     *  - yearOverflow: true|false|null
+     *  - humanDiffOptions: int|null
+     *  - toStringFormat: string|Closure|null
+     *  - toJsonFormat: string|Closure|null
+     *  - locale: string|null
+     *  - timezone: \DateTimeZone|string|int|null
+     *  - macros: array|null
+     *  - genericMacros: array|null
+     *
+     * @param array $settings
+     *
+     * @return $this|static
+     */
+    public function settings(array $settings);
+
+    /**
+     * Set the instance's timezone from a string or object and add/subtract the offset difference.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    public function shiftTimezone($value);
+
+    /**
+     * Get the month overflow global behavior (can be overridden in specific instances).
+     *
+     * @return bool
+     */
+    public static function shouldOverflowMonths();
+
+    /**
+     * Get the month overflow global behavior (can be overridden in specific instances).
+     *
+     * @return bool
+     */
+    public static function shouldOverflowYears();
+
+    /**
+     * @alias diffForHumans
+     *
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     */
+    public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Returns standardized singular of a given singular/plural unit name (in English).
+     *
+     * @param string $unit
+     *
+     * @return string
+     */
+    public static function singularUnit(string $unit): string;
+
+    /**
+     * Modify to start of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function startOf($unit, ...$params);
+
+    /**
+     * Resets the date to the first day of the century and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfCentury();
+
+    /**
+     * Resets the time to 00:00:00 start of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDay();
+
+    /**
+     * Resets the date to the first day of the decade and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDecade();
+
+    /**
+     * Modify to start of current hour, minutes and seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfHour();
+
+    /**
+     * Resets the date to the first day of the millennium and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMillennium();
+
+    /**
+     * Modify to start of current minute, seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMinute();
+
+    /**
+     * Resets the date to the first day of the month and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMonth();
+
+    /**
+     * Resets the date to the first day of the quarter and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfQuarter();
+
+    /**
+     * Modify to start of current second, microseconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function startOfSecond();
+
+    /**
+     * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n";
+     * ```
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return static
+     */
+    public function startOfWeek($weekStartsAt = null);
+
+    /**
+     * Resets the date to the first day of the year and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfYear();
+
+    /**
+     * Subtract given units or interval to the current instance.
+     *
+     * @example $date->sub('hour', 3)
+     * @example $date->sub(15, 'days')
+     * @example $date->sub(CarbonInterval::days(4))
+     *
+     * @param string|DateInterval|Closure|CarbonConverterInterface $unit
+     * @param int                                                  $value
+     * @param bool|null                                            $overflow
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function sub($unit, $value = 1, $overflow = null);
+
+    public function subRealUnit($unit, $value = 1);
+
+    /**
+     * Subtract given units to the current instance.
+     *
+     * @param string    $unit
+     * @param int       $value
+     * @param bool|null $overflow
+     *
+     * @return static
+     */
+    public function subUnit($unit, $value = 1, $overflow = null);
+
+    /**
+     * Subtract any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        amount to subtract to the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function subUnitNoOverflow($valueUnit, $value, $overflowUnit);
+
+    /**
+     * Subtract given units or interval to the current instance.
+     *
+     * @see sub()
+     *
+     * @param string|DateInterval $unit
+     * @param int                 $value
+     * @param bool|null           $overflow
+     *
+     * @return static
+     */
+    public function subtract($unit, $value = 1, $overflow = null);
+
+    /**
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @return string
+     */
+    public function timespan($other = null, $timezone = null);
+
+    /**
+     * Set the instance's timestamp.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $unixTimestamp
+     *
+     * @return static
+     */
+    public function timestamp($unixTimestamp);
+
+    /**
+     * @alias setTimezone
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    public function timezone($value);
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given (or now if null given) to current instance.
+     *
+     * When comparing a value in the past to default now:
+     * 1 hour from now
+     * 5 months from now
+     *
+     * When comparing a value in the future to default now:
+     * 1 hour ago
+     * 5 months ago
+     *
+     * When comparing a value in the past to another value:
+     * 1 hour after
+     * 5 months after
+     *
+     * When comparing a value in the future to another value:
+     * 1 hour before
+     * 5 months before
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Get default array representation.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toArray());
+     * ```
+     *
+     * @return array
+     */
+    public function toArray();
+
+    /**
+     * Format the instance as ATOM
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toAtomString();
+     * ```
+     *
+     * @return string
+     */
+    public function toAtomString();
+
+    /**
+     * Format the instance as COOKIE
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toCookieString();
+     * ```
+     *
+     * @return string
+     */
+    public function toCookieString();
+
+    /**
+     * @alias toDateTime
+     *
+     * Return native DateTime PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDate());
+     * ```
+     *
+     * @return DateTime
+     */
+    public function toDate();
+
+    /**
+     * Format the instance as date
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateString();
+     * ```
+     *
+     * @return string
+     */
+    public function toDateString();
+
+    /**
+     * Return native DateTime PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDateTime());
+     * ```
+     *
+     * @return DateTime
+     */
+    public function toDateTime();
+
+    /**
+     * Return native toDateTimeImmutable PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDateTimeImmutable());
+     * ```
+     *
+     * @return DateTimeImmutable
+     */
+    public function toDateTimeImmutable();
+
+    /**
+     * Format the instance as date and time T-separated with no timezone
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateTimeLocalString();
+     * echo "\n";
+     * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toDateTimeLocalString($unitPrecision = 'second');
+
+    /**
+     * Format the instance as date and time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateTimeString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toDateTimeString($unitPrecision = 'second');
+
+    /**
+     * Format the instance with day, date and time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDayDateTimeString();
+     * ```
+     *
+     * @return string
+     */
+    public function toDayDateTimeString();
+
+    /**
+     * Format the instance as a readable date
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toFormattedDateString();
+     * ```
+     *
+     * @return string
+     */
+    public function toFormattedDateString();
+
+    /**
+     * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept:
+     * 1977-04-22T01:00:00-05:00).
+     *
+     * @example
+     * ```
+     * echo Carbon::now('America/Toronto')->toISOString() . "\n";
+     * echo Carbon::now('America/Toronto')->toISOString(true) . "\n";
+     * ```
+     *
+     * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC.
+     *
+     * @return null|string
+     */
+    public function toISOString($keepOffset = false);
+
+    /**
+     * Return a immutable copy of the instance.
+     *
+     * @return CarbonImmutable
+     */
+    public function toImmutable();
+
+    /**
+     * Format the instance as ISO8601
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toIso8601String();
+     * ```
+     *
+     * @return string
+     */
+    public function toIso8601String();
+
+    /**
+     * Convert the instance to UTC and return as Zulu ISO8601
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toIso8601ZuluString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toIso8601ZuluString($unitPrecision = 'second');
+
+    /**
+     * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone.
+     *
+     * @example
+     * ```
+     * echo Carbon::now('America/Toronto')->toJSON();
+     * ```
+     *
+     * @return null|string
+     */
+    public function toJSON();
+
+    /**
+     * Return a mutable copy of the instance.
+     *
+     * @return Carbon
+     */
+    public function toMutable();
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given to now
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single part)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function toNow($syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * Get default object representation.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toObject());
+     * ```
+     *
+     * @return object
+     */
+    public function toObject();
+
+    /**
+     * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+     *
+     * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end      period end date or recurrences count if int
+     * @param int|\DateInterval|string|null                      $interval period default interval or number of the given $unit
+     * @param string|null                                        $unit     if specified, $interval must be an integer
+     *
+     * @return CarbonPeriod
+     */
+    public function toPeriod($end = null, $interval = null, $unit = null);
+
+    /**
+     * Format the instance as RFC1036
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc1036String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc1036String();
+
+    /**
+     * Format the instance as RFC1123
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc1123String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc1123String();
+
+    /**
+     * Format the instance as RFC2822
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc2822String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc2822String();
+
+    /**
+     * Format the instance as RFC3339
+     *
+     * @param bool $extended
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc3339String() . "\n";
+     * echo Carbon::now()->toRfc3339String(true) . "\n";
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc3339String($extended = false);
+
+    /**
+     * Format the instance as RFC7231
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc7231String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc7231String();
+
+    /**
+     * Format the instance as RFC822
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc822String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc822String();
+
+    /**
+     * Format the instance as RFC850
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc850String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc850String();
+
+    /**
+     * Format the instance as RSS
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRssString();
+     * ```
+     *
+     * @return string
+     */
+    public function toRssString();
+
+    /**
+     * Returns english human readable complete date string.
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toString();
+     * ```
+     *
+     * @return string
+     */
+    public function toString();
+
+    /**
+     * Format the instance as time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toTimeString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toTimeString($unitPrecision = 'second');
+
+    /**
+     * Format the instance as W3C
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toW3cString();
+     * ```
+     *
+     * @return string
+     */
+    public function toW3cString();
+
+    /**
+     * Create a Carbon instance for today.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function today($tz = null);
+
+    /**
+     * Create a Carbon instance for tomorrow.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function tomorrow($tz = null);
+
+    /**
+     * Translate using translation string or callback available.
+     *
+     * @param string                                                  $key
+     * @param array                                                   $parameters
+     * @param string|int|float|null                                   $number
+     * @param \Symfony\Component\Translation\TranslatorInterface|null $translator
+     * @param bool                                                    $altNumbers
+     *
+     * @return string
+     */
+    public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string;
+
+    /**
+     * Returns the alternative number for a given integer if available in the current locale.
+     *
+     * @param int $number
+     *
+     * @return string
+     */
+    public function translateNumber(int $number): string;
+
+    /**
+     * Translate a time string from a locale to an other.
+     *
+     * @param string      $timeString date/time/duration string to translate (may also contain English)
+     * @param string|null $from       input locale of the $timeString parameter (`Carbon::getLocale()` by default)
+     * @param string|null $to         output locale of the result returned (`"en"` by default)
+     * @param int         $mode       specify what to translate with options:
+     *                                - self::TRANSLATE_ALL (default)
+     *                                - CarbonInterface::TRANSLATE_MONTHS
+     *                                - CarbonInterface::TRANSLATE_DAYS
+     *                                - CarbonInterface::TRANSLATE_UNITS
+     *                                - CarbonInterface::TRANSLATE_MERIDIEM
+     *                                You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS
+     *
+     * @return string
+     */
+    public static function translateTimeString($timeString, $from = null, $to = null, $mode = self::TRANSLATE_ALL);
+
+    /**
+     * Translate a time string from the current locale (`$date->locale()`) to an other.
+     *
+     * @param string      $timeString time string to translate
+     * @param string|null $to         output locale of the result returned ("en" by default)
+     *
+     * @return string
+     */
+    public function translateTimeStringTo($timeString, $to = null);
+
+    /**
+     * Translate using translation string or callback available.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     * @param string                                             $key
+     * @param array                                              $parameters
+     * @param null                                               $number
+     *
+     * @return string
+     */
+    public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string;
+
+    /**
+     * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php)
+     * but translate words whenever possible (months, day names, etc.) using the current locale.
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function translatedFormat(string $format): string;
+
+    /**
+     * Set the timezone or returns the timezone name if no arguments passed.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static|string
+     */
+    public function tz($value = null);
+
+    /**
+     * @alias getTimestamp
+     *
+     * Returns the UNIX timestamp for the current date.
+     *
+     * @return int
+     */
+    public function unix();
+
+    /**
+     * @alias to
+     *
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given (or now if null given) to current instance.
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Indicates if months should be calculated with overflow.
+     *
+     * @param bool $monthsOverflow
+     *
+     * @return void
+     */
+    public static function useMonthsOverflow($monthsOverflow = true);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * Enable the strict mode (or disable with passing false).
+     *
+     * @param bool $strictModeEnabled
+     */
+    public static function useStrictMode($strictModeEnabled = true);
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Indicates if years should be calculated with overflow.
+     *
+     * @param bool $yearsOverflow
+     *
+     * @return void
+     */
+    public static function useYearsOverflow($yearsOverflow = true);
+
+    /**
+     * Set the instance's timezone to UTC.
+     *
+     * @return static
+     */
+    public function utc();
+
+    /**
+     * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed.
+     *
+     * @param int|null $minuteOffset
+     *
+     * @return int|static
+     */
+    public function utcOffset(?int $minuteOffset = null);
+
+    /**
+     * Returns the milliseconds timestamps used amongst other by Date javascript objects.
+     *
+     * @return float
+     */
+    public function valueOf();
+
+    /**
+     * Get/set the week number using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $week
+     * @param int|null $dayOfWeek
+     * @param int|null $dayOfYear
+     *
+     * @return int|static
+     */
+    public function week($week = null, $dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Set/get the week number of year using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $year      if null, act as a getter, if not null, set the year and return current instance.
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int|static
+     */
+    public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Get/set the weekday from 0 (Sunday) to 6 (Saturday).
+     *
+     * @param int|null $value new value for weekday if using as setter.
+     *
+     * @return static|int
+     */
+    public function weekday($value = null);
+
+    /**
+     * Get the number of weeks of the current week-year using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int
+     */
+    public function weeksInYear($dayOfWeek = null, $dayOfYear = null);
+
+    /**
+     * Temporarily sets a static date to be used within the callback.
+     * Using setTestNow to set the date, executing the callback, then
+     * clearing the test instance.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param Closure|static|string|false|null $testNow  real or mock Carbon instance
+     * @param Closure|null                     $callback
+     *
+     * @return mixed
+     */
+    public static function withTestNow($testNow = null, $callback = null);
+
+    /**
+     * Create a Carbon instance for yesterday.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function yesterday($tz = null);
+
+    // </methods>
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
new file mode 100644
index 00000000..0589ef94
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php
@@ -0,0 +1,2807 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Exceptions\BadFluentConstructorException;
+use Carbon\Exceptions\BadFluentSetterException;
+use Carbon\Exceptions\InvalidCastException;
+use Carbon\Exceptions\InvalidIntervalException;
+use Carbon\Exceptions\ParseErrorException;
+use Carbon\Exceptions\UnitNotConfiguredException;
+use Carbon\Exceptions\UnknownGetterException;
+use Carbon\Exceptions\UnknownSetterException;
+use Carbon\Exceptions\UnknownUnitException;
+use Carbon\Traits\IntervalRounding;
+use Carbon\Traits\IntervalStep;
+use Carbon\Traits\Mixin;
+use Carbon\Traits\Options;
+use Carbon\Traits\ToStringFormat;
+use Closure;
+use DateInterval;
+use DateTimeInterface;
+use DateTimeZone;
+use Exception;
+use ReflectionException;
+use ReturnTypeWillChange;
+use Throwable;
+
+/**
+ * A simple API extension for DateInterval.
+ * The implementation provides helpers to handle weeks but only days are saved.
+ * Weeks are calculated based on the total days of the current instance.
+ *
+ * @property int $years Total years of the current interval.
+ * @property int $months Total months of the current interval.
+ * @property int $weeks Total weeks of the current interval calculated from the days.
+ * @property int $dayz Total days of the current interval (weeks * 7 + days).
+ * @property int $hours Total hours of the current interval.
+ * @property int $minutes Total minutes of the current interval.
+ * @property int $seconds Total seconds of the current interval.
+ * @property int $microseconds Total microseconds of the current interval.
+ * @property int $milliseconds Total microseconds of the current interval.
+ * @property int $microExcludeMilli Remaining microseconds without the milliseconds.
+ * @property int $dayzExcludeWeeks Total days remaining in the final week of the current instance (days % 7).
+ * @property int $daysExcludeWeeks alias of dayzExcludeWeeks
+ * @property-read float $totalYears Number of years equivalent to the interval.
+ * @property-read float $totalMonths Number of months equivalent to the interval.
+ * @property-read float $totalWeeks Number of weeks equivalent to the interval.
+ * @property-read float $totalDays Number of days equivalent to the interval.
+ * @property-read float $totalDayz Alias for totalDays.
+ * @property-read float $totalHours Number of hours equivalent to the interval.
+ * @property-read float $totalMinutes Number of minutes equivalent to the interval.
+ * @property-read float $totalSeconds Number of seconds equivalent to the interval.
+ * @property-read float $totalMilliseconds Number of milliseconds equivalent to the interval.
+ * @property-read float $totalMicroseconds Number of microseconds equivalent to the interval.
+ * @property-read string $locale locale of the current instance
+ *
+ * @method static CarbonInterval years($years = 1) Create instance specifying a number of years or modify the number of years if called on an instance.
+ * @method static CarbonInterval year($years = 1) Alias for years()
+ * @method static CarbonInterval months($months = 1) Create instance specifying a number of months or modify the number of months if called on an instance.
+ * @method static CarbonInterval month($months = 1) Alias for months()
+ * @method static CarbonInterval weeks($weeks = 1) Create instance specifying a number of weeks or modify the number of weeks if called on an instance.
+ * @method static CarbonInterval week($weeks = 1) Alias for weeks()
+ * @method static CarbonInterval days($days = 1) Create instance specifying a number of days or modify the number of days if called on an instance.
+ * @method static CarbonInterval dayz($days = 1) Alias for days()
+ * @method static CarbonInterval daysExcludeWeeks($days = 1) Create instance specifying a number of days or modify the number of days (keeping the current number of weeks) if called on an instance.
+ * @method static CarbonInterval dayzExcludeWeeks($days = 1) Alias for daysExcludeWeeks()
+ * @method static CarbonInterval day($days = 1) Alias for days()
+ * @method static CarbonInterval hours($hours = 1) Create instance specifying a number of hours or modify the number of hours if called on an instance.
+ * @method static CarbonInterval hour($hours = 1) Alias for hours()
+ * @method static CarbonInterval minutes($minutes = 1) Create instance specifying a number of minutes or modify the number of minutes if called on an instance.
+ * @method static CarbonInterval minute($minutes = 1) Alias for minutes()
+ * @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds or modify the number of seconds if called on an instance.
+ * @method static CarbonInterval second($seconds = 1) Alias for seconds()
+ * @method static CarbonInterval milliseconds($milliseconds = 1) Create instance specifying a number of milliseconds or modify the number of milliseconds if called on an instance.
+ * @method static CarbonInterval millisecond($milliseconds = 1) Alias for milliseconds()
+ * @method static CarbonInterval microseconds($microseconds = 1) Create instance specifying a number of microseconds or modify the number of microseconds if called on an instance.
+ * @method static CarbonInterval microsecond($microseconds = 1) Alias for microseconds()
+ * @method $this addYears(int $years) Add given number of years to the current interval
+ * @method $this subYears(int $years) Subtract given number of years to the current interval
+ * @method $this addMonths(int $months) Add given number of months to the current interval
+ * @method $this subMonths(int $months) Subtract given number of months to the current interval
+ * @method $this addWeeks(int|float $weeks) Add given number of weeks to the current interval
+ * @method $this subWeeks(int|float $weeks) Subtract given number of weeks to the current interval
+ * @method $this addDays(int|float $days) Add given number of days to the current interval
+ * @method $this subDays(int|float $days) Subtract given number of days to the current interval
+ * @method $this addHours(int|float $hours) Add given number of hours to the current interval
+ * @method $this subHours(int|float $hours) Subtract given number of hours to the current interval
+ * @method $this addMinutes(int|float $minutes) Add given number of minutes to the current interval
+ * @method $this subMinutes(int|float $minutes) Subtract given number of minutes to the current interval
+ * @method $this addSeconds(int|float $seconds) Add given number of seconds to the current interval
+ * @method $this subSeconds(int|float $seconds) Subtract given number of seconds to the current interval
+ * @method $this addMilliseconds(int|float $milliseconds) Add given number of milliseconds to the current interval
+ * @method $this subMilliseconds(int|float $milliseconds) Subtract given number of milliseconds to the current interval
+ * @method $this addMicroseconds(int|float $microseconds) Add given number of microseconds to the current interval
+ * @method $this subMicroseconds(int|float $microseconds) Subtract given number of microseconds to the current interval
+ * @method $this roundYear(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
+ * @method $this roundYears(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
+ * @method $this floorYear(int|float $precision = 1) Truncate the current instance year with given precision.
+ * @method $this floorYears(int|float $precision = 1) Truncate the current instance year with given precision.
+ * @method $this ceilYear(int|float $precision = 1) Ceil the current instance year with given precision.
+ * @method $this ceilYears(int|float $precision = 1) Ceil the current instance year with given precision.
+ * @method $this roundMonth(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
+ * @method $this roundMonths(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
+ * @method $this floorMonth(int|float $precision = 1) Truncate the current instance month with given precision.
+ * @method $this floorMonths(int|float $precision = 1) Truncate the current instance month with given precision.
+ * @method $this ceilMonth(int|float $precision = 1) Ceil the current instance month with given precision.
+ * @method $this ceilMonths(int|float $precision = 1) Ceil the current instance month with given precision.
+ * @method $this roundWeek(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this roundWeeks(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this floorWeek(int|float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this floorWeeks(int|float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this ceilWeek(int|float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this ceilWeeks(int|float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this roundDay(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this roundDays(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this floorDay(int|float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this floorDays(int|float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this ceilDay(int|float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this ceilDays(int|float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this roundHour(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
+ * @method $this roundHours(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
+ * @method $this floorHour(int|float $precision = 1) Truncate the current instance hour with given precision.
+ * @method $this floorHours(int|float $precision = 1) Truncate the current instance hour with given precision.
+ * @method $this ceilHour(int|float $precision = 1) Ceil the current instance hour with given precision.
+ * @method $this ceilHours(int|float $precision = 1) Ceil the current instance hour with given precision.
+ * @method $this roundMinute(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
+ * @method $this roundMinutes(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
+ * @method $this floorMinute(int|float $precision = 1) Truncate the current instance minute with given precision.
+ * @method $this floorMinutes(int|float $precision = 1) Truncate the current instance minute with given precision.
+ * @method $this ceilMinute(int|float $precision = 1) Ceil the current instance minute with given precision.
+ * @method $this ceilMinutes(int|float $precision = 1) Ceil the current instance minute with given precision.
+ * @method $this roundSecond(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
+ * @method $this roundSeconds(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
+ * @method $this floorSecond(int|float $precision = 1) Truncate the current instance second with given precision.
+ * @method $this floorSeconds(int|float $precision = 1) Truncate the current instance second with given precision.
+ * @method $this ceilSecond(int|float $precision = 1) Ceil the current instance second with given precision.
+ * @method $this ceilSeconds(int|float $precision = 1) Ceil the current instance second with given precision.
+ * @method $this roundMillennium(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
+ * @method $this roundMillennia(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
+ * @method $this floorMillennium(int|float $precision = 1) Truncate the current instance millennium with given precision.
+ * @method $this floorMillennia(int|float $precision = 1) Truncate the current instance millennium with given precision.
+ * @method $this ceilMillennium(int|float $precision = 1) Ceil the current instance millennium with given precision.
+ * @method $this ceilMillennia(int|float $precision = 1) Ceil the current instance millennium with given precision.
+ * @method $this roundCentury(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
+ * @method $this roundCenturies(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
+ * @method $this floorCentury(int|float $precision = 1) Truncate the current instance century with given precision.
+ * @method $this floorCenturies(int|float $precision = 1) Truncate the current instance century with given precision.
+ * @method $this ceilCentury(int|float $precision = 1) Ceil the current instance century with given precision.
+ * @method $this ceilCenturies(int|float $precision = 1) Ceil the current instance century with given precision.
+ * @method $this roundDecade(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
+ * @method $this roundDecades(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
+ * @method $this floorDecade(int|float $precision = 1) Truncate the current instance decade with given precision.
+ * @method $this floorDecades(int|float $precision = 1) Truncate the current instance decade with given precision.
+ * @method $this ceilDecade(int|float $precision = 1) Ceil the current instance decade with given precision.
+ * @method $this ceilDecades(int|float $precision = 1) Ceil the current instance decade with given precision.
+ * @method $this roundQuarter(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
+ * @method $this roundQuarters(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
+ * @method $this floorQuarter(int|float $precision = 1) Truncate the current instance quarter with given precision.
+ * @method $this floorQuarters(int|float $precision = 1) Truncate the current instance quarter with given precision.
+ * @method $this ceilQuarter(int|float $precision = 1) Ceil the current instance quarter with given precision.
+ * @method $this ceilQuarters(int|float $precision = 1) Ceil the current instance quarter with given precision.
+ * @method $this roundMillisecond(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
+ * @method $this roundMilliseconds(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
+ * @method $this floorMillisecond(int|float $precision = 1) Truncate the current instance millisecond with given precision.
+ * @method $this floorMilliseconds(int|float $precision = 1) Truncate the current instance millisecond with given precision.
+ * @method $this ceilMillisecond(int|float $precision = 1) Ceil the current instance millisecond with given precision.
+ * @method $this ceilMilliseconds(int|float $precision = 1) Ceil the current instance millisecond with given precision.
+ * @method $this roundMicrosecond(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
+ * @method $this roundMicroseconds(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
+ * @method $this floorMicrosecond(int|float $precision = 1) Truncate the current instance microsecond with given precision.
+ * @method $this floorMicroseconds(int|float $precision = 1) Truncate the current instance microsecond with given precision.
+ * @method $this ceilMicrosecond(int|float $precision = 1) Ceil the current instance microsecond with given precision.
+ * @method $this ceilMicroseconds(int|float $precision = 1) Ceil the current instance microsecond with given precision.
+ */
+class CarbonInterval extends DateInterval implements CarbonConverterInterface
+{
+    use IntervalRounding;
+    use IntervalStep;
+    use Mixin {
+        Mixin::mixin as baseMixin;
+    }
+    use Options;
+    use ToStringFormat;
+
+    /**
+     * Interval spec period designators
+     */
+    public const PERIOD_PREFIX = 'P';
+    public const PERIOD_YEARS = 'Y';
+    public const PERIOD_MONTHS = 'M';
+    public const PERIOD_DAYS = 'D';
+    public const PERIOD_TIME_PREFIX = 'T';
+    public const PERIOD_HOURS = 'H';
+    public const PERIOD_MINUTES = 'M';
+    public const PERIOD_SECONDS = 'S';
+
+    /**
+     * A translator to ... er ... translate stuff
+     *
+     * @var \Symfony\Component\Translation\TranslatorInterface
+     */
+    protected static $translator;
+
+    /**
+     * @var array|null
+     */
+    protected static $cascadeFactors;
+
+    /**
+     * @var array
+     */
+    protected static $formats = [
+        'y' => 'y',
+        'Y' => 'y',
+        'o' => 'y',
+        'm' => 'm',
+        'n' => 'm',
+        'W' => 'weeks',
+        'd' => 'd',
+        'j' => 'd',
+        'z' => 'd',
+        'h' => 'h',
+        'g' => 'h',
+        'H' => 'h',
+        'G' => 'h',
+        'i' => 'i',
+        's' => 's',
+        'u' => 'micro',
+        'v' => 'milli',
+    ];
+
+    /**
+     * @var array|null
+     */
+    private static $flipCascadeFactors;
+
+    /**
+     * The registered macros.
+     *
+     * @var array
+     */
+    protected static $macros = [];
+
+    /**
+     * Timezone handler for settings() method.
+     *
+     * @var mixed
+     */
+    protected $tzName;
+
+    /**
+     * Set the instance's timezone from a string or object.
+     *
+     * @param \DateTimeZone|string $tzName
+     *
+     * @return static
+     */
+    public function setTimezone($tzName)
+    {
+        $this->tzName = $tzName;
+
+        return $this;
+    }
+
+    /**
+     * @internal
+     *
+     * Set the instance's timezone from a string or object and add/subtract the offset difference.
+     *
+     * @param \DateTimeZone|string $tzName
+     *
+     * @return static
+     */
+    public function shiftTimezone($tzName)
+    {
+        $this->tzName = $tzName;
+
+        return $this;
+    }
+
+    /**
+     * Mapping of units and factors for cascading.
+     *
+     * Should only be modified by changing the factors or referenced constants.
+     *
+     * @return array
+     */
+    public static function getCascadeFactors()
+    {
+        return static::$cascadeFactors ?: [
+            'milliseconds' => [Carbon::MICROSECONDS_PER_MILLISECOND, 'microseconds'],
+            'seconds' => [Carbon::MILLISECONDS_PER_SECOND, 'milliseconds'],
+            'minutes' => [Carbon::SECONDS_PER_MINUTE, 'seconds'],
+            'hours' => [Carbon::MINUTES_PER_HOUR, 'minutes'],
+            'dayz' => [Carbon::HOURS_PER_DAY, 'hours'],
+            'weeks' => [Carbon::DAYS_PER_WEEK, 'dayz'],
+            'months' => [Carbon::WEEKS_PER_MONTH, 'weeks'],
+            'years' => [Carbon::MONTHS_PER_YEAR, 'months'],
+        ];
+    }
+
+    private static function standardizeUnit($unit)
+    {
+        $unit = rtrim($unit, 'sz').'s';
+
+        return $unit === 'days' ? 'dayz' : $unit;
+    }
+
+    private static function getFlipCascadeFactors()
+    {
+        if (!self::$flipCascadeFactors) {
+            self::$flipCascadeFactors = [];
+
+            foreach (static::getCascadeFactors() as $to => [$factor, $from]) {
+                self::$flipCascadeFactors[self::standardizeUnit($from)] = [self::standardizeUnit($to), $factor];
+            }
+        }
+
+        return self::$flipCascadeFactors;
+    }
+
+    /**
+     * Set default cascading factors for ->cascade() method.
+     *
+     * @param array $cascadeFactors
+     */
+    public static function setCascadeFactors(array $cascadeFactors)
+    {
+        self::$flipCascadeFactors = null;
+        static::$cascadeFactors = $cascadeFactors;
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    //////////////////////////// CONSTRUCTORS /////////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    /**
+     * Create a new CarbonInterval instance.
+     *
+     * @param Closure|DateInterval|string|int|null $years
+     * @param int|null                             $months
+     * @param int|null                             $weeks
+     * @param int|null                             $days
+     * @param int|null                             $hours
+     * @param int|null                             $minutes
+     * @param int|null                             $seconds
+     * @param int|null                             $microseconds
+     *
+     * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval.
+     */
+    public function __construct($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null)
+    {
+        if ($years instanceof Closure) {
+            $this->step = $years;
+            $years = null;
+        }
+
+        if ($years instanceof DateInterval) {
+            parent::__construct(static::getDateIntervalSpec($years));
+            $this->f = $years->f;
+            self::copyNegativeUnits($years, $this);
+
+            return;
+        }
+
+        $spec = $years;
+
+        if (!\is_string($spec) || (float) $years || preg_match('/^[\d.]/', $years)) {
+            $spec = static::PERIOD_PREFIX;
+
+            $spec .= $years > 0 ? $years.static::PERIOD_YEARS : '';
+            $spec .= $months > 0 ? $months.static::PERIOD_MONTHS : '';
+
+            $specDays = 0;
+            $specDays += $weeks > 0 ? $weeks * static::getDaysPerWeek() : 0;
+            $specDays += $days > 0 ? $days : 0;
+
+            $spec .= $specDays > 0 ? $specDays.static::PERIOD_DAYS : '';
+
+            if ($hours > 0 || $minutes > 0 || $seconds > 0) {
+                $spec .= static::PERIOD_TIME_PREFIX;
+                $spec .= $hours > 0 ? $hours.static::PERIOD_HOURS : '';
+                $spec .= $minutes > 0 ? $minutes.static::PERIOD_MINUTES : '';
+                $spec .= $seconds > 0 ? $seconds.static::PERIOD_SECONDS : '';
+            }
+
+            if ($spec === static::PERIOD_PREFIX) {
+                // Allow the zero interval.
+                $spec .= '0'.static::PERIOD_YEARS;
+            }
+        }
+
+        parent::__construct($spec);
+
+        if ($microseconds !== null) {
+            $this->f = $microseconds / Carbon::MICROSECONDS_PER_SECOND;
+        }
+    }
+
+    /**
+     * Returns the factor for a given source-to-target couple.
+     *
+     * @param string $source
+     * @param string $target
+     *
+     * @return int|float|null
+     */
+    public static function getFactor($source, $target)
+    {
+        $source = self::standardizeUnit($source);
+        $target = self::standardizeUnit($target);
+        $factors = self::getFlipCascadeFactors();
+
+        if (isset($factors[$source])) {
+            [$to, $factor] = $factors[$source];
+
+            if ($to === $target) {
+                return $factor;
+            }
+
+            return $factor * static::getFactor($to, $target);
+        }
+
+        return null;
+    }
+
+    /**
+     * Returns the factor for a given source-to-target couple if set,
+     * else try to find the appropriate constant as the factor, such as Carbon::DAYS_PER_WEEK.
+     *
+     * @param string $source
+     * @param string $target
+     *
+     * @return int|float|null
+     */
+    public static function getFactorWithDefault($source, $target)
+    {
+        $factor = self::getFactor($source, $target);
+
+        if ($factor) {
+            return $factor;
+        }
+
+        static $defaults = [
+            'month' => ['year' => Carbon::MONTHS_PER_YEAR],
+            'week' => ['month' => Carbon::WEEKS_PER_MONTH],
+            'day' => ['week' => Carbon::DAYS_PER_WEEK],
+            'hour' => ['day' => Carbon::HOURS_PER_DAY],
+            'minute' => ['hour' => Carbon::MINUTES_PER_HOUR],
+            'second' => ['minute' => Carbon::SECONDS_PER_MINUTE],
+            'millisecond' => ['second' => Carbon::MILLISECONDS_PER_SECOND],
+            'microsecond' => ['millisecond' => Carbon::MICROSECONDS_PER_MILLISECOND],
+        ];
+
+        return $defaults[$source][$target] ?? null;
+    }
+
+    /**
+     * Returns current config for days per week.
+     *
+     * @return int|float
+     */
+    public static function getDaysPerWeek()
+    {
+        return static::getFactor('dayz', 'weeks') ?: Carbon::DAYS_PER_WEEK;
+    }
+
+    /**
+     * Returns current config for hours per day.
+     *
+     * @return int|float
+     */
+    public static function getHoursPerDay()
+    {
+        return static::getFactor('hours', 'dayz') ?: Carbon::HOURS_PER_DAY;
+    }
+
+    /**
+     * Returns current config for minutes per hour.
+     *
+     * @return int|float
+     */
+    public static function getMinutesPerHour()
+    {
+        return static::getFactor('minutes', 'hours') ?: Carbon::MINUTES_PER_HOUR;
+    }
+
+    /**
+     * Returns current config for seconds per minute.
+     *
+     * @return int|float
+     */
+    public static function getSecondsPerMinute()
+    {
+        return static::getFactor('seconds', 'minutes') ?: Carbon::SECONDS_PER_MINUTE;
+    }
+
+    /**
+     * Returns current config for microseconds per second.
+     *
+     * @return int|float
+     */
+    public static function getMillisecondsPerSecond()
+    {
+        return static::getFactor('milliseconds', 'seconds') ?: Carbon::MILLISECONDS_PER_SECOND;
+    }
+
+    /**
+     * Returns current config for microseconds per second.
+     *
+     * @return int|float
+     */
+    public static function getMicrosecondsPerMillisecond()
+    {
+        return static::getFactor('microseconds', 'milliseconds') ?: Carbon::MICROSECONDS_PER_MILLISECOND;
+    }
+
+    /**
+     * Create a new CarbonInterval instance from specific values.
+     * This is an alias for the constructor that allows better fluent
+     * syntax as it allows you to do CarbonInterval::create(1)->fn() rather than
+     * (new CarbonInterval(1))->fn().
+     *
+     * @param int $years
+     * @param int $months
+     * @param int $weeks
+     * @param int $days
+     * @param int $hours
+     * @param int $minutes
+     * @param int $seconds
+     * @param int $microseconds
+     *
+     * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval.
+     *
+     * @return static
+     */
+    public static function create($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null)
+    {
+        return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $microseconds);
+    }
+
+    /**
+     * Parse a string into a new CarbonInterval object according to the specified format.
+     *
+     * @example
+     * ```
+     * echo Carboninterval::createFromFormat('H:i', '1:30');
+     * ```
+     *
+     * @param string      $format   Format of the $interval input string
+     * @param string|null $interval Input string to convert into an interval
+     *
+     * @throws \Carbon\Exceptions\ParseErrorException when the $interval cannot be parsed as an interval.
+     *
+     * @return static
+     */
+    public static function createFromFormat(string $format, ?string $interval)
+    {
+        $instance = new static(0);
+        $length = mb_strlen($format);
+
+        if (preg_match('/s([,.])([uv])$/', $format, $match)) {
+            $interval = explode($match[1], $interval);
+            $index = \count($interval) - 1;
+            $interval[$index] = str_pad($interval[$index], $match[2] === 'v' ? 3 : 6, '0');
+            $interval = implode($match[1], $interval);
+        }
+
+        $interval = $interval ?? '';
+
+        for ($index = 0; $index < $length; $index++) {
+            $expected = mb_substr($format, $index, 1);
+            $nextCharacter = mb_substr($interval, 0, 1);
+            $unit = static::$formats[$expected] ?? null;
+
+            if ($unit) {
+                if (!preg_match('/^-?\d+/', $interval, $match)) {
+                    throw new ParseErrorException('number', $nextCharacter);
+                }
+
+                $interval = mb_substr($interval, mb_strlen($match[0]));
+                $instance->$unit += (int) ($match[0]);
+
+                continue;
+            }
+
+            if ($nextCharacter !== $expected) {
+                throw new ParseErrorException(
+                    "'$expected'",
+                    $nextCharacter,
+                    'Allowed substitutes for interval formats are '.implode(', ', array_keys(static::$formats))."\n".
+                    'See https://php.net/manual/en/function.date.php for their meaning'
+                );
+            }
+
+            $interval = mb_substr($interval, 1);
+        }
+
+        if ($interval !== '') {
+            throw new ParseErrorException(
+                'end of string',
+                $interval
+            );
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function copy()
+    {
+        $date = new static(0);
+        $date->copyProperties($this);
+        $date->step = $this->step;
+
+        return $date;
+    }
+
+    /**
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function clone()
+    {
+        return $this->copy();
+    }
+
+    /**
+     * Provide static helpers to create instances.  Allows CarbonInterval::years(3).
+     *
+     * Note: This is done using the magic method to allow static and instance methods to
+     *       have the same names.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @return static|null
+     */
+    public static function __callStatic($method, $parameters)
+    {
+        try {
+            $interval = new static(0);
+            $localStrictModeEnabled = $interval->localStrictModeEnabled;
+            $interval->localStrictModeEnabled = true;
+
+            $result = static::hasMacro($method)
+                ? static::bindMacroContext(null, function () use (&$method, &$parameters, &$interval) {
+                    return $interval->callMacro($method, $parameters);
+                })
+                : $interval->$method(...$parameters);
+
+            $interval->localStrictModeEnabled = $localStrictModeEnabled;
+
+            return $result;
+        } catch (BadFluentSetterException $exception) {
+            if (Carbon::isStrictModeEnabled()) {
+                throw new BadFluentConstructorException($method, 0, $exception);
+            }
+
+            return null;
+        }
+    }
+
+    /**
+     * Return the current context from inside a macro callee or a new one if static.
+     *
+     * @return static
+     */
+    protected static function this()
+    {
+        return end(static::$macroContextStack) ?: new static(0);
+    }
+
+    /**
+     * Creates a CarbonInterval from string.
+     *
+     * Format:
+     *
+     * Suffix | Unit    | Example | DateInterval expression
+     * -------|---------|---------|------------------------
+     * y      | years   |   1y    | P1Y
+     * mo     | months  |   3mo   | P3M
+     * w      | weeks   |   2w    | P2W
+     * d      | days    |  28d    | P28D
+     * h      | hours   |   4h    | PT4H
+     * m      | minutes |  12m    | PT12M
+     * s      | seconds |  59s    | PT59S
+     *
+     * e. g. `1w 3d 4h 32m 23s` is converted to 10 days 4 hours 32 minutes and 23 seconds.
+     *
+     * Special cases:
+     *  - An empty string will return a zero interval
+     *  - Fractions are allowed for weeks, days, hours and minutes and will be converted
+     *    and rounded to the next smaller value (caution: 0.5w = 4d)
+     *
+     * @param string $intervalDefinition
+     *
+     * @return static
+     */
+    public static function fromString($intervalDefinition)
+    {
+        if (empty($intervalDefinition)) {
+            return new static(0);
+        }
+
+        $years = 0;
+        $months = 0;
+        $weeks = 0;
+        $days = 0;
+        $hours = 0;
+        $minutes = 0;
+        $seconds = 0;
+        $milliseconds = 0;
+        $microseconds = 0;
+
+        $pattern = '/(\d+(?:\.\d+)?)\h*([^\d\h]*)/i';
+        preg_match_all($pattern, $intervalDefinition, $parts, PREG_SET_ORDER);
+
+        while ([$part, $value, $unit] = array_shift($parts)) {
+            $intValue = (int) $value;
+            $fraction = (float) $value - $intValue;
+
+            // Fix calculation precision
+            switch (round($fraction, 6)) {
+                case 1:
+                    $fraction = 0;
+                    $intValue++;
+
+                    break;
+                case 0:
+                    $fraction = 0;
+
+                    break;
+            }
+
+            switch ($unit === 'µs' ? 'µs' : strtolower($unit)) {
+                case 'millennia':
+                case 'millennium':
+                    $years += $intValue * CarbonInterface::YEARS_PER_MILLENNIUM;
+
+                    break;
+
+                case 'century':
+                case 'centuries':
+                    $years += $intValue * CarbonInterface::YEARS_PER_CENTURY;
+
+                    break;
+
+                case 'decade':
+                case 'decades':
+                    $years += $intValue * CarbonInterface::YEARS_PER_DECADE;
+
+                    break;
+
+                case 'year':
+                case 'years':
+                case 'y':
+                case 'yr':
+                case 'yrs':
+                    $years += $intValue;
+
+                    break;
+
+                case 'quarter':
+                case 'quarters':
+                    $months += $intValue * CarbonInterface::MONTHS_PER_QUARTER;
+
+                    break;
+
+                case 'month':
+                case 'months':
+                case 'mo':
+                case 'mos':
+                    $months += $intValue;
+
+                    break;
+
+                case 'week':
+                case 'weeks':
+                case 'w':
+                    $weeks += $intValue;
+
+                    if ($fraction) {
+                        $parts[] = [null, $fraction * static::getDaysPerWeek(), 'd'];
+                    }
+
+                    break;
+
+                case 'day':
+                case 'days':
+                case 'd':
+                    $days += $intValue;
+
+                    if ($fraction) {
+                        $parts[] = [null, $fraction * static::getHoursPerDay(), 'h'];
+                    }
+
+                    break;
+
+                case 'hour':
+                case 'hours':
+                case 'h':
+                    $hours += $intValue;
+
+                    if ($fraction) {
+                        $parts[] = [null, $fraction * static::getMinutesPerHour(), 'm'];
+                    }
+
+                    break;
+
+                case 'minute':
+                case 'minutes':
+                case 'm':
+                    $minutes += $intValue;
+
+                    if ($fraction) {
+                        $parts[] = [null, $fraction * static::getSecondsPerMinute(), 's'];
+                    }
+
+                    break;
+
+                case 'second':
+                case 'seconds':
+                case 's':
+                    $seconds += $intValue;
+
+                    if ($fraction) {
+                        $parts[] = [null, $fraction * static::getMillisecondsPerSecond(), 'ms'];
+                    }
+
+                    break;
+
+                case 'millisecond':
+                case 'milliseconds':
+                case 'milli':
+                case 'ms':
+                    $milliseconds += $intValue;
+
+                    if ($fraction) {
+                        $microseconds += round($fraction * static::getMicrosecondsPerMillisecond());
+                    }
+
+                    break;
+
+                case 'microsecond':
+                case 'microseconds':
+                case 'micro':
+                case 'µs':
+                    $microseconds += $intValue;
+
+                    break;
+
+                default:
+                    throw new InvalidIntervalException(
+                        sprintf('Invalid part %s in definition %s', $part, $intervalDefinition)
+                    );
+            }
+        }
+
+        return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $milliseconds * Carbon::MICROSECONDS_PER_MILLISECOND + $microseconds);
+    }
+
+    /**
+     * Creates a CarbonInterval from string using a different locale.
+     *
+     * @param string      $interval interval string in the given language (may also contain English).
+     * @param string|null $locale   if locale is null or not specified, current global locale will be used instead.
+     *
+     * @return static
+     */
+    public static function parseFromLocale($interval, $locale = null)
+    {
+        return static::fromString(Carbon::translateTimeString($interval, $locale ?: static::getLocale(), 'en'));
+    }
+
+    private static function castIntervalToClass(DateInterval $interval, string $className)
+    {
+        $mainClass = DateInterval::class;
+
+        if (!is_a($className, $mainClass, true)) {
+            throw new InvalidCastException("$className is not a sub-class of $mainClass.");
+        }
+
+        $microseconds = $interval->f;
+        $instance = new $className(static::getDateIntervalSpec($interval));
+
+        if ($microseconds) {
+            $instance->f = $microseconds;
+        }
+
+        if ($interval instanceof self && is_a($className, self::class, true)) {
+            self::copyStep($interval, $instance);
+        }
+
+        self::copyNegativeUnits($interval, $instance);
+
+        return $instance;
+    }
+
+    private static function copyNegativeUnits(DateInterval $from, DateInterval $to): void
+    {
+        $to->invert = $from->invert;
+
+        foreach (['y', 'm', 'd', 'h', 'i', 's'] as $unit) {
+            if ($from->$unit < 0) {
+                $to->$unit *= -1;
+            }
+        }
+    }
+
+    private static function copyStep(self $from, self $to): void
+    {
+        $to->setStep($from->getStep());
+    }
+
+    /**
+     * Cast the current instance into the given class.
+     *
+     * @param string $className The $className::instance() method will be called to cast the current object.
+     *
+     * @return DateInterval
+     */
+    public function cast(string $className)
+    {
+        return self::castIntervalToClass($this, $className);
+    }
+
+    /**
+     * Create a CarbonInterval instance from a DateInterval one.  Can not instance
+     * DateInterval objects created from DateTime::diff() as you can't externally
+     * set the $days field.
+     *
+     * @param DateInterval $interval
+     *
+     * @return static
+     */
+    public static function instance(DateInterval $interval)
+    {
+        return self::castIntervalToClass($interval, static::class);
+    }
+
+    /**
+     * Make a CarbonInterval instance from given variable if possible.
+     *
+     * Always return a new instance. Parse only strings and only these likely to be intervals (skip dates
+     * and recurrences). Throw an exception for invalid format, but otherwise return null.
+     *
+     * @param mixed|int|DateInterval|string|Closure|null $interval interval or number of the given $unit
+     * @param string|null                                $unit     if specified, $interval must be an integer
+     *
+     * @return static|null
+     */
+    public static function make($interval, $unit = null)
+    {
+        if ($unit) {
+            $interval = "$interval ".Carbon::pluralUnit($unit);
+        }
+
+        if ($interval instanceof DateInterval) {
+            return static::instance($interval);
+        }
+
+        if ($interval instanceof Closure) {
+            return new static($interval);
+        }
+
+        if (!\is_string($interval)) {
+            return null;
+        }
+
+        return static::makeFromString($interval);
+    }
+
+    protected static function makeFromString(string $interval)
+    {
+        $interval = preg_replace('/\s+/', ' ', trim($interval));
+
+        if (preg_match('/^P[T\d]/', $interval)) {
+            return new static($interval);
+        }
+
+        if (preg_match('/^(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+$/i', $interval)) {
+            return static::fromString($interval);
+        }
+
+        /** @var static $interval */
+        $interval = static::createFromDateString($interval);
+
+        return !$interval || $interval->isEmpty() ? null : $interval;
+    }
+
+    protected function resolveInterval($interval)
+    {
+        if (!($interval instanceof self)) {
+            return self::make($interval);
+        }
+
+        return $interval;
+    }
+
+    /**
+     * Sets up a DateInterval from the relative parts of the string.
+     *
+     * @param string $time
+     *
+     * @return static
+     *
+     * @link https://php.net/manual/en/dateinterval.createfromdatestring.php
+     */
+    #[ReturnTypeWillChange]
+    public static function createFromDateString($time)
+    {
+        $interval = @parent::createFromDateString(strtr($time, [
+            ',' => ' ',
+            ' and ' => ' ',
+        ]));
+
+        if ($interval instanceof DateInterval) {
+            $interval = static::instance($interval);
+        }
+
+        return $interval;
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    ///////////////////////// GETTERS AND SETTERS /////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    /**
+     * Get a part of the CarbonInterval object.
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return int|float|string
+     */
+    public function get($name)
+    {
+        if (str_starts_with($name, 'total')) {
+            return $this->total(substr($name, 5));
+        }
+
+        switch ($name) {
+            case 'years':
+                return $this->y;
+
+            case 'months':
+                return $this->m;
+
+            case 'dayz':
+                return $this->d;
+
+            case 'hours':
+                return $this->h;
+
+            case 'minutes':
+                return $this->i;
+
+            case 'seconds':
+                return $this->s;
+
+            case 'milli':
+            case 'milliseconds':
+                return (int) (round($this->f * Carbon::MICROSECONDS_PER_SECOND) / Carbon::MICROSECONDS_PER_MILLISECOND);
+
+            case 'micro':
+            case 'microseconds':
+                return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND);
+
+            case 'microExcludeMilli':
+                return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND) % Carbon::MICROSECONDS_PER_MILLISECOND;
+
+            case 'weeks':
+                return (int) ($this->d / (int) static::getDaysPerWeek());
+
+            case 'daysExcludeWeeks':
+            case 'dayzExcludeWeeks':
+                return $this->d % (int) static::getDaysPerWeek();
+
+            case 'locale':
+                return $this->getTranslatorLocale();
+
+            default:
+                throw new UnknownGetterException($name);
+        }
+    }
+
+    /**
+     * Get a part of the CarbonInterval object.
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return int|float|string
+     */
+    public function __get($name)
+    {
+        return $this->get($name);
+    }
+
+    /**
+     * Set a part of the CarbonInterval object.
+     *
+     * @param string|array $name
+     * @param int          $value
+     *
+     * @throws UnknownSetterException
+     *
+     * @return $this
+     */
+    public function set($name, $value = null)
+    {
+        $properties = \is_array($name) ? $name : [$name => $value];
+
+        foreach ($properties as $key => $value) {
+            switch (Carbon::singularUnit(rtrim($key, 'z'))) {
+                case 'year':
+                    $this->y = $value;
+
+                    break;
+
+                case 'month':
+                    $this->m = $value;
+
+                    break;
+
+                case 'week':
+                    $this->d = $value * (int) static::getDaysPerWeek();
+
+                    break;
+
+                case 'day':
+                    $this->d = $value;
+
+                    break;
+
+                case 'daysexcludeweek':
+                case 'dayzexcludeweek':
+                    $this->d = $this->weeks * (int) static::getDaysPerWeek() + $value;
+
+                    break;
+
+                case 'hour':
+                    $this->h = $value;
+
+                    break;
+
+                case 'minute':
+                    $this->i = $value;
+
+                    break;
+
+                case 'second':
+                    $this->s = $value;
+
+                    break;
+
+                case 'milli':
+                case 'millisecond':
+                    $this->microseconds = $value * Carbon::MICROSECONDS_PER_MILLISECOND + $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND;
+
+                    break;
+
+                case 'micro':
+                case 'microsecond':
+                    $this->f = $value / Carbon::MICROSECONDS_PER_SECOND;
+
+                    break;
+
+                default:
+                    if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
+                        throw new UnknownSetterException($key);
+                    }
+
+                    $this->$key = $value;
+            }
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set a part of the CarbonInterval object.
+     *
+     * @param string $name
+     * @param int    $value
+     *
+     * @throws UnknownSetterException
+     */
+    public function __set($name, $value)
+    {
+        $this->set($name, $value);
+    }
+
+    /**
+     * Allow setting of weeks and days to be cumulative.
+     *
+     * @param int $weeks Number of weeks to set
+     * @param int $days  Number of days to set
+     *
+     * @return static
+     */
+    public function weeksAndDays($weeks, $days)
+    {
+        $this->dayz = ($weeks * static::getDaysPerWeek()) + $days;
+
+        return $this;
+    }
+
+    /**
+     * Returns true if the interval is empty for each unit.
+     *
+     * @return bool
+     */
+    public function isEmpty()
+    {
+        return $this->years === 0 &&
+            $this->months === 0 &&
+            $this->dayz === 0 &&
+            !$this->days &&
+            $this->hours === 0 &&
+            $this->minutes === 0 &&
+            $this->seconds === 0 &&
+            $this->microseconds === 0;
+    }
+
+    /**
+     * Register a custom macro.
+     *
+     * @example
+     * ```
+     * CarbonInterval::macro('twice', function () {
+     *   return $this->times(2);
+     * });
+     * echo CarbonInterval::hours(2)->twice();
+     * ```
+     *
+     * @param string          $name
+     * @param object|callable $macro
+     *
+     * @return void
+     */
+    public static function macro($name, $macro)
+    {
+        static::$macros[$name] = $macro;
+    }
+
+    /**
+     * Register macros from a mixin object.
+     *
+     * @example
+     * ```
+     * CarbonInterval::mixin(new class {
+     *   public function daysToHours() {
+     *     return function () {
+     *       $this->hours += $this->days;
+     *       $this->days = 0;
+     *
+     *       return $this;
+     *     };
+     *   }
+     *   public function hoursToDays() {
+     *     return function () {
+     *       $this->days += $this->hours;
+     *       $this->hours = 0;
+     *
+     *       return $this;
+     *     };
+     *   }
+     * });
+     * echo CarbonInterval::hours(5)->hoursToDays() . "\n";
+     * echo CarbonInterval::days(5)->daysToHours() . "\n";
+     * ```
+     *
+     * @param object|string $mixin
+     *
+     * @throws ReflectionException
+     *
+     * @return void
+     */
+    public static function mixin($mixin)
+    {
+        static::baseMixin($mixin);
+    }
+
+    /**
+     * Check if macro is registered.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public static function hasMacro($name)
+    {
+        return isset(static::$macros[$name]);
+    }
+
+    /**
+     * Call given macro.
+     *
+     * @param string $name
+     * @param array  $parameters
+     *
+     * @return mixed
+     */
+    protected function callMacro($name, $parameters)
+    {
+        $macro = static::$macros[$name];
+
+        if ($macro instanceof Closure) {
+            $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
+
+            return ($boundMacro ?: $macro)(...$parameters);
+        }
+
+        return $macro(...$parameters);
+    }
+
+    /**
+     * Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day().
+     *
+     * Note: This is done using the magic method to allow static and instance methods to
+     *       have the same names.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @throws BadFluentSetterException|Throwable
+     *
+     * @return static
+     */
+    public function __call($method, $parameters)
+    {
+        if (static::hasMacro($method)) {
+            return static::bindMacroContext($this, function () use (&$method, &$parameters) {
+                return $this->callMacro($method, $parameters);
+            });
+        }
+
+        $roundedValue = $this->callRoundMethod($method, $parameters);
+
+        if ($roundedValue !== null) {
+            return $roundedValue;
+        }
+
+        if (preg_match('/^(?<method>add|sub)(?<unit>[A-Z].*)$/', $method, $match)) {
+            return $this->{$match['method']}($parameters[0], $match['unit']);
+        }
+
+        try {
+            $this->set($method, \count($parameters) === 0 ? 1 : $parameters[0]);
+        } catch (UnknownSetterException $exception) {
+            if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
+                throw new BadFluentSetterException($method, 0, $exception);
+            }
+        }
+
+        return $this;
+    }
+
+    protected function getForHumansInitialVariables($syntax, $short)
+    {
+        if (\is_array($syntax)) {
+            return $syntax;
+        }
+
+        if (\is_int($short)) {
+            return [
+                'parts' => $short,
+                'short' => false,
+            ];
+        }
+
+        if (\is_bool($syntax)) {
+            return [
+                'short' => $syntax,
+                'syntax' => CarbonInterface::DIFF_ABSOLUTE,
+            ];
+        }
+
+        return [];
+    }
+
+    /**
+     * @param mixed $syntax
+     * @param mixed $short
+     * @param mixed $parts
+     * @param mixed $options
+     *
+     * @return array
+     */
+    protected function getForHumansParameters($syntax = null, $short = false, $parts = -1, $options = null)
+    {
+        $optionalSpace = ' ';
+        $default = $this->getTranslationMessage('list.0') ?? $this->getTranslationMessage('list') ?? ' ';
+        $join = $default === '' ? '' : ' ';
+        $altNumbers = false;
+        $aUnit = false;
+        $minimumUnit = 's';
+        $skip = [];
+        extract($this->getForHumansInitialVariables($syntax, $short));
+        $skip = array_filter((array) $skip, static function ($value) {
+            return \is_string($value) && $value !== '';
+        });
+
+        if ($syntax === null) {
+            $syntax = CarbonInterface::DIFF_ABSOLUTE;
+        }
+
+        if ($parts === -1) {
+            $parts = INF;
+        }
+
+        if ($options === null) {
+            $options = static::getHumanDiffOptions();
+        }
+
+        if ($join === false) {
+            $join = ' ';
+        } elseif ($join === true) {
+            $join = [
+                $default,
+                $this->getTranslationMessage('list.1') ?? $default,
+            ];
+        }
+
+        if ($altNumbers && $altNumbers !== true) {
+            $language = new Language($this->locale);
+            $altNumbers = \in_array($language->getCode(), (array) $altNumbers, true);
+        }
+
+        if (\is_array($join)) {
+            [$default, $last] = $join;
+
+            if ($default !== ' ') {
+                $optionalSpace = '';
+            }
+
+            $join = function ($list) use ($default, $last) {
+                if (\count($list) < 2) {
+                    return implode('', $list);
+                }
+
+                $end = array_pop($list);
+
+                return implode($default, $list).$last.$end;
+            };
+        }
+
+        if (\is_string($join)) {
+            if ($join !== ' ') {
+                $optionalSpace = '';
+            }
+
+            $glue = $join;
+            $join = function ($list) use ($glue) {
+                return implode($glue, $list);
+            };
+        }
+
+        $interpolations = [
+            ':optional-space' => $optionalSpace,
+        ];
+
+        return [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip];
+    }
+
+    protected static function getRoundingMethodFromOptions(int $options): ?string
+    {
+        if ($options & CarbonInterface::ROUND) {
+            return 'round';
+        }
+
+        if ($options & CarbonInterface::CEIL) {
+            return 'ceil';
+        }
+
+        if ($options & CarbonInterface::FLOOR) {
+            return 'floor';
+        }
+
+        return null;
+    }
+
+    /**
+     * Returns interval values as an array where key are the unit names and values the counts.
+     *
+     * @return int[]
+     */
+    public function toArray()
+    {
+        return [
+            'years' => $this->years,
+            'months' => $this->months,
+            'weeks' => $this->weeks,
+            'days' => $this->daysExcludeWeeks,
+            'hours' => $this->hours,
+            'minutes' => $this->minutes,
+            'seconds' => $this->seconds,
+            'microseconds' => $this->microseconds,
+        ];
+    }
+
+    /**
+     * Returns interval non-zero values as an array where key are the unit names and values the counts.
+     *
+     * @return int[]
+     */
+    public function getNonZeroValues()
+    {
+        return array_filter($this->toArray(), 'intval');
+    }
+
+    /**
+     * Returns interval values as an array where key are the unit names and values the counts
+     * from the biggest non-zero one the the smallest non-zero one.
+     *
+     * @return int[]
+     */
+    public function getValuesSequence()
+    {
+        $nonZeroValues = $this->getNonZeroValues();
+
+        if ($nonZeroValues === []) {
+            return [];
+        }
+
+        $keys = array_keys($nonZeroValues);
+        $firstKey = $keys[0];
+        $lastKey = $keys[\count($keys) - 1];
+        $values = [];
+        $record = false;
+
+        foreach ($this->toArray() as $unit => $count) {
+            if ($unit === $firstKey) {
+                $record = true;
+            }
+
+            if ($record) {
+                $values[$unit] = $count;
+            }
+
+            if ($unit === $lastKey) {
+                $record = false;
+            }
+        }
+
+        return $values;
+    }
+
+    /**
+     * Get the current interval in a human readable format in the current locale.
+     *
+     * @example
+     * ```
+     * echo CarbonInterval::fromString('4d 3h 40m')->forHumans() . "\n";
+     * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 2]) . "\n";
+     * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 3, 'join' => true]) . "\n";
+     * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['short' => true]) . "\n";
+     * echo CarbonInterval::fromString('1d 24h')->forHumans(['join' => ' or ']) . "\n";
+     * echo CarbonInterval::fromString('1d 24h')->forHumans(['minimumUnit' => 'hour']) . "\n";
+     * ```
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'skip' entry, list of units to skip (array of strings or a single string,
+     *                           ` it can be the unit name (singular or plural) or its shortcut
+     *                           ` (y, m, w, d, h, min, s, ms, µs).
+     *                           - 'aUnit' entry, prefer "an hour" over "1 hour" if true
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           - 'minimumUnit' entry determines the smallest unit of time to display can be long or
+     *                           `  short form of the units, e.g. 'hour' or 'h' (default value: s)
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: -1: no limits)
+     * @param int       $options human diff options
+     *
+     * @throws Exception
+     *
+     * @return string
+     */
+    public function forHumans($syntax = null, $short = false, $parts = -1, $options = null)
+    {
+        [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip] = $this
+            ->getForHumansParameters($syntax, $short, $parts, $options);
+
+        $interval = [];
+
+        $syntax = (int) ($syntax ?? CarbonInterface::DIFF_ABSOLUTE);
+        $absolute = $syntax === CarbonInterface::DIFF_ABSOLUTE;
+        $relativeToNow = $syntax === CarbonInterface::DIFF_RELATIVE_TO_NOW;
+        $count = 1;
+        $unit = $short ? 's' : 'second';
+        $isFuture = $this->invert === 1;
+        $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
+        $declensionMode = null;
+
+        /** @var \Symfony\Component\Translation\Translator $translator */
+        $translator = $this->getLocalTranslator();
+
+        $handleDeclensions = function ($unit, $count, $index = 0, $parts = 1) use ($interpolations, $transId, $translator, $altNumbers, $absolute, &$declensionMode) {
+            if (!$absolute) {
+                $declensionMode = $declensionMode ?? $this->translate($transId.'_mode');
+
+                if ($this->needsDeclension($declensionMode, $index, $parts)) {
+                    // Some languages have special pluralization for past and future tense.
+                    $key = $unit.'_'.$transId;
+                    $result = $this->translate($key, $interpolations, $count, $translator, $altNumbers);
+
+                    if ($result !== $key) {
+                        return $result;
+                    }
+                }
+            }
+
+            $result = $this->translate($unit, $interpolations, $count, $translator, $altNumbers);
+
+            if ($result !== $unit) {
+                return $result;
+            }
+
+            return null;
+        };
+
+        $intervalValues = $this;
+        $method = static::getRoundingMethodFromOptions($options);
+
+        if ($method) {
+            $previousCount = INF;
+
+            while (
+                \count($intervalValues->getNonZeroValues()) > $parts &&
+                ($count = \count($keys = array_keys($intervalValues->getValuesSequence()))) > 1
+            ) {
+                $index = min($count, $previousCount - 1) - 2;
+
+                if ($index < 0) {
+                    break;
+                }
+
+                $intervalValues = $this->copy()->roundUnit(
+                    $keys[$index],
+                    1,
+                    $method
+                );
+                $previousCount = $count;
+            }
+        }
+
+        $diffIntervalArray = [
+            ['value' => $intervalValues->years,             'unit' => 'year',        'unitShort' => 'y'],
+            ['value' => $intervalValues->months,            'unit' => 'month',       'unitShort' => 'm'],
+            ['value' => $intervalValues->weeks,             'unit' => 'week',        'unitShort' => 'w'],
+            ['value' => $intervalValues->daysExcludeWeeks,  'unit' => 'day',         'unitShort' => 'd'],
+            ['value' => $intervalValues->hours,             'unit' => 'hour',        'unitShort' => 'h'],
+            ['value' => $intervalValues->minutes,           'unit' => 'minute',      'unitShort' => 'min'],
+            ['value' => $intervalValues->seconds,           'unit' => 'second',      'unitShort' => 's'],
+            ['value' => $intervalValues->milliseconds,      'unit' => 'millisecond', 'unitShort' => 'ms'],
+            ['value' => $intervalValues->microExcludeMilli, 'unit' => 'microsecond', 'unitShort' => 'µs'],
+        ];
+
+        if (!empty($skip)) {
+            foreach ($diffIntervalArray as $index => &$unitData) {
+                $nextIndex = $index + 1;
+
+                if ($unitData['value'] &&
+                    isset($diffIntervalArray[$nextIndex]) &&
+                    \count(array_intersect([$unitData['unit'], $unitData['unit'].'s', $unitData['unitShort']], $skip))
+                ) {
+                    $diffIntervalArray[$nextIndex]['value'] += $unitData['value'] *
+                        self::getFactorWithDefault($diffIntervalArray[$nextIndex]['unit'], $unitData['unit']);
+                    $unitData['value'] = 0;
+                }
+            }
+        }
+
+        $transChoice = function ($short, $unitData, $index, $parts) use ($absolute, $handleDeclensions, $translator, $aUnit, $altNumbers, $interpolations) {
+            $count = $unitData['value'];
+
+            if ($short) {
+                $result = $handleDeclensions($unitData['unitShort'], $count, $index, $parts);
+
+                if ($result !== null) {
+                    return $result;
+                }
+            } elseif ($aUnit) {
+                $result = $handleDeclensions('a_'.$unitData['unit'], $count, $index, $parts);
+
+                if ($result !== null) {
+                    return $result;
+                }
+            }
+
+            if (!$absolute) {
+                return $handleDeclensions($unitData['unit'], $count, $index, $parts);
+            }
+
+            return $this->translate($unitData['unit'], $interpolations, $count, $translator, $altNumbers);
+        };
+
+        $fallbackUnit = ['second', 's'];
+
+        foreach ($diffIntervalArray as $diffIntervalData) {
+            if ($diffIntervalData['value'] > 0) {
+                $unit = $short ? $diffIntervalData['unitShort'] : $diffIntervalData['unit'];
+                $count = $diffIntervalData['value'];
+                $interval[] = [$short, $diffIntervalData];
+            } elseif ($options & CarbonInterface::SEQUENTIAL_PARTS_ONLY && \count($interval) > 0) {
+                break;
+            }
+
+            // break the loop after we get the required number of parts in array
+            if (\count($interval) >= $parts) {
+                break;
+            }
+
+            // break the loop after we have reached the minimum unit
+            if (\in_array($minimumUnit, [$diffIntervalData['unit'], $diffIntervalData['unitShort']], true)) {
+                $fallbackUnit = [$diffIntervalData['unit'], $diffIntervalData['unitShort']];
+
+                break;
+            }
+        }
+
+        $actualParts = \count($interval);
+
+        foreach ($interval as $index => &$item) {
+            $item = $transChoice($item[0], $item[1], $index, $actualParts);
+        }
+
+        if (\count($interval) === 0) {
+            if ($relativeToNow && $options & CarbonInterface::JUST_NOW) {
+                $key = 'diff_now';
+                $translation = $this->translate($key, $interpolations, null, $translator);
+
+                if ($translation !== $key) {
+                    return $translation;
+                }
+            }
+
+            $count = $options & CarbonInterface::NO_ZERO_DIFF ? 1 : 0;
+            $unit = $fallbackUnit[$short ? 1 : 0];
+            $interval[] = $this->translate($unit, $interpolations, $count, $translator, $altNumbers);
+        }
+
+        // join the interval parts by a space
+        $time = $join($interval);
+
+        unset($diffIntervalArray, $interval);
+
+        if ($absolute) {
+            return $time;
+        }
+
+        $isFuture = $this->invert === 1;
+
+        $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before');
+
+        if ($parts === 1) {
+            if ($relativeToNow && $unit === 'day') {
+                if ($count === 1 && $options & CarbonInterface::ONE_DAY_WORDS) {
+                    $key = $isFuture ? 'diff_tomorrow' : 'diff_yesterday';
+                    $translation = $this->translate($key, $interpolations, null, $translator);
+
+                    if ($translation !== $key) {
+                        return $translation;
+                    }
+                }
+
+                if ($count === 2 && $options & CarbonInterface::TWO_DAY_WORDS) {
+                    $key = $isFuture ? 'diff_after_tomorrow' : 'diff_before_yesterday';
+                    $translation = $this->translate($key, $interpolations, null, $translator);
+
+                    if ($translation !== $key) {
+                        return $translation;
+                    }
+                }
+            }
+
+            $aTime = $aUnit ? $handleDeclensions('a_'.$unit, $count) : null;
+
+            $time = $aTime ?: $handleDeclensions($unit, $count) ?: $time;
+        }
+
+        $time = [':time' => $time];
+
+        return $this->translate($transId, array_merge($time, $interpolations, $time), null, $translator);
+    }
+
+    /**
+     * Format the instance as a string using the forHumans() function.
+     *
+     * @throws Exception
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        $format = $this->localToStringFormat ?? static::$toStringFormat;
+
+        if (!$format) {
+            return $this->forHumans();
+        }
+
+        if ($format instanceof Closure) {
+            return $format($this);
+        }
+
+        return $this->format($format);
+    }
+
+    /**
+     * Return native DateInterval PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(CarbonInterval::hours(2)->toDateInterval());
+     * ```
+     *
+     * @return DateInterval
+     */
+    public function toDateInterval()
+    {
+        return self::castIntervalToClass($this, DateInterval::class);
+    }
+
+    /**
+     * Convert the interval to a CarbonPeriod.
+     *
+     * @param DateTimeInterface|string|int ...$params Start date, [end date or recurrences] and optional settings.
+     *
+     * @return CarbonPeriod
+     */
+    public function toPeriod(...$params)
+    {
+        if ($this->tzName) {
+            $tz = \is_string($this->tzName) ? new DateTimeZone($this->tzName) : $this->tzName;
+
+            if ($tz instanceof DateTimeZone) {
+                array_unshift($params, $tz);
+            }
+        }
+
+        return CarbonPeriod::create($this, ...$params);
+    }
+
+    /**
+     * Invert the interval.
+     *
+     * @param bool|int $inverted if a parameter is passed, the passed value casted as 1 or 0 is used
+     *                           as the new value of the ->invert property.
+     *
+     * @return $this
+     */
+    public function invert($inverted = null)
+    {
+        $this->invert = (\func_num_args() === 0 ? !$this->invert : $inverted) ? 1 : 0;
+
+        return $this;
+    }
+
+    protected function solveNegativeInterval()
+    {
+        if (!$this->isEmpty() && $this->years <= 0 && $this->months <= 0 && $this->dayz <= 0 && $this->hours <= 0 && $this->minutes <= 0 && $this->seconds <= 0 && $this->microseconds <= 0) {
+            $this->years *= -1;
+            $this->months *= -1;
+            $this->dayz *= -1;
+            $this->hours *= -1;
+            $this->minutes *= -1;
+            $this->seconds *= -1;
+            $this->microseconds *= -1;
+            $this->invert();
+        }
+
+        return $this;
+    }
+
+    /**
+     * Add the passed interval to the current instance.
+     *
+     * @param string|DateInterval $unit
+     * @param int|float           $value
+     *
+     * @return $this
+     */
+    public function add($unit, $value = 1)
+    {
+        if (is_numeric($unit)) {
+            [$value, $unit] = [$unit, $value];
+        }
+
+        if (\is_string($unit) && !preg_match('/^\s*\d/', $unit)) {
+            $unit = "$value $unit";
+            $value = 1;
+        }
+
+        $interval = static::make($unit);
+
+        if (!$interval) {
+            throw new InvalidIntervalException('This type of data cannot be added/subtracted.');
+        }
+
+        if ($value !== 1) {
+            $interval->times($value);
+        }
+
+        $sign = ($this->invert === 1) !== ($interval->invert === 1) ? -1 : 1;
+        $this->years += $interval->y * $sign;
+        $this->months += $interval->m * $sign;
+        $this->dayz += ($interval->days === false ? $interval->d : $interval->days) * $sign;
+        $this->hours += $interval->h * $sign;
+        $this->minutes += $interval->i * $sign;
+        $this->seconds += $interval->s * $sign;
+        $this->microseconds += $interval->microseconds * $sign;
+
+        $this->solveNegativeInterval();
+
+        return $this;
+    }
+
+    /**
+     * Subtract the passed interval to the current instance.
+     *
+     * @param string|DateInterval $unit
+     * @param int|float           $value
+     *
+     * @return $this
+     */
+    public function sub($unit, $value = 1)
+    {
+        if (is_numeric($unit)) {
+            [$value, $unit] = [$unit, $value];
+        }
+
+        return $this->add($unit, -(float) $value);
+    }
+
+    /**
+     * Subtract the passed interval to the current instance.
+     *
+     * @param string|DateInterval $unit
+     * @param int|float           $value
+     *
+     * @return $this
+     */
+    public function subtract($unit, $value = 1)
+    {
+        return $this->sub($unit, $value);
+    }
+
+    /**
+     * Add given parameters to the current interval.
+     *
+     * @param int       $years
+     * @param int       $months
+     * @param int|float $weeks
+     * @param int|float $days
+     * @param int|float $hours
+     * @param int|float $minutes
+     * @param int|float $seconds
+     * @param int|float $microseconds
+     *
+     * @return $this
+     */
+    public function plus(
+        $years = 0,
+        $months = 0,
+        $weeks = 0,
+        $days = 0,
+        $hours = 0,
+        $minutes = 0,
+        $seconds = 0,
+        $microseconds = 0
+    ): self {
+        return $this->add("
+            $years years $months months $weeks weeks $days days
+            $hours hours $minutes minutes $seconds seconds $microseconds microseconds
+        ");
+    }
+
+    /**
+     * Add given parameters to the current interval.
+     *
+     * @param int       $years
+     * @param int       $months
+     * @param int|float $weeks
+     * @param int|float $days
+     * @param int|float $hours
+     * @param int|float $minutes
+     * @param int|float $seconds
+     * @param int|float $microseconds
+     *
+     * @return $this
+     */
+    public function minus(
+        $years = 0,
+        $months = 0,
+        $weeks = 0,
+        $days = 0,
+        $hours = 0,
+        $minutes = 0,
+        $seconds = 0,
+        $microseconds = 0
+    ): self {
+        return $this->sub("
+            $years years $months months $weeks weeks $days days
+            $hours hours $minutes minutes $seconds seconds $microseconds microseconds
+        ");
+    }
+
+    /**
+     * Multiply current instance given number of times. times() is naive, it multiplies each unit
+     * (so day can be greater than 31, hour can be greater than 23, etc.) and the result is rounded
+     * separately for each unit.
+     *
+     * Use times() when you want a fast and approximated calculation that does not cascade units.
+     *
+     * For a precise and cascaded calculation,
+     *
+     * @see multiply()
+     *
+     * @param float|int $factor
+     *
+     * @return $this
+     */
+    public function times($factor)
+    {
+        if ($factor < 0) {
+            $this->invert = $this->invert ? 0 : 1;
+            $factor = -$factor;
+        }
+
+        $this->years = (int) round($this->years * $factor);
+        $this->months = (int) round($this->months * $factor);
+        $this->dayz = (int) round($this->dayz * $factor);
+        $this->hours = (int) round($this->hours * $factor);
+        $this->minutes = (int) round($this->minutes * $factor);
+        $this->seconds = (int) round($this->seconds * $factor);
+        $this->microseconds = (int) round($this->microseconds * $factor);
+
+        return $this;
+    }
+
+    /**
+     * Divide current instance by a given divider. shares() is naive, it divides each unit separately
+     * and the result is rounded for each unit. So 5 hours and 20 minutes shared by 3 becomes 2 hours
+     * and 7 minutes.
+     *
+     * Use shares() when you want a fast and approximated calculation that does not cascade units.
+     *
+     * For a precise and cascaded calculation,
+     *
+     * @see divide()
+     *
+     * @param float|int $divider
+     *
+     * @return $this
+     */
+    public function shares($divider)
+    {
+        return $this->times(1 / $divider);
+    }
+
+    protected function copyProperties(self $interval, $ignoreSign = false)
+    {
+        $this->years = $interval->years;
+        $this->months = $interval->months;
+        $this->dayz = $interval->dayz;
+        $this->hours = $interval->hours;
+        $this->minutes = $interval->minutes;
+        $this->seconds = $interval->seconds;
+        $this->microseconds = $interval->microseconds;
+
+        if (!$ignoreSign) {
+            $this->invert = $interval->invert;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Multiply and cascade current instance by a given factor.
+     *
+     * @param float|int $factor
+     *
+     * @return $this
+     */
+    public function multiply($factor)
+    {
+        if ($factor < 0) {
+            $this->invert = $this->invert ? 0 : 1;
+            $factor = -$factor;
+        }
+
+        $yearPart = (int) floor($this->years * $factor); // Split calculation to prevent imprecision
+
+        if ($yearPart) {
+            $this->years -= $yearPart / $factor;
+        }
+
+        return $this->copyProperties(
+            static::create($yearPart)
+                ->microseconds(abs($this->totalMicroseconds) * $factor)
+                ->cascade(),
+            true
+        );
+    }
+
+    /**
+     * Divide and cascade current instance by a given divider.
+     *
+     * @param float|int $divider
+     *
+     * @return $this
+     */
+    public function divide($divider)
+    {
+        return $this->multiply(1 / $divider);
+    }
+
+    /**
+     * Get the interval_spec string of a date interval.
+     *
+     * @param DateInterval $interval
+     *
+     * @return string
+     */
+    public static function getDateIntervalSpec(DateInterval $interval, bool $microseconds = false)
+    {
+        $date = array_filter([
+            static::PERIOD_YEARS => abs($interval->y),
+            static::PERIOD_MONTHS => abs($interval->m),
+            static::PERIOD_DAYS => abs($interval->d),
+        ]);
+
+        $seconds = abs($interval->s);
+        if ($microseconds && $interval->f > 0) {
+            $seconds = sprintf('%d.%06d', $seconds, abs($interval->f) * 1000000);
+        }
+
+        $time = array_filter([
+            static::PERIOD_HOURS => abs($interval->h),
+            static::PERIOD_MINUTES => abs($interval->i),
+            static::PERIOD_SECONDS => $seconds,
+        ]);
+
+        $specString = static::PERIOD_PREFIX;
+
+        foreach ($date as $key => $value) {
+            $specString .= $value.$key;
+        }
+
+        if (\count($time) > 0) {
+            $specString .= static::PERIOD_TIME_PREFIX;
+            foreach ($time as $key => $value) {
+                $specString .= $value.$key;
+            }
+        }
+
+        return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString;
+    }
+
+    /**
+     * Get the interval_spec string.
+     *
+     * @return string
+     */
+    public function spec(bool $microseconds = false)
+    {
+        return static::getDateIntervalSpec($this, $microseconds);
+    }
+
+    /**
+     * Comparing 2 date intervals.
+     *
+     * @param DateInterval $first
+     * @param DateInterval $second
+     *
+     * @return int
+     */
+    public static function compareDateIntervals(DateInterval $first, DateInterval $second)
+    {
+        $current = Carbon::now();
+        $passed = $current->avoidMutation()->add($second);
+        $current->add($first);
+
+        if ($current < $passed) {
+            return -1;
+        }
+        if ($current > $passed) {
+            return 1;
+        }
+
+        return 0;
+    }
+
+    /**
+     * Comparing with passed interval.
+     *
+     * @param DateInterval $interval
+     *
+     * @return int
+     */
+    public function compare(DateInterval $interval)
+    {
+        return static::compareDateIntervals($this, $interval);
+    }
+
+    private function invertCascade(array $values)
+    {
+        return $this->set(array_map(function ($value) {
+            return -$value;
+        }, $values))->doCascade(true)->invert();
+    }
+
+    private function doCascade(bool $deep)
+    {
+        $originalData = $this->toArray();
+        $originalData['milliseconds'] = (int) ($originalData['microseconds'] / static::getMicrosecondsPerMillisecond());
+        $originalData['microseconds'] = $originalData['microseconds'] % static::getMicrosecondsPerMillisecond();
+        $originalData['weeks'] = (int) ($this->d / static::getDaysPerWeek());
+        $originalData['daysExcludeWeeks'] = fmod($this->d, static::getDaysPerWeek());
+        unset($originalData['days']);
+        $newData = $originalData;
+        $previous = [];
+
+        foreach (self::getFlipCascadeFactors() as $source => [$target, $factor]) {
+            foreach (['source', 'target'] as $key) {
+                if ($$key === 'dayz') {
+                    $$key = 'daysExcludeWeeks';
+                }
+            }
+
+            $value = $newData[$source];
+            $modulo = fmod($factor + fmod($value, $factor), $factor);
+            $newData[$source] = $modulo;
+            $newData[$target] += ($value - $modulo) / $factor;
+
+            $decimalPart = fmod($newData[$source], 1);
+
+            if ($decimalPart !== 0.0) {
+                $unit = $source;
+
+                foreach ($previous as [$subUnit, $subFactor]) {
+                    $newData[$unit] -= $decimalPart;
+                    $newData[$subUnit] += $decimalPart * $subFactor;
+                    $decimalPart = fmod($newData[$subUnit], 1);
+
+                    if ($decimalPart === 0.0) {
+                        break;
+                    }
+
+                    $unit = $subUnit;
+                }
+            }
+
+            array_unshift($previous, [$source, $factor]);
+        }
+
+        $positive = null;
+
+        if (!$deep) {
+            foreach ($newData as $value) {
+                if ($value) {
+                    if ($positive === null) {
+                        $positive = ($value > 0);
+
+                        continue;
+                    }
+
+                    if (($value > 0) !== $positive) {
+                        return $this->invertCascade($originalData)
+                            ->solveNegativeInterval();
+                    }
+                }
+            }
+        }
+
+        return $this->set($newData)
+            ->solveNegativeInterval();
+    }
+
+    /**
+     * Convert overflowed values into bigger units.
+     *
+     * @return $this
+     */
+    public function cascade()
+    {
+        return $this->doCascade(false);
+    }
+
+    public function hasNegativeValues(): bool
+    {
+        foreach ($this->toArray() as $value) {
+            if ($value < 0) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public function hasPositiveValues(): bool
+    {
+        foreach ($this->toArray() as $value) {
+            if ($value > 0) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Get amount of given unit equivalent to the interval.
+     *
+     * @param string $unit
+     *
+     * @throws UnknownUnitException|UnitNotConfiguredException
+     *
+     * @return float
+     */
+    public function total($unit)
+    {
+        $realUnit = $unit = strtolower($unit);
+
+        if (\in_array($unit, ['days', 'weeks'])) {
+            $realUnit = 'dayz';
+        } elseif (!\in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) {
+            throw new UnknownUnitException($unit);
+        }
+
+        $result = 0;
+        $cumulativeFactor = 0;
+        $unitFound = false;
+        $factors = self::getFlipCascadeFactors();
+        $daysPerWeek = (int) static::getDaysPerWeek();
+
+        $values = [
+            'years' => $this->years,
+            'months' => $this->months,
+            'weeks' => (int) ($this->d / $daysPerWeek),
+            'dayz' => fmod($this->d, $daysPerWeek),
+            'hours' => $this->hours,
+            'minutes' => $this->minutes,
+            'seconds' => $this->seconds,
+            'milliseconds' => (int) ($this->microseconds / Carbon::MICROSECONDS_PER_MILLISECOND),
+            'microseconds' => $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND,
+        ];
+
+        if (isset($factors['dayz']) && $factors['dayz'][0] !== 'weeks') {
+            $values['dayz'] += $values['weeks'] * $daysPerWeek;
+            $values['weeks'] = 0;
+        }
+
+        foreach ($factors as $source => [$target, $factor]) {
+            if ($source === $realUnit) {
+                $unitFound = true;
+                $value = $values[$source];
+                $result += $value;
+                $cumulativeFactor = 1;
+            }
+
+            if ($factor === false) {
+                if ($unitFound) {
+                    break;
+                }
+
+                $result = 0;
+                $cumulativeFactor = 0;
+
+                continue;
+            }
+
+            if ($target === $realUnit) {
+                $unitFound = true;
+            }
+
+            if ($cumulativeFactor) {
+                $cumulativeFactor *= $factor;
+                $result += $values[$target] * $cumulativeFactor;
+
+                continue;
+            }
+
+            $value = $values[$source];
+
+            $result = ($result + $value) / $factor;
+        }
+
+        if (isset($target) && !$cumulativeFactor) {
+            $result += $values[$target];
+        }
+
+        if (!$unitFound) {
+            throw new UnitNotConfiguredException($unit);
+        }
+
+        if ($this->invert) {
+            $result *= -1;
+        }
+
+        if ($unit === 'weeks') {
+            $result /= $daysPerWeek;
+        }
+
+        // Cast as int numbers with no decimal part
+        return fmod($result, 1) === 0.0 ? (int) $result : $result;
+    }
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see equalTo()
+     *
+     * @return bool
+     */
+    public function eq($interval): bool
+    {
+        return $this->equalTo($interval);
+    }
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function equalTo($interval): bool
+    {
+        $interval = $this->resolveInterval($interval);
+
+        return $interval !== null && $this->totalMicroseconds === $interval->totalMicroseconds;
+    }
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see notEqualTo()
+     *
+     * @return bool
+     */
+    public function ne($interval): bool
+    {
+        return $this->notEqualTo($interval);
+    }
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function notEqualTo($interval): bool
+    {
+        return !$this->eq($interval);
+    }
+
+    /**
+     * Determines if the instance is greater (longer) than another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see greaterThan()
+     *
+     * @return bool
+     */
+    public function gt($interval): bool
+    {
+        return $this->greaterThan($interval);
+    }
+
+    /**
+     * Determines if the instance is greater (longer) than another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function greaterThan($interval): bool
+    {
+        $interval = $this->resolveInterval($interval);
+
+        return $interval === null || $this->totalMicroseconds > $interval->totalMicroseconds;
+    }
+
+    /**
+     * Determines if the instance is greater (longer) than or equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see greaterThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function gte($interval): bool
+    {
+        return $this->greaterThanOrEqualTo($interval);
+    }
+
+    /**
+     * Determines if the instance is greater (longer) than or equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function greaterThanOrEqualTo($interval): bool
+    {
+        return $this->greaterThan($interval) || $this->equalTo($interval);
+    }
+
+    /**
+     * Determines if the instance is less (shorter) than another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see lessThan()
+     *
+     * @return bool
+     */
+    public function lt($interval): bool
+    {
+        return $this->lessThan($interval);
+    }
+
+    /**
+     * Determines if the instance is less (shorter) than another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function lessThan($interval): bool
+    {
+        $interval = $this->resolveInterval($interval);
+
+        return $interval !== null && $this->totalMicroseconds < $interval->totalMicroseconds;
+    }
+
+    /**
+     * Determines if the instance is less (shorter) than or equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @see lessThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function lte($interval): bool
+    {
+        return $this->lessThanOrEqualTo($interval);
+    }
+
+    /**
+     * Determines if the instance is less (shorter) than or equal to another
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval
+     *
+     * @return bool
+     */
+    public function lessThanOrEqualTo($interval): bool
+    {
+        return $this->lessThan($interval) || $this->equalTo($interval);
+    }
+
+    /**
+     * Determines if the instance is between two others.
+     *
+     * The third argument allow you to specify if bounds are included or not (true by default)
+     * but for when you including/excluding bounds may produce different results in your application,
+     * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
+     *
+     * @example
+     * ```
+     * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(3)); // true
+     * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::hours(36)); // false
+     * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2)); // true
+     * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2), false); // false
+     * ```
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval1
+     * @param CarbonInterval|DateInterval|mixed $interval2
+     * @param bool                              $equal     Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function between($interval1, $interval2, $equal = true): bool
+    {
+        return $equal
+            ? $this->greaterThanOrEqualTo($interval1) && $this->lessThanOrEqualTo($interval2)
+            : $this->greaterThan($interval1) && $this->lessThan($interval2);
+    }
+
+    /**
+     * Determines if the instance is between two others, bounds excluded.
+     *
+     * @example
+     * ```
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // true
+     * ```
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval1
+     * @param CarbonInterval|DateInterval|mixed $interval2
+     *
+     * @return bool
+     */
+    public function betweenIncluded($interval1, $interval2): bool
+    {
+        return $this->between($interval1, $interval2, true);
+    }
+
+    /**
+     * Determines if the instance is between two others, bounds excluded.
+     *
+     * @example
+     * ```
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false
+     * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // false
+     * ```
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval1
+     * @param CarbonInterval|DateInterval|mixed $interval2
+     *
+     * @return bool
+     */
+    public function betweenExcluded($interval1, $interval2): bool
+    {
+        return $this->between($interval1, $interval2, false);
+    }
+
+    /**
+     * Determines if the instance is between two others
+     *
+     * @example
+     * ```
+     * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(3)); // true
+     * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::hours(36)); // false
+     * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2)); // true
+     * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2), false); // false
+     * ```
+     *
+     * @param CarbonInterval|DateInterval|mixed $interval1
+     * @param CarbonInterval|DateInterval|mixed $interval2
+     * @param bool                              $equal     Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function isBetween($interval1, $interval2, $equal = true): bool
+    {
+        return $this->between($interval1, $interval2, $equal);
+    }
+
+    /**
+     * Round the current instance at the given unit with given precision if specified and the given function.
+     *
+     * @param string                             $unit
+     * @param float|int|string|DateInterval|null $precision
+     * @param string                             $function
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function roundUnit($unit, $precision = 1, $function = 'round')
+    {
+        $base = CarbonImmutable::parse('2000-01-01 00:00:00', 'UTC')
+            ->roundUnit($unit, $precision, $function);
+        $next = $base->add($this);
+        $inverted = $next < $base;
+
+        if ($inverted) {
+            $next = $base->sub($this);
+        }
+
+        $this->copyProperties(
+            $next
+                ->roundUnit($unit, $precision, $function)
+                ->diffAsCarbonInterval($base)
+        );
+
+        return $this->invert($inverted);
+    }
+
+    /**
+     * Truncate the current instance at the given unit with given precision if specified.
+     *
+     * @param string                             $unit
+     * @param float|int|string|DateInterval|null $precision
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function floorUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance at the given unit with given precision if specified.
+     *
+     * @param string                             $unit
+     * @param float|int|string|DateInterval|null $precision
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function ceilUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'ceil');
+    }
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|DateInterval|null $precision
+     * @param string                             $function
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function round($precision = 1, $function = 'round')
+    {
+        return $this->roundWith($precision, $function);
+    }
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|DateInterval|null $precision
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function floor($precision = 1)
+    {
+        return $this->round($precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance second with given precision if specified.
+     *
+     * @param float|int|string|DateInterval|null $precision
+     *
+     * @throws Exception
+     *
+     * @return $this
+     */
+    public function ceil($precision = 1)
+    {
+        return $this->round($precision, 'ceil');
+    }
+
+    private function needsDeclension(string $mode, int $index, int $parts): bool
+    {
+        switch ($mode) {
+            case 'last':
+                return $index === $parts - 1;
+            default:
+                return true;
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
new file mode 100644
index 00000000..dbf5eb1b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php
@@ -0,0 +1,2653 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Exceptions\EndLessPeriodException;
+use Carbon\Exceptions\InvalidCastException;
+use Carbon\Exceptions\InvalidIntervalException;
+use Carbon\Exceptions\InvalidPeriodDateException;
+use Carbon\Exceptions\InvalidPeriodParameterException;
+use Carbon\Exceptions\NotACarbonClassException;
+use Carbon\Exceptions\NotAPeriodException;
+use Carbon\Exceptions\UnknownGetterException;
+use Carbon\Exceptions\UnknownMethodException;
+use Carbon\Exceptions\UnreachableException;
+use Carbon\Traits\IntervalRounding;
+use Carbon\Traits\Mixin;
+use Carbon\Traits\Options;
+use Carbon\Traits\ToStringFormat;
+use Closure;
+use Countable;
+use DateInterval;
+use DatePeriod;
+use DateTime;
+use DateTimeImmutable;
+use DateTimeInterface;
+use DateTimeZone;
+use InvalidArgumentException;
+use Iterator;
+use JsonSerializable;
+use ReflectionException;
+use ReturnTypeWillChange;
+use RuntimeException;
+
+/**
+ * Substitution of DatePeriod with some modifications and many more features.
+ *
+ * @property-read int|float $recurrences number of recurrences (if end not set).
+ * @property-read bool $include_start_date rather the start date is included in the iteration.
+ * @property-read bool $include_end_date rather the end date is included in the iteration (if recurrences not set).
+ * @property-read CarbonInterface $start Period start date.
+ * @property-read CarbonInterface $current Current date from the iteration.
+ * @property-read CarbonInterface $end Period end date.
+ * @property-read CarbonInterval $interval Underlying date interval instance. Always present, one day by default.
+ *
+ * @method static CarbonPeriod start($date, $inclusive = null) Create instance specifying start date or modify the start date if called on an instance.
+ * @method static CarbonPeriod since($date, $inclusive = null) Alias for start().
+ * @method static CarbonPeriod sinceNow($inclusive = null) Create instance with start date set to now or set the start date to now if called on an instance.
+ * @method static CarbonPeriod end($date = null, $inclusive = null) Create instance specifying end date or modify the end date if called on an instance.
+ * @method static CarbonPeriod until($date = null, $inclusive = null) Alias for end().
+ * @method static CarbonPeriod untilNow($inclusive = null) Create instance with end date set to now or set the end date to now if called on an instance.
+ * @method static CarbonPeriod dates($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance.
+ * @method static CarbonPeriod between($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance.
+ * @method static CarbonPeriod recurrences($recurrences = null) Create instance with maximum number of recurrences or modify the number of recurrences if called on an instance.
+ * @method static CarbonPeriod times($recurrences = null) Alias for recurrences().
+ * @method static CarbonPeriod options($options = null) Create instance with options or modify the options if called on an instance.
+ * @method static CarbonPeriod toggle($options, $state = null) Create instance with options toggled on or off, or toggle options if called on an instance.
+ * @method static CarbonPeriod filter($callback, $name = null) Create instance with filter added to the stack or append a filter if called on an instance.
+ * @method static CarbonPeriod push($callback, $name = null) Alias for filter().
+ * @method static CarbonPeriod prepend($callback, $name = null) Create instance with filter prepended to the stack or prepend a filter if called on an instance.
+ * @method static CarbonPeriod filters(array $filters = []) Create instance with filters stack or replace the whole filters stack if called on an instance.
+ * @method static CarbonPeriod interval($interval) Create instance with given date interval or modify the interval if called on an instance.
+ * @method static CarbonPeriod each($interval) Create instance with given date interval or modify the interval if called on an instance.
+ * @method static CarbonPeriod every($interval) Create instance with given date interval or modify the interval if called on an instance.
+ * @method static CarbonPeriod step($interval) Create instance with given date interval or modify the interval if called on an instance.
+ * @method static CarbonPeriod stepBy($interval) Create instance with given date interval or modify the interval if called on an instance.
+ * @method static CarbonPeriod invert() Create instance with inverted date interval or invert the interval if called on an instance.
+ * @method static CarbonPeriod years($years = 1) Create instance specifying a number of years for date interval or replace the interval by the given a number of years if called on an instance.
+ * @method static CarbonPeriod year($years = 1) Alias for years().
+ * @method static CarbonPeriod months($months = 1) Create instance specifying a number of months for date interval or replace the interval by the given a number of months if called on an instance.
+ * @method static CarbonPeriod month($months = 1) Alias for months().
+ * @method static CarbonPeriod weeks($weeks = 1) Create instance specifying a number of weeks for date interval or replace the interval by the given a number of weeks if called on an instance.
+ * @method static CarbonPeriod week($weeks = 1) Alias for weeks().
+ * @method static CarbonPeriod days($days = 1) Create instance specifying a number of days for date interval or replace the interval by the given a number of days if called on an instance.
+ * @method static CarbonPeriod dayz($days = 1) Alias for days().
+ * @method static CarbonPeriod day($days = 1) Alias for days().
+ * @method static CarbonPeriod hours($hours = 1) Create instance specifying a number of hours for date interval or replace the interval by the given a number of hours if called on an instance.
+ * @method static CarbonPeriod hour($hours = 1) Alias for hours().
+ * @method static CarbonPeriod minutes($minutes = 1) Create instance specifying a number of minutes for date interval or replace the interval by the given a number of minutes if called on an instance.
+ * @method static CarbonPeriod minute($minutes = 1) Alias for minutes().
+ * @method static CarbonPeriod seconds($seconds = 1) Create instance specifying a number of seconds for date interval or replace the interval by the given a number of seconds if called on an instance.
+ * @method static CarbonPeriod second($seconds = 1) Alias for seconds().
+ * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
+ * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function.
+ * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision.
+ * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision.
+ * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision.
+ * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision.
+ * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
+ * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function.
+ * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision.
+ * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision.
+ * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision.
+ * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision.
+ * @method $this roundWeek(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this roundWeeks(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this floorWeek(float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this floorWeeks(float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this ceilWeek(float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this ceilWeeks(float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function.
+ * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision.
+ * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision.
+ * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
+ * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function.
+ * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision.
+ * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision.
+ * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision.
+ * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision.
+ * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
+ * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function.
+ * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision.
+ * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision.
+ * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision.
+ * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision.
+ * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
+ * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function.
+ * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision.
+ * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision.
+ * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision.
+ * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision.
+ * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
+ * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function.
+ * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision.
+ * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision.
+ * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision.
+ * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision.
+ * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
+ * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function.
+ * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision.
+ * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision.
+ * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision.
+ * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision.
+ * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
+ * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function.
+ * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision.
+ * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision.
+ * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision.
+ * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision.
+ * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
+ * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function.
+ * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision.
+ * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision.
+ * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision.
+ * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision.
+ * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
+ * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function.
+ * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision.
+ * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision.
+ * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision.
+ * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision.
+ * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
+ * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function.
+ * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision.
+ * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision.
+ * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision.
+ * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision.
+ *
+ * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
+ */
+class CarbonPeriod implements Iterator, Countable, JsonSerializable
+{
+    use IntervalRounding;
+    use Mixin {
+        Mixin::mixin as baseMixin;
+    }
+    use Options;
+    use ToStringFormat;
+
+    /**
+     * Built-in filter for limit by recurrences.
+     *
+     * @var callable
+     */
+    public const RECURRENCES_FILTER = [self::class, 'filterRecurrences'];
+
+    /**
+     * Built-in filter for limit to an end.
+     *
+     * @var callable
+     */
+    public const END_DATE_FILTER = [self::class, 'filterEndDate'];
+
+    /**
+     * Special value which can be returned by filters to end iteration. Also a filter.
+     *
+     * @var callable
+     */
+    public const END_ITERATION = [self::class, 'endIteration'];
+
+    /**
+     * Exclude start date from iteration.
+     *
+     * @var int
+     */
+    public const EXCLUDE_START_DATE = 1;
+
+    /**
+     * Exclude end date from iteration.
+     *
+     * @var int
+     */
+    public const EXCLUDE_END_DATE = 2;
+
+    /**
+     * Yield CarbonImmutable instances.
+     *
+     * @var int
+     */
+    public const IMMUTABLE = 4;
+
+    /**
+     * Number of maximum attempts before giving up on finding next valid date.
+     *
+     * @var int
+     */
+    public const NEXT_MAX_ATTEMPTS = 1000;
+
+    /**
+     * Number of maximum attempts before giving up on finding end date.
+     *
+     * @var int
+     */
+    public const END_MAX_ATTEMPTS = 10000;
+
+    /**
+     * The registered macros.
+     *
+     * @var array
+     */
+    protected static $macros = [];
+
+    /**
+     * Date class of iteration items.
+     *
+     * @var string
+     */
+    protected $dateClass = Carbon::class;
+
+    /**
+     * Underlying date interval instance. Always present, one day by default.
+     *
+     * @var CarbonInterval
+     */
+    protected $dateInterval;
+
+    /**
+     * Whether current date interval was set by default.
+     *
+     * @var bool
+     */
+    protected $isDefaultInterval;
+
+    /**
+     * The filters stack.
+     *
+     * @var array
+     */
+    protected $filters = [];
+
+    /**
+     * Period start date. Applied on rewind. Always present, now by default.
+     *
+     * @var CarbonInterface
+     */
+    protected $startDate;
+
+    /**
+     * Period end date. For inverted interval should be before the start date. Applied via a filter.
+     *
+     * @var CarbonInterface|null
+     */
+    protected $endDate;
+
+    /**
+     * Limit for number of recurrences. Applied via a filter.
+     *
+     * @var int|null
+     */
+    protected $recurrences;
+
+    /**
+     * Iteration options.
+     *
+     * @var int
+     */
+    protected $options;
+
+    /**
+     * Index of current date. Always sequential, even if some dates are skipped by filters.
+     * Equal to null only before the first iteration.
+     *
+     * @var int
+     */
+    protected $key;
+
+    /**
+     * Current date. May temporarily hold unaccepted value when looking for a next valid date.
+     * Equal to null only before the first iteration.
+     *
+     * @var CarbonInterface
+     */
+    protected $current;
+
+    /**
+     * Timezone of current date. Taken from the start date.
+     *
+     * @var \DateTimeZone|null
+     */
+    protected $timezone;
+
+    /**
+     * The cached validation result for current date.
+     *
+     * @var bool|string|null
+     */
+    protected $validationResult;
+
+    /**
+     * Timezone handler for settings() method.
+     *
+     * @var mixed
+     */
+    protected $tzName;
+
+    /**
+     * Make a CarbonPeriod instance from given variable if possible.
+     *
+     * @param mixed $var
+     *
+     * @return static|null
+     */
+    public static function make($var)
+    {
+        try {
+            return static::instance($var);
+        } catch (NotAPeriodException $e) {
+            return static::create($var);
+        }
+    }
+
+    /**
+     * Create a new instance from a DatePeriod or CarbonPeriod object.
+     *
+     * @param CarbonPeriod|DatePeriod $period
+     *
+     * @return static
+     */
+    public static function instance($period)
+    {
+        if ($period instanceof static) {
+            return $period->copy();
+        }
+
+        if ($period instanceof self) {
+            return new static(
+                $period->getStartDate(),
+                $period->getEndDate() ?: $period->getRecurrences(),
+                $period->getDateInterval(),
+                $period->getOptions()
+            );
+        }
+
+        if ($period instanceof DatePeriod) {
+            return new static(
+                $period->start,
+                $period->end ?: ($period->recurrences - 1),
+                $period->interval,
+                $period->include_start_date ? 0 : static::EXCLUDE_START_DATE
+            );
+        }
+
+        $class = static::class;
+        $type = \gettype($period);
+
+        throw new NotAPeriodException(
+            'Argument 1 passed to '.$class.'::'.__METHOD__.'() '.
+            'must be an instance of DatePeriod or '.$class.', '.
+            ($type === 'object' ? 'instance of '.\get_class($period) : $type).' given.'
+        );
+    }
+
+    /**
+     * Create a new instance.
+     *
+     * @return static
+     */
+    public static function create(...$params)
+    {
+        return static::createFromArray($params);
+    }
+
+    /**
+     * Create a new instance from an array of parameters.
+     *
+     * @param array $params
+     *
+     * @return static
+     */
+    public static function createFromArray(array $params)
+    {
+        return new static(...$params);
+    }
+
+    /**
+     * Create CarbonPeriod from ISO 8601 string.
+     *
+     * @param string   $iso
+     * @param int|null $options
+     *
+     * @return static
+     */
+    public static function createFromIso($iso, $options = null)
+    {
+        $params = static::parseIso8601($iso);
+
+        $instance = static::createFromArray($params);
+
+        if ($options !== null) {
+            $instance->setOptions($options);
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Return whether given interval contains non zero value of any time unit.
+     *
+     * @param \DateInterval $interval
+     *
+     * @return bool
+     */
+    protected static function intervalHasTime(DateInterval $interval)
+    {
+        return $interval->h || $interval->i || $interval->s || $interval->f;
+    }
+
+    /**
+     * Return whether given variable is an ISO 8601 specification.
+     *
+     * Note: Check is very basic, as actual validation will be done later when parsing.
+     * We just want to ensure that variable is not any other type of a valid parameter.
+     *
+     * @param mixed $var
+     *
+     * @return bool
+     */
+    protected static function isIso8601($var)
+    {
+        if (!\is_string($var)) {
+            return false;
+        }
+
+        // Match slash but not within a timezone name.
+        $part = '[a-z]+(?:[_-][a-z]+)*';
+
+        preg_match("#\b$part/$part\b|(/)#i", $var, $match);
+
+        return isset($match[1]);
+    }
+
+    /**
+     * Parse given ISO 8601 string into an array of arguments.
+     *
+     * @SuppressWarnings(PHPMD.ElseExpression)
+     *
+     * @param string $iso
+     *
+     * @return array
+     */
+    protected static function parseIso8601($iso)
+    {
+        $result = [];
+
+        $interval = null;
+        $start = null;
+        $end = null;
+
+        foreach (explode('/', $iso) as $key => $part) {
+            if ($key === 0 && preg_match('/^R(\d*|INF)$/', $part, $match)) {
+                $parsed = \strlen($match[1]) ? (($match[1] !== 'INF') ? (int) $match[1] : INF) : null;
+            } elseif ($interval === null && $parsed = CarbonInterval::make($part)) {
+                $interval = $part;
+            } elseif ($start === null && $parsed = Carbon::make($part)) {
+                $start = $part;
+            } elseif ($end === null && $parsed = Carbon::make(static::addMissingParts($start ?? '', $part))) {
+                $end = $part;
+            } else {
+                throw new InvalidPeriodParameterException("Invalid ISO 8601 specification: $iso.");
+            }
+
+            $result[] = $parsed;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Add missing parts of the target date from the soure date.
+     *
+     * @param string $source
+     * @param string $target
+     *
+     * @return string
+     */
+    protected static function addMissingParts($source, $target)
+    {
+        $pattern = '/'.preg_replace('/\d+/', '[0-9]+', preg_quote($target, '/')).'$/';
+
+        $result = preg_replace($pattern, $target, $source, 1, $count);
+
+        return $count ? $result : $target;
+    }
+
+    /**
+     * Register a custom macro.
+     *
+     * @example
+     * ```
+     * CarbonPeriod::macro('middle', function () {
+     *   return $this->getStartDate()->average($this->getEndDate());
+     * });
+     * echo CarbonPeriod::since('2011-05-12')->until('2011-06-03')->middle();
+     * ```
+     *
+     * @param string          $name
+     * @param object|callable $macro
+     *
+     * @return void
+     */
+    public static function macro($name, $macro)
+    {
+        static::$macros[$name] = $macro;
+    }
+
+    /**
+     * Register macros from a mixin object.
+     *
+     * @example
+     * ```
+     * CarbonPeriod::mixin(new class {
+     *   public function addDays() {
+     *     return function ($count = 1) {
+     *       return $this->setStartDate(
+     *         $this->getStartDate()->addDays($count)
+     *       )->setEndDate(
+     *         $this->getEndDate()->addDays($count)
+     *       );
+     *     };
+     *   }
+     *   public function subDays() {
+     *     return function ($count = 1) {
+     *       return $this->setStartDate(
+     *         $this->getStartDate()->subDays($count)
+     *       )->setEndDate(
+     *         $this->getEndDate()->subDays($count)
+     *       );
+     *     };
+     *   }
+     * });
+     * echo CarbonPeriod::create('2000-01-01', '2000-02-01')->addDays(5)->subDays(3);
+     * ```
+     *
+     * @param object|string $mixin
+     *
+     * @throws ReflectionException
+     *
+     * @return void
+     */
+    public static function mixin($mixin)
+    {
+        static::baseMixin($mixin);
+    }
+
+    /**
+     * Check if macro is registered.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public static function hasMacro($name)
+    {
+        return isset(static::$macros[$name]);
+    }
+
+    /**
+     * Provide static proxy for instance aliases.
+     *
+     * @param string $method
+     * @param array  $parameters
+     *
+     * @return mixed
+     */
+    public static function __callStatic($method, $parameters)
+    {
+        $date = new static();
+
+        if (static::hasMacro($method)) {
+            return static::bindMacroContext(null, function () use (&$method, &$parameters, &$date) {
+                return $date->callMacro($method, $parameters);
+            });
+        }
+
+        return $date->$method(...$parameters);
+    }
+
+    /**
+     * CarbonPeriod constructor.
+     *
+     * @SuppressWarnings(PHPMD.ElseExpression)
+     *
+     * @throws InvalidArgumentException
+     */
+    public function __construct(...$arguments)
+    {
+        // Parse and assign arguments one by one. First argument may be an ISO 8601 spec,
+        // which will be first parsed into parts and then processed the same way.
+
+        $argumentsCount = \count($arguments);
+
+        if ($argumentsCount && static::isIso8601($iso = $arguments[0])) {
+            array_splice($arguments, 0, 1, static::parseIso8601($iso));
+        }
+
+        if ($argumentsCount === 1) {
+            if ($arguments[0] instanceof DatePeriod) {
+                $arguments = [
+                    $arguments[0]->start,
+                    $arguments[0]->end ?: ($arguments[0]->recurrences - 1),
+                    $arguments[0]->interval,
+                    $arguments[0]->include_start_date ? 0 : static::EXCLUDE_START_DATE,
+                ];
+            } elseif ($arguments[0] instanceof self) {
+                $arguments = [
+                    $arguments[0]->getStartDate(),
+                    $arguments[0]->getEndDate() ?: $arguments[0]->getRecurrences(),
+                    $arguments[0]->getDateInterval(),
+                    $arguments[0]->getOptions(),
+                ];
+            }
+        }
+
+        foreach ($arguments as $argument) {
+            $parsedDate = null;
+
+            if ($argument instanceof DateTimeZone) {
+                $this->setTimezone($argument);
+            } elseif ($this->dateInterval === null &&
+                (
+                    (\is_string($argument) && preg_match(
+                        '/^(-?\d(\d(?![\/-])|[^\d\/-]([\/-])?)*|P[T\d].*|(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+)$/i',
+                        $argument
+                    )) ||
+                    $argument instanceof DateInterval ||
+                    $argument instanceof Closure
+                ) &&
+                $parsedInterval = @CarbonInterval::make($argument)
+            ) {
+                $this->setDateInterval($parsedInterval);
+            } elseif ($this->startDate === null && $parsedDate = $this->makeDateTime($argument)) {
+                $this->setStartDate($parsedDate);
+            } elseif ($this->endDate === null && ($parsedDate = $parsedDate ?? $this->makeDateTime($argument))) {
+                $this->setEndDate($parsedDate);
+            } elseif ($this->recurrences === null && $this->endDate === null && is_numeric($argument)) {
+                $this->setRecurrences($argument);
+            } elseif ($this->options === null && (\is_int($argument) || $argument === null)) {
+                $this->setOptions($argument);
+            } else {
+                throw new InvalidPeriodParameterException('Invalid constructor parameters.');
+            }
+        }
+
+        if ($this->startDate === null) {
+            $this->setStartDate(Carbon::now());
+        }
+
+        if ($this->dateInterval === null) {
+            $this->setDateInterval(CarbonInterval::day());
+
+            $this->isDefaultInterval = true;
+        }
+
+        if ($this->options === null) {
+            $this->setOptions(0);
+        }
+    }
+
+    /**
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function copy()
+    {
+        return clone $this;
+    }
+
+    /**
+     * Get the getter for a property allowing both `DatePeriod` snakeCase and camelCase names.
+     *
+     * @param string $name
+     *
+     * @return callable|null
+     */
+    protected function getGetter(string $name)
+    {
+        switch (strtolower(preg_replace('/[A-Z]/', '_$0', $name))) {
+            case 'start':
+            case 'start_date':
+                return [$this, 'getStartDate'];
+            case 'end':
+            case 'end_date':
+                return [$this, 'getEndDate'];
+            case 'interval':
+            case 'date_interval':
+                return [$this, 'getDateInterval'];
+            case 'recurrences':
+                return [$this, 'getRecurrences'];
+            case 'include_start_date':
+                return [$this, 'isStartIncluded'];
+            case 'include_end_date':
+                return [$this, 'isEndIncluded'];
+            case 'current':
+                return [$this, 'current'];
+            default:
+                return null;
+        }
+    }
+
+    /**
+     * Get a property allowing both `DatePeriod` snakeCase and camelCase names.
+     *
+     * @param string $name
+     *
+     * @return bool|CarbonInterface|CarbonInterval|int|null
+     */
+    public function get(string $name)
+    {
+        $getter = $this->getGetter($name);
+
+        if ($getter) {
+            return $getter();
+        }
+
+        throw new UnknownGetterException($name);
+    }
+
+    /**
+     * Get a property allowing both `DatePeriod` snakeCase and camelCase names.
+     *
+     * @param string $name
+     *
+     * @return bool|CarbonInterface|CarbonInterval|int|null
+     */
+    public function __get(string $name)
+    {
+        return $this->get($name);
+    }
+
+    /**
+     * Check if an attribute exists on the object
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function __isset(string $name): bool
+    {
+        return $this->getGetter($name) !== null;
+    }
+
+    /**
+     * @alias copy
+     *
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function clone()
+    {
+        return clone $this;
+    }
+
+    /**
+     * Set the iteration item class.
+     *
+     * @param string $dateClass
+     *
+     * @return $this
+     */
+    public function setDateClass(string $dateClass)
+    {
+        if (!is_a($dateClass, CarbonInterface::class, true)) {
+            throw new NotACarbonClassException($dateClass);
+        }
+
+        $this->dateClass = $dateClass;
+
+        if (is_a($dateClass, Carbon::class, true)) {
+            $this->toggleOptions(static::IMMUTABLE, false);
+        } elseif (is_a($dateClass, CarbonImmutable::class, true)) {
+            $this->toggleOptions(static::IMMUTABLE, true);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Returns iteration item date class.
+     *
+     * @return string
+     */
+    public function getDateClass(): string
+    {
+        return $this->dateClass;
+    }
+
+    /**
+     * Change the period date interval.
+     *
+     * @param DateInterval|string $interval
+     *
+     * @throws InvalidIntervalException
+     *
+     * @return $this
+     */
+    public function setDateInterval($interval)
+    {
+        if (!$interval = CarbonInterval::make($interval)) {
+            throw new InvalidIntervalException('Invalid interval.');
+        }
+
+        if ($interval->spec() === 'PT0S' && !$interval->f && !$interval->getStep()) {
+            throw new InvalidIntervalException('Empty interval is not accepted.');
+        }
+
+        $this->dateInterval = $interval;
+
+        $this->isDefaultInterval = false;
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Invert the period date interval.
+     *
+     * @return $this
+     */
+    public function invertDateInterval()
+    {
+        $interval = $this->dateInterval->invert();
+
+        return $this->setDateInterval($interval);
+    }
+
+    /**
+     * Set start and end date.
+     *
+     * @param DateTime|DateTimeInterface|string      $start
+     * @param DateTime|DateTimeInterface|string|null $end
+     *
+     * @return $this
+     */
+    public function setDates($start, $end)
+    {
+        $this->setStartDate($start);
+        $this->setEndDate($end);
+
+        return $this;
+    }
+
+    /**
+     * Change the period options.
+     *
+     * @param int|null $options
+     *
+     * @throws InvalidArgumentException
+     *
+     * @return $this
+     */
+    public function setOptions($options)
+    {
+        if (!\is_int($options) && $options !== null) {
+            throw new InvalidPeriodParameterException('Invalid options.');
+        }
+
+        $this->options = $options ?: 0;
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Get the period options.
+     *
+     * @return int
+     */
+    public function getOptions()
+    {
+        return $this->options;
+    }
+
+    /**
+     * Toggle given options on or off.
+     *
+     * @param int       $options
+     * @param bool|null $state
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return $this
+     */
+    public function toggleOptions($options, $state = null)
+    {
+        if ($state === null) {
+            $state = ($this->options & $options) !== $options;
+        }
+
+        return $this->setOptions(
+            $state ?
+            $this->options | $options :
+            $this->options & ~$options
+        );
+    }
+
+    /**
+     * Toggle EXCLUDE_START_DATE option.
+     *
+     * @param bool $state
+     *
+     * @return $this
+     */
+    public function excludeStartDate($state = true)
+    {
+        return $this->toggleOptions(static::EXCLUDE_START_DATE, $state);
+    }
+
+    /**
+     * Toggle EXCLUDE_END_DATE option.
+     *
+     * @param bool $state
+     *
+     * @return $this
+     */
+    public function excludeEndDate($state = true)
+    {
+        return $this->toggleOptions(static::EXCLUDE_END_DATE, $state);
+    }
+
+    /**
+     * Get the underlying date interval.
+     *
+     * @return CarbonInterval
+     */
+    public function getDateInterval()
+    {
+        return $this->dateInterval->copy();
+    }
+
+    /**
+     * Get start date of the period.
+     *
+     * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
+     *
+     * @return CarbonInterface
+     */
+    public function getStartDate(string $rounding = null)
+    {
+        $date = $this->startDate->avoidMutation();
+
+        return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date;
+    }
+
+    /**
+     * Get end date of the period.
+     *
+     * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
+     *
+     * @return CarbonInterface|null
+     */
+    public function getEndDate(string $rounding = null)
+    {
+        if (!$this->endDate) {
+            return null;
+        }
+
+        $date = $this->endDate->avoidMutation();
+
+        return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date;
+    }
+
+    /**
+     * Get number of recurrences.
+     *
+     * @return int|float|null
+     */
+    public function getRecurrences()
+    {
+        return $this->recurrences;
+    }
+
+    /**
+     * Returns true if the start date should be excluded.
+     *
+     * @return bool
+     */
+    public function isStartExcluded()
+    {
+        return ($this->options & static::EXCLUDE_START_DATE) !== 0;
+    }
+
+    /**
+     * Returns true if the end date should be excluded.
+     *
+     * @return bool
+     */
+    public function isEndExcluded()
+    {
+        return ($this->options & static::EXCLUDE_END_DATE) !== 0;
+    }
+
+    /**
+     * Returns true if the start date should be included.
+     *
+     * @return bool
+     */
+    public function isStartIncluded()
+    {
+        return !$this->isStartExcluded();
+    }
+
+    /**
+     * Returns true if the end date should be included.
+     *
+     * @return bool
+     */
+    public function isEndIncluded()
+    {
+        return !$this->isEndExcluded();
+    }
+
+    /**
+     * Return the start if it's included by option, else return the start + 1 period interval.
+     *
+     * @return CarbonInterface
+     */
+    public function getIncludedStartDate()
+    {
+        $start = $this->getStartDate();
+
+        if ($this->isStartExcluded()) {
+            return $start->add($this->getDateInterval());
+        }
+
+        return $start;
+    }
+
+    /**
+     * Return the end if it's included by option, else return the end - 1 period interval.
+     * Warning: if the period has no fixed end, this method will iterate the period to calculate it.
+     *
+     * @return CarbonInterface
+     */
+    public function getIncludedEndDate()
+    {
+        $end = $this->getEndDate();
+
+        if (!$end) {
+            return $this->calculateEnd();
+        }
+
+        if ($this->isEndExcluded()) {
+            return $end->sub($this->getDateInterval());
+        }
+
+        return $end;
+    }
+
+    /**
+     * Add a filter to the stack.
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     *
+     * @param callable $callback
+     * @param string   $name
+     *
+     * @return $this
+     */
+    public function addFilter($callback, $name = null)
+    {
+        $tuple = $this->createFilterTuple(\func_get_args());
+
+        $this->filters[] = $tuple;
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Prepend a filter to the stack.
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     *
+     * @param callable $callback
+     * @param string   $name
+     *
+     * @return $this
+     */
+    public function prependFilter($callback, $name = null)
+    {
+        $tuple = $this->createFilterTuple(\func_get_args());
+
+        array_unshift($this->filters, $tuple);
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Remove a filter by instance or name.
+     *
+     * @param callable|string $filter
+     *
+     * @return $this
+     */
+    public function removeFilter($filter)
+    {
+        $key = \is_callable($filter) ? 0 : 1;
+
+        $this->filters = array_values(array_filter(
+            $this->filters,
+            function ($tuple) use ($key, $filter) {
+                return $tuple[$key] !== $filter;
+            }
+        ));
+
+        $this->updateInternalState();
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Return whether given instance or name is in the filter stack.
+     *
+     * @param callable|string $filter
+     *
+     * @return bool
+     */
+    public function hasFilter($filter)
+    {
+        $key = \is_callable($filter) ? 0 : 1;
+
+        foreach ($this->filters as $tuple) {
+            if ($tuple[$key] === $filter) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Get filters stack.
+     *
+     * @return array
+     */
+    public function getFilters()
+    {
+        return $this->filters;
+    }
+
+    /**
+     * Set filters stack.
+     *
+     * @param array $filters
+     *
+     * @return $this
+     */
+    public function setFilters(array $filters)
+    {
+        $this->filters = $filters;
+
+        $this->updateInternalState();
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Reset filters stack.
+     *
+     * @return $this
+     */
+    public function resetFilters()
+    {
+        $this->filters = [];
+
+        if ($this->endDate !== null) {
+            $this->filters[] = [static::END_DATE_FILTER, null];
+        }
+
+        if ($this->recurrences !== null) {
+            $this->filters[] = [static::RECURRENCES_FILTER, null];
+        }
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Add a recurrences filter (set maximum number of recurrences).
+     *
+     * @param int|float|null $recurrences
+     *
+     * @throws InvalidArgumentException
+     *
+     * @return $this
+     */
+    public function setRecurrences($recurrences)
+    {
+        if ((!is_numeric($recurrences) && $recurrences !== null) || $recurrences < 0) {
+            throw new InvalidPeriodParameterException('Invalid number of recurrences.');
+        }
+
+        if ($recurrences === null) {
+            return $this->removeFilter(static::RECURRENCES_FILTER);
+        }
+
+        $this->recurrences = $recurrences === INF ? INF : (int) $recurrences;
+
+        if (!$this->hasFilter(static::RECURRENCES_FILTER)) {
+            return $this->addFilter(static::RECURRENCES_FILTER);
+        }
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Change the period start date.
+     *
+     * @param DateTime|DateTimeInterface|string $date
+     * @param bool|null                         $inclusive
+     *
+     * @throws InvalidPeriodDateException
+     *
+     * @return $this
+     */
+    public function setStartDate($date, $inclusive = null)
+    {
+        if (!$this->isInfiniteDate($date) && !($date = ([$this->dateClass, 'make'])($date))) {
+            throw new InvalidPeriodDateException('Invalid start date.');
+        }
+
+        $this->startDate = $date;
+
+        if ($inclusive !== null) {
+            $this->toggleOptions(static::EXCLUDE_START_DATE, !$inclusive);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Change the period end date.
+     *
+     * @param DateTime|DateTimeInterface|string|null $date
+     * @param bool|null                              $inclusive
+     *
+     * @throws \InvalidArgumentException
+     *
+     * @return $this
+     */
+    public function setEndDate($date, $inclusive = null)
+    {
+        if ($date !== null && !$this->isInfiniteDate($date) && !$date = ([$this->dateClass, 'make'])($date)) {
+            throw new InvalidPeriodDateException('Invalid end date.');
+        }
+
+        if (!$date) {
+            return $this->removeFilter(static::END_DATE_FILTER);
+        }
+
+        $this->endDate = $date;
+
+        if ($inclusive !== null) {
+            $this->toggleOptions(static::EXCLUDE_END_DATE, !$inclusive);
+        }
+
+        if (!$this->hasFilter(static::END_DATE_FILTER)) {
+            return $this->addFilter(static::END_DATE_FILTER);
+        }
+
+        $this->handleChangedParameters();
+
+        return $this;
+    }
+
+    /**
+     * Check if the current position is valid.
+     *
+     * @return bool
+     */
+    #[ReturnTypeWillChange]
+    public function valid()
+    {
+        return $this->validateCurrentDate() === true;
+    }
+
+    /**
+     * Return the current key.
+     *
+     * @return int|null
+     */
+    #[ReturnTypeWillChange]
+    public function key()
+    {
+        return $this->valid()
+            ? $this->key
+            : null;
+    }
+
+    /**
+     * Return the current date.
+     *
+     * @return CarbonInterface|null
+     */
+    #[ReturnTypeWillChange]
+    public function current()
+    {
+        return $this->valid()
+            ? $this->prepareForReturn($this->current)
+            : null;
+    }
+
+    /**
+     * Move forward to the next date.
+     *
+     * @throws RuntimeException
+     *
+     * @return void
+     */
+    #[ReturnTypeWillChange]
+    public function next()
+    {
+        if ($this->current === null) {
+            $this->rewind();
+        }
+
+        if ($this->validationResult !== static::END_ITERATION) {
+            $this->key++;
+
+            $this->incrementCurrentDateUntilValid();
+        }
+    }
+
+    /**
+     * Rewind to the start date.
+     *
+     * Iterating over a date in the UTC timezone avoids bug during backward DST change.
+     *
+     * @see https://bugs.php.net/bug.php?id=72255
+     * @see https://bugs.php.net/bug.php?id=74274
+     * @see https://wiki.php.net/rfc/datetime_and_daylight_saving_time
+     *
+     * @throws RuntimeException
+     *
+     * @return void
+     */
+    #[ReturnTypeWillChange]
+    public function rewind()
+    {
+        $this->key = 0;
+        $this->current = ([$this->dateClass, 'make'])($this->startDate);
+        $settings = $this->getSettings();
+
+        if ($this->hasLocalTranslator()) {
+            $settings['locale'] = $this->getTranslatorLocale();
+        }
+
+        $this->current->settings($settings);
+        $this->timezone = static::intervalHasTime($this->dateInterval) ? $this->current->getTimezone() : null;
+
+        if ($this->timezone) {
+            $this->current = $this->current->utc();
+        }
+
+        $this->validationResult = null;
+
+        if ($this->isStartExcluded() || $this->validateCurrentDate() === false) {
+            $this->incrementCurrentDateUntilValid();
+        }
+    }
+
+    /**
+     * Skip iterations and returns iteration state (false if ended, true if still valid).
+     *
+     * @param int $count steps number to skip (1 by default)
+     *
+     * @return bool
+     */
+    public function skip($count = 1)
+    {
+        for ($i = $count; $this->valid() && $i > 0; $i--) {
+            $this->next();
+        }
+
+        return $this->valid();
+    }
+
+    /**
+     * Format the date period as ISO 8601.
+     *
+     * @return string
+     */
+    public function toIso8601String()
+    {
+        $parts = [];
+
+        if ($this->recurrences !== null) {
+            $parts[] = 'R'.$this->recurrences;
+        }
+
+        $parts[] = $this->startDate->toIso8601String();
+
+        $parts[] = $this->dateInterval->spec();
+
+        if ($this->endDate !== null) {
+            $parts[] = $this->endDate->toIso8601String();
+        }
+
+        return implode('/', $parts);
+    }
+
+    /**
+     * Convert the date period into a string.
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        $format = $this->localToStringFormat ?? static::$toStringFormat;
+
+        if ($format instanceof Closure) {
+            return $format($this);
+        }
+
+        $translator = ([$this->dateClass, 'getTranslator'])();
+
+        $parts = [];
+
+        $format = $format ?? (
+            !$this->startDate->isStartOfDay() || ($this->endDate && !$this->endDate->isStartOfDay())
+                ? 'Y-m-d H:i:s'
+                : 'Y-m-d'
+        );
+
+        if ($this->recurrences !== null) {
+            $parts[] = $this->translate('period_recurrences', [], $this->recurrences, $translator);
+        }
+
+        $parts[] = $this->translate('period_interval', [':interval' => $this->dateInterval->forHumans([
+            'join' => true,
+        ])], null, $translator);
+
+        $parts[] = $this->translate('period_start_date', [':date' => $this->startDate->rawFormat($format)], null, $translator);
+
+        if ($this->endDate !== null) {
+            $parts[] = $this->translate('period_end_date', [':date' => $this->endDate->rawFormat($format)], null, $translator);
+        }
+
+        $result = implode(' ', $parts);
+
+        return mb_strtoupper(mb_substr($result, 0, 1)).mb_substr($result, 1);
+    }
+
+    /**
+     * Format the date period as ISO 8601.
+     *
+     * @return string
+     */
+    public function spec()
+    {
+        return $this->toIso8601String();
+    }
+
+    /**
+     * Cast the current instance into the given class.
+     *
+     * @param string $className The $className::instance() method will be called to cast the current object.
+     *
+     * @return DatePeriod
+     */
+    public function cast(string $className)
+    {
+        if (!method_exists($className, 'instance')) {
+            if (is_a($className, DatePeriod::class, true)) {
+                return new $className(
+                    $this->rawDate($this->getStartDate()),
+                    $this->getDateInterval(),
+                    $this->getEndDate() ? $this->rawDate($this->getIncludedEndDate()) : $this->getRecurrences(),
+                    $this->isStartExcluded() ? DatePeriod::EXCLUDE_START_DATE : 0
+                );
+            }
+
+            throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
+        }
+
+        return $className::instance($this);
+    }
+
+    /**
+     * Return native DatePeriod PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(CarbonPeriod::create('2021-01-05', '2021-02-15')->toDatePeriod());
+     * ```
+     *
+     * @return DatePeriod
+     */
+    public function toDatePeriod()
+    {
+        return $this->cast(DatePeriod::class);
+    }
+
+    /**
+     * Return `true` if the period has no custom filter and is guaranteed to be endless.
+     *
+     * Note that we can't check if a period is endless as soon as it has custom filters
+     * because filters can emit `CarbonPeriod::END_ITERATION` to stop the iteration in
+     * a way we can't predict without actually iterating the period.
+     */
+    public function isUnfilteredAndEndLess(): bool
+    {
+        foreach ($this->filters as $filter) {
+            switch ($filter) {
+                case [static::RECURRENCES_FILTER, null]:
+                    if ($this->recurrences !== null && is_finite($this->recurrences)) {
+                        return false;
+                    }
+
+                    break;
+
+                case [static::END_DATE_FILTER, null]:
+                    if ($this->endDate !== null && !$this->endDate->isEndOfTime()) {
+                        return false;
+                    }
+
+                    break;
+
+                default:
+                    return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Convert the date period into an array without changing current iteration state.
+     *
+     * @return CarbonInterface[]
+     */
+    public function toArray()
+    {
+        if ($this->isUnfilteredAndEndLess()) {
+            throw new EndLessPeriodException("Endless period can't be converted to array nor counted.");
+        }
+
+        $state = [
+            $this->key,
+            $this->current ? $this->current->avoidMutation() : null,
+            $this->validationResult,
+        ];
+
+        $result = iterator_to_array($this);
+
+        [$this->key, $this->current, $this->validationResult] = $state;
+
+        return $result;
+    }
+
+    /**
+     * Count dates in the date period.
+     *
+     * @return int
+     */
+    #[ReturnTypeWillChange]
+    public function count()
+    {
+        return \count($this->toArray());
+    }
+
+    /**
+     * Return the first date in the date period.
+     *
+     * @return CarbonInterface|null
+     */
+    public function first()
+    {
+        if ($this->isUnfilteredAndEndLess()) {
+            foreach ($this as $date) {
+                $this->rewind();
+
+                return $date;
+            }
+
+            return null;
+        }
+
+        return ($this->toArray() ?: [])[0] ?? null;
+    }
+
+    /**
+     * Return the last date in the date period.
+     *
+     * @return CarbonInterface|null
+     */
+    public function last()
+    {
+        $array = $this->toArray();
+
+        return $array ? $array[\count($array) - 1] : null;
+    }
+
+    /**
+     * Convert the date period into a string.
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->toString();
+    }
+
+    /**
+     * Add aliases for setters.
+     *
+     * CarbonPeriod::days(3)->hours(5)->invert()
+     *     ->sinceNow()->until('2010-01-10')
+     *     ->filter(...)
+     *     ->count()
+     *
+     * Note: We use magic method to let static and instance aliases with the same names.
+     *
+     * @param string $method
+     * @param array  $parameters
+     *
+     * @return mixed
+     */
+    public function __call($method, $parameters)
+    {
+        if (static::hasMacro($method)) {
+            return static::bindMacroContext($this, function () use (&$method, &$parameters) {
+                return $this->callMacro($method, $parameters);
+            });
+        }
+
+        $roundedValue = $this->callRoundMethod($method, $parameters);
+
+        if ($roundedValue !== null) {
+            return $roundedValue;
+        }
+
+        $first = \count($parameters) >= 1 ? $parameters[0] : null;
+        $second = \count($parameters) >= 2 ? $parameters[1] : null;
+
+        switch ($method) {
+            case 'start':
+            case 'since':
+                return $this->setStartDate($first, $second);
+
+            case 'sinceNow':
+                return $this->setStartDate(new Carbon(), $first);
+
+            case 'end':
+            case 'until':
+                return $this->setEndDate($first, $second);
+
+            case 'untilNow':
+                return $this->setEndDate(new Carbon(), $first);
+
+            case 'dates':
+            case 'between':
+                return $this->setDates($first, $second);
+
+            case 'recurrences':
+            case 'times':
+                return $this->setRecurrences($first);
+
+            case 'options':
+                return $this->setOptions($first);
+
+            case 'toggle':
+                return $this->toggleOptions($first, $second);
+
+            case 'filter':
+            case 'push':
+                return $this->addFilter($first, $second);
+
+            case 'prepend':
+                return $this->prependFilter($first, $second);
+
+            case 'filters':
+                return $this->setFilters($first ?: []);
+
+            case 'interval':
+            case 'each':
+            case 'every':
+            case 'step':
+            case 'stepBy':
+                return $this->setDateInterval($first);
+
+            case 'invert':
+                return $this->invertDateInterval();
+
+            case 'years':
+            case 'year':
+            case 'months':
+            case 'month':
+            case 'weeks':
+            case 'week':
+            case 'days':
+            case 'dayz':
+            case 'day':
+            case 'hours':
+            case 'hour':
+            case 'minutes':
+            case 'minute':
+            case 'seconds':
+            case 'second':
+                return $this->setDateInterval((
+                    // Override default P1D when instantiating via fluent setters.
+                    [$this->isDefaultInterval ? new CarbonInterval('PT0S') : $this->dateInterval, $method]
+                )(
+                    \count($parameters) === 0 ? 1 : $first
+                ));
+        }
+
+        if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) {
+            throw new UnknownMethodException($method);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set the instance's timezone from a string or object and apply it to start/end.
+     *
+     * @param \DateTimeZone|string $timezone
+     *
+     * @return static
+     */
+    public function setTimezone($timezone)
+    {
+        $this->tzName = $timezone;
+        $this->timezone = $timezone;
+
+        if ($this->startDate) {
+            $this->setStartDate($this->startDate->setTimezone($timezone));
+        }
+
+        if ($this->endDate) {
+            $this->setEndDate($this->endDate->setTimezone($timezone));
+        }
+
+        return $this;
+    }
+
+    /**
+     * Set the instance's timezone from a string or object and add/subtract the offset difference to start/end.
+     *
+     * @param \DateTimeZone|string $timezone
+     *
+     * @return static
+     */
+    public function shiftTimezone($timezone)
+    {
+        $this->tzName = $timezone;
+        $this->timezone = $timezone;
+
+        if ($this->startDate) {
+            $this->setStartDate($this->startDate->shiftTimezone($timezone));
+        }
+
+        if ($this->endDate) {
+            $this->setEndDate($this->endDate->shiftTimezone($timezone));
+        }
+
+        return $this;
+    }
+
+    /**
+     * Returns the end is set, else calculated from start an recurrences.
+     *
+     * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval.
+     *
+     * @return CarbonInterface
+     */
+    public function calculateEnd(string $rounding = null)
+    {
+        if ($end = $this->getEndDate($rounding)) {
+            return $end;
+        }
+
+        if ($this->dateInterval->isEmpty()) {
+            return $this->getStartDate($rounding);
+        }
+
+        $date = $this->getEndFromRecurrences() ?? $this->iterateUntilEnd();
+
+        if ($date && $rounding) {
+            $date = $date->avoidMutation()->round($this->getDateInterval(), $rounding);
+        }
+
+        return $date;
+    }
+
+    /**
+     * @return CarbonInterface|null
+     */
+    private function getEndFromRecurrences()
+    {
+        if ($this->recurrences === null) {
+            throw new UnreachableException(
+                "Could not calculate period end without either explicit end or recurrences.\n".
+                "If you're looking for a forever-period, use ->setRecurrences(INF)."
+            );
+        }
+
+        if ($this->recurrences === INF) {
+            $start = $this->getStartDate();
+
+            return $start < $start->avoidMutation()->add($this->getDateInterval())
+                ? CarbonImmutable::endOfTime()
+                : CarbonImmutable::startOfTime();
+        }
+
+        if ($this->filters === [[static::RECURRENCES_FILTER, null]]) {
+            return $this->getStartDate()->avoidMutation()->add(
+                $this->getDateInterval()->times(
+                    $this->recurrences - ($this->isStartExcluded() ? 0 : 1)
+                )
+            );
+        }
+
+        return null;
+    }
+
+    /**
+     * @return CarbonInterface|null
+     */
+    private function iterateUntilEnd()
+    {
+        $attempts = 0;
+        $date = null;
+
+        foreach ($this as $date) {
+            if (++$attempts > static::END_MAX_ATTEMPTS) {
+                throw new UnreachableException(
+                    'Could not calculate period end after iterating '.static::END_MAX_ATTEMPTS.' times.'
+                );
+            }
+        }
+
+        return $date;
+    }
+
+    /**
+     * Returns true if the current period overlaps the given one (if 1 parameter passed)
+     * or the period between 2 dates (if 2 parameters passed).
+     *
+     * @param CarbonPeriod|\DateTimeInterface|Carbon|CarbonImmutable|string $rangeOrRangeStart
+     * @param \DateTimeInterface|Carbon|CarbonImmutable|string|null         $rangeEnd
+     *
+     * @return bool
+     */
+    public function overlaps($rangeOrRangeStart, $rangeEnd = null)
+    {
+        $range = $rangeEnd ? static::create($rangeOrRangeStart, $rangeEnd) : $rangeOrRangeStart;
+
+        if (!($range instanceof self)) {
+            $range = static::create($range);
+        }
+
+        [$start, $end] = $this->orderCouple($this->getStartDate(), $this->calculateEnd());
+        [$rangeStart, $rangeEnd] = $this->orderCouple($range->getStartDate(), $range->calculateEnd());
+
+        return $end > $rangeStart && $rangeEnd > $start;
+    }
+
+    /**
+     * Execute a given function on each date of the period.
+     *
+     * @example
+     * ```
+     * Carbon::create('2020-11-29')->daysUntil('2020-12-24')->forEach(function (Carbon $date) {
+     *   echo $date->diffInDays('2020-12-25')." days before Christmas!\n";
+     * });
+     * ```
+     *
+     * @param callable $callback
+     */
+    public function forEach(callable $callback)
+    {
+        foreach ($this as $date) {
+            $callback($date);
+        }
+    }
+
+    /**
+     * Execute a given function on each date of the period and yield the result of this function.
+     *
+     * @example
+     * ```
+     * $period = Carbon::create('2020-11-29')->daysUntil('2020-12-24');
+     * echo implode("\n", iterator_to_array($period->map(function (Carbon $date) {
+     *   return $date->diffInDays('2020-12-25').' days before Christmas!';
+     * })));
+     * ```
+     *
+     * @param callable $callback
+     *
+     * @return \Generator
+     */
+    public function map(callable $callback)
+    {
+        foreach ($this as $date) {
+            yield $callback($date);
+        }
+    }
+
+    /**
+     * Determines if the instance is equal to another.
+     * Warning: if options differ, instances wil never be equal.
+     *
+     * @param mixed $period
+     *
+     * @see equalTo()
+     *
+     * @return bool
+     */
+    public function eq($period): bool
+    {
+        return $this->equalTo($period);
+    }
+
+    /**
+     * Determines if the instance is equal to another.
+     * Warning: if options differ, instances wil never be equal.
+     *
+     * @param mixed $period
+     *
+     * @return bool
+     */
+    public function equalTo($period): bool
+    {
+        if (!($period instanceof self)) {
+            $period = self::make($period);
+        }
+
+        $end = $this->getEndDate();
+
+        return $period !== null
+            && $this->getDateInterval()->eq($period->getDateInterval())
+            && $this->getStartDate()->eq($period->getStartDate())
+            && ($end ? $end->eq($period->getEndDate()) : $this->getRecurrences() === $period->getRecurrences())
+            && ($this->getOptions() & (~static::IMMUTABLE)) === ($period->getOptions() & (~static::IMMUTABLE));
+    }
+
+    /**
+     * Determines if the instance is not equal to another.
+     * Warning: if options differ, instances wil never be equal.
+     *
+     * @param mixed $period
+     *
+     * @see notEqualTo()
+     *
+     * @return bool
+     */
+    public function ne($period): bool
+    {
+        return $this->notEqualTo($period);
+    }
+
+    /**
+     * Determines if the instance is not equal to another.
+     * Warning: if options differ, instances wil never be equal.
+     *
+     * @param mixed $period
+     *
+     * @return bool
+     */
+    public function notEqualTo($period): bool
+    {
+        return !$this->eq($period);
+    }
+
+    /**
+     * Determines if the start date is before an other given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function startsBefore($date = null): bool
+    {
+        return $this->getStartDate()->lessThan($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the start date is before or the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function startsBeforeOrAt($date = null): bool
+    {
+        return $this->getStartDate()->lessThanOrEqualTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the start date is after an other given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function startsAfter($date = null): bool
+    {
+        return $this->getStartDate()->greaterThan($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the start date is after or the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function startsAfterOrAt($date = null): bool
+    {
+        return $this->getStartDate()->greaterThanOrEqualTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the start date is the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function startsAt($date = null): bool
+    {
+        return $this->getStartDate()->equalTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the end date is before an other given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function endsBefore($date = null): bool
+    {
+        return $this->calculateEnd()->lessThan($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the end date is before or the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function endsBeforeOrAt($date = null): bool
+    {
+        return $this->calculateEnd()->lessThanOrEqualTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the end date is after an other given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function endsAfter($date = null): bool
+    {
+        return $this->calculateEnd()->greaterThan($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the end date is after or the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function endsAfterOrAt($date = null): bool
+    {
+        return $this->calculateEnd()->greaterThanOrEqualTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Determines if the end date is the same as a given date.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @param mixed $date
+     *
+     * @return bool
+     */
+    public function endsAt($date = null): bool
+    {
+        return $this->calculateEnd()->equalTo($this->resolveCarbon($date));
+    }
+
+    /**
+     * Return true if start date is now or later.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @return bool
+     */
+    public function isStarted(): bool
+    {
+        return $this->startsBeforeOrAt();
+    }
+
+    /**
+     * Return true if end date is now or later.
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @return bool
+     */
+    public function isEnded(): bool
+    {
+        return $this->endsBeforeOrAt();
+    }
+
+    /**
+     * Return true if now is between start date (included) and end date (excluded).
+     * (Rather start/end are included by options is ignored.)
+     *
+     * @return bool
+     */
+    public function isInProgress(): bool
+    {
+        return $this->isStarted() && !$this->isEnded();
+    }
+
+    /**
+     * Round the current instance at the given unit with given precision if specified and the given function.
+     *
+     * @param string                              $unit
+     * @param float|int|string|\DateInterval|null $precision
+     * @param string                              $function
+     *
+     * @return $this
+     */
+    public function roundUnit($unit, $precision = 1, $function = 'round')
+    {
+        $this->setStartDate($this->getStartDate()->roundUnit($unit, $precision, $function));
+
+        if ($this->endDate) {
+            $this->setEndDate($this->getEndDate()->roundUnit($unit, $precision, $function));
+        }
+
+        $this->setDateInterval($this->getDateInterval()->roundUnit($unit, $precision, $function));
+
+        return $this;
+    }
+
+    /**
+     * Truncate the current instance at the given unit with given precision if specified.
+     *
+     * @param string                              $unit
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return $this
+     */
+    public function floorUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance at the given unit with given precision if specified.
+     *
+     * @param string                              $unit
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return $this
+     */
+    public function ceilUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'ceil');
+    }
+
+    /**
+     * Round the current instance second with given precision if specified (else period interval is used).
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     * @param string                              $function
+     *
+     * @return $this
+     */
+    public function round($precision = null, $function = 'round')
+    {
+        return $this->roundWith(
+            $precision ?? $this->getDateInterval()->setLocalTranslator(TranslatorImmutable::get('en'))->forHumans(),
+            $function
+        );
+    }
+
+    /**
+     * Round the current instance second with given precision if specified (else period interval is used).
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return $this
+     */
+    public function floor($precision = null)
+    {
+        return $this->round($precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance second with given precision if specified (else period interval is used).
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return $this
+     */
+    public function ceil($precision = null)
+    {
+        return $this->round($precision, 'ceil');
+    }
+
+    /**
+     * Specify data which should be serialized to JSON.
+     *
+     * @link https://php.net/manual/en/jsonserializable.jsonserialize.php
+     *
+     * @return CarbonInterface[]
+     */
+    #[ReturnTypeWillChange]
+    public function jsonSerialize()
+    {
+        return $this->toArray();
+    }
+
+    /**
+     * Return true if the given date is between start and end.
+     *
+     * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date
+     *
+     * @return bool
+     */
+    public function contains($date = null): bool
+    {
+        $startMethod = 'startsBefore'.($this->isStartIncluded() ? 'OrAt' : '');
+        $endMethod = 'endsAfter'.($this->isEndIncluded() ? 'OrAt' : '');
+
+        return $this->$startMethod($date) && $this->$endMethod($date);
+    }
+
+    /**
+     * Return true if the current period follows a given other period (with no overlap).
+     * For instance, [2019-08-01 -> 2019-08-12] follows [2019-07-29 -> 2019-07-31]
+     * Note than in this example, follows() would be false if 2019-08-01 or 2019-07-31 was excluded by options.
+     *
+     * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
+     *
+     * @return bool
+     */
+    public function follows($period, ...$arguments): bool
+    {
+        $period = $this->resolveCarbonPeriod($period, ...$arguments);
+
+        return $this->getIncludedStartDate()->equalTo($period->getIncludedEndDate()->add($period->getDateInterval()));
+    }
+
+    /**
+     * Return true if the given other period follows the current one (with no overlap).
+     * For instance, [2019-07-29 -> 2019-07-31] is followed by [2019-08-01 -> 2019-08-12]
+     * Note than in this example, isFollowedBy() would be false if 2019-08-01 or 2019-07-31 was excluded by options.
+     *
+     * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
+     *
+     * @return bool
+     */
+    public function isFollowedBy($period, ...$arguments): bool
+    {
+        $period = $this->resolveCarbonPeriod($period, ...$arguments);
+
+        return $period->follows($this);
+    }
+
+    /**
+     * Return true if the given period either follows or is followed by the current one.
+     *
+     * @see follows()
+     * @see isFollowedBy()
+     *
+     * @param \Carbon\CarbonPeriod|\DatePeriod|string $period
+     *
+     * @return bool
+     */
+    public function isConsecutiveWith($period, ...$arguments): bool
+    {
+        return $this->follows($period, ...$arguments) || $this->isFollowedBy($period, ...$arguments);
+    }
+
+    /**
+     * Update properties after removing built-in filters.
+     *
+     * @return void
+     */
+    protected function updateInternalState()
+    {
+        if (!$this->hasFilter(static::END_DATE_FILTER)) {
+            $this->endDate = null;
+        }
+
+        if (!$this->hasFilter(static::RECURRENCES_FILTER)) {
+            $this->recurrences = null;
+        }
+    }
+
+    /**
+     * Create a filter tuple from raw parameters.
+     *
+     * Will create an automatic filter callback for one of Carbon's is* methods.
+     *
+     * @param array $parameters
+     *
+     * @return array
+     */
+    protected function createFilterTuple(array $parameters)
+    {
+        $method = array_shift($parameters);
+
+        if (!$this->isCarbonPredicateMethod($method)) {
+            return [$method, array_shift($parameters)];
+        }
+
+        return [function ($date) use ($method, $parameters) {
+            return ([$date, $method])(...$parameters);
+        }, $method];
+    }
+
+    /**
+     * Return whether given callable is a string pointing to one of Carbon's is* methods
+     * and should be automatically converted to a filter callback.
+     *
+     * @param callable $callable
+     *
+     * @return bool
+     */
+    protected function isCarbonPredicateMethod($callable)
+    {
+        return \is_string($callable) && str_starts_with($callable, 'is') &&
+            (method_exists($this->dateClass, $callable) || ([$this->dateClass, 'hasMacro'])($callable));
+    }
+
+    /**
+     * Recurrences filter callback (limits number of recurrences).
+     *
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     *
+     * @param \Carbon\Carbon $current
+     * @param int            $key
+     *
+     * @return bool|string
+     */
+    protected function filterRecurrences($current, $key)
+    {
+        if ($key < $this->recurrences) {
+            return true;
+        }
+
+        return static::END_ITERATION;
+    }
+
+    /**
+     * End date filter callback.
+     *
+     * @param \Carbon\Carbon $current
+     *
+     * @return bool|string
+     */
+    protected function filterEndDate($current)
+    {
+        if (!$this->isEndExcluded() && $current == $this->endDate) {
+            return true;
+        }
+
+        if ($this->dateInterval->invert ? $current > $this->endDate : $current < $this->endDate) {
+            return true;
+        }
+
+        return static::END_ITERATION;
+    }
+
+    /**
+     * End iteration filter callback.
+     *
+     * @return string
+     */
+    protected function endIteration()
+    {
+        return static::END_ITERATION;
+    }
+
+    /**
+     * Handle change of the parameters.
+     */
+    protected function handleChangedParameters()
+    {
+        if (($this->getOptions() & static::IMMUTABLE) && $this->dateClass === Carbon::class) {
+            $this->setDateClass(CarbonImmutable::class);
+        } elseif (!($this->getOptions() & static::IMMUTABLE) && $this->dateClass === CarbonImmutable::class) {
+            $this->setDateClass(Carbon::class);
+        }
+
+        $this->validationResult = null;
+    }
+
+    /**
+     * Validate current date and stop iteration when necessary.
+     *
+     * Returns true when current date is valid, false if it is not, or static::END_ITERATION
+     * when iteration should be stopped.
+     *
+     * @return bool|string
+     */
+    protected function validateCurrentDate()
+    {
+        if ($this->current === null) {
+            $this->rewind();
+        }
+
+        // Check after the first rewind to avoid repeating the initial validation.
+        return $this->validationResult ?? ($this->validationResult = $this->checkFilters());
+    }
+
+    /**
+     * Check whether current value and key pass all the filters.
+     *
+     * @return bool|string
+     */
+    protected function checkFilters()
+    {
+        $current = $this->prepareForReturn($this->current);
+
+        foreach ($this->filters as $tuple) {
+            $result = \call_user_func(
+                $tuple[0],
+                $current->avoidMutation(),
+                $this->key,
+                $this
+            );
+
+            if ($result === static::END_ITERATION) {
+                return static::END_ITERATION;
+            }
+
+            if (!$result) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Prepare given date to be returned to the external logic.
+     *
+     * @param CarbonInterface $date
+     *
+     * @return CarbonInterface
+     */
+    protected function prepareForReturn(CarbonInterface $date)
+    {
+        $date = ([$this->dateClass, 'make'])($date);
+
+        if ($this->timezone) {
+            $date = $date->setTimezone($this->timezone);
+        }
+
+        return $date;
+    }
+
+    /**
+     * Keep incrementing the current date until a valid date is found or the iteration is ended.
+     *
+     * @throws RuntimeException
+     *
+     * @return void
+     */
+    protected function incrementCurrentDateUntilValid()
+    {
+        $attempts = 0;
+
+        do {
+            $this->current = $this->current->add($this->dateInterval);
+
+            $this->validationResult = null;
+
+            if (++$attempts > static::NEXT_MAX_ATTEMPTS) {
+                throw new UnreachableException('Could not find next valid date.');
+            }
+        } while ($this->validateCurrentDate() === false);
+    }
+
+    /**
+     * Call given macro.
+     *
+     * @param string $name
+     * @param array  $parameters
+     *
+     * @return mixed
+     */
+    protected function callMacro($name, $parameters)
+    {
+        $macro = static::$macros[$name];
+
+        if ($macro instanceof Closure) {
+            $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
+
+            return ($boundMacro ?: $macro)(...$parameters);
+        }
+
+        return $macro(...$parameters);
+    }
+
+    /**
+     * Return the Carbon instance passed through, a now instance in the same timezone
+     * if null given or parse the input if string given.
+     *
+     * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date
+     *
+     * @return \Carbon\CarbonInterface
+     */
+    protected function resolveCarbon($date = null)
+    {
+        return $this->getStartDate()->nowWithSameTz()->carbonize($date);
+    }
+
+    /**
+     * Resolve passed arguments or DatePeriod to a CarbonPeriod object.
+     *
+     * @param mixed $period
+     * @param mixed ...$arguments
+     *
+     * @return static
+     */
+    protected function resolveCarbonPeriod($period, ...$arguments)
+    {
+        if ($period instanceof self) {
+            return $period;
+        }
+
+        return $period instanceof DatePeriod
+            ? static::instance($period)
+            : static::create($period, ...$arguments);
+    }
+
+    private function orderCouple($first, $second): array
+    {
+        return $first > $second ? [$second, $first] : [$first, $second];
+    }
+
+    private function makeDateTime($value): ?DateTimeInterface
+    {
+        if ($value instanceof DateTimeInterface) {
+            return $value;
+        }
+
+        if (\is_string($value)) {
+            $value = trim($value);
+
+            if (!preg_match('/^P[\dT]/', $value) &&
+                !preg_match('/^R\d/', $value) &&
+                preg_match('/[a-z\d]/i', $value)
+            ) {
+                return Carbon::parse($value, $this->tzName);
+            }
+        }
+
+        return null;
+    }
+
+    private function isInfiniteDate($date): bool
+    {
+        return $date instanceof CarbonInterface && ($date->isEndOfTime() || $date->isStartOfTime());
+    }
+
+    private function rawDate($date): ?DateTimeInterface
+    {
+        if ($date === false || $date === null) {
+            return null;
+        }
+
+        if ($date instanceof CarbonInterface) {
+            return $date->isMutable()
+                ? $date->toDateTime()
+                : $date->toDateTimeImmutable();
+        }
+
+        if (\in_array(\get_class($date), [DateTime::class, DateTimeImmutable::class], true)) {
+            return $date;
+        }
+
+        $class = $date instanceof DateTime ? DateTime::class : DateTimeImmutable::class;
+
+        return new $class($date->format('Y-m-d H:i:s.u'), $date->getTimezone());
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
new file mode 100644
index 00000000..c81899f1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php
@@ -0,0 +1,320 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Exceptions\InvalidCastException;
+use Carbon\Exceptions\InvalidTimeZoneException;
+use DateTimeInterface;
+use DateTimeZone;
+use Throwable;
+
+class CarbonTimeZone extends DateTimeZone
+{
+    public function __construct($timezone = null)
+    {
+        parent::__construct(static::getDateTimeZoneNameFromMixed($timezone));
+    }
+
+    protected static function parseNumericTimezone($timezone)
+    {
+        if ($timezone <= -100 || $timezone >= 100) {
+            throw new InvalidTimeZoneException('Absolute timezone offset cannot be greater than 100.');
+        }
+
+        return ($timezone >= 0 ? '+' : '').ltrim($timezone, '+').':00';
+    }
+
+    protected static function getDateTimeZoneNameFromMixed($timezone)
+    {
+        if ($timezone === null) {
+            return date_default_timezone_get();
+        }
+
+        if (\is_string($timezone)) {
+            $timezone = preg_replace('/^\s*([+-]\d+)(\d{2})\s*$/', '$1:$2', $timezone);
+        }
+
+        if (is_numeric($timezone)) {
+            return static::parseNumericTimezone($timezone);
+        }
+
+        return $timezone;
+    }
+
+    protected static function getDateTimeZoneFromName(&$name)
+    {
+        return @timezone_open($name = (string) static::getDateTimeZoneNameFromMixed($name));
+    }
+
+    /**
+     * Cast the current instance into the given class.
+     *
+     * @param string $className The $className::instance() method will be called to cast the current object.
+     *
+     * @return DateTimeZone
+     */
+    public function cast(string $className)
+    {
+        if (!method_exists($className, 'instance')) {
+            if (is_a($className, DateTimeZone::class, true)) {
+                return new $className($this->getName());
+            }
+
+            throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
+        }
+
+        return $className::instance($this);
+    }
+
+    /**
+     * Create a CarbonTimeZone from mixed input.
+     *
+     * @param DateTimeZone|string|int|null $object     original value to get CarbonTimeZone from it.
+     * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages.
+     *
+     * @throws InvalidTimeZoneException
+     *
+     * @return false|static
+     */
+    public static function instance($object = null, $objectDump = null)
+    {
+        $tz = $object;
+
+        if ($tz instanceof static) {
+            return $tz;
+        }
+
+        if ($tz === null) {
+            return new static();
+        }
+
+        if (!$tz instanceof DateTimeZone) {
+            $tz = static::getDateTimeZoneFromName($object);
+        }
+
+        if ($tz !== false) {
+            return new static($tz->getName());
+        }
+
+        if (Carbon::isStrictModeEnabled()) {
+            throw new InvalidTimeZoneException('Unknown or bad timezone ('.($objectDump ?: $object).')');
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns abbreviated name of the current timezone according to DST setting.
+     *
+     * @param bool $dst
+     *
+     * @return string
+     */
+    public function getAbbreviatedName($dst = false)
+    {
+        $name = $this->getName();
+
+        foreach ($this->listAbbreviations() as $abbreviation => $zones) {
+            foreach ($zones as $zone) {
+                if ($zone['timezone_id'] === $name && $zone['dst'] == $dst) {
+                    return $abbreviation;
+                }
+            }
+        }
+
+        return 'unknown';
+    }
+
+    /**
+     * @alias getAbbreviatedName
+     *
+     * Returns abbreviated name of the current timezone according to DST setting.
+     *
+     * @param bool $dst
+     *
+     * @return string
+     */
+    public function getAbbr($dst = false)
+    {
+        return $this->getAbbreviatedName($dst);
+    }
+
+    /**
+     * Get the offset as string "sHH:MM" (such as "+00:00" or "-12:30").
+     *
+     * @param DateTimeInterface|null $date
+     *
+     * @return string
+     */
+    public function toOffsetName(DateTimeInterface $date = null)
+    {
+        return static::getOffsetNameFromMinuteOffset(
+            $this->getOffset($date ?: Carbon::now($this)) / 60
+        );
+    }
+
+    /**
+     * Returns a new CarbonTimeZone object using the offset string instead of region string.
+     *
+     * @param DateTimeInterface|null $date
+     *
+     * @return CarbonTimeZone
+     */
+    public function toOffsetTimeZone(DateTimeInterface $date = null)
+    {
+        return new static($this->toOffsetName($date));
+    }
+
+    /**
+     * Returns the first region string (such as "America/Toronto") that matches the current timezone or
+     * false if no match is found.
+     *
+     * @see timezone_name_from_abbr native PHP function.
+     *
+     * @param DateTimeInterface|null $date
+     * @param int                    $isDst
+     *
+     * @return string|false
+     */
+    public function toRegionName(DateTimeInterface $date = null, $isDst = 1)
+    {
+        $name = $this->getName();
+        $firstChar = substr($name, 0, 1);
+
+        if ($firstChar !== '+' && $firstChar !== '-') {
+            return $name;
+        }
+
+        $date = $date ?: Carbon::now($this);
+
+        // Integer construction no longer supported since PHP 8
+        // @codeCoverageIgnoreStart
+        try {
+            $offset = @$this->getOffset($date) ?: 0;
+        } catch (Throwable $e) {
+            $offset = 0;
+        }
+        // @codeCoverageIgnoreEnd
+
+        $name = @timezone_name_from_abbr('', $offset, $isDst);
+
+        if ($name) {
+            return $name;
+        }
+
+        foreach (timezone_identifiers_list() as $timezone) {
+            if (Carbon::instance($date)->tz($timezone)->getOffset() === $offset) {
+                return $timezone;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns a new CarbonTimeZone object using the region string instead of offset string.
+     *
+     * @param DateTimeInterface|null $date
+     *
+     * @return CarbonTimeZone|false
+     */
+    public function toRegionTimeZone(DateTimeInterface $date = null)
+    {
+        $tz = $this->toRegionName($date);
+
+        if ($tz !== false) {
+            return new static($tz);
+        }
+
+        if (Carbon::isStrictModeEnabled()) {
+            throw new InvalidTimeZoneException('Unknown timezone for offset '.$this->getOffset($date ?: Carbon::now($this)).' seconds.');
+        }
+
+        return false;
+    }
+
+    /**
+     * Cast to string (get timezone name).
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getName();
+    }
+
+    /**
+     * Return the type number:
+     *
+     * Type 1; A UTC offset, such as -0300
+     * Type 2; A timezone abbreviation, such as GMT
+     * Type 3: A timezone identifier, such as Europe/London
+     */
+    public function getType(): int
+    {
+        return preg_match('/"timezone_type";i:(\d)/', serialize($this), $match) ? (int) $match[1] : 3;
+    }
+
+    /**
+     * Create a CarbonTimeZone from mixed input.
+     *
+     * @param DateTimeZone|string|int|null $object
+     *
+     * @return false|static
+     */
+    public static function create($object = null)
+    {
+        return static::instance($object);
+    }
+
+    /**
+     * Create a CarbonTimeZone from int/float hour offset.
+     *
+     * @param float $hourOffset number of hour of the timezone shift (can be decimal).
+     *
+     * @return false|static
+     */
+    public static function createFromHourOffset(float $hourOffset)
+    {
+        return static::createFromMinuteOffset($hourOffset * Carbon::MINUTES_PER_HOUR);
+    }
+
+    /**
+     * Create a CarbonTimeZone from int/float minute offset.
+     *
+     * @param float $minuteOffset number of total minutes of the timezone shift.
+     *
+     * @return false|static
+     */
+    public static function createFromMinuteOffset(float $minuteOffset)
+    {
+        return static::instance(static::getOffsetNameFromMinuteOffset($minuteOffset));
+    }
+
+    /**
+     * Convert a total minutes offset into a standardized timezone offset string.
+     *
+     * @param float $minutes number of total minutes of the timezone shift.
+     *
+     * @return string
+     */
+    public static function getOffsetNameFromMinuteOffset(float $minutes): string
+    {
+        $minutes = round($minutes);
+        $unsignedMinutes = abs($minutes);
+
+        return ($minutes < 0 ? '-' : '+').
+            str_pad((string) floor($unsignedMinutes / 60), 2, '0', STR_PAD_LEFT).
+            ':'.
+            str_pad((string) ($unsignedMinutes % 60), 2, '0', STR_PAD_LEFT);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
new file mode 100644
index 00000000..4f35d6c6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Cli;
+
+class Invoker
+{
+    public const CLI_CLASS_NAME = 'Carbon\\Cli';
+
+    protected function runWithCli(string $className, array $parameters): bool
+    {
+        $cli = new $className();
+
+        return $cli(...$parameters);
+    }
+
+    public function __invoke(...$parameters): bool
+    {
+        if (class_exists(self::CLI_CLASS_NAME)) {
+            return $this->runWithCli(self::CLI_CLASS_NAME, $parameters);
+        }
+
+        $function = (($parameters[1] ?? '') === 'install' ? ($parameters[2] ?? null) : null) ?: 'shell_exec';
+        $function('composer require carbon-cli/carbon-cli --no-interaction');
+
+        echo 'Installation succeeded.';
+
+        return true;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php
new file mode 100644
index 00000000..ccc457fc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Doctrine;
+
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+
+interface CarbonDoctrineType
+{
+    public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform);
+
+    public function convertToPHPValue($value, AbstractPlatform $platform);
+
+    public function convertToDatabaseValue($value, AbstractPlatform $platform);
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php
new file mode 100644
index 00000000..bf476a77
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Doctrine;
+
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+
+class CarbonImmutableType extends DateTimeImmutableType implements CarbonDoctrineType
+{
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return 'carbon_immutable';
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return bool
+     */
+    public function requiresSQLCommentHint(AbstractPlatform $platform)
+    {
+        return true;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php
new file mode 100644
index 00000000..9289d84d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Doctrine;
+
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+
+class CarbonType extends DateTimeType implements CarbonDoctrineType
+{
+    /**
+     * {@inheritdoc}
+     *
+     * @return string
+     */
+    public function getName()
+    {
+        return 'carbon';
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return bool
+     */
+    public function requiresSQLCommentHint(AbstractPlatform $platform)
+    {
+        return true;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php
new file mode 100644
index 00000000..ecfe17e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Doctrine;
+
+use Carbon\Carbon;
+use Carbon\CarbonInterface;
+use DateTimeInterface;
+use Doctrine\DBAL\Platforms\AbstractPlatform;
+use Doctrine\DBAL\Types\ConversionException;
+use Exception;
+
+/**
+ * @template T of CarbonInterface
+ */
+trait CarbonTypeConverter
+{
+    /**
+     * @return class-string<T>
+     */
+    protected function getCarbonClassName(): string
+    {
+        return Carbon::class;
+    }
+
+    /**
+     * @return string
+     */
+    public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform)
+    {
+        $precision = $fieldDeclaration['precision'] ?: 10;
+
+        if ($fieldDeclaration['secondPrecision'] ?? false) {
+            $precision = 0;
+        }
+
+        if ($precision === 10) {
+            $precision = DateTimeDefaultPrecision::get();
+        }
+
+        $type = parent::getSQLDeclaration($fieldDeclaration, $platform);
+
+        if (!$precision) {
+            return $type;
+        }
+
+        if (str_contains($type, '(')) {
+            return preg_replace('/\(\d+\)/', "($precision)", $type);
+        }
+
+        [$before, $after] = explode(' ', "$type ");
+
+        return trim("$before($precision) $after");
+    }
+
+    /**
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     *
+     * @return T|null
+     */
+    public function convertToPHPValue($value, AbstractPlatform $platform)
+    {
+        $class = $this->getCarbonClassName();
+
+        if ($value === null || is_a($value, $class)) {
+            return $value;
+        }
+
+        if ($value instanceof DateTimeInterface) {
+            return $class::instance($value);
+        }
+
+        $date = null;
+        $error = null;
+
+        try {
+            $date = $class::parse($value);
+        } catch (Exception $exception) {
+            $error = $exception;
+        }
+
+        if (!$date) {
+            throw ConversionException::conversionFailedFormat(
+                $value,
+                $this->getName(),
+                'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()',
+                $error
+            );
+        }
+
+        return $date;
+    }
+
+    /**
+     * @SuppressWarnings(PHPMD.UnusedFormalParameter)
+     *
+     * @return string|null
+     */
+    public function convertToDatabaseValue($value, AbstractPlatform $platform)
+    {
+        if ($value === null) {
+            return $value;
+        }
+
+        if ($value instanceof DateTimeInterface) {
+            return $value->format('Y-m-d H:i:s.u');
+        }
+
+        throw ConversionException::conversionFailedInvalidType(
+            $value,
+            $this->getName(),
+            ['null', 'DateTime', 'Carbon']
+        );
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
new file mode 100644
index 00000000..642fd413
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Doctrine;
+
+class DateTimeDefaultPrecision
+{
+    private static $precision = 6;
+
+    /**
+     * Change the default Doctrine datetime and datetime_immutable precision.
+     *
+     * @param int $precision
+     */
+    public static function set(int $precision): void
+    {
+        self::$precision = $precision;
+    }
+
+    /**
+     * Get the default Doctrine datetime and datetime_immutable precision.
+     *
+     * @return int
+     */
+    public static function get(): int
+    {
+        return self::$precision;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php
new file mode 100644
index 00000000..49927103
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * Thanks to https://github.com/flaushi for his suggestion:
+ * https://github.com/doctrine/dbal/issues/2873#issuecomment-534956358
+ */
+namespace Carbon\Doctrine;
+
+use Carbon\CarbonImmutable;
+use Doctrine\DBAL\Types\VarDateTimeImmutableType;
+
+class DateTimeImmutableType extends VarDateTimeImmutableType implements CarbonDoctrineType
+{
+    /** @use CarbonTypeConverter<CarbonImmutable> */
+    use CarbonTypeConverter;
+
+    /**
+     * @return class-string<CarbonImmutable>
+     */
+    protected function getCarbonClassName(): string
+    {
+        return CarbonImmutable::class;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php
new file mode 100644
index 00000000..29b0bb95
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * Thanks to https://github.com/flaushi for his suggestion:
+ * https://github.com/doctrine/dbal/issues/2873#issuecomment-534956358
+ */
+namespace Carbon\Doctrine;
+
+use Carbon\Carbon;
+use Doctrine\DBAL\Types\VarDateTimeType;
+
+class DateTimeType extends VarDateTimeType implements CarbonDoctrineType
+{
+    /** @use CarbonTypeConverter<Carbon> */
+    use CarbonTypeConverter;
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
new file mode 100644
index 00000000..3ca8837d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use Throwable;
+
+class BadComparisonUnitException extends UnitException
+{
+    /**
+     * The unit.
+     *
+     * @var string
+     */
+    protected $unit;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $unit
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($unit, $code = 0, Throwable $previous = null)
+    {
+        $this->unit = $unit;
+
+        parent::__construct("Bad comparison unit: '$unit'", $code, $previous);
+    }
+
+    /**
+     * Get the unit.
+     *
+     * @return string
+     */
+    public function getUnit(): string
+    {
+        return $this->unit;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
new file mode 100644
index 00000000..2e222e54
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use BadMethodCallException as BaseBadMethodCallException;
+use Throwable;
+
+class BadFluentConstructorException extends BaseBadMethodCallException implements BadMethodCallException
+{
+    /**
+     * The method.
+     *
+     * @var string
+     */
+    protected $method;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $method
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($method, $code = 0, Throwable $previous = null)
+    {
+        $this->method = $method;
+
+        parent::__construct(sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous);
+    }
+
+    /**
+     * Get the method.
+     *
+     * @return string
+     */
+    public function getMethod(): string
+    {
+        return $this->method;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
new file mode 100644
index 00000000..4ceaa2ef
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use BadMethodCallException as BaseBadMethodCallException;
+use Throwable;
+
+class BadFluentSetterException extends BaseBadMethodCallException implements BadMethodCallException
+{
+    /**
+     * The setter.
+     *
+     * @var string
+     */
+    protected $setter;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $setter
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($setter, $code = 0, Throwable $previous = null)
+    {
+        $this->setter = $setter;
+
+        parent::__construct(sprintf("Unknown fluent setter '%s'", $setter), $code, $previous);
+    }
+
+    /**
+     * Get the setter.
+     *
+     * @return string
+     */
+    public function getSetter(): string
+    {
+        return $this->setter;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
new file mode 100644
index 00000000..108206d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+interface BadMethodCallException extends Exception
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php
new file mode 100644
index 00000000..e1049269
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use RuntimeException as BaseRuntimeException;
+
+final class EndLessPeriodException extends BaseRuntimeException implements RuntimeException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
new file mode 100644
index 00000000..8ad747e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+interface Exception
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
new file mode 100644
index 00000000..db334c6c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use RuntimeException as BaseRuntimeException;
+use Throwable;
+
+class ImmutableException extends BaseRuntimeException implements RuntimeException
+{
+    /**
+     * The value.
+     *
+     * @var string
+     */
+    protected $value;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $value    the immutable type/value
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($value, $code = 0, Throwable $previous = null)
+    {
+        $this->value = $value;
+        parent::__construct("$value is immutable.", $code, $previous);
+    }
+
+    /**
+     * Get the value.
+     *
+     * @return string
+     */
+    public function getValue(): string
+    {
+        return $this->value;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
new file mode 100644
index 00000000..5b013cd5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+interface InvalidArgumentException extends Exception
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
new file mode 100644
index 00000000..a421401f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidCastException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
new file mode 100644
index 00000000..c9ecb6b0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class InvalidDateException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * The invalid field.
+     *
+     * @var string
+     */
+    private $field;
+
+    /**
+     * The invalid value.
+     *
+     * @var mixed
+     */
+    private $value;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $field
+     * @param mixed          $value
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($field, $value, $code = 0, Throwable $previous = null)
+    {
+        $this->field = $field;
+        $this->value = $value;
+        parent::__construct($field.' : '.$value.' is not a valid value.', $code, $previous);
+    }
+
+    /**
+     * Get the invalid field.
+     *
+     * @return string
+     */
+    public function getField()
+    {
+        return $this->field;
+    }
+
+    /**
+     * Get the invalid value.
+     *
+     * @return mixed
+     */
+    public function getValue()
+    {
+        return $this->value;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
new file mode 100644
index 00000000..92d55fe3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidFormatException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
new file mode 100644
index 00000000..69cf4128
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidIntervalException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
new file mode 100644
index 00000000..9bd84a96
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidPeriodDateException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
new file mode 100644
index 00000000..cf2c9024
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidPeriodParameterException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
new file mode 100644
index 00000000..f7259558
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidTimeZoneException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
new file mode 100644
index 00000000..2c8ec9ba
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class InvalidTypeException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
new file mode 100644
index 00000000..7a87632c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use Carbon\CarbonInterface;
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class NotACarbonClassException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * The className.
+     *
+     * @var string
+     */
+    protected $className;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $className
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($className, $code = 0, Throwable $previous = null)
+    {
+        $this->className = $className;
+
+        parent::__construct(sprintf('Given class does not implement %s: %s', CarbonInterface::class, $className), $code, $previous);
+    }
+
+    /**
+     * Get the className.
+     *
+     * @return string
+     */
+    public function getClassName(): string
+    {
+        return $this->className;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
new file mode 100644
index 00000000..4edd7a48
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class NotAPeriodException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
new file mode 100644
index 00000000..f2c54684
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class NotLocaleAwareException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * Constructor.
+     *
+     * @param mixed          $object
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($object, $code = 0, Throwable $previous = null)
+    {
+        $dump = \is_object($object) ? \get_class($object) : \gettype($object);
+
+        parent::__construct("$dump does neither implements Symfony\Contracts\Translation\LocaleAwareInterface nor getLocale() method.", $code, $previous);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
new file mode 100644
index 00000000..2c586d0b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+// This will extends OutOfRangeException instead of InvalidArgumentException since 3.0.0
+// use OutOfRangeException as BaseOutOfRangeException;
+
+class OutOfRangeException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * The unit or name of the value.
+     *
+     * @var string
+     */
+    private $unit;
+
+    /**
+     * The range minimum.
+     *
+     * @var mixed
+     */
+    private $min;
+
+    /**
+     * The range maximum.
+     *
+     * @var mixed
+     */
+    private $max;
+
+    /**
+     * The invalid value.
+     *
+     * @var mixed
+     */
+    private $value;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $unit
+     * @param mixed          $min
+     * @param mixed          $max
+     * @param mixed          $value
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($unit, $min, $max, $value, $code = 0, Throwable $previous = null)
+    {
+        $this->unit = $unit;
+        $this->min = $min;
+        $this->max = $max;
+        $this->value = $value;
+
+        parent::__construct("$unit must be between $min and $max, $value given", $code, $previous);
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getMax()
+    {
+        return $this->max;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getMin()
+    {
+        return $this->min;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getUnit()
+    {
+        return $this->unit;
+    }
+
+    /**
+     * @return mixed
+     */
+    public function getValue()
+    {
+        return $this->value;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
new file mode 100644
index 00000000..5416fd14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class ParseErrorException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * The expected.
+     *
+     * @var string
+     */
+    protected $expected;
+
+    /**
+     * The actual.
+     *
+     * @var string
+     */
+    protected $actual;
+
+    /**
+     * The help message.
+     *
+     * @var string
+     */
+    protected $help;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $expected
+     * @param string         $actual
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($expected, $actual, $help = '', $code = 0, Throwable $previous = null)
+    {
+        $this->expected = $expected;
+        $this->actual = $actual;
+        $this->help = $help;
+
+        $actual = $actual === '' ? 'data is missing' : "get '$actual'";
+
+        parent::__construct(trim("Format expected $expected but $actual\n$help"), $code, $previous);
+    }
+
+    /**
+     * Get the expected.
+     *
+     * @return string
+     */
+    public function getExpected(): string
+    {
+        return $this->expected;
+    }
+
+    /**
+     * Get the actual.
+     *
+     * @return string
+     */
+    public function getActual(): string
+    {
+        return $this->actual;
+    }
+
+    /**
+     * Get the help message.
+     *
+     * @return string
+     */
+    public function getHelp(): string
+    {
+        return $this->help;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
new file mode 100644
index 00000000..ad196f79
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+interface RuntimeException extends Exception
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
new file mode 100644
index 00000000..ee99953b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+class UnitException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
new file mode 100644
index 00000000..0e723056
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use Throwable;
+
+class UnitNotConfiguredException extends UnitException
+{
+    /**
+     * The unit.
+     *
+     * @var string
+     */
+    protected $unit;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $unit
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($unit, $code = 0, Throwable $previous = null)
+    {
+        $this->unit = $unit;
+
+        parent::__construct("Unit $unit have no configuration to get total from other units.", $code, $previous);
+    }
+
+    /**
+     * Get the unit.
+     *
+     * @return string
+     */
+    public function getUnit(): string
+    {
+        return $this->unit;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
new file mode 100644
index 00000000..5c504975
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class UnknownGetterException extends BaseInvalidArgumentException implements InvalidArgumentException
+{
+    /**
+     * The getter.
+     *
+     * @var string
+     */
+    protected $getter;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $getter   getter name
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($getter, $code = 0, Throwable $previous = null)
+    {
+        $this->getter = $getter;
+
+        parent::__construct("Unknown getter '$getter'", $code, $previous);
+    }
+
+    /**
+     * Get the getter.
+     *
+     * @return string
+     */
+    public function getGetter(): string
+    {
+        return $this->getter;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
new file mode 100644
index 00000000..75273a70
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use BadMethodCallException as BaseBadMethodCallException;
+use Throwable;
+
+class UnknownMethodException extends BaseBadMethodCallException implements BadMethodCallException
+{
+    /**
+     * The method.
+     *
+     * @var string
+     */
+    protected $method;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $method
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($method, $code = 0, Throwable $previous = null)
+    {
+        $this->method = $method;
+
+        parent::__construct("Method $method does not exist.", $code, $previous);
+    }
+
+    /**
+     * Get the method.
+     *
+     * @return string
+     */
+    public function getMethod(): string
+    {
+        return $this->method;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
new file mode 100644
index 00000000..a795f5d7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use Throwable;
+
+class UnknownSetterException extends BaseInvalidArgumentException implements BadMethodCallException
+{
+    /**
+     * The setter.
+     *
+     * @var string
+     */
+    protected $setter;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $setter   setter name
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($setter, $code = 0, Throwable $previous = null)
+    {
+        $this->setter = $setter;
+
+        parent::__construct("Unknown setter '$setter'", $code, $previous);
+    }
+
+    /**
+     * Get the setter.
+     *
+     * @return string
+     */
+    public function getSetter(): string
+    {
+        return $this->setter;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
new file mode 100644
index 00000000..ecd7f7a5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use Throwable;
+
+class UnknownUnitException extends UnitException
+{
+    /**
+     * The unit.
+     *
+     * @var string
+     */
+    protected $unit;
+
+    /**
+     * Constructor.
+     *
+     * @param string         $unit
+     * @param int            $code
+     * @param Throwable|null $previous
+     */
+    public function __construct($unit, $code = 0, Throwable $previous = null)
+    {
+        $this->unit = $unit;
+
+        parent::__construct("Unknown unit '$unit'.", $code, $previous);
+    }
+
+    /**
+     * Get the unit.
+     *
+     * @return string
+     */
+    public function getUnit(): string
+    {
+        return $this->unit;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
new file mode 100644
index 00000000..1654ab11
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Exceptions;
+
+use RuntimeException as BaseRuntimeException;
+
+class UnreachableException extends BaseRuntimeException implements RuntimeException
+{
+    //
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Factory.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Factory.php
new file mode 100644
index 00000000..f8c72890
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Factory.php
@@ -0,0 +1,326 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Closure;
+use DateTimeInterface;
+use ReflectionMethod;
+
+/**
+ * A factory to generate Carbon instances with common settings.
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @method bool                                               canBeCreatedFromFormat($date, $format)                                                                                       Checks if the (date)time string is in a given format and valid to create a
+ *                                                                                                                                                                                         new instance.
+ * @method Carbon|false                                       create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null)                                     Create a new Carbon instance from a specific date and time.
+ *                                                                                                                                                                                         If any of $year, $month or $day are set to null their now() values will
+ *                                                                                                                                                                                         be used.
+ *                                                                                                                                                                                         If $hour is null it will be set to its now() value and the default
+ *                                                                                                                                                                                         values for $minute and $second will be their now() values.
+ *                                                                                                                                                                                         If $hour is not null then the default values for $minute and $second
+ *                                                                                                                                                                                         will be 0.
+ * @method Carbon                                             createFromDate($year = null, $month = null, $day = null, $tz = null)                                                         Create a Carbon instance from just a date. The time portion is set to now.
+ * @method Carbon|false                                       createFromFormat($format, $time, $tz = null)                                                                                 Create a Carbon instance from a specific format.
+ * @method Carbon|false                                       createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null)                                          Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
+ * @method Carbon|false                                       createFromLocaleFormat($format, $locale, $time, $tz = null)                                                                  Create a Carbon instance from a specific format and a string in a given language.
+ * @method Carbon|false                                       createFromLocaleIsoFormat($format, $locale, $time, $tz = null)                                                               Create a Carbon instance from a specific ISO format and a string in a given language.
+ * @method Carbon                                             createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null)                                                              Create a Carbon instance from just a time. The date portion is set to today.
+ * @method Carbon                                             createFromTimeString($time, $tz = null)                                                                                      Create a Carbon instance from a time string. The date portion is set to today.
+ * @method Carbon                                             createFromTimestamp($timestamp, $tz = null)                                                                                  Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method Carbon                                             createFromTimestampMs($timestamp, $tz = null)                                                                                Create a Carbon instance from a timestamp in milliseconds.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method Carbon                                             createFromTimestampMsUTC($timestamp)                                                                                         Create a Carbon instance from a timestamp in milliseconds.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method Carbon                                             createFromTimestampUTC($timestamp)                                                                                           Create a Carbon instance from an timestamp keeping the timezone to UTC.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method Carbon                                             createMidnightDate($year = null, $month = null, $day = null, $tz = null)                                                     Create a Carbon instance from just a date. The time portion is set to midnight.
+ * @method Carbon|false                                       createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)               Create a new safe Carbon instance from a specific date and time.
+ *                                                                                                                                                                                         If any of $year, $month or $day are set to null their now() values will
+ *                                                                                                                                                                                         be used.
+ *                                                                                                                                                                                         If $hour is null it will be set to its now() value and the default
+ *                                                                                                                                                                                         values for $minute and $second will be their now() values.
+ *                                                                                                                                                                                         If $hour is not null then the default values for $minute and $second
+ *                                                                                                                                                                                         will be 0.
+ *                                                                                                                                                                                         If one of the set values is not valid, an InvalidDateException
+ *                                                                                                                                                                                         will be thrown.
+ * @method CarbonInterface                                    createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation.
+ * @method Carbon                                             disableHumanDiffOption($humanDiffOption)                                                                                     @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method Carbon                                             enableHumanDiffOption($humanDiffOption)                                                                                      @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method mixed                                              executeWithLocale($locale, $func)                                                                                            Set the current locale to the given, execute the passed function, reset the locale to previous one,
+ *                                                                                                                                                                                         then return the result of the closure (or null if the closure was void).
+ * @method Carbon                                             fromSerialized($value)                                                                                                       Create an instance from a serialized string.
+ * @method void                                               genericMacro($macro, $priority = 0)                                                                                          Register a custom macro.
+ * @method array                                              getAvailableLocales()                                                                                                        Returns the list of internally available locales and already loaded custom locales.
+ *                                                                                                                                                                                         (It will ignore custom translator dynamic loading.)
+ * @method Language[]                                         getAvailableLocalesInfo()                                                                                                    Returns list of Language object for each available locale. This object allow you to get the ISO name, native
+ *                                                                                                                                                                                         name, region and variant of the locale.
+ * @method array                                              getDays()                                                                                                                    Get the days of the week
+ * @method string|null                                        getFallbackLocale()                                                                                                          Get the fallback locale.
+ * @method array                                              getFormatsToIsoReplacements()                                                                                                List of replacements from date() format to isoFormat().
+ * @method int                                                getHumanDiffOptions()                                                                                                        Return default humanDiff() options (merged flags as integer).
+ * @method array                                              getIsoUnits()                                                                                                                Returns list of locale units for ISO formatting.
+ * @method array                                              getLastErrors()                                                                                                              {@inheritdoc}
+ * @method string                                             getLocale()                                                                                                                  Get the current translator locale.
+ * @method callable|null                                      getMacro($name)                                                                                                              Get the raw callable macro registered globally for a given name.
+ * @method int                                                getMidDayAt()                                                                                                                get midday/noon hour
+ * @method Closure|Carbon                                     getTestNow()                                                                                                                 Get the Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.
+ * @method string                                             getTimeFormatByPrecision($unitPrecision)                                                                                     Return a format from H:i to H:i:s.u according to given unit precision.
+ * @method string                                             getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null)                         Returns raw translation message for a given key.
+ * @method \Symfony\Component\Translation\TranslatorInterface getTranslator()                                                                                                              Get the default translator instance in use.
+ * @method int                                                getWeekEndsAt()                                                                                                              Get the last day of week
+ * @method int                                                getWeekStartsAt()                                                                                                            Get the first day of week
+ * @method array                                              getWeekendDays()                                                                                                             Get weekend days
+ * @method bool                                               hasFormat($date, $format)                                                                                                    Checks if the (date)time string is in a given format.
+ * @method bool                                               hasFormatWithModifiers($date, $format)                                                                                       Checks if the (date)time string is in a given format.
+ * @method bool                                               hasMacro($name)                                                                                                              Checks if macro is registered globally.
+ * @method bool                                               hasRelativeKeywords($time)                                                                                                   Determine if a time string will produce a relative date.
+ * @method bool                                               hasTestNow()                                                                                                                 Determine if there is a valid test instance set. A valid test instance
+ *                                                                                                                                                                                         is anything that is not null.
+ * @method Carbon                                             instance($date)                                                                                                              Create a Carbon instance from a DateTime one.
+ * @method bool                                               isImmutable()                                                                                                                Returns true if the current class/instance is immutable.
+ * @method bool                                               isModifiableUnit($unit)                                                                                                      Returns true if a property can be changed via setter.
+ * @method bool                                               isMutable()                                                                                                                  Returns true if the current class/instance is mutable.
+ * @method bool                                               isStrictModeEnabled()                                                                                                        Returns true if the strict mode is globally in use, false else.
+ *                                                                                                                                                                                         (It can be overridden in specific instances.)
+ * @method bool                                               localeHasDiffOneDayWords($locale)                                                                                            Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
+ *                                                                                                                                                                                         Support is considered enabled if the 3 words are translated in the given locale.
+ * @method bool                                               localeHasDiffSyntax($locale)                                                                                                 Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
+ *                                                                                                                                                                                         Support is considered enabled if the 4 sentences are translated in the given locale.
+ * @method bool                                               localeHasDiffTwoDayWords($locale)                                                                                            Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
+ *                                                                                                                                                                                         Support is considered enabled if the 2 words are translated in the given locale.
+ * @method bool                                               localeHasPeriodSyntax($locale)                                                                                               Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
+ *                                                                                                                                                                                         Support is considered enabled if the 4 sentences are translated in the given locale.
+ * @method bool                                               localeHasShortUnits($locale)                                                                                                 Returns true if the given locale is internally supported and has short-units support.
+ *                                                                                                                                                                                         Support is considered enabled if either year, day or hour has a short variant translated.
+ * @method void                                               macro($name, $macro)                                                                                                         Register a custom macro.
+ * @method Carbon|null                                        make($var)                                                                                                                   Make a Carbon instance from given variable if possible.
+ *                                                                                                                                                                                         Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
+ *                                                                                                                                                                                         and recurrences). Throw an exception for invalid format, but otherwise return null.
+ * @method Carbon                                             maxValue()                                                                                                                   Create a Carbon instance for the greatest supported date.
+ * @method Carbon                                             minValue()                                                                                                                   Create a Carbon instance for the lowest supported date.
+ * @method void                                               mixin($mixin)                                                                                                                Mix another object into the class.
+ * @method Carbon                                             now($tz = null)                                                                                                              Get a Carbon instance for the current date and time.
+ * @method Carbon                                             parse($time = null, $tz = null)                                                                                              Create a carbon instance from a string.
+ *                                                                                                                                                                                         This is an alias for the constructor that allows better fluent syntax
+ *                                                                                                                                                                                         as it allows you to do Carbon::parse('Monday next week')->fn() rather
+ *                                                                                                                                                                                         than (new Carbon('Monday next week'))->fn().
+ * @method Carbon                                             parseFromLocale($time, $locale = null, $tz = null)                                                                           Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
+ * @method string                                             pluralUnit(string $unit)                                                                                                     Returns standardized plural of a given singular/plural unit name (in English).
+ * @method Carbon|false                                       rawCreateFromFormat($format, $time, $tz = null)                                                                              Create a Carbon instance from a specific format.
+ * @method Carbon                                             rawParse($time = null, $tz = null)                                                                                           Create a carbon instance from a string.
+ *                                                                                                                                                                                         This is an alias for the constructor that allows better fluent syntax
+ *                                                                                                                                                                                         as it allows you to do Carbon::parse('Monday next week')->fn() rather
+ *                                                                                                                                                                                         than (new Carbon('Monday next week'))->fn().
+ * @method Carbon                                             resetMacros()                                                                                                                Remove all macros and generic macros.
+ * @method void                                               resetMonthsOverflow()                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method void                                               resetToStringFormat()                                                                                                        Reset the format used to the default when type juggling a Carbon instance to a string
+ * @method void                                               resetYearsOverflow()                                                                                                         @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method void                                               serializeUsing($callback)                                                                                                    @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather transform Carbon object before the serialization.
+ *                                                                                                                                                                                         JSON serialize all Carbon instances using the given callback.
+ * @method Carbon                                             setFallbackLocale($locale)                                                                                                   Set the fallback locale.
+ * @method Carbon                                             setHumanDiffOptions($humanDiffOptions)                                                                                       @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method bool                                               setLocale($locale)                                                                                                           Set the current translator locale and indicate if the source locale file exists.
+ *                                                                                                                                                                                         Pass 'auto' as locale to use closest language from the current LC_TIME locale.
+ * @method void                                               setMidDayAt($hour)                                                                                                           @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather consider mid-day is always 12pm, then if you need to test if it's an other
+ *                                                                                                                                                                                                     hour, test it explicitly:
+ *                                                                                                                                                                                                         $date->format('G') == 13
+ *                                                                                                                                                                                                     or to set explicitly to a given hour:
+ *                                                                                                                                                                                                         $date->setTime(13, 0, 0, 0)
+ *                                                                                                                                                                                         Set midday/noon hour
+ * @method Carbon                                             setTestNow($testNow = null)                                                                                                  Set a Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.  The provided instance will be returned
+ *                                                                                                                                                                                         specifically under the following conditions:
+ *                                                                                                                                                                                           - A call to the static now() method, ex. Carbon::now()
+ *                                                                                                                                                                                           - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+ *                                                                                                                                                                                           - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+ *                                                                                                                                                                                           - When a string containing the desired time is passed to Carbon::parse().
+ *                                                                                                                                                                                         Note the timezone parameter was left out of the examples above and
+ *                                                                                                                                                                                         has no affect as the mock value will be returned regardless of its value.
+ *                                                                                                                                                                                         Only the moment is mocked with setTestNow(), the timezone will still be the one passed
+ *                                                                                                                                                                                         as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()).
+ *                                                                                                                                                                                         To clear the test instance call this method using the default
+ *                                                                                                                                                                                         parameter of null.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method Carbon                                             setTestNowAndTimezone($testNow = null, $tz = null)                                                                           Set a Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.  The provided instance will be returned
+ *                                                                                                                                                                                         specifically under the following conditions:
+ *                                                                                                                                                                                           - A call to the static now() method, ex. Carbon::now()
+ *                                                                                                                                                                                           - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+ *                                                                                                                                                                                           - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+ *                                                                                                                                                                                           - When a string containing the desired time is passed to Carbon::parse().
+ *                                                                                                                                                                                         It will also align default timezone (e.g. call date_default_timezone_set()) with
+ *                                                                                                                                                                                         the second argument or if null, with the timezone of the given date object.
+ *                                                                                                                                                                                         To clear the test instance call this method using the default
+ *                                                                                                                                                                                         parameter of null.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method void                                               setToStringFormat($format)                                                                                                   @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
+ *                                                                                                                                                                                                     use other method or custom format passed to format() method if you need to dump an other string
+ *                                                                                                                                                                                                     format.
+ *                                                                                                                                                                                         Set the default format used when type juggling a Carbon instance to a string
+ * @method void                                               setTranslator(TranslatorInterface $translator)                                                                               Set the default translator instance to use.
+ * @method Carbon                                             setUtf8($utf8)                                                                                                               @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use UTF-8 language packages on every machine.
+ *                                                                                                                                                                                         Set if UTF8 will be used for localized date/time.
+ * @method void                                               setWeekEndsAt($day)                                                                                                          @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
+ *                                                                                                                                                                                                     or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
+ *                                                                                                                                                                                                     start of week according to current locale selected and implicitly the end of week.
+ *                                                                                                                                                                                         Set the last day of week
+ * @method void                                               setWeekStartsAt($day)                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
+ *                                                                                                                                                                                                     'first_day_of_week' locale setting to change the start of week according to current locale
+ *                                                                                                                                                                                                     selected and implicitly the end of week.
+ *                                                                                                                                                                                         Set the first day of week
+ * @method void                                               setWeekendDays($days)                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather consider week-end is always saturday and sunday, and if you have some custom
+ *                                                                                                                                                                                                     week-end days to handle, give to those days an other name and create a macro for them:
+ *                                                                                                                                                                                                     ```
+ *                                                                                                                                                                                                     Carbon::macro('isDayOff', function ($date) {
+ *                                                                                                                                                                                                         return $date->isSunday() || $date->isMonday();
+ *                                                                                                                                                                                                     });
+ *                                                                                                                                                                                                     Carbon::macro('isNotDayOff', function ($date) {
+ *                                                                                                                                                                                                         return !$date->isDayOff();
+ *                                                                                                                                                                                                     });
+ *                                                                                                                                                                                                     if ($someDate->isDayOff()) ...
+ *                                                                                                                                                                                                     if ($someDate->isNotDayOff()) ...
+ *                                                                                                                                                                                                     // Add 5 not-off days
+ *                                                                                                                                                                                                     $count = 5;
+ *                                                                                                                                                                                                     while ($someDate->isDayOff() || ($count-- > 0)) {
+ *                                                                                                                                                                                                         $someDate->addDay();
+ *                                                                                                                                                                                                     }
+ *                                                                                                                                                                                                     ```
+ *                                                                                                                                                                                         Set weekend days
+ * @method bool                                               shouldOverflowMonths()                                                                                                       Get the month overflow global behavior (can be overridden in specific instances).
+ * @method bool                                               shouldOverflowYears()                                                                                                        Get the month overflow global behavior (can be overridden in specific instances).
+ * @method string                                             singularUnit(string $unit)                                                                                                   Returns standardized singular of a given singular/plural unit name (in English).
+ * @method Carbon                                             today($tz = null)                                                                                                            Create a Carbon instance for today.
+ * @method Carbon                                             tomorrow($tz = null)                                                                                                         Create a Carbon instance for tomorrow.
+ * @method string                                             translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL)                           Translate a time string from a locale to an other.
+ * @method string                                             translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null)                          Translate using translation string or callback available.
+ * @method void                                               useMonthsOverflow($monthsOverflow = true)                                                                                    @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method Carbon                                             useStrictMode($strictModeEnabled = true)                                                                                     @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method void                                               useYearsOverflow($yearsOverflow = true)                                                                                      @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method mixed                                              withTestNow($testNow = null, $callback = null)                                                                               Temporarily sets a static date to be used within the callback.
+ *                                                                                                                                                                                         Using setTestNow to set the date, executing the callback, then
+ *                                                                                                                                                                                         clearing the test instance.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method Carbon                                             yesterday($tz = null)                                                                                                        Create a Carbon instance for yesterday.
+ *
+ * </autodoc>
+ */
+class Factory
+{
+    protected $className = Carbon::class;
+
+    protected $settings = [];
+
+    public function __construct(array $settings = [], ?string $className = null)
+    {
+        if ($className) {
+            $this->className = $className;
+        }
+
+        $this->settings = $settings;
+    }
+
+    public function getClassName()
+    {
+        return $this->className;
+    }
+
+    public function setClassName(string $className)
+    {
+        $this->className = $className;
+
+        return $this;
+    }
+
+    public function className(string $className = null)
+    {
+        return $className === null ? $this->getClassName() : $this->setClassName($className);
+    }
+
+    public function getSettings()
+    {
+        return $this->settings;
+    }
+
+    public function setSettings(array $settings)
+    {
+        $this->settings = $settings;
+
+        return $this;
+    }
+
+    public function settings(array $settings = null)
+    {
+        return $settings === null ? $this->getSettings() : $this->setSettings($settings);
+    }
+
+    public function mergeSettings(array $settings)
+    {
+        $this->settings = array_merge($this->settings, $settings);
+
+        return $this;
+    }
+
+    public function __call($name, $arguments)
+    {
+        $method = new ReflectionMethod($this->className, $name);
+        $settings = $this->settings;
+
+        if ($settings && isset($settings['timezone'])) {
+            $tzParameters = array_filter($method->getParameters(), function ($parameter) {
+                return \in_array($parameter->getName(), ['tz', 'timezone'], true);
+            });
+
+            if (isset($arguments[0]) && \in_array($name, ['instance', 'make', 'create', 'parse'], true)) {
+                if ($arguments[0] instanceof DateTimeInterface) {
+                    $settings['innerTimezone'] = $settings['timezone'];
+                } elseif (\is_string($arguments[0]) && date_parse($arguments[0])['is_localtime']) {
+                    unset($settings['timezone'], $settings['innerTimezone']);
+                }
+            } elseif (\count($tzParameters)) {
+                array_splice($arguments, key($tzParameters), 0, [$settings['timezone']]);
+                unset($settings['timezone']);
+            }
+        }
+
+        $result = $this->className::$name(...$arguments);
+
+        return $result instanceof CarbonInterface && !empty($settings)
+            ? $result->settings($settings)
+            : $result;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php b/htdocs/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
new file mode 100644
index 00000000..596ee806
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php
@@ -0,0 +1,243 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Closure;
+
+/**
+ * A factory to generate CarbonImmutable instances with common settings.
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @method bool                                               canBeCreatedFromFormat($date, $format)                                                                                       Checks if the (date)time string is in a given format and valid to create a
+ *                                                                                                                                                                                         new instance.
+ * @method CarbonImmutable|false                              create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null)                                     Create a new Carbon instance from a specific date and time.
+ *                                                                                                                                                                                         If any of $year, $month or $day are set to null their now() values will
+ *                                                                                                                                                                                         be used.
+ *                                                                                                                                                                                         If $hour is null it will be set to its now() value and the default
+ *                                                                                                                                                                                         values for $minute and $second will be their now() values.
+ *                                                                                                                                                                                         If $hour is not null then the default values for $minute and $second
+ *                                                                                                                                                                                         will be 0.
+ * @method CarbonImmutable                                    createFromDate($year = null, $month = null, $day = null, $tz = null)                                                         Create a Carbon instance from just a date. The time portion is set to now.
+ * @method CarbonImmutable|false                              createFromFormat($format, $time, $tz = null)                                                                                 Create a Carbon instance from a specific format.
+ * @method CarbonImmutable|false                              createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null)                                          Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
+ * @method CarbonImmutable|false                              createFromLocaleFormat($format, $locale, $time, $tz = null)                                                                  Create a Carbon instance from a specific format and a string in a given language.
+ * @method CarbonImmutable|false                              createFromLocaleIsoFormat($format, $locale, $time, $tz = null)                                                               Create a Carbon instance from a specific ISO format and a string in a given language.
+ * @method CarbonImmutable                                    createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null)                                                              Create a Carbon instance from just a time. The date portion is set to today.
+ * @method CarbonImmutable                                    createFromTimeString($time, $tz = null)                                                                                      Create a Carbon instance from a time string. The date portion is set to today.
+ * @method CarbonImmutable                                    createFromTimestamp($timestamp, $tz = null)                                                                                  Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method CarbonImmutable                                    createFromTimestampMs($timestamp, $tz = null)                                                                                Create a Carbon instance from a timestamp in milliseconds.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method CarbonImmutable                                    createFromTimestampMsUTC($timestamp)                                                                                         Create a Carbon instance from a timestamp in milliseconds.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method CarbonImmutable                                    createFromTimestampUTC($timestamp)                                                                                           Create a Carbon instance from an timestamp keeping the timezone to UTC.
+ *                                                                                                                                                                                         Timestamp input can be given as int, float or a string containing one or more numbers.
+ * @method CarbonImmutable                                    createMidnightDate($year = null, $month = null, $day = null, $tz = null)                                                     Create a Carbon instance from just a date. The time portion is set to midnight.
+ * @method CarbonImmutable|false                              createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)               Create a new safe Carbon instance from a specific date and time.
+ *                                                                                                                                                                                         If any of $year, $month or $day are set to null their now() values will
+ *                                                                                                                                                                                         be used.
+ *                                                                                                                                                                                         If $hour is null it will be set to its now() value and the default
+ *                                                                                                                                                                                         values for $minute and $second will be their now() values.
+ *                                                                                                                                                                                         If $hour is not null then the default values for $minute and $second
+ *                                                                                                                                                                                         will be 0.
+ *                                                                                                                                                                                         If one of the set values is not valid, an InvalidDateException
+ *                                                                                                                                                                                         will be thrown.
+ * @method CarbonInterface                                    createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation.
+ * @method CarbonImmutable                                    disableHumanDiffOption($humanDiffOption)                                                                                     @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method CarbonImmutable                                    enableHumanDiffOption($humanDiffOption)                                                                                      @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method mixed                                              executeWithLocale($locale, $func)                                                                                            Set the current locale to the given, execute the passed function, reset the locale to previous one,
+ *                                                                                                                                                                                         then return the result of the closure (or null if the closure was void).
+ * @method CarbonImmutable                                    fromSerialized($value)                                                                                                       Create an instance from a serialized string.
+ * @method void                                               genericMacro($macro, $priority = 0)                                                                                          Register a custom macro.
+ * @method array                                              getAvailableLocales()                                                                                                        Returns the list of internally available locales and already loaded custom locales.
+ *                                                                                                                                                                                         (It will ignore custom translator dynamic loading.)
+ * @method Language[]                                         getAvailableLocalesInfo()                                                                                                    Returns list of Language object for each available locale. This object allow you to get the ISO name, native
+ *                                                                                                                                                                                         name, region and variant of the locale.
+ * @method array                                              getDays()                                                                                                                    Get the days of the week
+ * @method string|null                                        getFallbackLocale()                                                                                                          Get the fallback locale.
+ * @method array                                              getFormatsToIsoReplacements()                                                                                                List of replacements from date() format to isoFormat().
+ * @method int                                                getHumanDiffOptions()                                                                                                        Return default humanDiff() options (merged flags as integer).
+ * @method array                                              getIsoUnits()                                                                                                                Returns list of locale units for ISO formatting.
+ * @method array                                              getLastErrors()                                                                                                              {@inheritdoc}
+ * @method string                                             getLocale()                                                                                                                  Get the current translator locale.
+ * @method callable|null                                      getMacro($name)                                                                                                              Get the raw callable macro registered globally for a given name.
+ * @method int                                                getMidDayAt()                                                                                                                get midday/noon hour
+ * @method Closure|CarbonImmutable                            getTestNow()                                                                                                                 Get the Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.
+ * @method string                                             getTimeFormatByPrecision($unitPrecision)                                                                                     Return a format from H:i to H:i:s.u according to given unit precision.
+ * @method string                                             getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null)                         Returns raw translation message for a given key.
+ * @method \Symfony\Component\Translation\TranslatorInterface getTranslator()                                                                                                              Get the default translator instance in use.
+ * @method int                                                getWeekEndsAt()                                                                                                              Get the last day of week
+ * @method int                                                getWeekStartsAt()                                                                                                            Get the first day of week
+ * @method array                                              getWeekendDays()                                                                                                             Get weekend days
+ * @method bool                                               hasFormat($date, $format)                                                                                                    Checks if the (date)time string is in a given format.
+ * @method bool                                               hasFormatWithModifiers($date, $format)                                                                                       Checks if the (date)time string is in a given format.
+ * @method bool                                               hasMacro($name)                                                                                                              Checks if macro is registered globally.
+ * @method bool                                               hasRelativeKeywords($time)                                                                                                   Determine if a time string will produce a relative date.
+ * @method bool                                               hasTestNow()                                                                                                                 Determine if there is a valid test instance set. A valid test instance
+ *                                                                                                                                                                                         is anything that is not null.
+ * @method CarbonImmutable                                    instance($date)                                                                                                              Create a Carbon instance from a DateTime one.
+ * @method bool                                               isImmutable()                                                                                                                Returns true if the current class/instance is immutable.
+ * @method bool                                               isModifiableUnit($unit)                                                                                                      Returns true if a property can be changed via setter.
+ * @method bool                                               isMutable()                                                                                                                  Returns true if the current class/instance is mutable.
+ * @method bool                                               isStrictModeEnabled()                                                                                                        Returns true if the strict mode is globally in use, false else.
+ *                                                                                                                                                                                         (It can be overridden in specific instances.)
+ * @method bool                                               localeHasDiffOneDayWords($locale)                                                                                            Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
+ *                                                                                                                                                                                         Support is considered enabled if the 3 words are translated in the given locale.
+ * @method bool                                               localeHasDiffSyntax($locale)                                                                                                 Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
+ *                                                                                                                                                                                         Support is considered enabled if the 4 sentences are translated in the given locale.
+ * @method bool                                               localeHasDiffTwoDayWords($locale)                                                                                            Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
+ *                                                                                                                                                                                         Support is considered enabled if the 2 words are translated in the given locale.
+ * @method bool                                               localeHasPeriodSyntax($locale)                                                                                               Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
+ *                                                                                                                                                                                         Support is considered enabled if the 4 sentences are translated in the given locale.
+ * @method bool                                               localeHasShortUnits($locale)                                                                                                 Returns true if the given locale is internally supported and has short-units support.
+ *                                                                                                                                                                                         Support is considered enabled if either year, day or hour has a short variant translated.
+ * @method void                                               macro($name, $macro)                                                                                                         Register a custom macro.
+ * @method CarbonImmutable|null                               make($var)                                                                                                                   Make a Carbon instance from given variable if possible.
+ *                                                                                                                                                                                         Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
+ *                                                                                                                                                                                         and recurrences). Throw an exception for invalid format, but otherwise return null.
+ * @method CarbonImmutable                                    maxValue()                                                                                                                   Create a Carbon instance for the greatest supported date.
+ * @method CarbonImmutable                                    minValue()                                                                                                                   Create a Carbon instance for the lowest supported date.
+ * @method void                                               mixin($mixin)                                                                                                                Mix another object into the class.
+ * @method CarbonImmutable                                    now($tz = null)                                                                                                              Get a Carbon instance for the current date and time.
+ * @method CarbonImmutable                                    parse($time = null, $tz = null)                                                                                              Create a carbon instance from a string.
+ *                                                                                                                                                                                         This is an alias for the constructor that allows better fluent syntax
+ *                                                                                                                                                                                         as it allows you to do Carbon::parse('Monday next week')->fn() rather
+ *                                                                                                                                                                                         than (new Carbon('Monday next week'))->fn().
+ * @method CarbonImmutable                                    parseFromLocale($time, $locale = null, $tz = null)                                                                           Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
+ * @method string                                             pluralUnit(string $unit)                                                                                                     Returns standardized plural of a given singular/plural unit name (in English).
+ * @method CarbonImmutable|false                              rawCreateFromFormat($format, $time, $tz = null)                                                                              Create a Carbon instance from a specific format.
+ * @method CarbonImmutable                                    rawParse($time = null, $tz = null)                                                                                           Create a carbon instance from a string.
+ *                                                                                                                                                                                         This is an alias for the constructor that allows better fluent syntax
+ *                                                                                                                                                                                         as it allows you to do Carbon::parse('Monday next week')->fn() rather
+ *                                                                                                                                                                                         than (new Carbon('Monday next week'))->fn().
+ * @method CarbonImmutable                                    resetMacros()                                                                                                                Remove all macros and generic macros.
+ * @method void                                               resetMonthsOverflow()                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method void                                               resetToStringFormat()                                                                                                        Reset the format used to the default when type juggling a Carbon instance to a string
+ * @method void                                               resetYearsOverflow()                                                                                                         @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method void                                               serializeUsing($callback)                                                                                                    @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather transform Carbon object before the serialization.
+ *                                                                                                                                                                                         JSON serialize all Carbon instances using the given callback.
+ * @method CarbonImmutable                                    setFallbackLocale($locale)                                                                                                   Set the fallback locale.
+ * @method CarbonImmutable                                    setHumanDiffOptions($humanDiffOptions)                                                                                       @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method bool                                               setLocale($locale)                                                                                                           Set the current translator locale and indicate if the source locale file exists.
+ *                                                                                                                                                                                         Pass 'auto' as locale to use closest language from the current LC_TIME locale.
+ * @method void                                               setMidDayAt($hour)                                                                                                           @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather consider mid-day is always 12pm, then if you need to test if it's an other
+ *                                                                                                                                                                                                     hour, test it explicitly:
+ *                                                                                                                                                                                                         $date->format('G') == 13
+ *                                                                                                                                                                                                     or to set explicitly to a given hour:
+ *                                                                                                                                                                                                         $date->setTime(13, 0, 0, 0)
+ *                                                                                                                                                                                         Set midday/noon hour
+ * @method CarbonImmutable                                    setTestNow($testNow = null)                                                                                                  Set a Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.  The provided instance will be returned
+ *                                                                                                                                                                                         specifically under the following conditions:
+ *                                                                                                                                                                                           - A call to the static now() method, ex. Carbon::now()
+ *                                                                                                                                                                                           - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+ *                                                                                                                                                                                           - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+ *                                                                                                                                                                                           - When a string containing the desired time is passed to Carbon::parse().
+ *                                                                                                                                                                                         Note the timezone parameter was left out of the examples above and
+ *                                                                                                                                                                                         has no affect as the mock value will be returned regardless of its value.
+ *                                                                                                                                                                                         Only the moment is mocked with setTestNow(), the timezone will still be the one passed
+ *                                                                                                                                                                                         as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()).
+ *                                                                                                                                                                                         To clear the test instance call this method using the default
+ *                                                                                                                                                                                         parameter of null.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method CarbonImmutable                                    setTestNowAndTimezone($testNow = null, $tz = null)                                                                           Set a Carbon instance (real or mock) to be returned when a "now"
+ *                                                                                                                                                                                         instance is created.  The provided instance will be returned
+ *                                                                                                                                                                                         specifically under the following conditions:
+ *                                                                                                                                                                                           - A call to the static now() method, ex. Carbon::now()
+ *                                                                                                                                                                                           - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+ *                                                                                                                                                                                           - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+ *                                                                                                                                                                                           - When a string containing the desired time is passed to Carbon::parse().
+ *                                                                                                                                                                                         It will also align default timezone (e.g. call date_default_timezone_set()) with
+ *                                                                                                                                                                                         the second argument or if null, with the timezone of the given date object.
+ *                                                                                                                                                                                         To clear the test instance call this method using the default
+ *                                                                                                                                                                                         parameter of null.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method void                                               setToStringFormat($format)                                                                                                   @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and
+ *                                                                                                                                                                                                     use other method or custom format passed to format() method if you need to dump an other string
+ *                                                                                                                                                                                                     format.
+ *                                                                                                                                                                                         Set the default format used when type juggling a Carbon instance to a string
+ * @method void                                               setTranslator(TranslatorInterface $translator)                                                                               Set the default translator instance to use.
+ * @method CarbonImmutable                                    setUtf8($utf8)                                                                                                               @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use UTF-8 language packages on every machine.
+ *                                                                                                                                                                                         Set if UTF8 will be used for localized date/time.
+ * @method void                                               setWeekEndsAt($day)                                                                                                          @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
+ *                                                                                                                                                                                                     or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
+ *                                                                                                                                                                                                     start of week according to current locale selected and implicitly the end of week.
+ *                                                                                                                                                                                         Set the last day of week
+ * @method void                                               setWeekStartsAt($day)                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
+ *                                                                                                                                                                                                     'first_day_of_week' locale setting to change the start of week according to current locale
+ *                                                                                                                                                                                                     selected and implicitly the end of week.
+ *                                                                                                                                                                                         Set the first day of week
+ * @method void                                               setWeekendDays($days)                                                                                                        @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather consider week-end is always saturday and sunday, and if you have some custom
+ *                                                                                                                                                                                                     week-end days to handle, give to those days an other name and create a macro for them:
+ *                                                                                                                                                                                                     ```
+ *                                                                                                                                                                                                     Carbon::macro('isDayOff', function ($date) {
+ *                                                                                                                                                                                                         return $date->isSunday() || $date->isMonday();
+ *                                                                                                                                                                                                     });
+ *                                                                                                                                                                                                     Carbon::macro('isNotDayOff', function ($date) {
+ *                                                                                                                                                                                                         return !$date->isDayOff();
+ *                                                                                                                                                                                                     });
+ *                                                                                                                                                                                                     if ($someDate->isDayOff()) ...
+ *                                                                                                                                                                                                     if ($someDate->isNotDayOff()) ...
+ *                                                                                                                                                                                                     // Add 5 not-off days
+ *                                                                                                                                                                                                     $count = 5;
+ *                                                                                                                                                                                                     while ($someDate->isDayOff() || ($count-- > 0)) {
+ *                                                                                                                                                                                                         $someDate->addDay();
+ *                                                                                                                                                                                                     }
+ *                                                                                                                                                                                                     ```
+ *                                                                                                                                                                                         Set weekend days
+ * @method bool                                               shouldOverflowMonths()                                                                                                       Get the month overflow global behavior (can be overridden in specific instances).
+ * @method bool                                               shouldOverflowYears()                                                                                                        Get the month overflow global behavior (can be overridden in specific instances).
+ * @method string                                             singularUnit(string $unit)                                                                                                   Returns standardized singular of a given singular/plural unit name (in English).
+ * @method CarbonImmutable                                    today($tz = null)                                                                                                            Create a Carbon instance for today.
+ * @method CarbonImmutable                                    tomorrow($tz = null)                                                                                                         Create a Carbon instance for tomorrow.
+ * @method string                                             translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL)                           Translate a time string from a locale to an other.
+ * @method string                                             translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null)                          Translate using translation string or callback available.
+ * @method void                                               useMonthsOverflow($monthsOverflow = true)                                                                                    @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method CarbonImmutable                                    useStrictMode($strictModeEnabled = true)                                                                                     @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ * @method void                                               useYearsOverflow($yearsOverflow = true)                                                                                      @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+ *                                                                                                                                                                                                     You should rather use the ->settings() method.
+ *                                                                                                                                                                                                     Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+ *                                                                                                                                                                                                     are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+ * @method mixed                                              withTestNow($testNow = null, $callback = null)                                                                               Temporarily sets a static date to be used within the callback.
+ *                                                                                                                                                                                         Using setTestNow to set the date, executing the callback, then
+ *                                                                                                                                                                                         clearing the test instance.
+ *                                                                                                                                                                                         /!\ Use this method for unit tests only.
+ * @method CarbonImmutable                                    yesterday($tz = null)                                                                                                        Create a Carbon instance for yesterday.
+ *
+ * </autodoc>
+ */
+class FactoryImmutable extends Factory
+{
+    protected $className = CarbonImmutable::class;
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa.php
new file mode 100644
index 00000000..f3431e4b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/aa_DJ.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
new file mode 100644
index 00000000..c6e23c0d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
+    'months_short' => ['qun', 'nah', 'cig', 'agd', 'cax', 'qas', 'qad', 'leq', 'way', 'dit', 'xim', 'kax'],
+    'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
+    'weekdays_short' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'],
+    'weekdays_min' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['saaku', 'carra'],
+
+    'year' => ':count gaqambo', // less reliable
+    'y' => ':count gaqambo', // less reliable
+    'a_year' => ':count gaqambo', // less reliable
+
+    'month' => ':count àlsa',
+    'm' => ':count àlsa',
+    'a_month' => ':count àlsa',
+
+    'day' => ':count saaku', // less reliable
+    'd' => ':count saaku', // less reliable
+    'a_day' => ':count saaku', // less reliable
+
+    'hour' => ':count ayti', // less reliable
+    'h' => ':count ayti', // less reliable
+    'a_hour' => ':count ayti', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
new file mode 100644
index 00000000..f8f395b7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
+    'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
+    'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
+    'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
+    'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['saaku', 'carra'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
new file mode 100644
index 00000000..64612253
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
+    'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
+    'weekdays' => ['Naba Sambat', 'Sani', 'Salus', 'Rabuq', 'Camus', 'Jumqata', 'Qunxa Sambat'],
+    'weekdays_short' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'],
+    'weekdays_min' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['saaku', 'carra'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
new file mode 100644
index 00000000..e55e591b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'],
+    'months_short' => ['Qun', 'Kud', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'],
+    'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'],
+    'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
+    'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['saaku', 'carra'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af.php
new file mode 100644
index 00000000..27771d7a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - JD Isaacks
+ * - Pierre du Plessis
+ */
+return [
+    'year' => ':count jaar',
+    'a_year' => '\'n jaar|:count jaar',
+    'y' => ':count j.',
+    'month' => ':count maand|:count maande',
+    'a_month' => '\'n maand|:count maande',
+    'm' => ':count maa.',
+    'week' => ':count week|:count weke',
+    'a_week' => '\'n week|:count weke',
+    'w' => ':count w.',
+    'day' => ':count dag|:count dae',
+    'a_day' => '\'n dag|:count dae',
+    'd' => ':count d.',
+    'hour' => ':count uur',
+    'a_hour' => '\'n uur|:count uur',
+    'h' => ':count u.',
+    'minute' => ':count minuut|:count minute',
+    'a_minute' => '\'n minuut|:count minute',
+    'min' => ':count min.',
+    'second' => ':count sekond|:count sekondes',
+    'a_second' => '\'n paar sekondes|:count sekondes',
+    's' => ':count s.',
+    'ago' => ':time gelede',
+    'from_now' => 'oor :time',
+    'after' => ':time na',
+    'before' => ':time voor',
+    'diff_now' => 'Nou',
+    'diff_today' => 'Vandag',
+    'diff_today_regexp' => 'Vandag(?:\\s+om)?',
+    'diff_yesterday' => 'Gister',
+    'diff_yesterday_regexp' => 'Gister(?:\\s+om)?',
+    'diff_tomorrow' => 'Môre',
+    'diff_tomorrow_regexp' => 'Môre(?:\\s+om)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Vandag om] LT',
+        'nextDay' => '[Môre om] LT',
+        'nextWeek' => 'dddd [om] LT',
+        'lastDay' => '[Gister om] LT',
+        'lastWeek' => '[Laas] dddd [om] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
+    },
+    'meridiem' => ['VM', 'NM'],
+    'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],
+    'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+    'weekdays_short' => ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'],
+    'weekdays_min' => ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' en '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
new file mode 100644
index 00000000..f2fcf053
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/af.php', [
+    'meridiem' => ['v', 'n'],
+    'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'],
+    'weekdays_short' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'],
+    'weekdays_min' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'],
+    'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'],
+    'months_short' => ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'DD MMM YYYY',
+        'LLL' => 'DD MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, DD MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
new file mode 100644
index 00000000..27896bd0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/af.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agq.php
new file mode 100644
index 00000000..70114649
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agq.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['a.g', 'a.k'],
+    'weekdays' => ['tsuʔntsɨ', 'tsuʔukpà', 'tsuʔughɔe', 'tsuʔutɔ̀mlò', 'tsuʔumè', 'tsuʔughɨ̂m', 'tsuʔndzɨkɔʔɔ'],
+    'weekdays_short' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'],
+    'weekdays_min' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'],
+    'months' => ['ndzɔ̀ŋɔ̀nùm', 'ndzɔ̀ŋɔ̀kƗ̀zùʔ', 'ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà', 'ndzɔ̀ŋɔ̀tǎafʉ̄ghā', 'ndzɔ̀ŋèsèe', 'ndzɔ̀ŋɔ̀nzùghò', 'ndzɔ̀ŋɔ̀dùmlo', 'ndzɔ̀ŋɔ̀kwîfɔ̀e', 'ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù', 'ndzɔ̀ŋɔ̀ghǔuwelɔ̀m', 'ndzɔ̀ŋɔ̀chwaʔàkaa wo', 'ndzɔ̀ŋèfwòo'],
+    'months_short' => ['nùm', 'kɨz', 'tɨd', 'taa', 'see', 'nzu', 'dum', 'fɔe', 'dzu', 'lɔm', 'kaa', 'fwo'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr.php
new file mode 100644
index 00000000..8f036ae8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/agr_PE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
new file mode 100644
index 00000000..54a326af
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - somosazucar.org    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Petsatin', 'Kupitin', 'Uyaitin', 'Tayutin', 'Kegketin', 'Tegmatin', 'Kuntutin', 'Yagkujutin', 'Daiktatin', 'Ipamtatin', 'Shinutin', 'Sakamtin'],
+    'months_short' => ['Pet', 'Kup', 'Uya', 'Tay', 'Keg', 'Teg', 'Kun', 'Yag', 'Dait', 'Ipam', 'Shin', 'Sak'],
+    'weekdays' => ['Tuntuamtin', 'Achutin', 'Kugkuktin', 'Saketin', 'Shimpitin', 'Imaptin', 'Bataetin'],
+    'weekdays_short' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'],
+    'weekdays_min' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 7,
+    'meridiem' => ['VM', 'NM'],
+
+    'year' => ':count yaya', // less reliable
+    'y' => ':count yaya', // less reliable
+    'a_year' => ':count yaya', // less reliable
+
+    'month' => ':count nantu', // less reliable
+    'm' => ':count nantu', // less reliable
+    'a_month' => ':count nantu', // less reliable
+
+    'day' => ':count nayaim', // less reliable
+    'd' => ':count nayaim', // less reliable
+    'a_day' => ':count nayaim', // less reliable
+
+    'hour' => ':count kuwiš', // less reliable
+    'h' => ':count kuwiš', // less reliable
+    'a_hour' => ':count kuwiš', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak.php
new file mode 100644
index 00000000..5a64be37
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ak_GH.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
new file mode 100644
index 00000000..13819467
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY/MM/DD',
+    ],
+    'months' => ['Sanda-Ɔpɛpɔn', 'Kwakwar-Ɔgyefuo', 'Ebɔw-Ɔbenem', 'Ebɔbira-Oforisuo', 'Esusow Aketseaba-Kɔtɔnimba', 'Obirade-Ayɛwohomumu', 'Ayɛwoho-Kitawonsa', 'Difuu-Ɔsandaa', 'Fankwa-Ɛbɔ', 'Ɔbɛsɛ-Ahinime', 'Ɔberɛfɛw-Obubuo', 'Mumu-Ɔpɛnimba'],
+    'months_short' => ['S-Ɔ', 'K-Ɔ', 'E-Ɔ', 'E-O', 'E-K', 'O-A', 'A-K', 'D-Ɔ', 'F-Ɛ', 'Ɔ-A', 'Ɔ-O', 'M-Ɔ'],
+    'weekdays' => ['Kwesida', 'Dwowda', 'Benada', 'Wukuda', 'Yawda', 'Fida', 'Memeneda'],
+    'weekdays_short' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'],
+    'weekdays_min' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['AN', 'EW'],
+
+    'year' => ':count afe',
+    'y' => ':count afe',
+    'a_year' => ':count afe',
+
+    'month' => ':count bosume',
+    'm' => ':count bosume',
+    'a_month' => ':count bosume',
+
+    'day' => ':count ɛda',
+    'd' => ':count ɛda',
+    'a_day' => ':count ɛda',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am.php
new file mode 100644
index 00000000..63bf72d2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/am_ET.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
new file mode 100644
index 00000000..ece80621
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', 'ዲሴምበር'],
+    'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
+    'weekdays' => ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
+    'weekdays_short' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
+    'weekdays_min' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ጡዋት', 'ከሰዓት'],
+
+    'year' => ':count አመት',
+    'y' => ':count አመት',
+    'a_year' => ':count አመት',
+
+    'month' => ':count ወር',
+    'm' => ':count ወር',
+    'a_month' => ':count ወር',
+
+    'week' => ':count ሳምንት',
+    'w' => ':count ሳምንት',
+    'a_week' => ':count ሳምንት',
+
+    'day' => ':count ቀን',
+    'd' => ':count ቀን',
+    'a_day' => ':count ቀን',
+
+    'hour' => ':count ሰዓት',
+    'h' => ':count ሰዓት',
+    'a_hour' => ':count ሰዓት',
+
+    'minute' => ':count ደቂቃ',
+    'min' => ':count ደቂቃ',
+    'a_minute' => ':count ደቂቃ',
+
+    'second' => ':count ሴኮንድ',
+    's' => ':count ሴኮንድ',
+    'a_second' => ':count ሴኮንድ',
+
+    'ago' => 'ከ:time በፊት',
+    'from_now' => 'በ:time ውስጥ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an.php
new file mode 100644
index 00000000..565abf26
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/an_ES.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
new file mode 100644
index 00000000..faf8ae07
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Softaragones Jordi Mallach Pérez, Juan Pablo Martínez bug-glibc-locales@gnu.org, softaragones@softaragones.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['chinero', 'febrero', 'marzo', 'abril', 'mayo', 'chunyo', 'chuliol', 'agosto', 'setiembre', 'octubre', 'noviembre', 'aviento'],
+    'months_short' => ['chi', 'feb', 'mar', 'abr', 'may', 'chn', 'chl', 'ago', 'set', 'oct', 'nov', 'avi'],
+    'weekdays' => ['domingo', 'luns', 'martes', 'mierques', 'chueves', 'viernes', 'sabado'],
+    'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'],
+    'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count año',
+    'y' => ':count año',
+    'a_year' => ':count año',
+
+    'month' => ':count mes',
+    'm' => ':count mes',
+    'a_month' => ':count mes',
+
+    'week' => ':count semana',
+    'w' => ':count semana',
+    'a_week' => ':count semana',
+
+    'day' => ':count día',
+    'd' => ':count día',
+    'a_day' => ':count día',
+
+    'hour' => ':count reloch', // less reliable
+    'h' => ':count reloch', // less reliable
+    'a_hour' => ':count reloch', // less reliable
+
+    'minute' => ':count minuto',
+    'min' => ':count minuto',
+    'a_minute' => ':count minuto',
+
+    'second' => ':count segundo',
+    's' => ':count segundo',
+    'a_second' => ':count segundo',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp.php
new file mode 100644
index 00000000..b56c67bb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/anp_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
new file mode 100644
index 00000000..11069be3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bhashaghar@googlegroups.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर"'],
+    'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
+    'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
new file mode 100644
index 00000000..5f73f639
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Atef Ben Ali (atefBB)
+ * - Ibrahim AshShohail
+ * - MLTDev
+ * - Mohamed Sabil (mohamedsabil83)
+ * - Yazan Alnugnugh (yazan-alnugnugh)
+ */
+$months = [
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'مايو',
+    'يونيو',
+    'يوليو',
+    'أغسطس',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => ':time من الآن',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم عند الساعة] LT',
+        'nextDay' => '[غدًا عند الساعة] LT',
+        'nextWeek' => 'dddd [عند الساعة] LT',
+        'lastDay' => '[أمس عند الساعة] LT',
+        'lastWeek' => 'dddd [عند الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
new file mode 100644
index 00000000..75fe47f6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت '],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
new file mode 100644
index 00000000..362009e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
new file mode 100644
index 00000000..aea4eeec
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - Josh Soref
+ * - Noureddine LOUAHEDJ
+ * - JD Isaacks
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+$months = [
+    'جانفي',
+    'فيفري',
+    'مارس',
+    'أفريل',
+    'ماي',
+    'جوان',
+    'جويلية',
+    'أوت',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => 'في :time',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['أح', 'إث', 'ثلا', 'أر', 'خم', 'جم', 'سب'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 4,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم على الساعة] LT',
+        'nextDay' => '[غدا على الساعة] LT',
+        'nextWeek' => 'dddd [على الساعة] LT',
+        'lastDay' => '[أمس على الساعة] LT',
+        'lastWeek' => 'dddd [على الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
new file mode 100644
index 00000000..362009e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
new file mode 100644
index 00000000..5fecf70f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
new file mode 100644
index 00000000..0ac09958
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
new file mode 100644
index 00000000..0ac09958
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
new file mode 100644
index 00000000..e6f0531d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - Josh Soref
+ * - Nusret Parlak
+ * - JD Isaacks
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+$months = [
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'ماي',
+    'يونيو',
+    'يوليوز',
+    'غشت',
+    'شتنبر',
+    'أكتوبر',
+    'نونبر',
+    'دجنبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => 'في :time',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم على الساعة] LT',
+        'nextDay' => '[غدا على الساعة] LT',
+        'nextWeek' => 'dddd [على الساعة] LT',
+        'lastDay' => '[أمس على الساعة] LT',
+        'lastWeek' => 'dddd [على الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
new file mode 100644
index 00000000..55bb10c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
new file mode 100644
index 00000000..1f0af49d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Atef Ben Ali (atefBB)
+ * - Ibrahim AshShohail
+ * - MLTDev
+ */
+
+$months = [
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'مايو',
+    'يونيو',
+    'يوليو',
+    'أغسطس',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']),
+    'a_year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']),
+    'month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']),
+    'a_month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']),
+    'week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']),
+    'a_week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']),
+    'day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']),
+    'a_day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']),
+    'hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']),
+    'a_hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']),
+    'minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']),
+    'a_minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']),
+    'second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']),
+    'a_second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => ':time من الآن',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['مرة', 'مرة', ':count مرتين', ':count مرات', ':count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم عند الساعة] LT',
+        'nextDay' => '[غدًا عند الساعة] LT',
+        'nextWeek' => 'dddd [عند الساعة] LT',
+        'lastDay' => '[أمس عند الساعة] LT',
+        'lastWeek' => 'dddd [عند الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
new file mode 100644
index 00000000..047ae05a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+$months = [
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'ماي',
+    'يونيو',
+    'يوليوز',
+    'غشت',
+    'شتنبر',
+    'أكتوبر',
+    'نونبر',
+    'دجنبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => 'في :time',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم على الساعة] LT',
+        'nextDay' => '[غدا على الساعة] LT',
+        'nextWeek' => 'dddd [على الساعة] LT',
+        'lastDay' => '[أمس على الساعة] LT',
+        'lastWeek' => 'dddd [على الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
new file mode 100644
index 00000000..362009e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
new file mode 100644
index 00000000..362009e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
new file mode 100644
index 00000000..10aaa2ed
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+$months = [
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'مايو',
+    'يونيو',
+    'يوليو',
+    'أغسطس',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => 'في :time',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم على الساعة] LT',
+        'nextDay' => '[غدا على الساعة] LT',
+        'nextWeek' => 'dddd [على الساعة] LT',
+        'lastDay' => '[أمس على الساعة] LT',
+        'lastWeek' => 'dddd [على الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
new file mode 100644
index 00000000..362009e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
new file mode 100644
index 00000000..32f32825
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
new file mode 100644
index 00000000..0ac09958
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
new file mode 100644
index 00000000..c2d4b43d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Abdellah Chadidi
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+// Same for long and short
+$months = [
+    // @TODO add shakl to months
+    'يناير',
+    'فبراير',
+    'مارس',
+    'أبريل',
+    'مايو',
+    'يونيو',
+    'يوليو',
+    'أغسطس',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']),
+    'a_year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']),
+    'month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']),
+    'a_month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']),
+    'week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']),
+    'a_week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']),
+    'day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']),
+    'a_day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']),
+    'hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']),
+    'a_hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']),
+    'minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']),
+    'a_minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']),
+    'second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']),
+    'a_second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']),
+    'ago' => 'مُنْذُ :time',
+    'from_now' => 'مِنَ الْآن :time',
+    'after' => 'بَعْدَ :time',
+    'before' => 'قَبْلَ :time',
+
+    // @TODO add shakl to translations below
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم عند الساعة] LT',
+        'nextDay' => '[غدًا عند الساعة] LT',
+        'nextWeek' => 'dddd [عند الساعة] LT',
+        'lastDay' => '[أمس عند الساعة] LT',
+        'lastWeek' => 'dddd [عند الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
new file mode 100644
index 00000000..e790b99e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ar.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
new file mode 100644
index 00000000..f096678f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - JD Isaacks
+ * - Atef Ben Ali (atefBB)
+ * - Mohamed Sabil (mohamedsabil83)
+ */
+$months = [
+    'جانفي',
+    'فيفري',
+    'مارس',
+    'أفريل',
+    'ماي',
+    'جوان',
+    'جويلية',
+    'أوت',
+    'سبتمبر',
+    'أكتوبر',
+    'نوفمبر',
+    'ديسمبر',
+];
+
+return [
+    'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']),
+    'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']),
+    'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']),
+    'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']),
+    'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']),
+    'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']),
+    'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']),
+    'ago' => 'منذ :time',
+    'from_now' => 'في :time',
+    'after' => 'بعد :time',
+    'before' => 'قبل :time',
+    'diff_now' => 'الآن',
+    'diff_today' => 'اليوم',
+    'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_yesterday' => 'أمس',
+    'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_tomorrow' => 'غداً',
+    'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?',
+    'diff_before_yesterday' => 'قبل الأمس',
+    'diff_after_tomorrow' => 'بعد غد',
+    'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']),
+    'period_interval' => 'كل :interval',
+    'period_start_date' => 'من :date',
+    'period_end_date' => 'إلى :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اليوم على الساعة] LT',
+        'nextDay' => '[غدا على الساعة] LT',
+        'nextWeek' => 'dddd [على الساعة] LT',
+        'lastDay' => '[أمس على الساعة] LT',
+        'lastWeek' => 'dddd [على الساعة] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ص', 'م'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
new file mode 100644
index 00000000..5dc29388
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ar.php', [
+    'formats' => [
+        'L' => 'DD MMM, YYYY',
+    ],
+    'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'],
+    'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'],
+    'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'],
+    'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as.php
new file mode 100644
index 00000000..04bc3dfd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/as_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
new file mode 100644
index 00000000..5fbc3dba
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Amitakhya Phukan, Red Hat    bug-glibc@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D-MM-YYYY',
+    ],
+    'months' => ['জানুৱাৰী', 'ফেব্ৰুৱাৰী', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'ছেপ্তেম্বৰ', 'অক্টোবৰ', 'নৱেম্বৰ', 'ডিচেম্বৰ'],
+    'months_short' => ['জানু', 'ফেব্ৰু', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'],
+    'weekdays' => ['দেওবাৰ', 'সোমবাৰ', 'মঙ্গলবাৰ', 'বুধবাৰ', 'বৃহষ্পতিবাৰ', 'শুক্ৰবাৰ', 'শনিবাৰ'],
+    'weekdays_short' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'],
+    'weekdays_min' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['পূৰ্ব্বাহ্ন', 'অপৰাহ্ন'],
+
+    'year' => ':count বছৰ',
+    'y' => ':count বছৰ',
+    'a_year' => ':count বছৰ',
+
+    'month' => ':count মাহ',
+    'm' => ':count মাহ',
+    'a_month' => ':count মাহ',
+
+    'week' => ':count সপ্তাহ',
+    'w' => ':count সপ্তাহ',
+    'a_week' => ':count সপ্তাহ',
+
+    'day' => ':count বাৰ',
+    'd' => ':count বাৰ',
+    'a_day' => ':count বাৰ',
+
+    'hour' => ':count ঘণ্টা',
+    'h' => ':count ঘণ্টা',
+    'a_hour' => ':count ঘণ্টা',
+
+    'minute' => ':count মিনিট',
+    'min' => ':count মিনিট',
+    'a_minute' => ':count মিনিট',
+
+    'second' => ':count দ্বিতীয়',
+    's' => ':count দ্বিতীয়',
+    'a_second' => ':count দ্বিতীয়',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/asa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/asa.php
new file mode 100644
index 00000000..03bb4839
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/asa.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['icheheavo', 'ichamthi'],
+    'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Dec'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast.php
new file mode 100644
index 00000000..d9bdebe5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast.php
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Jordi Mallach jordi@gnu.org
+ * - Adolfo Jayme-Barrientos (fitojb)
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['de xineru', 'de febreru', 'de marzu', 'd’abril', 'de mayu', 'de xunu', 'de xunetu', 'd’agostu', 'de setiembre', 'd’ochobre', 'de payares', 'd’avientu'],
+    'months_short' => ['xin', 'feb', 'mar', 'abr', 'may', 'xun', 'xnt', 'ago', 'set', 'och', 'pay', 'avi'],
+    'weekdays' => ['domingu', 'llunes', 'martes', 'miércoles', 'xueves', 'vienres', 'sábadu'],
+    'weekdays_short' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'],
+    'weekdays_min' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'],
+
+    'year' => ':count añu|:count años',
+    'y' => ':count añu|:count años',
+    'a_year' => 'un añu|:count años',
+
+    'month' => ':count mes',
+    'm' => ':count mes',
+    'a_month' => 'un mes|:count mes',
+
+    'week' => ':count selmana|:count selmanes',
+    'w' => ':count selmana|:count selmanes',
+    'a_week' => 'una selmana|:count selmanes',
+
+    'day' => ':count día|:count díes',
+    'd' => ':count día|:count díes',
+    'a_day' => 'un día|:count díes',
+
+    'hour' => ':count hora|:count hores',
+    'h' => ':count hora|:count hores',
+    'a_hour' => 'una hora|:count hores',
+
+    'minute' => ':count minutu|:count minutos',
+    'min' => ':count minutu|:count minutos',
+    'a_minute' => 'un minutu|:count minutos',
+
+    'second' => ':count segundu|:count segundos',
+    's' => ':count segundu|:count segundos',
+    'a_second' => 'un segundu|:count segundos',
+
+    'ago' => 'hai :time',
+    'from_now' => 'en :time',
+    'after' => ':time dempués',
+    'before' => ':time enantes',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
new file mode 100644
index 00000000..04d75621
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ast.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
new file mode 100644
index 00000000..d6a6f638
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ayc_PE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
new file mode 100644
index 00000000..ff18504f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - runasimipi.org    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['inïru', 'phiwriru', 'marsu', 'awrila', 'mayu', 'junyu', 'julyu', 'awustu', 'sitimri', 'uktuwri', 'nuwimri', 'risimri'],
+    'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'jun', 'jul', 'awu', 'sit', 'ukt', 'nuw', 'ris'],
+    'weekdays' => ['tuminku', 'lunisa', 'martisa', 'mirkulisa', 'juywisa', 'wirnisa', 'sawäru'],
+    'weekdays_short' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'],
+    'weekdays_min' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['VM', 'NM'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az.php
new file mode 100644
index 00000000..1e92106d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az.php
@@ -0,0 +1,128 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Kunal Marwaha
+ * - François B
+ * - JD Isaacks
+ * - Orxan
+ * - Şəhriyar İmanov
+ * - Baran Şengül
+ */
+return [
+    'year' => ':count il',
+    'a_year' => '{1}bir il|]1,Inf[:count il',
+    'y' => ':count il',
+    'month' => ':count ay',
+    'a_month' => '{1}bir ay|]1,Inf[:count ay',
+    'm' => ':count ay',
+    'week' => ':count həftə',
+    'a_week' => '{1}bir həftə|]1,Inf[:count həftə',
+    'w' => ':count h.',
+    'day' => ':count gün',
+    'a_day' => '{1}bir gün|]1,Inf[:count gün',
+    'd' => ':count g.',
+    'hour' => ':count saat',
+    'a_hour' => '{1}bir saat|]1,Inf[:count saat',
+    'h' => ':count saat',
+    'minute' => ':count d.',
+    'a_minute' => '{1}bir dəqiqə|]1,Inf[:count dəqiqə',
+    'min' => ':count dəqiqə',
+    'second' => ':count san.',
+    'a_second' => '{1}birneçə saniyə|]1,Inf[:count saniyə',
+    's' => ':count saniyÉ™',
+    'ago' => ':time əvvəl',
+    'from_now' => ':time sonra',
+    'after' => ':time sonra',
+    'before' => ':time əvvəl',
+    'diff_now' => 'indi',
+    'diff_today' => 'bugün',
+    'diff_today_regexp' => 'bugün(?:\\s+saat)?',
+    'diff_yesterday' => 'dünən',
+    'diff_tomorrow' => 'sabah',
+    'diff_tomorrow_regexp' => 'sabah(?:\\s+saat)?',
+    'diff_before_yesterday' => 'srağagün',
+    'diff_after_tomorrow' => 'birisi gün',
+    'period_recurrences' => ':count dəfədən bir',
+    'period_interval' => 'hər :interval',
+    'period_start_date' => ':date tarixindən başlayaraq',
+    'period_end_date' => ':date tarixinədək',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[bugün saat] LT',
+        'nextDay' => '[sabah saat] LT',
+        'nextWeek' => '[gələn həftə] dddd [saat] LT',
+        'lastDay' => '[dünən] LT',
+        'lastWeek' => '[keçən həftə] dddd [saat] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        if ($number === 0) { // special case for zero
+            return "$number-ıncı";
+        }
+
+        static $suffixes = [
+            1 => '-inci',
+            5 => '-inci',
+            8 => '-inci',
+            70 => '-inci',
+            80 => '-inci',
+            2 => '-nci',
+            7 => '-nci',
+            20 => '-nci',
+            50 => '-nci',
+            3 => '-üncü',
+            4 => '-üncü',
+            100 => '-üncü',
+            6 => '-ncı',
+            9 => '-uncu',
+            10 => '-uncu',
+            30 => '-uncu',
+            60 => '-ıncı',
+            90 => '-ıncı',
+        ];
+
+        $lastDigit = $number % 10;
+
+        return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'gecÉ™';
+        }
+        if ($hour < 12) {
+            return 'səhər';
+        }
+        if ($hour < 17) {
+            return 'gündüz';
+        }
+
+        return 'axÅŸam';
+    },
+    'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
+    'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'],
+    'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Ä°yun', 'Ä°yul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'],
+    'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
+    'weekdays_short' => ['baz', 'bze', 'çax', 'çər', 'cax', 'cüm', 'şən'],
+    'weekdays_min' => ['bz', 'be', 'ça', 'çə', 'ca', 'cü', 'şə'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' vÉ™ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
new file mode 100644
index 00000000..2acf881a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/az.php', [
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Ä°yn', 'Ä°yl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['bazar günü', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
+    'weekdays_short' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'],
+    'weekdays_min' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
new file mode 100644
index 00000000..28fc62fe
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/az.php', [
+    'weekdays' => ['базар', 'базар ертәси', 'чәршәнбә ахшамы', 'чәршәнбә', 'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'],
+    'weekdays_short' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'],
+    'weekdays_min' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'],
+    'months' => ['јанвар', 'феврал', 'март', 'апрел', 'май', 'ијун', 'ијул', 'август', 'сентјабр', 'октјабр', 'нојабр', 'декабр'],
+    'months_short' => ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'],
+    'months_standalone' => ['Јанвар', 'Феврал', 'Март', 'Апрел', 'Май', 'Ијун', 'Ијул', 'Август', 'Сентјабр', 'Октјабр', 'Нојабр', 'Декабр'],
+    'meridiem' => ['а', 'п'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
new file mode 100644
index 00000000..991a0efb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Mousa Moradi mousamk@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'OY/OM/OD',
+    ],
+    'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'],
+    'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'],
+    'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
+    'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
+    'weekdays_min' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'],
+    'first_day_of_week' => 6,
+    'alt_numbers' => ['Û°Û°', 'Û°Û±', 'Û°Û²', 'Û°Û³', 'Û°Û´', 'Û°Ûµ', 'Û°Û¶', 'Û°Û·', 'Û°Û¸', 'Û°Û¹', 'Û±Û°', 'Û±Û±', 'Û±Û²', 'Û±Û³', 'Û±Û´', 'Û±Ûµ', 'Û±Û¶', 'Û±Û·', 'Û±Û¸', 'Û±Û¹', 'Û²Û°', 'Û²Û±', 'Û²Û²', 'Û²Û³', 'Û²Û´', 'Û²Ûµ', 'Û²Û¶', 'Û²Û·', 'Û²Û¸', 'Û²Û¹', 'Û³Û°', 'Û³Û±', 'Û³Û²', 'Û³Û³', 'Û³Û´', 'Û³Ûµ', 'Û³Û¶', 'Û³Û·', 'Û³Û¸', 'Û³Û¹', 'Û´Û°', 'Û´Û±', 'Û´Û²', 'Û´Û³', 'Û´Û´', 'Û´Ûµ', 'Û´Û¶', 'Û´Û·', 'Û´Û¸', 'Û´Û¹', 'ÛµÛ°', 'ÛµÛ±', 'ÛµÛ²', 'ÛµÛ³', 'ÛµÛ´', 'ÛµÛµ', 'ÛµÛ¶', 'ÛµÛ·', 'ÛµÛ¸', 'ÛµÛ¹', 'Û¶Û°', 'Û¶Û±', 'Û¶Û²', 'Û¶Û³', 'Û¶Û´', 'Û¶Ûµ', 'Û¶Û¶', 'Û¶Û·', 'Û¶Û¸', 'Û¶Û¹', 'Û·Û°', 'Û·Û±', 'Û·Û²', 'Û·Û³', 'Û·Û´', 'Û·Ûµ', 'Û·Û¶', 'Û·Û·', 'Û·Û¸', 'Û·Û¹', 'Û¸Û°', 'Û¸Û±', 'Û¸Û²', 'Û¸Û³', 'Û¸Û´', 'Û¸Ûµ', 'Û¸Û¶', 'Û¸Û·', 'Û¸Û¸', 'Û¸Û¹', 'Û¹Û°', 'Û¹Û±', 'Û¹Û²', 'Û¹Û³', 'Û¹Û´', 'Û¹Ûµ', 'Û¹Û¶', 'Û¹Û·', 'Û¹Û¸', 'Û¹Û¹'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
new file mode 100644
index 00000000..0be33914
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/az.php', [
+    'meridiem' => ['a', 'p'],
+    'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'],
+    'weekdays_short' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'],
+    'weekdays_min' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'],
+    'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
+    'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'],
+    'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Ä°yun', 'Ä°yul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'D MMMM YYYY, dddd HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bas.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bas.php
new file mode 100644
index 00000000..41bfa1d8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bas.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['I bikɛ̂glà', 'I ɓugajɔp'],
+    'weekdays' => ['ŋgwà nɔ̂y', 'ŋgwà njaŋgumba', 'ŋgwà ûm', 'ŋgwà ŋgê', 'ŋgwà mbɔk', 'ŋgwà kɔɔ', 'ŋgwà jôn'],
+    'weekdays_short' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'],
+    'weekdays_min' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'],
+    'months' => ['Kɔndɔŋ', 'Màcɛ̂l', 'Màtùmb', 'Màtop', 'M̀puyɛ', 'Hìlòndɛ̀', 'Njèbà', 'Hìkaŋ', 'Dìpɔ̀s', 'Bìòôm', 'Màyɛsèp', 'Lìbuy li ńyèe'],
+    'months_short' => ['kɔn', 'mac', 'mat', 'mto', 'mpu', 'hil', 'nje', 'hik', 'dip', 'bio', 'may', 'liɓ'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'second' => ':count móndî', // less reliable
+    's' => ':count móndî', // less reliable
+    'a_second' => ':count móndî', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be.php
new file mode 100644
index 00000000..51b4d0cc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be.php
@@ -0,0 +1,173 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+// @codeCoverageIgnoreStart
+
+use Carbon\CarbonInterface;
+use Symfony\Component\Translation\PluralizationRules;
+
+if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
+    PluralizationRules::set(function ($number) {
+        return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
+    }, 'be');
+}
+// @codeCoverageIgnoreEnd
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - SobakaSlava
+ * - François B
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - AbadonnaAbbys
+ * - Siomkin Alexander
+ */
+return [
+    'year' => ':count год|:count гады|:count гадоў',
+    'a_year' => '{1}год|:count год|:count гады|:count гадоў',
+    'y' => ':count год|:count гады|:count гадоў',
+    'month' => ':count месяц|:count месяцы|:count месяцаў',
+    'a_month' => '{1}месяц|:count месяц|:count месяцы|:count месяцаў',
+    'm' => ':count месяц|:count месяцы|:count месяцаў',
+    'week' => ':count тыдзень|:count тыдні|:count тыдняў',
+    'a_week' => '{1}тыдзень|:count тыдзень|:count тыдні|:count тыдняў',
+    'w' => ':count тыдзень|:count тыдні|:count тыдняў',
+    'day' => ':count дзень|:count дні|:count дзён',
+    'a_day' => '{1}дзень|:count дзень|:count дні|:count дзён',
+    'd' => ':count дн',
+    'hour' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'a_hour' => '{1}гадзіна|:count гадзіна|:count гадзіны|:count гадзін',
+    'h' => ':count гадзіна|:count гадзіны|:count гадзін',
+    'minute' => ':count хвіліна|:count хвіліны|:count хвілін',
+    'a_minute' => '{1}хвіліна|:count хвіліна|:count хвіліны|:count хвілін',
+    'min' => ':count хв',
+    'second' => ':count секунда|:count секунды|:count секунд',
+    'a_second' => '{1}некалькі секунд|:count секунда|:count секунды|:count секунд',
+    's' => ':count сек',
+
+    'hour_ago' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'a_hour_ago' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
+    'h_ago' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'minute_ago' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'a_minute_ago' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
+    'min_ago' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'second_ago' => ':count секунду|:count секунды|:count секунд',
+    'a_second_ago' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
+    's_ago' => ':count секунду|:count секунды|:count секунд',
+
+    'hour_from_now' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'a_hour_from_now' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
+    'h_from_now' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'minute_from_now' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'a_minute_from_now' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
+    'min_from_now' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'second_from_now' => ':count секунду|:count секунды|:count секунд',
+    'a_second_from_now' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
+    's_from_now' => ':count секунду|:count секунды|:count секунд',
+
+    'hour_after' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'a_hour_after' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
+    'h_after' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'minute_after' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'a_minute_after' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
+    'min_after' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'second_after' => ':count секунду|:count секунды|:count секунд',
+    'a_second_after' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
+    's_after' => ':count секунду|:count секунды|:count секунд',
+
+    'hour_before' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'a_hour_before' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін',
+    'h_before' => ':count гадзіну|:count гадзіны|:count гадзін',
+    'minute_before' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'a_minute_before' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін',
+    'min_before' => ':count хвіліну|:count хвіліны|:count хвілін',
+    'second_before' => ':count секунду|:count секунды|:count секунд',
+    'a_second_before' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд',
+    's_before' => ':count секунду|:count секунды|:count секунд',
+
+    'ago' => ':time таму',
+    'from_now' => 'праз :time',
+    'after' => ':time пасля',
+    'before' => ':time да',
+    'diff_now' => 'цяпер',
+    'diff_today' => 'Сёння',
+    'diff_today_regexp' => 'Сёння(?:\\s+ў)?',
+    'diff_yesterday' => 'учора',
+    'diff_yesterday_regexp' => 'Учора(?:\\s+ў)?',
+    'diff_tomorrow' => 'заўтра',
+    'diff_tomorrow_regexp' => 'Заўтра(?:\\s+ў)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY г.',
+        'LLL' => 'D MMMM YYYY г., HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY г., HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Сёння ў] LT',
+        'nextDay' => '[Заўтра ў] LT',
+        'nextWeek' => '[У] dddd [ў] LT',
+        'lastDay' => '[Учора ў] LT',
+        'lastWeek' => function (CarbonInterface $current) {
+            switch ($current->dayOfWeek) {
+                case 1:
+                case 2:
+                case 4:
+                    return '[У мінулы] dddd [ў] LT';
+                default:
+                    return '[У мінулую] dddd [ў] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'M':
+            case 'd':
+            case 'DDD':
+            case 'w':
+            case 'W':
+                return ($number % 10 === 2 || $number % 10 === 3) && ($number % 100 !== 12 && $number % 100 !== 13) ? $number.'-Ñ–' : $number.'-Ñ‹';
+            case 'D':
+                return $number.'-га';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'ночы';
+        }
+        if ($hour < 12) {
+            return 'раніцы';
+        }
+        if ($hour < 17) {
+            return 'дня';
+        }
+
+        return 'вечара';
+    },
+    'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'траўня', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'],
+    'months_standalone' => ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'],
+    'months_short' => ['студ', 'лют', 'сак', 'крас', 'трав', 'чэрв', 'ліп', 'жнів', 'вер', 'каст', 'ліст', 'снеж'],
+    'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['нядзелю', 'панядзелак', 'аўторак', 'сераду', 'чацвер', 'пятніцу', 'суботу'],
+    'weekdays_standalone' => ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'],
+    'weekdays_short' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'],
+    'weekdays_min' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'],
+    'weekdays_regexp' => '/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' Ñ– '],
+    'months_short_standalone' => ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
new file mode 100644
index 00000000..26684b40
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/be.php', [
+    'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'],
+    'months_short' => ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'],
+    'weekdays' => ['Нядзеля', 'Панядзелак', 'Аўторак', 'Серада', 'Чацвер', 'Пятніца', 'Субота'],
+    'weekdays_short' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'],
+    'weekdays_min' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
new file mode 100644
index 00000000..517ce83a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['studzienia', 'lutaha', 'sakavika', 'krasavika', 'maja', 'červienia', 'lipienia', 'žniŭnia', 'vieraśnia', 'kastryčnika', 'listapada', 'śniežnia'],
+    'months_short' => ['Stu', 'Lut', 'Sak', 'Kra', 'Maj', 'Čer', 'Lip', 'Žni', 'Vie', 'Kas', 'Lis', 'Śni'],
+    'weekdays' => ['Niadziela', 'Paniadziełak', 'Aŭtorak', 'Sierada', 'Čaćvier', 'Piatnica', 'Subota'],
+    'weekdays_short' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'],
+    'weekdays_min' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem.php
new file mode 100644
index 00000000..1c3ef039
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/bem_ZM.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
new file mode 100644
index 00000000..620b5795
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ANLoc Martin Benjamin locales@africanlocalization.net
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'MM/DD/YYYY',
+    ],
+    'months' => ['Januari', 'Februari', 'Machi', 'Epreo', 'Mei', 'Juni', 'Julai', 'Ogasti', 'Septemba', 'Oktoba', 'Novemba', 'Disemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Epr', 'Mei', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Dis'],
+    'weekdays' => ['Pa Mulungu', 'Palichimo', 'Palichibuli', 'Palichitatu', 'Palichine', 'Palichisano', 'Pachibelushi'],
+    'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+    'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['uluchelo', 'akasuba'],
+
+    'year' => 'myaka :count',
+    'y' => 'myaka :count',
+    'a_year' => 'myaka :count',
+
+    'month' => 'myeshi :count',
+    'm' => 'myeshi :count',
+    'a_month' => 'myeshi :count',
+
+    'week' => 'umulungu :count',
+    'w' => 'umulungu :count',
+    'a_week' => 'umulungu :count',
+
+    'day' => 'inshiku :count',
+    'd' => 'inshiku :count',
+    'a_day' => 'inshiku :count',
+
+    'hour' => 'awala :count',
+    'h' => 'awala :count',
+    'a_hour' => 'awala :count',
+
+    'minute' => 'miniti :count',
+    'min' => 'miniti :count',
+    'a_minute' => 'miniti :count',
+
+    'second' => 'sekondi :count',
+    's' => 'sekondi :count',
+    'a_second' => 'sekondi :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber.php
new file mode 100644
index 00000000..685603c0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ber_DZ.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
new file mode 100644
index 00000000..38de10ab
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Ä°yn', 'Ä°yl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'],
+    'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
+    'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
new file mode 100644
index 00000000..38de10ab
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'],
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Ä°yn', 'Ä°yl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'],
+    'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
+    'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bez.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bez.php
new file mode 100644
index 00000000..d59c5ef5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bez.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['pamilau', 'pamunyi'],
+    'weekdays' => ['pa mulungu', 'pa shahuviluha', 'pa hivili', 'pa hidatu', 'pa hitayi', 'pa hihanu', 'pa shahulembela'],
+    'weekdays_short' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'],
+    'weekdays_min' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'],
+    'months' => ['pa mwedzi gwa hutala', 'pa mwedzi gwa wuvili', 'pa mwedzi gwa wudatu', 'pa mwedzi gwa wutai', 'pa mwedzi gwa wuhanu', 'pa mwedzi gwa sita', 'pa mwedzi gwa saba', 'pa mwedzi gwa nane', 'pa mwedzi gwa tisa', 'pa mwedzi gwa kumi', 'pa mwedzi gwa kumi na moja', 'pa mwedzi gwa kumi na mbili'],
+    'months_short' => ['Hut', 'Vil', 'Dat', 'Tai', 'Han', 'Sit', 'Sab', 'Nan', 'Tis', 'Kum', 'Kmj', 'Kmb'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
new file mode 100644
index 00000000..f7680740
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg.php
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - Glavić
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count година|:count години',
+    'a_year' => 'година|:count години',
+    'y' => ':count година|:count години',
+    'month' => ':count месец|:count месеца',
+    'a_month' => 'месец|:count месеца',
+    'm' => ':count месец|:count месеца',
+    'week' => ':count седмица|:count седмици',
+    'a_week' => 'седмица|:count седмици',
+    'w' => ':count седмица|:count седмици',
+    'day' => ':count ден|:count дни',
+    'a_day' => 'ден|:count дни',
+    'd' => ':count ден|:count дни',
+    'hour' => ':count час|:count часа',
+    'a_hour' => 'час|:count часа',
+    'h' => ':count час|:count часа',
+    'minute' => ':count минута|:count минути',
+    'a_minute' => 'минута|:count минути',
+    'min' => ':count минута|:count минути',
+    'second' => ':count секунда|:count секунди',
+    'a_second' => 'няколко секунди|:count секунди',
+    's' => ':count секунда|:count секунди',
+    'ago' => 'преди :time',
+    'from_now' => 'след :time',
+    'after' => 'след :time',
+    'before' => 'преди :time',
+    'diff_now' => 'сега',
+    'diff_today' => 'Днес',
+    'diff_today_regexp' => 'Днес(?:\\s+в)?',
+    'diff_yesterday' => 'вчера',
+    'diff_yesterday_regexp' => 'Вчера(?:\\s+в)?',
+    'diff_tomorrow' => 'утре',
+    'diff_tomorrow_regexp' => 'Утре(?:\\s+в)?',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'D.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Днес в] LT',
+        'nextDay' => '[Утре в] LT',
+        'nextWeek' => 'dddd [в] LT',
+        'lastDay' => '[Вчера в] LT',
+        'lastWeek' => function (CarbonInterface $current) {
+            switch ($current->dayOfWeek) {
+                case 0:
+                case 3:
+                case 6:
+                    return '[В изминалата] dddd [в] LT';
+                default:
+                    return '[В изминалия] dddd [в] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        $lastDigit = $number % 10;
+        $last2Digits = $number % 100;
+        if ($number === 0) {
+            return "$number-ев";
+        }
+        if ($last2Digits === 0) {
+            return "$number-ен";
+        }
+        if ($last2Digits > 10 && $last2Digits < 20) {
+            return "$number-ти";
+        }
+        if ($lastDigit === 1) {
+            return "$number-ви";
+        }
+        if ($lastDigit === 2) {
+            return "$number-ри";
+        }
+        if ($lastDigit === 7 || $lastDigit === 8) {
+            return "$number-ми";
+        }
+
+        return "$number-ти";
+    },
+    'months' => ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември'],
+    'months_short' => ['яну', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'],
+    'weekdays' => ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'],
+    'weekdays_short' => ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'],
+    'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' и '],
+    'meridiem' => ['преди обяд', 'следобед'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
new file mode 100644
index 00000000..b53874d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/bg.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
new file mode 100644
index 00000000..49f08032
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/bhb_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
new file mode 100644
index 00000000..ab557cbf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    alexey.merzlyakov@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+    'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+    'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+    'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho.php
new file mode 100644
index 00000000..e9ed0b68
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/bho_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
new file mode 100644
index 00000000..bc54f363
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bhashaghar@googlegroups.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'],
+    'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'],
+    'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+
+    'hour' => ':count मौसम',
+    'h' => ':count मौसम',
+    'a_hour' => ':count मौसम',
+
+    'minute' => ':count कला',
+    'min' => ':count कला',
+    'a_minute' => ':count कला',
+
+    'second' => ':count सोमार',
+    's' => ':count सोमार',
+    'a_second' => ':count सोमार',
+
+    'year' => ':count साल',
+    'y' => ':count साल',
+    'a_year' => ':count साल',
+
+    'month' => ':count महिना',
+    'm' => ':count महिना',
+    'a_month' => ':count महिना',
+
+    'week' => ':count सप्ताह',
+    'w' => ':count सप्ताह',
+    'a_week' => ':count सप्ताह',
+
+    'day' => ':count दिन',
+    'd' => ':count दिन',
+    'a_day' => ':count दिन',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi.php
new file mode 100644
index 00000000..dd08128e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/bi_VU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
new file mode 100644
index 00000000..1fe77705
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    akhilesh.k@samsung.com & maninder1.s@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'dddd DD MMM YYYY',
+    ],
+    'months' => ['jenuware', 'febwari', 'maj', 'epril', 'mei', 'jun', 'julae', 'ogis', 'septemba', 'oktoba', 'novemba', 'disemba'],
+    'months_short' => ['jen', 'feb', 'maj', 'epr', 'mei', 'jun', 'jul', 'ogi', 'sep', 'okt', 'nov', 'dis'],
+    'weekdays' => ['sande', 'mande', 'maj', 'wota', 'fraede', 'sarede'],
+    'weekdays_short' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'],
+    'weekdays_min' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'],
+
+    'year' => ':count seven', // less reliable
+    'y' => ':count seven', // less reliable
+    'a_year' => ':count seven', // less reliable
+
+    'month' => ':count mi', // less reliable
+    'm' => ':count mi', // less reliable
+    'a_month' => ':count mi', // less reliable
+
+    'week' => ':count sarede', // less reliable
+    'w' => ':count sarede', // less reliable
+    'a_week' => ':count sarede', // less reliable
+
+    'day' => ':count betde', // less reliable
+    'd' => ':count betde', // less reliable
+    'a_day' => ':count betde', // less reliable
+
+    'hour' => ':count klok', // less reliable
+    'h' => ':count klok', // less reliable
+    'a_hour' => ':count klok', // less reliable
+
+    'minute' => ':count smol', // less reliable
+    'min' => ':count smol', // less reliable
+    'a_minute' => ':count smol', // less reliable
+
+    'second' => ':count tu', // less reliable
+    's' => ':count tu', // less reliable
+    'a_second' => ':count tu', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bm.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bm.php
new file mode 100644
index 00000000..92822d29
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bm.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Estelle Comment
+ */
+return [
+    'year' => 'san :count',
+    'a_year' => '{1}san kelen|san :count',
+    'y' => 'san :count',
+    'month' => 'kalo :count',
+    'a_month' => '{1}kalo kelen|kalo :count',
+    'm' => 'k. :count',
+    'week' => 'dɔgɔkun :count',
+    'a_week' => 'dɔgɔkun kelen',
+    'w' => 'd. :count',
+    'day' => 'tile :count',
+    'd' => 't. :count',
+    'a_day' => '{1}tile kelen|tile :count',
+    'hour' => 'lɛrɛ :count',
+    'a_hour' => '{1}lɛrɛ kelen|lɛrɛ :count',
+    'h' => 'l. :count',
+    'minute' => 'miniti :count',
+    'a_minute' => '{1}miniti kelen|miniti :count',
+    'min' => 'm. :count',
+    'second' => 'sekondi :count',
+    'a_second' => '{1}sanga dama dama|sekondi :count',
+    's' => 'sek. :count',
+    'ago' => 'a bÉ› :time bÉ”',
+    'from_now' => ':time kɔnɔ',
+    'diff_today' => 'Bi',
+    'diff_yesterday' => 'Kunu',
+    'diff_yesterday_regexp' => 'Kunu(?:\\s+lɛrɛ)?',
+    'diff_tomorrow' => 'Sini',
+    'diff_tomorrow_regexp' => 'Sini(?:\\s+lɛrɛ)?',
+    'diff_today_regexp' => 'Bi(?:\\s+lɛrɛ)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'MMMM [tile] D [san] YYYY',
+        'LLL' => 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+        'LLLL' => 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Bi lɛrɛ] LT',
+        'nextDay' => '[Sini lɛrɛ] LT',
+        'nextWeek' => 'dddd [don lɛrɛ] LT',
+        'lastDay' => '[Kunu lɛrɛ] LT',
+        'lastWeek' => 'dddd [tɛmɛnen lɛrɛ] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['Zanwuyekalo', 'Fewuruyekalo', 'Marisikalo', 'Awirilikalo', 'Mɛkalo', 'Zuwɛnkalo', 'Zuluyekalo', 'Utikalo', 'Sɛtanburukalo', 'ɔkutɔburukalo', 'Nowanburukalo', 'Desanburukalo'],
+    'months_short' => ['Zan', 'Few', 'Mar', 'Awi', 'Mɛ', 'Zuw', 'Zul', 'Uti', 'Sɛt', 'ɔku', 'Now', 'Des'],
+    'weekdays' => ['Kari', 'Ntɛnɛn', 'Tarata', 'Araba', 'Alamisa', 'Juma', 'Sibiri'],
+    'weekdays_short' => ['Kar', 'NtÉ›', 'Tar', 'Ara', 'Ala', 'Jum', 'Sib'],
+    'weekdays_min' => ['Ka', 'Nt', 'Ta', 'Ar', 'Al', 'Ju', 'Si'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' ni '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn.php
new file mode 100644
index 00000000..8e147899
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Shakib Hossain
+ * - Raju
+ * - Aniruddha Adhikary
+ * - JD Isaacks
+ * - Saiful Islam
+ * - Faisal Islam
+ */
+return [
+    'year' => ':count বছর',
+    'a_year' => 'এক বছর|:count বছর',
+    'y' => '১ বছর|:count বছর',
+    'month' => ':count মাস',
+    'a_month' => 'এক মাস|:count মাস',
+    'm' => '১ মাস|:count মাস',
+    'week' => ':count সপ্তাহ',
+    'a_week' => '১ সপ্তাহ|:count সপ্তাহ',
+    'w' => '১ সপ্তাহ|:count সপ্তাহ',
+    'day' => ':count দিন',
+    'a_day' => 'এক দিন|:count দিন',
+    'd' => '১ দিন|:count দিন',
+    'hour' => ':count ঘন্টা',
+    'a_hour' => 'এক ঘন্টা|:count ঘন্টা',
+    'h' => '১ ঘন্টা|:count ঘন্টা',
+    'minute' => ':count মিনিট',
+    'a_minute' => 'এক মিনিট|:count মিনিট',
+    'min' => '১ মিনিট|:count মিনিট',
+    'second' => ':count সেকেন্ড',
+    'a_second' => 'কয়েক সেকেন্ড|:count সেকেন্ড',
+    's' => '১ সেকেন্ড|:count সেকেন্ড',
+    'ago' => ':time আগে',
+    'from_now' => ':time পরে',
+    'after' => ':time পরে',
+    'before' => ':time আগে',
+    'diff_now' => 'এখন',
+    'diff_today' => 'আজ',
+    'diff_yesterday' => 'গতকাল',
+    'diff_tomorrow' => 'আগামীকাল',
+    'period_recurrences' => ':count বার|:count বার',
+    'period_interval' => 'প্রতি :interval',
+    'period_start_date' => ':date থেকে',
+    'period_end_date' => ':date পর্যন্ত',
+    'formats' => [
+        'LT' => 'A Oh:Om সময়',
+        'LTS' => 'A Oh:Om:Os সময়',
+        'L' => 'OD/OM/OY',
+        'LL' => 'OD MMMM OY',
+        'LLL' => 'OD MMMM OY, A Oh:Om সময়',
+        'LLLL' => 'dddd, OD MMMM OY, A Oh:Om সময়',
+    ],
+    'calendar' => [
+        'sameDay' => '[আজ] LT',
+        'nextDay' => '[আগামীকাল] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[গতকাল] LT',
+        'lastWeek' => '[গত] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'রাত';
+        }
+        if ($hour < 10) {
+            return 'সকাল';
+        }
+        if ($hour < 17) {
+            return 'দুপুর';
+        }
+        if ($hour < 20) {
+            return 'বিকাল';
+        }
+
+        return 'রাত';
+    },
+    'months' => ['জানুয়ারী', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্র', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'],
+    'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
+    'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
+    'weekdays_min' => ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
+    'list' => [', ', ' এবং '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekdays_standalone' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহষ্পতিবার', 'শুক্রবার', 'শনিবার'],
+    'weekdays_min_standalone' => ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'],
+    'months_short_standalone' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'alt_numbers' => ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
new file mode 100644
index 00000000..b5b28dd1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ankur Group, Taneem Ahmed, Jamil Ahmed
+ */
+return array_replace_recursive(require __DIR__.'/bn.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
+    'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
+    'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'],
+    'first_day_of_week' => 5,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
new file mode 100644
index 00000000..8b3a50e5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/bn.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'],
+    'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'],
+    'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
+    'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo.php
new file mode 100644
index 00000000..99e1bf4c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ */
+return [
+    'year' => '{1}ལོ་གཅིག|]1,Inf[:count ལོ',
+    'month' => '{1}ཟླ་བ་གཅིག|]1,Inf[:count ཟླ་བ',
+    'week' => ':count བདུན་ཕྲག',
+    'day' => '{1}ཉིན་གཅིག|]1,Inf[:count ཉིན་',
+    'hour' => '{1}ཆུ་ཚོད་གཅིག|]1,Inf[:count ཆུ་ཚོད',
+    'minute' => '{1}སྐར་མ་གཅིག|]1,Inf[:count སྐར་མ',
+    'second' => '{1}ལམ་སང|]1,Inf[:count སྐར་ཆ།',
+    'ago' => ':time སྔན་ལ',
+    'from_now' => ':time ལ་',
+    'diff_yesterday' => 'ཁ་སང',
+    'diff_today' => 'དི་རིང',
+    'diff_tomorrow' => 'སང་ཉིན',
+    'formats' => [
+        'LT' => 'A h:mm',
+        'LTS' => 'A h:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[དི་རིང] LT',
+        'nextDay' => '[སང་ཉིན] LT',
+        'nextWeek' => '[བདུན་ཕྲག་རྗེས་མ], LT',
+        'lastDay' => '[ཁ་སང] LT',
+        'lastWeek' => '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'མཚན་མོ';
+        }
+        if ($hour < 10) {
+            return 'ཞོགས་ཀས';
+        }
+        if ($hour < 17) {
+            return 'ཉིན་གུང';
+        }
+        if ($hour < 20) {
+            return 'དགོང་དག';
+        }
+
+        return 'མཚན་མོ';
+    },
+    'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
+    'months_short' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
+    'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'],
+    'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'],
+    'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'],
+    'list' => [', ', ' ཨནད་ '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
new file mode 100644
index 00000000..380abb1e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/bo.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
new file mode 100644
index 00000000..ca50d049
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/bo.php', [
+    'meridiem' => ['སྔ་དྲོ་', 'ཕྱི་དྲོ་'],
+    'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'],
+    'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'],
+    'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'],
+    'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'],
+    'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'],
+    'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
+    'weekend' => [0, 0],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'YYYY ལོའི་MMMཚེས་D',
+        'LLL' => 'སྤྱི་ལོ་YYYY MMMMའི་ཚེས་D h:mm a',
+        'LLLL' => 'YYYY MMMMའི་ཚེས་D, dddd h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br.php
new file mode 100644
index 00000000..583472fb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Serhan Apaydın
+ * - JD Isaacks
+ */
+return [
+    'year' => '{1}:count bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz',
+    'a_year' => '{1}ur bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz',
+    'month' => '{1}:count miz|{2}:count viz|[0,Inf[:count miz',
+    'a_month' => '{1}ur miz|{2}:count viz|[0,Inf[:count miz',
+    'week' => ':count sizhun',
+    'a_week' => '{1}ur sizhun|:count sizhun',
+    'day' => '{1}:count devezh|{2}:count zevezh|[0,Inf[:count devezh',
+    'a_day' => '{1}un devezh|{2}:count zevezh|[0,Inf[:count devezh',
+    'hour' => ':count eur',
+    'a_hour' => '{1}un eur|:count eur',
+    'minute' => '{1}:count vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn',
+    'a_minute' => '{1}ur vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn',
+    'second' => ':count eilenn',
+    'a_second' => '{1}un nebeud segondennoù|[0,Inf[:count eilenn',
+    'ago' => ':time \'zo',
+    'from_now' => 'a-benn :time',
+    'diff_now' => 'bremañ',
+    'diff_today' => 'Hiziv',
+    'diff_today_regexp' => 'Hiziv(?:\\s+da)?',
+    'diff_yesterday' => 'decʼh',
+    'diff_yesterday_regexp' => 'Dec\'h(?:\\s+da)?',
+    'diff_tomorrow' => 'warcʼhoazh',
+    'diff_tomorrow_regexp' => 'Warc\'hoazh(?:\\s+da)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D [a viz] MMMM YYYY',
+        'LLL' => 'D [a viz] MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D [a viz] MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Hiziv da] LT',
+        'nextDay' => '[Warc\'hoazh da] LT',
+        'nextWeek' => 'dddd [da] LT',
+        'lastDay' => '[Dec\'h da] LT',
+        'lastWeek' => 'dddd [paset da] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.($number === 1 ? 'añ' : 'vet');
+    },
+    'months' => ['Genver', 'C\'hwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', 'Here', 'Du', 'Kerzu'],
+    'months_short' => ['Gen', 'C\'hwe', 'Meu', 'Ebr', 'Mae', 'Eve', 'Gou', 'Eos', 'Gwe', 'Her', 'Du', 'Ker'],
+    'weekdays' => ['Sul', 'Lun', 'Meurzh', 'Merc\'her', 'Yaou', 'Gwener', 'Sadorn'],
+    'weekdays_short' => ['Sul', 'Lun', 'Meu', 'Mer', 'Yao', 'Gwe', 'Sad'],
+    'weekdays_min' => ['Su', 'Lu', 'Me', 'Mer', 'Ya', 'Gw', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' hag '],
+    'meridiem' => ['A.M.', 'G.M.'],
+
+    'y' => ':count bl.',
+    'd' => ':count d',
+    'h' => ':count e',
+    'min' => ':count min',
+    's' => ':count s',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
new file mode 100644
index 00000000..7f541858
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/br.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx.php
new file mode 100644
index 00000000..a0a7bf9b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/brx_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
new file mode 100644
index 00000000..2d80ced2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'M/D/YY',
+    ],
+    'months' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एफ्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'],
+    'months_short' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एप्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'],
+    'weekdays' => ['रबिबार', 'सोबार', 'मंगलबार', 'बुदबार', 'बिसथिबार', 'सुखुरबार', 'सुनिबार'],
+    'weekdays_short' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'],
+    'weekdays_min' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['फुं.', 'बेलासे.'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs.php
new file mode 100644
index 00000000..e5d68083
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bokideckonja
+ * - Josh Soref
+ * - François B
+ * - shaishavgandhi05
+ * - Serhan Apaydın
+ * - JD Isaacks
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count godina|:count godine|:count godina',
+    'y' => ':count godina|:count godine|:count godina',
+    'month' => ':count mjesec|:count mjeseca|:count mjeseci',
+    'm' => ':count mjesec|:count mjeseca|:count mjeseci',
+    'week' => ':count sedmice|:count sedmicu|:count sedmica',
+    'w' => ':count sedmice|:count sedmicu|:count sedmica',
+    'day' => ':count dan|:count dana|:count dana',
+    'd' => ':count dan|:count dana|:count dana',
+    'hour' => ':count sat|:count sata|:count sati',
+    'h' => ':count sat|:count sata|:count sati',
+    'minute' => ':count minut|:count minuta|:count minuta',
+    'min' => ':count minut|:count minuta|:count minuta',
+    'second' => ':count sekund|:count sekunda|:count sekundi',
+    's' => ':count sekund|:count sekunda|:count sekundi',
+    'ago' => 'prije :time',
+    'from_now' => 'za :time',
+    'after' => 'nakon :time',
+    'before' => ':time ranije',
+    'diff_now' => 'sada',
+    'diff_today' => 'danas',
+    'diff_today_regexp' => 'danas(?:\\s+u)?',
+    'diff_yesterday' => 'jučer',
+    'diff_yesterday_regexp' => 'jučer(?:\\s+u)?',
+    'diff_tomorrow' => 'sutra',
+    'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[danas u] LT',
+        'nextDay' => '[sutra u] LT',
+        'nextWeek' => function (CarbonInterface $current) {
+            switch ($current->dayOfWeek) {
+                case 0:
+                    return '[u] [nedjelju] [u] LT';
+                case 3:
+                    return '[u] [srijedu] [u] LT';
+                case 6:
+                    return '[u] [subotu] [u] LT';
+                default:
+                    return '[u] dddd [u] LT';
+            }
+        },
+        'lastDay' => '[jučer u] LT',
+        'lastWeek' => function (CarbonInterface $current) {
+            switch ($current->dayOfWeek) {
+                case 0:
+                case 3:
+                    return '[prošlu] dddd [u] LT';
+                case 6:
+                    return '[prošle] [subote] [u] LT';
+                default:
+                    return '[prošli] dddd [u] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', 'novembar', 'decembar'],
+    'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],
+    'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
+    'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' i '],
+    'meridiem' => ['prijepodne', 'popodne'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
new file mode 100644
index 00000000..0a591176
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/bs.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
new file mode 100644
index 00000000..e1a17447
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/bs.php', [
+    'meridiem' => ['пре подне', 'поподне'],
+    'weekdays' => ['недјеља', 'понедјељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'],
+    'weekdays_short' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'],
+    'weekdays_min' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'],
+    'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јуни', 'јули', 'аугуст', 'септембар', 'октобар', 'новембар', 'децембар'],
+    'months_short' => ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'ауг', 'сеп', 'окт', 'нов', 'дец'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D.M.YYYY.',
+        'LL' => 'DD.MM.YYYY.',
+        'LLL' => 'DD. MMMM YYYY. HH:mm',
+        'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
new file mode 100644
index 00000000..b4e363e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/bs.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn.php
new file mode 100644
index 00000000..7125f3d6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/byn_ER.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
new file mode 100644
index 00000000..ad675334
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ልደትሪ', 'ካብኽብቲ', 'ክብላ', 'ፋጅኺሪ', 'ክቢቅሪ', 'ምኪኤል ትጓ̅ኒሪ', 'ኰርኩ', 'ማርያም ትሪ', 'ያኸኒ መሳቅለሪ', 'መተሉ', 'ምኪኤል መሽወሪ', 'ተሕሳስሪ'],
+    'months_short' => ['ልደት', 'ካብኽ', 'ክብላ', 'ፋጅኺ', 'ክቢቅ', 'ም/ት', 'ኰር', 'ማርያ', 'ያኸኒ', 'መተሉ', 'ም/ም', 'ተሕሳ'],
+    'weekdays' => ['ሰንበር ቅዳዅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ ወሪ ለብዋ', 'ኣምድ', 'ኣርብ', 'ሰንበር ሽጓዅ'],
+    'weekdays_short' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'],
+    'weekdays_min' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ፋዱስ ጃብ', 'ፋዱስ ደምቢ'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca.php
new file mode 100644
index 00000000..b8b19946
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - mestremuten
+ * - François B
+ * - Marc Ordinas i Llopis
+ * - Pere Orga
+ * - JD Isaacks
+ * - Quentí
+ * - Víctor Díaz
+ * - Xavi
+ * - qcardona
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count any|:count anys',
+    'a_year' => 'un any|:count anys',
+    'y' => ':count any|:count anys',
+    'month' => ':count mes|:count mesos',
+    'a_month' => 'un mes|:count mesos',
+    'm' => ':count mes|:count mesos',
+    'week' => ':count setmana|:count setmanes',
+    'a_week' => 'una setmana|:count setmanes',
+    'w' => ':count setmana|:count setmanes',
+    'day' => ':count dia|:count dies',
+    'a_day' => 'un dia|:count dies',
+    'd' => ':count d',
+    'hour' => ':count hora|:count hores',
+    'a_hour' => 'una hora|:count hores',
+    'h' => ':count h',
+    'minute' => ':count minut|:count minuts',
+    'a_minute' => 'un minut|:count minuts',
+    'min' => ':count min',
+    'second' => ':count segon|:count segons',
+    'a_second' => 'uns segons|:count segons',
+    's' => ':count s',
+    'ago' => 'fa :time',
+    'from_now' => 'd\'aquí a :time',
+    'after' => ':time després',
+    'before' => ':time abans',
+    'diff_now' => 'ara mateix',
+    'diff_today' => 'avui',
+    'diff_today_regexp' => 'avui(?:\\s+a)?(?:\\s+les)?',
+    'diff_yesterday' => 'ahir',
+    'diff_yesterday_regexp' => 'ahir(?:\\s+a)?(?:\\s+les)?',
+    'diff_tomorrow' => 'demà',
+    'diff_tomorrow_regexp' => 'demà(?:\\s+a)?(?:\\s+les)?',
+    'diff_before_yesterday' => 'abans d\'ahir',
+    'diff_after_tomorrow' => 'demà passat',
+    'period_recurrences' => ':count cop|:count cops',
+    'period_interval' => 'cada :interval',
+    'period_start_date' => 'de :date',
+    'period_end_date' => 'fins a :date',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM [de] YYYY',
+        'LLL' => 'D MMMM [de] YYYY [a les] H:mm',
+        'LLLL' => 'dddd D MMMM [de] YYYY [a les] H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => function (CarbonInterface $current) {
+            return '[avui a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
+        },
+        'nextDay' => function (CarbonInterface $current) {
+            return '[demà a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
+        },
+        'nextWeek' => function (CarbonInterface $current) {
+            return 'dddd [a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
+        },
+        'lastDay' => function (CarbonInterface $current) {
+            return '[ahir a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
+        },
+        'lastWeek' => function (CarbonInterface $current) {
+            return '[el] dddd [passat a '.($current->hour !== 1 ? 'les' : 'la').'] LT';
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        return $number.(
+            ($period === 'w' || $period === 'W') ? 'a' : (
+                ($number === 1) ? 'r' : (
+                    ($number === 2) ? 'n' : (
+                        ($number === 3) ? 'r' : (
+                            ($number === 4) ? 't' : 'è'
+                        )
+                    )
+                )
+            )
+        );
+    },
+    'months' => ['de gener', 'de febrer', 'de març', 'd\'abril', 'de maig', 'de juny', 'de juliol', 'd\'agost', 'de setembre', 'd\'octubre', 'de novembre', 'de desembre'],
+    'months_standalone' => ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre'],
+    'months_short' => ['de gen.', 'de febr.', 'de març', 'd\'abr.', 'de maig', 'de juny', 'de jul.', 'd\'ag.', 'de set.', 'd\'oct.', 'de nov.', 'de des.'],
+    'months_short_standalone' => ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'],
+    'months_regexp' => '/(D[oD]?[\s,]+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'],
+    'weekdays_short' => ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'],
+    'weekdays_min' => ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' i '],
+    'meridiem' => ['a. m.', 'p. m.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
new file mode 100644
index 00000000..861acd2a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ca.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
new file mode 100644
index 00000000..50049786
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ca.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
new file mode 100644
index 00000000..861acd2a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ca.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
new file mode 100644
index 00000000..861acd2a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ca.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
new file mode 100644
index 00000000..861acd2a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ca.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
new file mode 100644
index 00000000..99c1dcac
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'],
+    'weekdays_short' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'],
+    'weekdays_min' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'],
+    'months' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'],
+    'months_short' => ['𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴'],
+    'months_short_standalone' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM, YYYY h:mm a',
+        'LLLL' => 'dddd, D MMMM, YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
new file mode 100644
index 00000000..c1fa8af0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ccp.php', [
+    'weekend' => [0, 0],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce.php
new file mode 100644
index 00000000..f99f6ffd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ce_RU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
new file mode 100644
index 00000000..f7698562
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ANCHR
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY.DD.MM',
+    ],
+    'months' => ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
+    'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'weekdays' => ['КӀиранан де', 'Оршотан де', 'Шинарин де', 'Кхаарин де', 'Еарин де', 'ПӀераскан де', 'Шот де'],
+    'weekdays_short' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'],
+    'weekdays_min' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count шо',
+    'y' => ':count шо',
+    'a_year' => ':count шо',
+
+    'month' => ':count бутт',
+    'm' => ':count бутт',
+    'a_month' => ':count бутт',
+
+    'week' => ':count кӏира',
+    'w' => ':count кӏира',
+    'a_week' => ':count кӏира',
+
+    'day' => ':count де',
+    'd' => ':count де',
+    'a_day' => ':count де',
+
+    'hour' => ':count сахьт',
+    'h' => ':count сахьт',
+    'a_hour' => ':count сахьт',
+
+    'minute' => ':count минот',
+    'min' => ':count минот',
+    'a_minute' => ':count минот',
+
+    'second' => ':count секунд',
+    's' => ':count секунд',
+    'a_second' => ':count секунд',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
new file mode 100644
index 00000000..09bcc1c7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'],
+    'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
+    'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
+    'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'],
+    'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'day' => ':count ruhanga', // less reliable
+    'd' => ':count ruhanga', // less reliable
+    'a_day' => ':count ruhanga', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr.php
new file mode 100644
index 00000000..e26190f1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/chr_US.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
new file mode 100644
index 00000000..371353ef
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Cherokee Nation Joseph Erb josepherb7@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'MM/DD/YYYY',
+    ],
+    'months' => ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'],
+    'months_short' => ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'],
+    'weekdays' => ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'],
+    'weekdays_short' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'],
+    'weekdays_min' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ', 'ꮜꮎꮄ', 'ꮢꭿᏹꭲꮧꮲ'],
+
+    'second' => ':count ᏐᎢ', // less reliable
+    's' => ':count ᏐᎢ', // less reliable
+    'a_second' => ':count ᏐᎢ', // less reliable
+
+    'year' => ':count ᏑᏕᏘᏴᏓ',
+    'y' => ':count ᏑᏕᏘᏴᏓ',
+    'a_year' => ':count ᏑᏕᏘᏴᏓ',
+
+    'month' => ':count ᏏᏅᏙ',
+    'm' => ':count ᏏᏅᏙ',
+    'a_month' => ':count ᏏᏅᏙ',
+
+    'week' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
+    'w' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
+    'a_week' => ':count ᏑᎾᏙᏓᏆᏍᏗ',
+
+    'day' => ':count ᎢᎦ',
+    'd' => ':count ᎢᎦ',
+    'a_day' => ':count ᎢᎦ',
+
+    'hour' => ':count ᏑᏟᎶᏛ',
+    'h' => ':count ᏑᏟᎶᏛ',
+    'a_hour' => ':count ᏑᏟᎶᏛ',
+
+    'minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
+    'min' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
+    'a_minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ',
+
+    'ago' => ':time ᏥᎨᏒ',
+    'from_now' => 'ᎾᎿ :time',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php
new file mode 100644
index 00000000..acf4dc28
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Swara Mohammed
+ */
+$months = [
+    'ڕێبەندان',
+    'Ú•Û•Ø´Û•Ù…Û•',
+    'نەورۆز',
+    'گوڵان',
+    'جۆزەردان',
+    'پوشپەڕ',
+    'گەلاوێژ',
+    'خەرمانان',
+    'ڕەزبەر',
+    'گەڵاڕێزان',
+    'سەرماوەرز',
+    'بەفرانبار',
+];
+
+return [
+    'year' => implode('|', ['{0}:count ساڵێک', '{1}ساڵێک', '{2}دوو ساڵ', ']2,11[:count ساڵ', ']10,Inf[:count ساڵ']),
+    'a_year' => implode('|', ['{0}:count ساڵێک', '{1}ساڵێک', '{2}دوو ساڵ', ']2,11[:count ساڵ', ']10,Inf[:count ساڵ']),
+    'month' => implode('|', ['{0}:count مانگێک', '{1}مانگێک', '{2}دوو مانگ', ']2,11[:count مانگ', ']10,Inf[:count مانگ']),
+    'a_month' => implode('|', ['{0}:count مانگێک', '{1}مانگێک', '{2}دوو مانگ', ']2,11[:count مانگ', ']10,Inf[:count مانگ']),
+    'week' => implode('|', ['{0}:count هەفتەیەک', '{1}هەفتەیەک', '{2}دوو هەفتە', ']2,11[:count هەفتە', ']10,Inf[:count هەفتە']),
+    'a_week' => implode('|', ['{0}:count هەفتەیەک', '{1}هەفتەیەک', '{2}دوو هەفتە', ']2,11[:count هەفتە', ']10,Inf[:count هەفتە']),
+    'day' => implode('|', ['{0}:count ڕۆژێک', '{1}ڕۆژێک', '{2}دوو ڕۆژ', ']2,11[:count ڕۆژ', ']10,Inf[:count ڕۆژ']),
+    'a_day' => implode('|', ['{0}:count ڕۆژێک', '{1}ڕۆژێک', '{2}دوو ڕۆژ', ']2,11[:count ڕۆژ', ']10,Inf[:count ڕۆژ']),
+    'hour' => implode('|', ['{0}:count کاتژمێرێک', '{1}کاتژمێرێک', '{2}دوو کاتژمێر', ']2,11[:count کاتژمێر', ']10,Inf[:count کاتژمێر']),
+    'a_hour' => implode('|', ['{0}:count کاتژمێرێک', '{1}کاتژمێرێک', '{2}دوو کاتژمێر', ']2,11[:count کاتژمێر', ']10,Inf[:count کاتژمێر']),
+    'minute' => implode('|', ['{0}:count خولەکێک', '{1}خولەکێک', '{2}دوو خولەک', ']2,11[:count خولەک', ']10,Inf[:count خولەک']),
+    'a_minute' => implode('|', ['{0}:count خولەکێک', '{1}خولەکێک', '{2}دوو خولەک', ']2,11[:count خولەک', ']10,Inf[:count خولەک']),
+    'second' => implode('|', ['{0}:count چرکەیەک', '{1}چرکەیەک', '{2}دوو چرکە', ']2,11[:count چرکە', ']10,Inf[:count چرکە']),
+    'a_second' => implode('|', ['{0}:count چرکەیەک', '{1}چرکەیەک', '{2}دوو چرکە', ']2,11[:count چرکە', ']10,Inf[:count چرکە']),
+    'ago' => 'Ù¾ÛŽØ´ :time',
+    'from_now' => ':time لە ئێستاوە',
+    'after' => 'دوای :time',
+    'before' => 'Ù¾ÛŽØ´ :time',
+    'diff_now' => 'ئێستا',
+    'diff_today' => 'ئەمڕۆ',
+    'diff_today_regexp' => 'ڕۆژ(?:\\s+لە)?(?:\\s+کاتژمێر)?',
+    'diff_yesterday' => 'دوێنێ',
+    'diff_yesterday_regexp' => 'دوێنێ(?:\\s+لە)?(?:\\s+کاتژمێر)?',
+    'diff_tomorrow' => 'سبەینێ',
+    'diff_tomorrow_regexp' => 'سبەینێ(?:\\s+لە)?(?:\\s+کاتژمێر)?',
+    'diff_before_yesterday' => 'پێش دوێنێ',
+    'diff_after_tomorrow' => 'دوای سبەینێ',
+    'period_recurrences' => implode('|', ['{0}جار', '{1}جار', '{2}:count دووجار', ']2,11[:count جار', ']10,Inf[:count جار']),
+    'period_interval' => 'هەموو :interval',
+    'period_start_date' => 'Ù„Û• :date',
+    'period_end_date' => 'بۆ :date',
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'],
+    'weekdays_short' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'],
+    'weekdays_min' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'],
+    'list' => ['، ', ' و '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ئەمڕۆ لە کاتژمێر] LT',
+        'nextDay' => '[سبەینێ لە کاتژمێر] LT',
+        'nextWeek' => 'dddd [لە کاتژمێر] LT',
+        'lastDay' => '[دوێنێ لە کاتژمێر] LT',
+        'lastWeek' => 'dddd [لە کاتژمێر] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['پ.ن', 'د.ن'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
new file mode 100644
index 00000000..80b1d694
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/cmn_TW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
new file mode 100644
index 00000000..7e43f9de
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY年MM月DD號',
+    ],
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
+    'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'meridiem' => ['上午', '下午'],
+
+    'year' => ':count å¹´',
+    'y' => ':count å¹´',
+    'a_year' => ':count å¹´',
+
+    'month' => ':count 月',
+    'm' => ':count 月',
+    'a_month' => ':count 月',
+
+    'week' => ':count 周',
+    'w' => ':count 周',
+    'a_week' => ':count 周',
+
+    'day' => ':count 白天',
+    'd' => ':count 白天',
+    'a_day' => ':count 白天',
+
+    'hour' => ':count 小时',
+    'h' => ':count 小时',
+    'a_hour' => ':count 小时',
+
+    'minute' => ':count 分钟',
+    'min' => ':count 分钟',
+    'a_minute' => ':count 分钟',
+
+    'second' => ':count 秒',
+    's' => ':count 秒',
+    'a_second' => ':count 秒',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh.php
new file mode 100644
index 00000000..a1d7ce63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/crh_UA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
new file mode 100644
index 00000000..05139331
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ReÅŸat SABIQ tilde.birlik@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'Mayıs', 'İyun', 'İyul', 'Avgust', 'Sentâbr', 'Oktâbr', 'Noyabr', 'Dekabr'],
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Ä°yn', 'Ä°yl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['Bazar', 'Bazarertesi', 'Salı', 'Çarşembe', 'Cumaaqşamı', 'Cuma', 'Cumaertesi'],
+    'weekdays_short' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'],
+    'weekdays_min' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ÃœE', 'ÃœS'],
+
+    'year' => ':count yıl',
+    'y' => ':count yıl',
+    'a_year' => ':count yıl',
+
+    'month' => ':count ay',
+    'm' => ':count ay',
+    'a_month' => ':count ay',
+
+    'week' => ':count afta',
+    'w' => ':count afta',
+    'a_week' => ':count afta',
+
+    'day' => ':count kün',
+    'd' => ':count kün',
+    'a_day' => ':count kün',
+
+    'hour' => ':count saat',
+    'h' => ':count saat',
+    'a_hour' => ':count saat',
+
+    'minute' => ':count daqqa',
+    'min' => ':count daqqa',
+    'a_minute' => ':count daqqa',
+
+    'second' => ':count ekinci',
+    's' => ':count ekinci',
+    'a_second' => ':count ekinci',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs.php
new file mode 100644
index 00000000..c01e3ccc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs.php
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Jakub Tesinsky
+ * - Martin Suja
+ * - Nikos Timiopulos
+ * - Bohuslav Blín
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Lukas Svoboda
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Václav Pávek
+ * - CodeSkills
+ * - Tlapi
+ * - newman101
+ * - Petr Kadlec
+ * - tommaskraus
+ * - Karel Sommer (calvera)
+ */
+$za = function ($time) {
+    return 'za '.strtr($time, [
+        'hodina' => 'hodinu',
+        'minuta' => 'minutu',
+        'sekunda' => 'sekundu',
+    ]);
+};
+
+$pred = function ($time) {
+    $time = strtr($time, [
+        'hodina' => 'hodinou',
+        'minuta' => 'minutou',
+        'sekunda' => 'sekundou',
+    ]);
+    $time = preg_replace('/hodiny?(?!\w)/', 'hodinami', $time);
+    $time = preg_replace('/minuty?(?!\w)/', 'minutami', $time);
+    $time = preg_replace('/sekundy?(?!\w)/', 'sekundami', $time);
+
+    return "před $time";
+};
+
+return [
+    'year' => ':count rok|:count roky|:count let',
+    'y' => ':count rok|:count roky|:count let',
+    'a_year' => 'rok|:count roky|:count let',
+    'month' => ':count měsíc|:count měsíce|:count měsíců',
+    'm' => ':count měs.',
+    'a_month' => 'měsíc|:count měsíce|:count měsíců',
+    'week' => ':count týden|:count týdny|:count týdnů',
+    'w' => ':count týd.',
+    'a_week' => 'týden|:count týdny|:count týdnů',
+    'day' => ':count den|:count dny|:count dní',
+    'd' => ':count den|:count dny|:count dní',
+    'a_day' => 'den|:count dny|:count dní',
+    'hour' => ':count hodina|:count hodiny|:count hodin',
+    'h' => ':count hod.',
+    'a_hour' => 'hodina|:count hodiny|:count hodin',
+    'minute' => ':count minuta|:count minuty|:count minut',
+    'min' => ':count min.',
+    'a_minute' => 'minuta|:count minuty|:count minut',
+    'second' => ':count sekunda|:count sekundy|:count sekund',
+    's' => ':count sek.',
+    'a_second' => 'pár sekund|:count sekundy|:count sekund',
+
+    'month_ago' => ':count měsícem|:count měsíci|:count měsíci',
+    'a_month_ago' => 'měsícem|:count měsíci|:count měsíci',
+    'day_ago' => ':count dnem|:count dny|:count dny',
+    'a_day_ago' => 'dnem|:count dny|:count dny',
+    'week_ago' => ':count týdnem|:count týdny|:count týdny',
+    'a_week_ago' => 'týdnem|:count týdny|:count týdny',
+    'year_ago' => ':count rokem|:count roky|:count lety',
+    'y_ago' => ':count rok.|:count rok.|:count let.',
+    'a_year_ago' => 'rokem|:count roky|:count lety',
+
+    'month_before' => ':count měsícem|:count měsíci|:count měsíci',
+    'a_month_before' => 'měsícem|:count měsíci|:count měsíci',
+    'day_before' => ':count dnem|:count dny|:count dny',
+    'a_day_before' => 'dnem|:count dny|:count dny',
+    'week_before' => ':count týdnem|:count týdny|:count týdny',
+    'a_week_before' => 'týdnem|:count týdny|:count týdny',
+    'year_before' => ':count rokem|:count roky|:count lety',
+    'y_before' => ':count rok.|:count rok.|:count let.',
+    'a_year_before' => 'rokem|:count roky|:count lety',
+
+    'ago' => $pred,
+    'from_now' => $za,
+    'before' => $pred,
+    'after' => $za,
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'months' => ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince'],
+    'months_standalone' => ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'],
+    'months_short' => ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'],
+    'weekdays' => ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'],
+    'weekdays_short' => ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'],
+    'weekdays_min' => ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'],
+    'list' => [', ', ' a '],
+    'diff_now' => 'nyní',
+    'diff_yesterday' => 'včera',
+    'diff_tomorrow' => 'zítra',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD. MM. YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D. MMMM YYYY HH:mm',
+    ],
+    'meridiem' => ['dopoledne', 'odpoledne'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
new file mode 100644
index 00000000..ea2517e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/cs.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb.php
new file mode 100644
index 00000000..a35d2815
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/csb_PL.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
new file mode 100644
index 00000000..25e0ca89
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - csb_PL locale Michal Ostrowski bug-glibc-locales@gnu.org
+ */
+return [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'MMMM DD, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'months' => ['stëcznika', 'gromicznika', 'strëmiannika', 'łżëkwiata', 'maja', 'czerwińca', 'lëpińca', 'zélnika', 'séwnika', 'rujana', 'lëstopadnika', 'gòdnika'],
+    'months_short' => ['stë', 'gro', 'str', 'łżë', 'maj', 'cze', 'lëp', 'zél', 'séw', 'ruj', 'lës', 'gòd'],
+    'weekdays' => ['niedzela', 'pòniedzôłk', 'wtórk', 'strzoda', 'czwiôrtk', 'piątk', 'sobòta'],
+    'weekdays_short' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'],
+    'weekdays_min' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' a téż '],
+    'two_words_connector' => ' a téż ',
+    'year' => ':count rok',
+    'month' => ':count miesiÄ…c',
+    'week' => ':count tidzéń',
+    'day' => ':count dzéń',
+    'hour' => ':count gòdzëna',
+    'minute' => ':count minuta',
+    'second' => ':count sekunda',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cu.php
new file mode 100644
index 00000000..d6d13128
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cu.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+
+    'year' => ':count лѣто',
+    'y' => ':count лѣто',
+    'a_year' => ':count лѣто',
+
+    'month' => ':count мѣсѧць',
+    'm' => ':count мѣсѧць',
+    'a_month' => ':count мѣсѧць',
+
+    'week' => ':count сєдмица',
+    'w' => ':count сєдмица',
+    'a_week' => ':count сєдмица',
+
+    'day' => ':count дьнь',
+    'd' => ':count дьнь',
+    'a_day' => ':count дьнь',
+
+    'hour' => ':count година',
+    'h' => ':count година',
+    'a_hour' => ':count година',
+
+    'minute' => ':count малъ', // less reliable
+    'min' => ':count малъ', // less reliable
+    'a_minute' => ':count малъ', // less reliable
+
+    'second' => ':count въторъ',
+    's' => ':count въторъ',
+    'a_second' => ':count въторъ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv.php
new file mode 100644
index 00000000..8aeb73aa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count ҫул',
+    'a_year' => '{1}пӗр ҫул|:count ҫул',
+    'month' => ':count уйӑх',
+    'a_month' => '{1}пӗр уйӑх|:count уйӑх',
+    'week' => ':count эрне',
+    'a_week' => '{1}пӗр эрне|:count эрне',
+    'day' => ':count кун',
+    'a_day' => '{1}пӗр кун|:count кун',
+    'hour' => ':count сехет',
+    'a_hour' => '{1}пӗр сехет|:count сехет',
+    'minute' => ':count минут',
+    'a_minute' => '{1}пӗр минут|:count минут',
+    'second' => ':count ҫеккунт',
+    'a_second' => '{1}пӗр-ик ҫеккунт|:count ҫеккунт',
+    'ago' => ':time каялла',
+    'from_now' => function ($time) {
+        return $time.(preg_match('/сехет$/u', $time) ? 'рен' : (preg_match('/ҫул/u', $time) ? 'тан' : 'ран'));
+    },
+    'diff_yesterday' => 'Ӗнер',
+    'diff_today' => 'Паян',
+    'diff_tomorrow' => 'Ыран',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
+        'LLL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+        'LLLL' => 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Паян] LT [сехетре]',
+        'nextDay' => '[Ыран] LT [сехетре]',
+        'nextWeek' => '[Ҫитес] dddd LT [сехетре]',
+        'lastDay' => '[Ӗнер] LT [сехетре]',
+        'lastWeek' => '[Иртнӗ] dddd LT [сехетре]',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number-мӗш',
+    'months' => ['кӑрлач', 'нарӑс', 'пуш', 'ака', 'май', 'ҫӗртме', 'утӑ', 'ҫурла', 'авӑн', 'юпа', 'чӳк', 'раштав'],
+    'months_short' => ['кӑр', 'нар', 'пуш', 'ака', 'май', 'ҫӗр', 'утӑ', 'ҫур', 'авн', 'юпа', 'чӳк', 'раш'],
+    'weekdays' => ['вырсарникун', 'тунтикун', 'ытларикун', 'юнкун', 'кӗҫнерникун', 'эрнекун', 'шӑматкун'],
+    'weekdays_short' => ['выр', 'тун', 'ытл', 'юн', 'кӗҫ', 'эрн', 'шӑм'],
+    'weekdays_min' => ['вр', 'тн', 'ыт', 'юн', 'кҫ', 'эр', 'шм'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' тата '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
new file mode 100644
index 00000000..197bd8d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/cv.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy.php
new file mode 100644
index 00000000..119274f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - JD Isaacks
+ * - Daniel Monaghan
+ */
+return [
+    'year' => '{1}blwyddyn|]1,Inf[:count flynedd',
+    'y' => ':countbl',
+    'month' => '{1}mis|]1,Inf[:count mis',
+    'm' => ':countmi',
+    'week' => ':count wythnos',
+    'w' => ':countw',
+    'day' => '{1}diwrnod|]1,Inf[:count diwrnod',
+    'd' => ':countd',
+    'hour' => '{1}awr|]1,Inf[:count awr',
+    'h' => ':counth',
+    'minute' => '{1}munud|]1,Inf[:count munud',
+    'min' => ':countm',
+    'second' => '{1}ychydig eiliadau|]1,Inf[:count eiliad',
+    's' => ':counts',
+    'ago' => ':time yn ôl',
+    'from_now' => 'mewn :time',
+    'after' => ':time ar ôl',
+    'before' => ':time o\'r blaen',
+    'diff_now' => 'nawr',
+    'diff_today' => 'Heddiw',
+    'diff_today_regexp' => 'Heddiw(?:\\s+am)?',
+    'diff_yesterday' => 'ddoe',
+    'diff_yesterday_regexp' => 'Ddoe(?:\\s+am)?',
+    'diff_tomorrow' => 'yfory',
+    'diff_tomorrow_regexp' => 'Yfory(?:\\s+am)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Heddiw am] LT',
+        'nextDay' => '[Yfory am] LT',
+        'nextWeek' => 'dddd [am] LT',
+        'lastDay' => '[Ddoe am] LT',
+        'lastWeek' => 'dddd [diwethaf am] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.(
+            $number > 20
+                ? (\in_array((int) $number, [40, 50, 60, 80, 100], true) ? 'fed' : 'ain')
+                : ([
+                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
+                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed', // 11eg to 20fed
+                ])[$number] ?? ''
+        );
+    },
+    'months' => ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'],
+    'months_short' => ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'],
+    'weekdays' => ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'],
+    'weekdays_short' => ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'],
+    'weekdays_min' => ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' a '],
+    'meridiem' => ['yb', 'yh'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
new file mode 100644
index 00000000..2c8148d0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/cy.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da.php
new file mode 100644
index 00000000..322f91d5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Rune Mønnike
+ * - François B
+ * - codenhagen
+ * - JD Isaacks
+ * - Jens Herlevsen
+ * - Ulrik McArdle (mcardle)
+ * - Frederik Sauer (FrittenKeeZ)
+ * - Janus Bahs Jacquet (kokoshneta)
+ */
+return [
+    'year' => ':count år|:count år',
+    'a_year' => 'et år|:count år',
+    'y' => ':count år|:count år',
+    'month' => ':count måned|:count måneder',
+    'a_month' => 'en måned|:count måneder',
+    'm' => ':count mdr.',
+    'week' => ':count uge|:count uger',
+    'a_week' => 'en uge|:count uger',
+    'w' => ':count u.',
+    'day' => ':count dag|:count dage',
+    'a_day' => ':count dag|:count dage',
+    'd' => ':count d.',
+    'hour' => ':count time|:count timer',
+    'a_hour' => 'en time|:count timer',
+    'h' => ':count t.',
+    'minute' => ':count minut|:count minutter',
+    'a_minute' => 'et minut|:count minutter',
+    'min' => ':count min.',
+    'second' => ':count sekund|:count sekunder',
+    'a_second' => 'få sekunder|:count sekunder',
+    's' => ':count s.',
+    'ago' => 'for :time siden',
+    'from_now' => 'om :time',
+    'after' => ':time efter',
+    'before' => ':time før',
+    'diff_now' => 'nu',
+    'diff_today' => 'i dag',
+    'diff_today_regexp' => 'i dag(?:\\s+kl.)?',
+    'diff_yesterday' => 'i går',
+    'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?',
+    'diff_tomorrow' => 'i morgen',
+    'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[i dag kl.] LT',
+        'nextDay' => '[i morgen kl.] LT',
+        'nextWeek' => 'på dddd [kl.] LT',
+        'lastDay' => '[i går kl.] LT',
+        'lastWeek' => '[i] dddd[s kl.] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'],
+    'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
+    'weekdays_short' => ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'],
+    'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' og '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
new file mode 100644
index 00000000..392c4841
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/da.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
new file mode 100644
index 00000000..ea5698b9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/da.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D. MMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH.mm',
+        'LLLL' => 'dddd [den] D. MMMM YYYY HH.mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dav.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dav.php
new file mode 100644
index 00000000..e95ec4bb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dav.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Luma lwa K', 'luma lwa p'],
+    'weekdays' => ['Ituku ja jumwa', 'Kuramuka jimweri', 'Kuramuka kawi', 'Kuramuka kadadu', 'Kuramuka kana', 'Kuramuka kasanu', 'Kifula nguwo'],
+    'weekdays_short' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'],
+    'weekdays_min' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'],
+    'months' => ['Mori ghwa imbiri', 'Mori ghwa kawi', 'Mori ghwa kadadu', 'Mori ghwa kana', 'Mori ghwa kasanu', 'Mori ghwa karandadu', 'Mori ghwa mfungade', 'Mori ghwa wunyanya', 'Mori ghwa ikenda', 'Mori ghwa ikumi', 'Mori ghwa ikumi na imweri', 'Mori ghwa ikumi na iwi'],
+    'months_short' => ['Imb', 'Kaw', 'Kad', 'Kan', 'Kas', 'Kar', 'Mfu', 'Wun', 'Ike', 'Iku', 'Imw', 'Iwi'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de.php
new file mode 100644
index 00000000..3b70750e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Michael Hohl
+ * - sheriffmarley
+ * - dennisoderwald
+ * - Timo
+ * - Karag2006
+ * - Pete Scopes (pdscopes)
+ */
+return [
+    'year' => ':count Jahr|:count Jahre',
+    'a_year' => 'ein Jahr|:count Jahre',
+    'y' => ':count J.',
+    'month' => ':count Monat|:count Monate',
+    'a_month' => 'ein Monat|:count Monate',
+    'm' => ':count Mon.',
+    'week' => ':count Woche|:count Wochen',
+    'a_week' => 'eine Woche|:count Wochen',
+    'w' => ':count Wo.',
+    'day' => ':count Tag|:count Tage',
+    'a_day' => 'ein Tag|:count Tage',
+    'd' => ':count Tg.',
+    'hour' => ':count Stunde|:count Stunden',
+    'a_hour' => 'eine Stunde|:count Stunden',
+    'h' => ':count Std.',
+    'minute' => ':count Minute|:count Minuten',
+    'a_minute' => 'eine Minute|:count Minuten',
+    'min' => ':count Min.',
+    'second' => ':count Sekunde|:count Sekunden',
+    'a_second' => 'ein paar Sekunden|:count Sekunden',
+    's' => ':count Sek.',
+    'millisecond' => ':count Millisekunde|:count Millisekunden',
+    'a_millisecond' => 'eine Millisekunde|:count Millisekunden',
+    'ms' => ':countms',
+    'microsecond' => ':count Mikrosekunde|:count Mikrosekunden',
+    'a_microsecond' => 'eine Mikrosekunde|:count Mikrosekunden',
+    'µs' => ':countµs',
+    'ago' => 'vor :time',
+    'from_now' => 'in :time',
+    'after' => ':time später',
+    'before' => ':time zuvor',
+
+    'year_from_now' => ':count Jahr|:count Jahren',
+    'month_from_now' => ':count Monat|:count Monaten',
+    'week_from_now' => ':count Woche|:count Wochen',
+    'day_from_now' => ':count Tag|:count Tagen',
+    'year_ago' => ':count Jahr|:count Jahren',
+    'month_ago' => ':count Monat|:count Monaten',
+    'week_ago' => ':count Woche|:count Wochen',
+    'day_ago' => ':count Tag|:count Tagen',
+    'a_year_from_now' => 'ein Jahr|:count Jahren',
+    'a_month_from_now' => 'ein Monat|:count Monaten',
+    'a_week_from_now' => 'eine Woche|:count Wochen',
+    'a_day_from_now' => 'ein Tag|:count Tagen',
+    'a_year_ago' => 'ein Jahr|:count Jahren',
+    'a_month_ago' => 'ein Monat|:count Monaten',
+    'a_week_ago' => 'eine Woche|:count Wochen',
+    'a_day_ago' => 'ein Tag|:count Tagen',
+
+    'diff_now' => 'Gerade eben',
+    'diff_today' => 'heute',
+    'diff_today_regexp' => 'heute(?:\\s+um)?',
+    'diff_yesterday' => 'Gestern',
+    'diff_yesterday_regexp' => 'gestern(?:\\s+um)?',
+    'diff_tomorrow' => 'Morgen',
+    'diff_tomorrow_regexp' => 'morgen(?:\\s+um)?',
+    'diff_before_yesterday' => 'Vorgestern',
+    'diff_after_tomorrow' => 'Ãœbermorgen',
+
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY HH:mm',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[heute um] LT [Uhr]',
+        'nextDay' => '[morgen um] LT [Uhr]',
+        'nextWeek' => 'dddd [um] LT [Uhr]',
+        'lastDay' => '[gestern um] LT [Uhr]',
+        'lastWeek' => '[letzten] dddd [um] LT [Uhr]',
+        'sameElse' => 'L',
+    ],
+
+    'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
+    'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+    'weekdays' => ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
+    'weekdays_short' => ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],
+    'weekdays_min' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
+    'ordinal' => ':number.',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' und '],
+    'ordinal_words' => [
+        'of' => 'im',
+        'first' => 'erster',
+        'second' => 'zweiter',
+        'third' => 'dritter',
+        'fourth' => 'vierten',
+        'fifth' => 'fünfter',
+        'last' => 'letzten',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
new file mode 100644
index 00000000..a2ea4c08
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - sheriffmarley
+ * - Timo
+ * - Michael Hohl
+ * - Namoshek
+ * - Bernhard Baumrock (BernhardBaumrock)
+ */
+return array_replace_recursive(require __DIR__.'/de.php', [
+    'months' => [
+        0 => 'Jänner',
+    ],
+    'months_short' => [
+        0 => 'Jän',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
new file mode 100644
index 00000000..8ed8dc62
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/de.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
new file mode 100644
index 00000000..a869ab48
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - sheriffmarley
+ * - Timo
+ * - Michael Hohl
+ */
+return array_replace_recursive(require __DIR__.'/de.php', [
+    'weekdays_short' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
new file mode 100644
index 00000000..fb1209d2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return require __DIR__.'/de.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
new file mode 100644
index 00000000..604a8568
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Matthias Dieter Wallno:fer libc-locales@sourceware.org
+ */
+return require __DIR__.'/de.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
new file mode 100644
index 00000000..03e606a6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/de.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
new file mode 100644
index 00000000..8ed8dc62
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/de.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dje.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dje.php
new file mode 100644
index 00000000..74b7ac12
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dje.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Subbaahi', 'Zaarikay b'],
+    'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamisi', 'Alzuma', 'Asibti'],
+    'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
+    'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
+    'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
+    'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count hari', // less reliable
+    'y' => ':count hari', // less reliable
+    'a_year' => ':count hari', // less reliable
+
+    'week' => ':count alzuma', // less reliable
+    'w' => ':count alzuma', // less reliable
+    'a_week' => ':count alzuma', // less reliable
+
+    'second' => ':count atinni', // less reliable
+    's' => ':count atinni', // less reliable
+    'a_second' => ':count atinni', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi.php
new file mode 100644
index 00000000..cb679c58
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/doi_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
new file mode 100644
index 00000000..d3597214
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat Pune    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'],
+    'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'],
+    'weekdays' => ['ऐतबार', 'सोमबार', 'मंगलबर', 'बुधबार', 'बीरबार', 'शुक्करबार', 'श्नीचरबार'],
+    'weekdays_short' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'],
+    'weekdays_min' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['सञं', 'सबेर'],
+
+    'second' => ':count सङार', // less reliable
+    's' => ':count सङार', // less reliable
+    'a_second' => ':count सङार', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
new file mode 100644
index 00000000..1d214d56
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/dsb_DE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
new file mode 100644
index 00000000..1b941870
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Information from Michael Wolf    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'DD. MMMM YYYY',
+        'LLL' => 'DD. MMMM, HH:mm [góź.]',
+        'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [góź.]',
+    ],
+    'months' => ['januara', 'februara', 'měrca', 'apryla', 'maja', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'],
+    'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Maj', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'],
+    'weekdays' => ['Njeźela', 'Pónjeźele', 'Wałtora', 'Srjoda', 'Stwórtk', 'Pětk', 'Sobota'],
+    'weekdays_short' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'],
+    'weekdays_min' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count lěto',
+    'y' => ':count lěto',
+    'a_year' => ':count lěto',
+
+    'month' => ':count mjasec',
+    'm' => ':count mjasec',
+    'a_month' => ':count mjasec',
+
+    'week' => ':count tyźeń',
+    'w' => ':count tyźeń',
+    'a_week' => ':count tyźeń',
+
+    'day' => ':count źeń',
+    'd' => ':count źeń',
+    'a_day' => ':count źeń',
+
+    'hour' => ':count góźina',
+    'h' => ':count góźina',
+    'a_hour' => ':count góźina',
+
+    'minute' => ':count minuta',
+    'min' => ':count minuta',
+    'a_minute' => ':count minuta',
+
+    'second' => ':count drugi',
+    's' => ':count drugi',
+    'a_second' => ':count drugi',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dua.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dua.php
new file mode 100644
index 00000000..55e5c7c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dua.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['idiɓa', 'ebyámu'],
+    'weekdays' => ['éti', 'mɔ́sú', 'kwasú', 'mukɔ́sú', 'ŋgisú', 'ɗónɛsú', 'esaɓasú'],
+    'weekdays_short' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'],
+    'weekdays_min' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'],
+    'months' => ['dimɔ́di', 'ŋgɔndɛ', 'sɔŋɛ', 'diɓáɓá', 'emiasele', 'esɔpɛsɔpɛ', 'madiɓɛ́díɓɛ́', 'diŋgindi', 'nyɛtɛki', 'mayésɛ́', 'tiníní', 'eláŋgɛ́'],
+    'months_short' => ['di', 'ŋgɔn', 'sɔŋ', 'diɓ', 'emi', 'esɔ', 'mad', 'diŋ', 'nyɛt', 'may', 'tin', 'elá'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count ma mbu', // less reliable
+    'y' => ':count ma mbu', // less reliable
+    'a_year' => ':count ma mbu', // less reliable
+
+    'month' => ':count myo̱di', // less reliable
+    'm' => ':count myo̱di', // less reliable
+    'a_month' => ':count myo̱di', // less reliable
+
+    'week' => ':count woki', // less reliable
+    'w' => ':count woki', // less reliable
+    'a_week' => ':count woki', // less reliable
+
+    'day' => ':count buńa', // less reliable
+    'd' => ':count buńa', // less reliable
+    'a_day' => ':count buńa', // less reliable
+
+    'hour' => ':count ma awa', // less reliable
+    'h' => ':count ma awa', // less reliable
+    'a_hour' => ':count ma awa', // less reliable
+
+    'minute' => ':count minuti', // less reliable
+    'min' => ':count minuti', // less reliable
+    'a_minute' => ':count minuti', // less reliable
+
+    'second' => ':count maba', // less reliable
+    's' => ':count maba', // less reliable
+    'a_second' => ':count maba', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv.php
new file mode 100644
index 00000000..4b8d7e1a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$months = [
+    'Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©',
+    'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©',
+    'Þ‰Þ§ÞƒÞ¨Þ—Þª',
+    'އޭޕްރީލު',
+    'Þ‰Þ­',
+    'Þ–Þ«Þ‚Þ°',
+    'ޖުލައި',
+    'އޯގަސްޓު',
+    'ސެޕްޓެމްބަރު',
+    'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª',
+    'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',
+    'ޑިސެމްބަރު',
+];
+
+$weekdays = [
+    'އާދިއްތަ',
+    'Þ€Þ¯Þ‰Þ¦',
+    'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦',
+    'Þ„ÞªÞ‹Þ¦',
+    'ބުރާސްފަތި',
+    'Þ€ÞªÞ†ÞªÞƒÞª',
+    'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª',
+];
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Jawish Hameed
+ */
+return [
+    'year' => ':count '.'Þ‡Þ¦Þ€Þ¦ÞƒÞª',
+    'a_year' => '{1}'.'Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°'.'|:count '.'Þ‡Þ¦Þ€Þ¦ÞƒÞª',
+    'month' => ':count '.'މަސް',
+    'a_month' => '{1}'.'މަހެއް'.'|:count '.'މަސް',
+    'week' => ':count '.'ހަފްތާ',
+    'a_week' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ހަފްތާ',
+    'day' => ':count '.'ދުވަސް',
+    'a_day' => '{1}'.'ދުވަހެއް'.'|:count '.'ދުވަސް',
+    'hour' => ':count '.'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª',
+    'a_hour' => '{1}'.'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°'.'|:count '.'ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª',
+    'minute' => ':count '.'Þ‰Þ¨Þ‚Þ¨Þ“Þª',
+    'a_minute' => '{1}'.'Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°'.'|:count '.'Þ‰Þ¨Þ‚Þ¨Þ“Þª',
+    'second' => ':count '.'ސިކުންތު',
+    'a_second' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ސިކުންތު',
+    'ago' => 'Þ†ÞªÞƒÞ¨Þ‚Þ° :time',
+    'from_now' => 'ތެރޭގައި :time',
+    'after' => ':time ÞŠÞ¦Þ€ÞªÞ‚Þ°',
+    'before' => ':time Þ†ÞªÞƒÞ¨',
+    'diff_yesterday' => 'Þ‡Þ¨Þ‡Þ°Þ”Þ¬',
+    'diff_today' => 'Þ‰Þ¨Þ‡Þ¦Þ‹Þª',
+    'diff_tomorrow' => 'Þ‰Þ§Þ‹Þ¦Þ‰Þ§',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',
+        'nextDay' => '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',
+        'nextWeek' => 'dddd LT',
+        'lastDay' => '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',
+        'lastWeek' => '[ފާއިތުވި] dddd LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['Þ‰Þ†', 'Þ‰ÞŠ'],
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => $weekdays,
+    'weekdays_short' => $weekdays,
+    'weekdays_min' => ['Þ‡Þ§Þ‹Þ¨', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§', 'Þ€ÞªÞ†Þª', 'Þ€Þ®Þ‚Þ¨'],
+    'list' => [', ', ' Þ‡Þ¦Þ‹Þ¨ '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
new file mode 100644
index 00000000..2668d5b0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ahmed Ali
+ */
+
+$months = [
+    'Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©',
+    'ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©',
+    'Þ‰Þ§ÞƒÞ¨Þ—Þª',
+    'އޭޕްރީލު',
+    'Þ‰Þ­',
+    'Þ–Þ«Þ‚Þ°',
+    'ޖުލައި',
+    'އޯގަސްޓު',
+    'ސެޕްޓެމްބަރު',
+    'Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª',
+    'Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª',
+    'ޑިސެމްބަރު',
+];
+
+$weekdays = [
+    'އާދިއްތަ',
+    'Þ€Þ¯Þ‰Þ¦',
+    'Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦',
+    'Þ„ÞªÞ‹Þ¦',
+    'ބުރާސްފަތި',
+    'Þ€ÞªÞ†ÞªÞƒÞª',
+    'Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª',
+];
+
+return [
+    'year' => '{0}Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°|[1,Inf]:count Þ‡Þ¦Þ€Þ¦ÞƒÞª',
+    'y' => '{0}Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°|[1,Inf]:count Þ‡Þ¦Þ€Þ¦ÞƒÞª',
+    'month' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
+    'm' => '{0}މައްސަރެއް|[1,Inf]:count މަސް',
+    'week' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
+    'w' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ',
+    'day' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
+    'd' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް',
+    'hour' => '{0}ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°|[1,Inf]:count ÞŽÞ¦Þ‘Þ¨',
+    'h' => '{0}ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°|[1,Inf]:count ÞŽÞ¦Þ‘Þ¨',
+    'minute' => '{0}Þ‰Þ¨Þ‚Þ¬Þ“Þ¬Þ‡Þ°|[1,Inf]:count Þ‰Þ¨Þ‚Þ¬Þ“Þ°',
+    'min' => '{0}Þ‰Þ¨Þ‚Þ¬Þ“Þ¬Þ‡Þ°|[1,Inf]:count Þ‰Þ¨Þ‚Þ¬Þ“Þ°',
+    'second' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
+    's' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު',
+    'ago' => ':time Þ†ÞªÞƒÞ¨Þ‚Þ°',
+    'from_now' => ':time ÞŠÞ¦Þ€ÞªÞ‚Þ°',
+    'after' => ':time ÞŠÞ¦Þ€ÞªÞ‚Þ°',
+    'before' => ':time Þ†ÞªÞƒÞ¨',
+    'diff_yesterday' => 'Þ‡Þ¨Þ‡Þ°Þ”Þ¬',
+    'diff_today' => 'Þ‰Þ¨Þ‡Þ¦Þ‹Þª',
+    'diff_tomorrow' => 'Þ‰Þ§Þ‹Þ¦Þ‰Þ§',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Þ‰Þ¨Þ‡Þ¦Þ‹Þª] LT',
+        'nextDay' => '[Þ‰Þ§Þ‹Þ¦Þ‰Þ§] LT',
+        'nextWeek' => 'dddd LT',
+        'lastDay' => '[Þ‡Þ¨Þ‡Þ°Þ”Þ¬] LT',
+        'lastWeek' => '[ފާއިތުވި] dddd LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['Þ‰Þ†', 'Þ‰ÞŠ'],
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => $weekdays,
+    'weekdays_short' => $weekdays,
+    'weekdays_min' => ['Þ‡Þ§Þ‹Þ¨', 'Þ€Þ¯Þ‰Þ¦', 'Þ‡Þ¦Þ‚Þ°', 'Þ„ÞªÞ‹Þ¦', 'Þ„ÞªÞƒÞ§', 'Þ€ÞªÞ†Þª', 'Þ€Þ®Þ‚Þ¨'],
+    'list' => [', ', ' Þ‡Þ¦Þ‹Þ¨ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
new file mode 100644
index 00000000..33082e67
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Dimas', 'Teneŋ', 'Talata', 'Alarbay', 'Aramisay', 'Arjuma', 'Sibiti'],
+    'weekdays_short' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'],
+    'weekdays_min' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'],
+    'months' => ['Sanvie', 'Fébirie', 'Mars', 'Aburil', 'Mee', 'Sueŋ', 'Súuyee', 'Ut', 'Settembar', 'Oktobar', 'Novembar', 'Disambar'],
+    'months_short' => ['Sa', 'Fe', 'Ma', 'Ab', 'Me', 'Su', 'Sú', 'Ut', 'Se', 'Ok', 'No', 'De'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz.php
new file mode 100644
index 00000000..cc17e69e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/dz_BT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
new file mode 100644
index 00000000..bfbcaf46
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sherubtse College    bug-glibc@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'པསྱི་ལོYYཟལMMཚེསDD',
+    ],
+    'months' => ['ཟླ་བ་དང་པ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་ཕ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུནཔ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'],
+    'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'],
+    'weekdays' => ['གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་ཕ་', 'གཟའ་པུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་ཕ་', 'གཟའ་ཉི་མ་'],
+    'weekdays_short' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'],
+    'weekdays_min' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ངས་ཆ', 'ཕྱི་ཆ'],
+
+    'year' => ':count ཆརཔ', // less reliable
+    'y' => ':count ཆརཔ', // less reliable
+    'a_year' => ':count ཆརཔ', // less reliable
+
+    'month' => ':count ཟླ་བ', // less reliable
+    'm' => ':count ཟླ་བ', // less reliable
+    'a_month' => ':count ཟླ་བ', // less reliable
+
+    'day' => ':count ཉི', // less reliable
+    'd' => ':count ཉི', // less reliable
+    'a_day' => ':count ཉི', // less reliable
+
+    'second' => ':count ཆ', // less reliable
+    's' => ':count ཆ', // less reliable
+    'a_second' => ':count ཆ', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
new file mode 100644
index 00000000..f60bc6f2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['KI', 'UT'],
+    'weekdays' => ['Kiumia', 'Njumatatu', 'Njumaine', 'Njumatano', 'Aramithi', 'Njumaa', 'NJumamothii'],
+    'weekdays_short' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'],
+    'weekdays_min' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'],
+    'months' => ['Mweri wa mbere', 'Mweri wa kaĩri', 'Mweri wa kathatũ', 'Mweri wa kana', 'Mweri wa gatano', 'Mweri wa gatantatũ', 'Mweri wa mũgwanja', 'Mweri wa kanana', 'Mweri wa kenda', 'Mweri wa ikũmi', 'Mweri wa ikũmi na ũmwe', 'Mweri wa ikũmi na Kaĩrĩ'],
+    'months_short' => ['Mbe', 'Kai', 'Kat', 'Kan', 'Gat', 'Gan', 'Mug', 'Knn', 'Ken', 'Iku', 'Imw', 'Igi'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee.php
new file mode 100644
index 00000000..f96c5c9d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Å‹', 'É£'],
+    'weekdays' => ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'],
+    'weekdays_short' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'],
+    'weekdays_min' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'],
+    'months' => ['dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', 'kele', 'adeɛmekpɔxe', 'dzome'],
+    'months_short' => ['dzv', 'dzd', 'ted', 'afÉ”', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'a [ga] h:mm',
+        'LTS' => 'a [ga] h:mm:ss',
+        'L' => 'M/D/YYYY',
+        'LL' => 'MMM D [lia], YYYY',
+        'LLL' => 'a [ga] h:mm MMMM D [lia] YYYY',
+        'LLLL' => 'a [ga] h:mm dddd, MMMM D [lia] YYYY',
+    ],
+
+    'year' => 'Æ’e :count',
+    'y' => 'Æ’e :count',
+    'a_year' => 'Æ’e :count',
+
+    'month' => 'É£leti :count',
+    'm' => 'É£leti :count',
+    'a_month' => 'É£leti :count',
+
+    'week' => 'kwasiÉ–a :count',
+    'w' => 'kwasiÉ–a :count',
+    'a_week' => 'kwasiÉ–a :count',
+
+    'day' => 'Å‹keke :count',
+    'd' => 'Å‹keke :count',
+    'a_day' => 'Å‹keke :count',
+
+    'hour' => 'gaÆ’oÆ’o :count',
+    'h' => 'gaÆ’oÆ’o :count',
+    'a_hour' => 'gaÆ’oÆ’o :count',
+
+    'minute' => 'miniti :count', // less reliable
+    'min' => 'miniti :count', // less reliable
+    'a_minute' => 'miniti :count', // less reliable
+
+    'second' => 'sɛkɛnd :count', // less reliable
+    's' => 'sɛkɛnd :count', // less reliable
+    'a_second' => 'sɛkɛnd :count', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
new file mode 100644
index 00000000..7a8b36c9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ee.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'LLL' => 'HH:mm MMMM D [lia] YYYY',
+        'LLLL' => 'HH:mm dddd, MMMM D [lia] YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el.php
new file mode 100644
index 00000000..7c40f9c1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Alessandro Di Felice
+ * - François B
+ * - Tim Fish
+ * - Gabriel Monteagudo
+ * - JD Isaacks
+ * - yiannisdesp
+ * - Ilias Kasmeridis (iliaskasm)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count χρόνος|:count χρόνια',
+    'a_year' => 'ένας χρόνος|:count χρόνια',
+    'y' => ':count χρ.',
+    'month' => ':count μήνας|:count μήνες',
+    'a_month' => 'ένας μήνας|:count μήνες',
+    'm' => ':count μήν.',
+    'week' => ':count εβδομάδα|:count εβδομάδες',
+    'a_week' => 'μια εβδομάδα|:count εβδομάδες',
+    'w' => ':count εβδ.',
+    'day' => ':count μέρα|:count μέρες',
+    'a_day' => 'μία μέρα|:count μέρες',
+    'd' => ':count μέρ.',
+    'hour' => ':count ώρα|:count ώρες',
+    'a_hour' => 'μία ώρα|:count ώρες',
+    'h' => ':count ώρα|:count ώρες',
+    'minute' => ':count λεπτό|:count λεπτά',
+    'a_minute' => 'ένα λεπτό|:count λεπτά',
+    'min' => ':count λεπ.',
+    'second' => ':count δευτερόλεπτο|:count δευτερόλεπτα',
+    'a_second' => 'λίγα δευτερόλεπτα|:count δευτερόλεπτα',
+    's' => ':count δευ.',
+    'ago' => 'πριν :time',
+    'from_now' => 'σε :time',
+    'after' => ':time μετά',
+    'before' => ':time πριν',
+    'diff_now' => 'τώρα',
+    'diff_today' => 'Σήμερα',
+    'diff_today_regexp' => 'Σήμερα(?:\\s+{})?',
+    'diff_yesterday' => 'χθες',
+    'diff_yesterday_regexp' => 'Χθες(?:\\s+{})?',
+    'diff_tomorrow' => 'αύριο',
+    'diff_tomorrow_regexp' => 'Αύριο(?:\\s+{})?',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm A',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm A',
+    ],
+    'calendar' => [
+        'sameDay' => '[Σήμερα {}] LT',
+        'nextDay' => '[Αύριο {}] LT',
+        'nextWeek' => 'dddd [{}] LT',
+        'lastDay' => '[Χθες {}] LT',
+        'lastWeek' => function (CarbonInterface $current) {
+            switch ($current->dayOfWeek) {
+                case 6:
+                    return '[το προηγούμενο] dddd [{}] LT';
+                default:
+                    return '[την προηγούμενη] dddd [{}] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberη',
+    'meridiem' => ['ΠΜ', 'ΜΜ', 'πμ', 'μμ'],
+    'months' => ['Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου'],
+    'months_standalone' => ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],
+    'months_regexp' => '/(D[oD]?[\s,]+MMMM|L{2,4}|l{2,4})/',
+    'months_short' => ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],
+    'weekdays' => ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'],
+    'weekdays_short' => ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'],
+    'weekdays_min' => ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' και '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
new file mode 100644
index 00000000..8a693c15
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Greek Debian Translation Team    bug-glibc@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/el.php', [
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
new file mode 100644
index 00000000..df196af9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/el.php', [
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en.php
new file mode 100644
index 00000000..f81f617e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en.php
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Milos Sakovic
+ * - Paul
+ * - Pete Scopes (pdscopes)
+ */
+return [
+    /*
+     * {1}, {0} and ]1,Inf[ are not needed as it's the default for English pluralization.
+     * But as some languages are using en.php as a fallback, it's better to specify it
+     * explicitly so those languages also fallback to English pluralization when a unit
+     * is missing.
+     */
+    'year' => '{1}:count year|{0}:count years|]1,Inf[:count years',
+    'a_year' => '{1}a year|{0}:count years|]1,Inf[:count years',
+    'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs',
+    'month' => '{1}:count month|{0}:count months|]1,Inf[:count months',
+    'a_month' => '{1}a month|{0}:count months|]1,Inf[:count months',
+    'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos',
+    'week' => '{1}:count week|{0}:count weeks|]1,Inf[:count weeks',
+    'a_week' => '{1}a week|{0}:count weeks|]1,Inf[:count weeks',
+    'w' => ':countw',
+    'day' => '{1}:count day|{0}:count days|]1,Inf[:count days',
+    'a_day' => '{1}a day|{0}:count days|]1,Inf[:count days',
+    'd' => ':countd',
+    'hour' => '{1}:count hour|{0}:count hours|]1,Inf[:count hours',
+    'a_hour' => '{1}an hour|{0}:count hours|]1,Inf[:count hours',
+    'h' => ':counth',
+    'minute' => '{1}:count minute|{0}:count minutes|]1,Inf[:count minutes',
+    'a_minute' => '{1}a minute|{0}:count minutes|]1,Inf[:count minutes',
+    'min' => ':countm',
+    'second' => '{1}:count second|{0}:count seconds|]1,Inf[:count seconds',
+    'a_second' => '{1}a few seconds|{0}:count seconds|]1,Inf[:count seconds',
+    's' => ':counts',
+    'millisecond' => '{1}:count millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds',
+    'a_millisecond' => '{1}a millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds',
+    'ms' => ':countms',
+    'microsecond' => '{1}:count microsecond|{0}:count microseconds|]1,Inf[:count microseconds',
+    'a_microsecond' => '{1}a microsecond|{0}:count microseconds|]1,Inf[:count microseconds',
+    'µs' => ':countµs',
+    'ago' => ':time ago',
+    'from_now' => ':time from now',
+    'after' => ':time after',
+    'before' => ':time before',
+    'diff_now' => 'just now',
+    'diff_today' => 'today',
+    'diff_yesterday' => 'yesterday',
+    'diff_tomorrow' => 'tomorrow',
+    'diff_before_yesterday' => 'before yesterday',
+    'diff_after_tomorrow' => 'after tomorrow',
+    'period_recurrences' => '{1}once|{0}:count times|]1,Inf[:count times',
+    'period_interval' => 'every :interval',
+    'period_start_date' => 'from :date',
+    'period_end_date' => 'to :date',
+    'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+    'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+    'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+    'weekdays_min' => ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
+    'ordinal' => function ($number) {
+        $lastDigit = $number % 10;
+
+        return $number.(
+            ((int) ($number % 100 / 10) === 1) ? 'th' : (
+                ($lastDigit === 1) ? 'st' : (
+                    ($lastDigit === 2) ? 'nd' : (
+                        ($lastDigit === 3) ? 'rd' : 'th'
+                    )
+                )
+            )
+        );
+    },
+    'list' => [', ', ' and '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
new file mode 100644
index 00000000..2c1c64f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.  bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
new file mode 100644
index 00000000..f16bd4f5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - François B
+ * - Mayank Badola
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm A',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm A',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
new file mode 100644
index 00000000..e6560868
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Zhan Tong Zhang
+ * - Mayank Badola
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'MMMM D, YYYY',
+        'LLL' => 'MMMM D, YYYY h:mm A',
+        'LLLL' => 'dddd, MMMM D, YYYY h:mm A',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
new file mode 100644
index 00000000..a44c3508
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - NehaGautam
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
new file mode 100644
index 00000000..9e8a8c68
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Danish Standards Association  bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
new file mode 100644
index 00000000..67d9fd64
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Mayank Badola
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
new file mode 100644
index 00000000..34aae989
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory  bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
new file mode 100644
index 00000000..c8d3c2fc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Martin McWhorter
+ * - François B
+ * - Chris Cartlidge
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
new file mode 100644
index 00000000..e607924e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Yoav Amit
+ * - François B
+ * - Mayank Badola
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
new file mode 100644
index 00000000..00414e9a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory  bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YY',
+        'LL' => 'MMMM DD, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
new file mode 100644
index 00000000..11457b0c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'dddd, YYYY MMMM DD HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
new file mode 100644
index 00000000..67bceaad
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
new file mode 100644
index 00000000..6a206a0d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Mayank Badola
+ * - Luke McGregor
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm A',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm A',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
new file mode 100644
index 00000000..34aae989
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory  bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
new file mode 100644
index 00000000..c4e2557e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
new file mode 100644
index 00000000..5ee95241
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'from_now' => 'in :time',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
new file mode 100644
index 00000000..e2dd81db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
new file mode 100644
index 00000000..48ea9471
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YY',
+        'LL' => 'MMMM DD, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
new file mode 100644
index 00000000..d8a8cb59
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ANLoc Martin Benjamin locales@africanlocalization.net
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
new file mode 100644
index 00000000..f086dc63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/en.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eo.php
new file mode 100644
index 00000000..7c2efba2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eo.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Mia Nordentoft
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count jaro|:count jaroj',
+    'a_year' => 'jaro|:count jaroj',
+    'y' => ':count j.',
+    'month' => ':count monato|:count monatoj',
+    'a_month' => 'monato|:count monatoj',
+    'm' => ':count mo.',
+    'week' => ':count semajno|:count semajnoj',
+    'a_week' => 'semajno|:count semajnoj',
+    'w' => ':count sem.',
+    'day' => ':count tago|:count tagoj',
+    'a_day' => 'tago|:count tagoj',
+    'd' => ':count t.',
+    'hour' => ':count horo|:count horoj',
+    'a_hour' => 'horo|:count horoj',
+    'h' => ':count h.',
+    'minute' => ':count minuto|:count minutoj',
+    'a_minute' => 'minuto|:count minutoj',
+    'min' => ':count min.',
+    'second' => ':count sekundo|:count sekundoj',
+    'a_second' => 'sekundoj|:count sekundoj',
+    's' => ':count sek.',
+    'ago' => 'antaÅ­ :time',
+    'from_now' => 'post :time',
+    'after' => ':time poste',
+    'before' => ':time antaÅ­e',
+    'diff_yesterday' => 'HieraÅ­',
+    'diff_yesterday_regexp' => 'HieraÅ­(?:\\s+je)?',
+    'diff_today' => 'HodiaÅ­',
+    'diff_today_regexp' => 'HodiaÅ­(?:\\s+je)?',
+    'diff_tomorrow' => 'MorgaÅ­',
+    'diff_tomorrow_regexp' => 'MorgaÅ­(?:\\s+je)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'D[-a de] MMMM, YYYY',
+        'LLL' => 'D[-a de] MMMM, YYYY HH:mm',
+        'LLLL' => 'dddd, [la] D[-a de] MMMM, YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[HodiaÅ­ je] LT',
+        'nextDay' => '[MorgaÅ­ je] LT',
+        'nextWeek' => 'dddd [je] LT',
+        'lastDay' => '[HieraÅ­ je] LT',
+        'lastWeek' => '[pasinta] dddd [je] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numbera',
+    'meridiem' => ['a.t.m.', 'p.t.m.'],
+    'months' => ['januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aÅ­gusto', 'septembro', 'oktobro', 'novembro', 'decembro'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aÅ­g', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'],
+    'weekdays_short' => ['dim', 'lun', 'mard', 'merk', 'ĵaŭ', 'ven', 'sab'],
+    'weekdays_min' => ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' kaj '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es.php
new file mode 100644
index 00000000..1c4fcfd0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - kostas
+ * - François B
+ * - Tim Fish
+ * - Claire Coloma
+ * - Steven Heinrich
+ * - JD Isaacks
+ * - Raphael Amorim
+ * - Jorge Y. Castillo
+ * - Víctor Díaz
+ * - Diego
+ * - Sebastian Thierer
+ * - quinterocesar
+ * - Daniel Commesse Liévanos (danielcommesse)
+ * - Pete Scopes (pdscopes)
+ * - gam04
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count año|:count años',
+    'a_year' => 'un año|:count años',
+    'y' => ':count año|:count años',
+    'month' => ':count mes|:count meses',
+    'a_month' => 'un mes|:count meses',
+    'm' => ':count mes|:count meses',
+    'week' => ':count semana|:count semanas',
+    'a_week' => 'una semana|:count semanas',
+    'w' => ':countsem',
+    'day' => ':count día|:count días',
+    'a_day' => 'un día|:count días',
+    'd' => ':countd',
+    'hour' => ':count hora|:count horas',
+    'a_hour' => 'una hora|:count horas',
+    'h' => ':counth',
+    'minute' => ':count minuto|:count minutos',
+    'a_minute' => 'un minuto|:count minutos',
+    'min' => ':countm',
+    'second' => ':count segundo|:count segundos',
+    'a_second' => 'unos segundos|:count segundos',
+    's' => ':counts',
+    'millisecond' => ':count milisegundo|:count milisegundos',
+    'a_millisecond' => 'un milisegundo|:count milisegundos',
+    'ms' => ':countms',
+    'microsecond' => ':count microsegundo|:count microsegundos',
+    'a_microsecond' => 'un microsegundo|:count microsegundos',
+    'µs' => ':countµs',
+    'ago' => 'hace :time',
+    'from_now' => 'en :time',
+    'after' => ':time después',
+    'before' => ':time antes',
+    'diff_now' => 'ahora mismo',
+    'diff_today' => 'hoy',
+    'diff_today_regexp' => 'hoy(?:\\s+a)?(?:\\s+las)?',
+    'diff_yesterday' => 'ayer',
+    'diff_yesterday_regexp' => 'ayer(?:\\s+a)?(?:\\s+las)?',
+    'diff_tomorrow' => 'mañana',
+    'diff_tomorrow_regexp' => 'mañana(?:\\s+a)?(?:\\s+las)?',
+    'diff_before_yesterday' => 'anteayer',
+    'diff_after_tomorrow' => 'pasado mañana',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D [de] MMMM [de] YYYY',
+        'LLL' => 'D [de] MMMM [de] YYYY H:mm',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => function (CarbonInterface $current) {
+            return '[hoy a la'.($current->hour !== 1 ? 's' : '').'] LT';
+        },
+        'nextDay' => function (CarbonInterface $current) {
+            return '[mañana a la'.($current->hour !== 1 ? 's' : '').'] LT';
+        },
+        'nextWeek' => function (CarbonInterface $current) {
+            return 'dddd [a la'.($current->hour !== 1 ? 's' : '').'] LT';
+        },
+        'lastDay' => function (CarbonInterface $current) {
+            return '[ayer a la'.($current->hour !== 1 ? 's' : '').'] LT';
+        },
+        'lastWeek' => function (CarbonInterface $current) {
+            return '[el] dddd [pasado a la'.($current->hour !== 1 ? 's' : '').'] LT';
+        },
+        'sameElse' => 'L',
+    ],
+    'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
+    'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
+    'mmm_suffix' => '.',
+    'ordinal' => ':numberº',
+    'weekdays' => ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'],
+    'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'],
+    'weekdays_min' => ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' y '],
+    'meridiem' => ['a. m.', 'p. m.'],
+    'ordinal_words' => [
+        'of' => 'de',
+        'first' => 'primer',
+        'second' => 'segundo',
+        'third' => 'tercer',
+        'fourth' => 'cuarto',
+        'fifth' => 'quinto',
+        'last' => 'último',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
new file mode 100644
index 00000000..c9b8432e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
new file mode 100644
index 00000000..378d0547
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
new file mode 100644
index 00000000..378d0547
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
new file mode 100644
index 00000000..553fc09f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
new file mode 100644
index 00000000..f02e1a66
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
new file mode 100644
index 00000000..0f855bac
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - kostas
+ * - François B
+ * - Tim Fish
+ * - Chiel Robben
+ * - Claire Coloma
+ * - Steven Heinrich
+ * - JD Isaacks
+ * - Raphael Amorim
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'diff_before_yesterday' => 'anteayer',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'LLL' => 'D [de] MMMM [de] YYYY h:mm A',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm A',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
new file mode 100644
index 00000000..f02e1a66
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
new file mode 100644
index 00000000..19217c27
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return require __DIR__.'/es.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
new file mode 100644
index 00000000..f02e1a66
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
new file mode 100644
index 00000000..f02e1a66
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
new file mode 100644
index 00000000..61e14cfa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'diff_before_yesterday' => 'antier',
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
new file mode 100644
index 00000000..6b964c14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
new file mode 100644
index 00000000..deae06a1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/M/yy',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D [de] MMMM [de] YYYY h:mm a',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
new file mode 100644
index 00000000..6b964c14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
new file mode 100644
index 00000000..00db08e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
+    'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
new file mode 100644
index 00000000..f333136f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - Josh Soref
+ * - Jørn Ølmheim
+ * - Craig Patik
+ * - bustta
+ * - François B
+ * - Tim Fish
+ * - Claire Coloma
+ * - Steven Heinrich
+ * - JD Isaacks
+ * - Raphael Amorim
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'diff_before_yesterday' => 'anteayer',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'MM/DD/YYYY',
+        'LL' => 'MMMM [de] D [de] YYYY',
+        'LLL' => 'MMMM [de] D [de] YYYY h:mm A',
+        'LLLL' => 'dddd, MMMM [de] D [de] YYYY h:mm A',
+    ],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
new file mode 100644
index 00000000..39baff8b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', 'octubre', 'noviembre', 'diciembre'],
+    'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'set', 'oct', 'nov', 'dic'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
new file mode 100644
index 00000000..a74806e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/es.php', [
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et.php
new file mode 100644
index 00000000..f49c8806
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Andres Ivanov
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - RM87
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Esko Lehtme
+ * - Mart Karu
+ * - Nicolás Hock Isaza
+ * - Kevin Valdek
+ * - Zahhar Kirillov
+ * - João Magalhães
+ * - Ingmar
+ * - Illimar Tambek
+ * - Mihkel
+ */
+return [
+    'year' => ':count aasta|:count aastat',
+    'y' => ':count a',
+    'month' => ':count kuu|:count kuud',
+    'm' => ':count k',
+    'week' => ':count nädal|:count nädalat',
+    'w' => ':count näd',
+    'day' => ':count päev|:count päeva',
+    'd' => ':count p',
+    'hour' => ':count tund|:count tundi',
+    'h' => ':count t',
+    'minute' => ':count minut|:count minutit',
+    'min' => ':count min',
+    'second' => ':count sekund|:count sekundit',
+    's' => ':count s',
+    'ago' => ':time tagasi',
+    'from_now' => ':time pärast',
+    'after' => ':time pärast',
+    'before' => ':time enne',
+    'year_from_now' => ':count aasta',
+    'month_from_now' => ':count kuu',
+    'week_from_now' => ':count nädala',
+    'day_from_now' => ':count päeva',
+    'hour_from_now' => ':count tunni',
+    'minute_from_now' => ':count minuti',
+    'second_from_now' => ':count sekundi',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'diff_now' => 'nüüd',
+    'diff_today' => 'täna',
+    'diff_yesterday' => 'eile',
+    'diff_tomorrow' => 'homme',
+    'diff_before_yesterday' => 'üleeile',
+    'diff_after_tomorrow' => 'ülehomme',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[täna] LT',
+        'nextDay' => '[homme] LT',
+        'lastDay' => '[eile] LT',
+        'nextWeek' => 'dddd LT',
+        'lastWeek' => '[eelmine] dddd LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember'],
+    'months_short' => ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'],
+    'weekdays' => ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'],
+    'weekdays_short' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
+    'weekdays_min' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'],
+    'list' => [', ', ' ja '],
+    'meridiem' => ['enne lõunat', 'pärast lõunat'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
new file mode 100644
index 00000000..0f112b34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/et.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu.php
new file mode 100644
index 00000000..a543f1a6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - JD Isaacks
+ */
+return [
+    'year' => 'urte bat|:count urte',
+    'y' => 'Urte 1|:count urte',
+    'month' => 'hilabete bat|:count hilabete',
+    'm' => 'Hile 1|:count hile',
+    'week' => 'Aste 1|:count aste',
+    'w' => 'Aste 1|:count aste',
+    'day' => 'egun bat|:count egun',
+    'd' => 'Egun 1|:count egun',
+    'hour' => 'ordu bat|:count ordu',
+    'h' => 'Ordu 1|:count ordu',
+    'minute' => 'minutu bat|:count minutu',
+    'min' => 'Minutu 1|:count minutu',
+    'second' => 'segundo batzuk|:count segundo',
+    's' => 'Segundu 1|:count segundu',
+    'ago' => 'duela :time',
+    'from_now' => ':time barru',
+    'after' => ':time geroago',
+    'before' => ':time lehenago',
+    'diff_now' => 'orain',
+    'diff_today' => 'gaur',
+    'diff_yesterday' => 'atzo',
+    'diff_tomorrow' => 'bihar',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'YYYY[ko] MMMM[ren] D[a]',
+        'LLL' => 'YYYY[ko] MMMM[ren] D[a] HH:mm',
+        'LLLL' => 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[gaur] LT[etan]',
+        'nextDay' => '[bihar] LT[etan]',
+        'nextWeek' => 'dddd LT[etan]',
+        'lastDay' => '[atzo] LT[etan]',
+        'lastWeek' => '[aurreko] dddd LT[etan]',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', 'iraila', 'urria', 'azaroa', 'abendua'],
+    'months_short' => ['urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.'],
+    'weekdays' => ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'],
+    'weekdays_short' => ['ig.', 'al.', 'ar.', 'az.', 'og.', 'ol.', 'lr.'],
+    'weekdays_min' => ['ig', 'al', 'ar', 'az', 'og', 'ol', 'lr'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' eta '],
+    'meridiem' => ['g', 'a'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
new file mode 100644
index 00000000..0d1e82a9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/eu.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
new file mode 100644
index 00000000..7808ab50
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['kíkíríg', 'ngəgógəle'],
+    'weekdays' => ['sɔ́ndɔ', 'mɔ́ndi', 'sɔ́ndɔ məlú mə́bɛ̌', 'sɔ́ndɔ məlú mə́lɛ́', 'sɔ́ndɔ məlú mə́nyi', 'fúladé', 'séradé'],
+    'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'],
+    'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'],
+    'months' => ['ngɔn osú', 'ngɔn bɛ̌', 'ngɔn lála', 'ngɔn nyina', 'ngɔn tána', 'ngɔn saməna', 'ngɔn zamgbála', 'ngɔn mwom', 'ngɔn ebulú', 'ngɔn awóm', 'ngɔn awóm ai dziá', 'ngɔn awóm ai bɛ̌'],
+    'months_short' => ['ngo', 'ngb', 'ngl', 'ngn', 'ngt', 'ngs', 'ngz', 'ngm', 'nge', 'nga', 'ngad', 'ngab'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    // Too unreliable
+    /*
+    'year' => ':count mbu', // less reliable
+    'y' => ':count mbu', // less reliable
+    'a_year' => ':count mbu', // less reliable
+
+    'month' => ':count ngòn', // less reliable
+    'm' => ':count ngòn', // less reliable
+    'a_month' => ':count ngòn', // less reliable
+
+    'week' => ':count mësë', // less reliable
+    'w' => ':count mësë', // less reliable
+    'a_week' => ':count mësë', // less reliable
+
+    'day' => ':count mësë', // less reliable
+    'd' => ':count mësë', // less reliable
+    'a_day' => ':count mësë', // less reliable
+
+    'hour' => ':count awola', // less reliable
+    'h' => ':count awola', // less reliable
+    'a_hour' => ':count awola', // less reliable
+
+    'minute' => ':count awola', // less reliable
+    'min' => ':count awola', // less reliable
+    'a_minute' => ':count awola', // less reliable
+    */
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa.php
new file mode 100644
index 00000000..72e03085
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Nasser Ghiasi
+ * - JD Isaacks
+ * - Hossein Jabbari
+ * - nimamo
+ * - hafezdivandari
+ * - Hassan Pezeshk (hpez)
+ */
+return [
+    'year' => ':count سال',
+    'a_year' => 'یک سال'.'|:count '.'سال',
+    'y' => ':count سال',
+    'month' => ':count ماه',
+    'a_month' => 'یک ماه'.'|:count '.'ماه',
+    'm' => ':count ماه',
+    'week' => ':count هفته',
+    'a_week' => 'یک هفته'.'|:count '.'هفته',
+    'w' => ':count هفته',
+    'day' => ':count روز',
+    'a_day' => 'یک روز'.'|:count '.'روز',
+    'd' => ':count روز',
+    'hour' => ':count ساعت',
+    'a_hour' => 'یک ساعت'.'|:count '.'ساعت',
+    'h' => ':count ساعت',
+    'minute' => ':count دقیقه',
+    'a_minute' => 'یک دقیقه'.'|:count '.'دقیقه',
+    'min' => ':count دقیقه',
+    'second' => ':count ثانیه',
+    's' => ':count ثانیه',
+    'ago' => ':time پیش',
+    'from_now' => ':time دیگر',
+    'after' => ':time پس از',
+    'before' => ':time پیش از',
+    'diff_now' => 'اکنون',
+    'diff_today' => 'امروز',
+    'diff_today_regexp' => 'امروز(?:\\s+ساعت)?',
+    'diff_yesterday' => 'دیروز',
+    'diff_yesterday_regexp' => 'دیروز(?:\\s+ساعت)?',
+    'diff_tomorrow' => 'فردا',
+    'diff_tomorrow_regexp' => 'فردا(?:\\s+ساعت)?',
+    'formats' => [
+        'LT' => 'OH:Om',
+        'LTS' => 'OH:Om:Os',
+        'L' => 'OD/OM/OY',
+        'LL' => 'OD MMMM OY',
+        'LLL' => 'OD MMMM OY OH:Om',
+        'LLLL' => 'dddd, OD MMMM OY OH:Om',
+    ],
+    'calendar' => [
+        'sameDay' => '[امروز ساعت] LT',
+        'nextDay' => '[فردا ساعت] LT',
+        'nextWeek' => 'dddd [ساعت] LT',
+        'lastDay' => '[دیروز ساعت] LT',
+        'lastWeek' => 'dddd [پیش] [ساعت] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':timeÙ…',
+    'meridiem' => ['قبل از ظهر', 'بعد از ظهر'],
+    'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+    'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+    'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
+    'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
+    'weekdays_min' => ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'list' => ['، ', ' و '],
+    'alt_numbers' => ['Û°Û°', 'Û°Û±', 'Û°Û²', 'Û°Û³', 'Û°Û´', 'Û°Ûµ', 'Û°Û¶', 'Û°Û·', 'Û°Û¸', 'Û°Û¹', 'Û±Û°', 'Û±Û±', 'Û±Û²', 'Û±Û³', 'Û±Û´', 'Û±Ûµ', 'Û±Û¶', 'Û±Û·', 'Û±Û¸', 'Û±Û¹', 'Û²Û°', 'Û²Û±', 'Û²Û²', 'Û²Û³', 'Û²Û´', 'Û²Ûµ', 'Û²Û¶', 'Û²Û·', 'Û²Û¸', 'Û²Û¹', 'Û³Û°', 'Û³Û±', 'Û³Û²', 'Û³Û³', 'Û³Û´', 'Û³Ûµ', 'Û³Û¶', 'Û³Û·', 'Û³Û¸', 'Û³Û¹', 'Û´Û°', 'Û´Û±', 'Û´Û²', 'Û´Û³', 'Û´Û´', 'Û´Ûµ', 'Û´Û¶', 'Û´Û·', 'Û´Û¸', 'Û´Û¹', 'ÛµÛ°', 'ÛµÛ±', 'ÛµÛ²', 'ÛµÛ³', 'ÛµÛ´', 'ÛµÛµ', 'ÛµÛ¶', 'ÛµÛ·', 'ÛµÛ¸', 'ÛµÛ¹', 'Û¶Û°', 'Û¶Û±', 'Û¶Û²', 'Û¶Û³', 'Û¶Û´', 'Û¶Ûµ', 'Û¶Û¶', 'Û¶Û·', 'Û¶Û¸', 'Û¶Û¹', 'Û·Û°', 'Û·Û±', 'Û·Û²', 'Û·Û³', 'Û·Û´', 'Û·Ûµ', 'Û·Û¶', 'Û·Û·', 'Û·Û¸', 'Û·Û¹', 'Û¸Û°', 'Û¸Û±', 'Û¸Û²', 'Û¸Û³', 'Û¸Û´', 'Û¸Ûµ', 'Û¸Û¶', 'Û¸Û·', 'Û¸Û¸', 'Û¸Û¹', 'Û¹Û°', 'Û¹Û±', 'Û¹Û²', 'Û¹Û³', 'Û¹Û´', 'Û¹Ûµ', 'Û¹Û¶', 'Û¹Û·', 'Û¹Û¸', 'Û¹Û¹'],
+    'months_short_standalone' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+    'weekend' => [5, 5],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
new file mode 100644
index 00000000..69471004
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fa.php', [
+    'meridiem' => ['ق', 'ب'],
+    'weekend' => [4, 5],
+    'formats' => [
+        'L' => 'OY/OM/OD',
+        'LL' => 'OD MMM OY',
+        'LLL' => 'OD MMMM OY،‏ H:mm',
+        'LLLL' => 'dddd OD MMMM OY،‏ H:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
new file mode 100644
index 00000000..08d01825
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fa.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff.php
new file mode 100644
index 00000000..9525c95a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'months' => ['siilo', 'colte', 'mbooy', 'seeÉ—to', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', 'jolal', 'bowte'],
+    'months_short' => ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'],
+    'weekdays' => ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'],
+    'weekdays_short' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'],
+    'weekdays_min' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['subaka', 'kikiiÉ—e'],
+
+    'year' => ':count baret', // less reliable
+    'y' => ':count baret', // less reliable
+    'a_year' => ':count baret', // less reliable
+
+    'month' => ':count lewru', // less reliable
+    'm' => ':count lewru', // less reliable
+    'a_month' => ':count lewru', // less reliable
+
+    'week' => ':count naange', // less reliable
+    'w' => ':count naange', // less reliable
+    'a_week' => ':count naange', // less reliable
+
+    'day' => ':count dian', // less reliable
+    'd' => ':count dian', // less reliable
+    'a_day' => ':count dian', // less reliable
+
+    'hour' => ':count montor', // less reliable
+    'h' => ':count montor', // less reliable
+    'a_hour' => ':count montor', // less reliable
+
+    'minute' => ':count tokossuoum', // less reliable
+    'min' => ':count tokossuoum', // less reliable
+    'a_minute' => ':count tokossuoum', // less reliable
+
+    'second' => ':count tenen', // less reliable
+    's' => ':count tenen', // less reliable
+    'a_second' => ':count tenen', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
new file mode 100644
index 00000000..b797ac09
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ff.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
new file mode 100644
index 00000000..b797ac09
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ff.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
new file mode 100644
index 00000000..2f4c29f6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ff.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
new file mode 100644
index 00000000..1e4c8b6c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pular-Fulfulde.org Ibrahima Sarr admin@pulaar-fulfulde.org
+ */
+return require __DIR__.'/ff.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi.php
new file mode 100644
index 00000000..edf2d6d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Janne Warén
+ * - digitalfrost
+ * - Tsutomu Kuroda
+ * - Roope Salmi
+ * - tjku
+ * - Max Melentiev
+ * - Sami Haahtinen
+ * - Teemu Leisti
+ * - Artem Ignatyev
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Robert Bjarnason
+ * - Aaron Patterson
+ * - Nicolás Hock Isaza
+ * - Tom Hughes
+ * - Sven Fuchs
+ * - Petri Kivikangas
+ * - Nizar Jouini
+ * - Marko Seppae
+ * - Tomi Mynttinen (Pikseli)
+ * - Petteri (powergrip)
+ */
+return [
+    'year' => ':count vuosi|:count vuotta',
+    'y' => ':count v',
+    'month' => ':count kuukausi|:count kuukautta',
+    'm' => ':count kk',
+    'week' => ':count viikko|:count viikkoa',
+    'w' => ':count vk',
+    'day' => ':count päivä|:count päivää',
+    'd' => ':count pv',
+    'hour' => ':count tunti|:count tuntia',
+    'h' => ':count t',
+    'minute' => ':count minuutti|:count minuuttia',
+    'min' => ':count min',
+    'second' => ':count sekunti|:count sekuntia',
+    'a_second' => 'muutama sekunti|:count sekuntia',
+    's' => ':count s',
+    'ago' => ':time sitten',
+    'from_now' => ':time päästä',
+    'year_from_now' => ':count vuoden',
+    'month_from_now' => ':count kuukauden',
+    'week_from_now' => ':count viikon',
+    'day_from_now' => ':count päivän',
+    'hour_from_now' => ':count tunnin',
+    'minute_from_now' => ':count minuutin',
+    'second_from_now' => ':count sekunnin',
+    'after' => ':time sen jälkeen',
+    'before' => ':time ennen',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' ja '],
+    'diff_now' => 'nyt',
+    'diff_yesterday' => 'eilen',
+    'diff_tomorrow' => 'huomenna',
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm:ss',
+        'L' => 'D.M.YYYY',
+        'LL' => 'dddd D. MMMM[ta] YYYY',
+        'll' => 'ddd D. MMM YYYY',
+        'LLL' => 'D.MM. HH.mm',
+        'LLLL' => 'D. MMMM[ta] YYYY HH.mm',
+        'llll' => 'D. MMM YY HH.mm',
+    ],
+    'weekdays' => ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'],
+    'weekdays_short' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
+    'weekdays_min' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'],
+    'months' => ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'],
+    'months_short' => ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],
+    'meridiem' => ['aamupäivä', 'iltapäivä'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
new file mode 100644
index 00000000..920f1caa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fi.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil.php
new file mode 100644
index 00000000..61114e3a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/fil_PH.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
new file mode 100644
index 00000000..bcf15807
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Rene Torres Rene Torres, Pablo Saratxaga rgtorre@rocketmail.com, pablo@mandrakesoft.com
+ * - Jaycee Mariano (alohajaycee)
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'MM/DD/YY',
+    ],
+    'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'],
+    'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
+    'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkoles', 'Huwebes', 'Biyernes', 'Sabado'],
+    'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
+    'weekdays_min' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['N.U.', 'N.H.'],
+
+    'before' => ':time bago',
+    'after' => ':time pagkatapos',
+
+    'year' => ':count taon',
+    'y' => ':count taon',
+    'a_year' => ':count taon',
+
+    'month' => ':count buwan',
+    'm' => ':count buwan',
+    'a_month' => ':count buwan',
+
+    'week' => ':count linggo',
+    'w' => ':count linggo',
+    'a_week' => ':count linggo',
+
+    'day' => ':count araw',
+    'd' => ':count araw',
+    'a_day' => ':count araw',
+
+    'hour' => ':count oras',
+    'h' => ':count oras',
+    'a_hour' => ':count oras',
+
+    'minute' => ':count minuto',
+    'min' => ':count minuto',
+    'a_minute' => ':count minuto',
+
+    'second' => ':count segundo',
+    's' => ':count segundo',
+    'a_second' => ':count segundo',
+
+    'ago' => ':time ang nakalipas',
+    'from_now' => 'sa :time',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo.php
new file mode 100644
index 00000000..6a14a6fb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo.php
@@ -0,0 +1,69 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kristian Sakarisson
+ * - François B
+ * - JD Isaacks
+ * - Sverri Mohr Olsen
+ */
+return [
+    'year' => 'eitt ár|:count ár',
+    'y' => ':count ár|:count ár',
+    'month' => 'ein mánaði|:count mánaðir',
+    'm' => ':count mánaður|:count mánaðir',
+    'week' => ':count vika|:count vikur',
+    'w' => ':count vika|:count vikur',
+    'day' => 'ein dagur|:count dagar',
+    'd' => ':count dag|:count dagar',
+    'hour' => 'ein tími|:count tímar',
+    'h' => ':count tími|:count tímar',
+    'minute' => 'ein minutt|:count minuttir',
+    'min' => ':count minutt|:count minuttir',
+    'second' => 'fá sekund|:count sekundir',
+    's' => ':count sekund|:count sekundir',
+    'ago' => ':time síðani',
+    'from_now' => 'um :time',
+    'after' => ':time aftaná',
+    'before' => ':time áðrenn',
+    'diff_today' => 'Í',
+    'diff_yesterday' => 'Í',
+    'diff_yesterday_regexp' => 'Í(?:\\s+gjár)?(?:\\s+kl.)?',
+    'diff_tomorrow' => 'Í',
+    'diff_tomorrow_regexp' => 'Í(?:\\s+morgin)?(?:\\s+kl.)?',
+    'diff_today_regexp' => 'Í(?:\\s+dag)?(?:\\s+kl.)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D. MMMM, YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Í dag kl.] LT',
+        'nextDay' => '[Í morgin kl.] LT',
+        'nextWeek' => 'dddd [kl.] LT',
+        'lastDay' => '[Í gjár kl.] LT',
+        'lastWeek' => '[síðstu] dddd [kl] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'],
+    'weekdays_short' => ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'],
+    'weekdays_min' => ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' og '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
new file mode 100644
index 00000000..657f2c5b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fo.php', [
+    'formats' => [
+        'L' => 'DD.MM.yy',
+        'LL' => 'DD.MM.YYYY',
+        'LLL' => 'D. MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY, HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
new file mode 100644
index 00000000..6d736167
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fo.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
new file mode 100644
index 00000000..f4c7247b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr.php
@@ -0,0 +1,123 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Dieter Sting
+ * - François B
+ * - Maxime VALY
+ * - JD Isaacks
+ * - Dieter Sting
+ * - François B
+ * - JD Isaacks
+ * - Sebastian Thierer
+ * - Fastfuel
+ * - Pete Scopes (pdscopes)
+ */
+return [
+    'year' => ':count an|:count ans',
+    'a_year' => 'un an|:count ans',
+    'y' => ':count an|:count ans',
+    'month' => ':count mois|:count mois',
+    'a_month' => 'un mois|:count mois',
+    'm' => ':count mois',
+    'week' => ':count semaine|:count semaines',
+    'a_week' => 'une semaine|:count semaines',
+    'w' => ':count sem.',
+    'day' => ':count jour|:count jours',
+    'a_day' => 'un jour|:count jours',
+    'd' => ':count j',
+    'hour' => ':count heure|:count heures',
+    'a_hour' => 'une heure|:count heures',
+    'h' => ':count h',
+    'minute' => ':count minute|:count minutes',
+    'a_minute' => 'une minute|:count minutes',
+    'min' => ':count min',
+    'second' => ':count seconde|:count secondes',
+    'a_second' => 'quelques secondes|:count secondes',
+    's' => ':count s',
+    'millisecond' => ':count milliseconde|:count millisecondes',
+    'a_millisecond' => 'une milliseconde|:count millisecondes',
+    'ms' => ':countms',
+    'microsecond' => ':count microseconde|:count microsecondes',
+    'a_microsecond' => 'une microseconde|:count microsecondes',
+    'µs' => ':countµs',
+    'ago' => 'il y a :time',
+    'from_now' => 'dans :time',
+    'after' => ':time après',
+    'before' => ':time avant',
+    'diff_now' => "à l'instant",
+    'diff_today' => "aujourd'hui",
+    'diff_today_regexp' => "aujourd'hui(?:\s+à)?",
+    'diff_yesterday' => 'hier',
+    'diff_yesterday_regexp' => 'hier(?:\s+à)?',
+    'diff_tomorrow' => 'demain',
+    'diff_tomorrow_regexp' => 'demain(?:\s+à)?',
+    'diff_before_yesterday' => 'avant-hier',
+    'diff_after_tomorrow' => 'après-demain',
+    'period_recurrences' => ':count fois',
+    'period_interval' => 'tous les :interval',
+    'period_start_date' => 'de :date',
+    'period_end_date' => 'à :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Aujourd’hui à] LT',
+        'nextDay' => '[Demain à] LT',
+        'nextWeek' => 'dddd [à] LT',
+        'lastDay' => '[Hier à] LT',
+        'lastWeek' => 'dddd [dernier à] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'],
+    'months_short' => ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'],
+    'weekdays' => ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],
+    'weekdays_short' => ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],
+    'weekdays_min' => ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            // In French, only the first has to be ordinal, other number remains cardinal
+            // @link https://fr.wikihow.com/%C3%A9crire-la-date-en-fran%C3%A7ais
+            case 'D':
+                return $number.($number === 1 ? 'er' : '');
+
+            default:
+            case 'M':
+            case 'Q':
+            case 'DDD':
+            case 'd':
+                return $number.($number === 1 ? 'er' : 'e');
+
+            // Words with feminine grammatical gender: semaine
+            case 'w':
+            case 'W':
+                return $number.($number === 1 ? 're' : 'e');
+        }
+    },
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' et '],
+    'ordinal_words' => [
+        'of' => 'de',
+        'first' => 'premier',
+        'second' => 'deuxième',
+        'third' => 'troisième',
+        'fourth' => 'quatrième',
+        'fifth' => 'cinquième',
+        'last' => 'dernier',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
new file mode 100644
index 00000000..f6cafe87
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
new file mode 100644
index 00000000..c9f6346f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Dieter Sting
+ * - François B
+ * - Maxime VALY
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
new file mode 100644
index 00000000..8674c27d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Dieter Sting
+ * - François B
+ * - Gaspard Bucher
+ * - Maxime VALY
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
new file mode 100644
index 00000000..67d37878
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'meridiem' => ['mat.', 'soir'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
new file mode 100644
index 00000000..2f060869
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'first_day_of_week' => 6,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
new file mode 100644
index 00000000..ae8db5fa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
new file mode 100644
index 00000000..8e37d852
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
new file mode 100644
index 00000000..1bf034dc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
new file mode 100644
index 00000000..37cf83f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
new file mode 100644
index 00000000..ae8db5fa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
new file mode 100644
index 00000000..37cf83f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
new file mode 100644
index 00000000..6905e7a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'weekend' => [5, 6],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
new file mode 100644
index 00000000..37cf83f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fr.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
new file mode 100644
index 00000000..ec3ee359
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/fr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur.php
new file mode 100644
index 00000000..36c2564f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/fur_IT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
new file mode 100644
index 00000000..0147a596
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD. MM. YY',
+        'LL' => 'DD di MMMM dal YYYY',
+        'LLL' => 'DD di MMM HH:mm',
+        'LLLL' => 'DD di MMMM dal YYYY HH:mm',
+    ],
+    'months' => ['zenâr', 'fevrâr', 'març', 'avrîl', 'mai', 'jugn', 'lui', 'avost', 'setembar', 'otubar', 'novembar', 'dicembar'],
+    'months_short' => ['zen', 'fev', 'mar', 'avr', 'mai', 'jug', 'lui', 'avo', 'set', 'otu', 'nov', 'dic'],
+    'weekdays' => ['domenie', 'lunis', 'martars', 'miercus', 'joibe', 'vinars', 'sabide'],
+    'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'],
+    'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'year' => ':count an',
+    'month' => ':count mês',
+    'week' => ':count setemane',
+    'day' => ':count zornade',
+    'hour' => ':count ore',
+    'minute' => ':count minût',
+    'second' => ':count secont',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy.php
new file mode 100644
index 00000000..c1b54397
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Tim Fish
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count jier|:count jierren',
+    'a_year' => 'ien jier|:count jierren',
+    'y' => ':count j',
+    'month' => ':count moanne|:count moannen',
+    'a_month' => 'ien moanne|:count moannen',
+    'm' => ':count moa.',
+    'week' => ':count wike|:count wiken',
+    'a_week' => 'in wike|:count wiken',
+    'a' => ':count w.',
+    'day' => ':count dei|:count dagen',
+    'a_day' => 'ien dei|:count dagen',
+    'd' => ':count d.',
+    'hour' => ':count oere|:count oeren',
+    'a_hour' => 'ien oere|:count oeren',
+    'h' => ':count o.',
+    'minute' => ':count minút|:count minuten',
+    'a_minute' => 'ien minút|:count minuten',
+    'min' => ':count min.',
+    'second' => ':count sekonde|:count sekonden',
+    'a_second' => 'in pear sekonden|:count sekonden',
+    's' => ':count s.',
+    'ago' => ':time lyn',
+    'from_now' => 'oer :time',
+    'diff_yesterday' => 'juster',
+    'diff_yesterday_regexp' => 'juster(?:\\s+om)?',
+    'diff_today' => 'hjoed',
+    'diff_today_regexp' => 'hjoed(?:\\s+om)?',
+    'diff_tomorrow' => 'moarn',
+    'diff_tomorrow_regexp' => 'moarn(?:\\s+om)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[hjoed om] LT',
+        'nextDay' => '[moarn om] LT',
+        'nextWeek' => 'dddd [om] LT',
+        'lastDay' => '[juster om] LT',
+        'lastWeek' => '[ôfrûne] dddd [om] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
+    },
+    'months' => ['jannewaris', 'febrewaris', 'maart', 'april', 'maaie', 'juny', 'july', 'augustus', 'septimber', 'oktober', 'novimber', 'desimber'],
+    'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+    'mmm_suffix' => '.',
+    'weekdays' => ['snein', 'moandei', 'tiisdei', 'woansdei', 'tongersdei', 'freed', 'sneon'],
+    'weekdays_short' => ['si.', 'mo.', 'ti.', 'wo.', 'to.', 'fr.', 'so.'],
+    'weekdays_min' => ['Si', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'So'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' en '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
new file mode 100644
index 00000000..8559d5c2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'],
+    'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'],
+    'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'],
+    'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
+    'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
new file mode 100644
index 00000000..01cc96c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/fy.php', [
+    'formats' => [
+        'L' => 'DD-MM-YY',
+    ],
+    'months' => ['Jannewaris', 'Febrewaris', 'Maart', 'April', 'Maaie', 'Juny', 'July', 'Augustus', 'Septimber', 'Oktober', 'Novimber', 'Desimber'],
+    'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Snein', 'Moandei', 'Tiisdei', 'Woansdei', 'Tongersdei', 'Freed', 'Sneon'],
+    'weekdays_short' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'],
+    'weekdays_min' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga.php
new file mode 100644
index 00000000..9f07a26c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Thanks to André Silva : https://github.com/askpt
+ */
+
+return [
+    'year' => ':count bliain',
+    'a_year' => '{1}bliain|:count bliain',
+    'y' => ':countb',
+    'month' => ':count mí',
+    'a_month' => '{1}mí|:count mí',
+    'm' => ':countm',
+    'week' => ':count sheachtain',
+    'a_week' => '{1}sheachtain|:count sheachtain',
+    'w' => ':countsh',
+    'day' => ':count lá',
+    'a_day' => '{1}lá|:count lá',
+    'd' => ':countl',
+    'hour' => ':count uair an chloig',
+    'a_hour' => '{1}uair an chloig|:count uair an chloig',
+    'h' => ':countu',
+    'minute' => ':count nóiméad',
+    'a_minute' => '{1}nóiméad|:count nóiméad',
+    'min' => ':countn',
+    'second' => ':count soicind',
+    'a_second' => '{1}cúpla soicind|:count soicind',
+    's' => ':countso',
+    'ago' => ':time ó shin',
+    'from_now' => 'i :time',
+    'after' => ':time tar éis',
+    'before' => ':time roimh',
+    'diff_now' => 'anois',
+    'diff_today' => 'Inniu',
+    'diff_today_regexp' => 'Inniu(?:\\s+ag)?',
+    'diff_yesterday' => 'inné',
+    'diff_yesterday_regexp' => 'Inné(?:\\s+aig)?',
+    'diff_tomorrow' => 'amárach',
+    'diff_tomorrow_regexp' => 'Amárach(?:\\s+ag)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Inniu ag] LT',
+        'nextDay' => '[Amárach ag] LT',
+        'nextWeek' => 'dddd [ag] LT',
+        'lastDay' => '[Inné aig] LT',
+        'lastWeek' => 'dddd [seo caite] [ag] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'],
+    'months_short' => ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'],
+    'weekdays' => ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'],
+    'weekdays_short' => ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'],
+    'weekdays_min' => ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'],
+    'ordinal' => function ($number) {
+        return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh'));
+    },
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' agus '],
+    'meridiem' => ['r.n.', 'i.n.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
new file mode 100644
index 00000000..57b0c4fb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ga.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd.php
new file mode 100644
index 00000000..63d064dd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Jon Ashdown
+ */
+return [
+    'year' => ':count bliadhna',
+    'a_year' => '{1}bliadhna|:count bliadhna',
+    'y' => ':count b.',
+    'month' => ':count mìosan',
+    'a_month' => '{1}mìos|:count mìosan',
+    'm' => ':count ms.',
+    'week' => ':count seachdainean',
+    'a_week' => '{1}seachdain|:count seachdainean',
+    'w' => ':count s.',
+    'day' => ':count latha',
+    'a_day' => '{1}latha|:count latha',
+    'd' => ':count l.',
+    'hour' => ':count uairean',
+    'a_hour' => '{1}uair|:count uairean',
+    'h' => ':count u.',
+    'minute' => ':count mionaidean',
+    'a_minute' => '{1}mionaid|:count mionaidean',
+    'min' => ':count md.',
+    'second' => ':count diogan',
+    'a_second' => '{1}beagan diogan|:count diogan',
+    's' => ':count d.',
+    'ago' => 'bho chionn :time',
+    'from_now' => 'ann an :time',
+    'diff_yesterday' => 'An-dè',
+    'diff_yesterday_regexp' => 'An-dè(?:\\s+aig)?',
+    'diff_today' => 'An-diugh',
+    'diff_today_regexp' => 'An-diugh(?:\\s+aig)?',
+    'diff_tomorrow' => 'A-màireach',
+    'diff_tomorrow_regexp' => 'A-màireach(?:\\s+aig)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[An-diugh aig] LT',
+        'nextDay' => '[A-màireach aig] LT',
+        'nextWeek' => 'dddd [aig] LT',
+        'lastDay' => '[An-dè aig] LT',
+        'lastWeek' => 'dddd [seo chaidh] [aig] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh'));
+    },
+    'months' => ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'],
+    'months_short' => ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'],
+    'weekdays' => ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],
+    'weekdays_short' => ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
+    'weekdays_min' => ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' agus '],
+    'meridiem' => ['m', 'f'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
new file mode 100644
index 00000000..4fc26b3d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/gd.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez.php
new file mode 100644
index 00000000..b8a2f0eb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/gez_ER.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
new file mode 100644
index 00000000..f19d1df1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባት', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'],
+    'months_short' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባ', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'],
+    'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'],
+    'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
+    'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ጽባሕ', 'ምሴት'],
+
+    'month' => ':count ወርሕ', // less reliable
+    'm' => ':count ወርሕ', // less reliable
+    'a_month' => ':count ወርሕ', // less reliable
+
+    'week' => ':count ሰብዑ', // less reliable
+    'w' => ':count ሰብዑ', // less reliable
+    'a_week' => ':count ሰብዑ', // less reliable
+
+    'hour' => ':count አንትሙ', // less reliable
+    'h' => ':count አንትሙ', // less reliable
+    'a_hour' => ':count አንትሙ', // less reliable
+
+    'minute' => ':count ንኡስ', // less reliable
+    'min' => ':count ንኡስ', // less reliable
+    'a_minute' => ':count ንኡስ', // less reliable
+
+    'year' => ':count ዓመት',
+    'y' => ':count ዓመት',
+    'a_year' => ':count ዓመት',
+
+    'day' => ':count ዕለት',
+    'd' => ':count ዕለት',
+    'a_day' => ':count ዕለት',
+
+    'second' => ':count ካልእ',
+    's' => ':count ካልእ',
+    'a_second' => ':count ካልእ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
new file mode 100644
index 00000000..39330096
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
+    'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
+    'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'],
+    'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
+    'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ጽባሕ', 'ምሴት'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl.php
new file mode 100644
index 00000000..088b0f28
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl.php
@@ -0,0 +1,98 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Fidel Pita
+ * - JD Isaacks
+ * - Diego Vilariño
+ * - Sebastian Thierer
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count ano|:count anos',
+    'a_year' => 'un ano|:count anos',
+    'y' => ':count a.',
+    'month' => ':count mes|:count meses',
+    'a_month' => 'un mes|:count meses',
+    'm' => ':count mes.',
+    'week' => ':count semana|:count semanas',
+    'a_week' => 'unha semana|:count semanas',
+    'w' => ':count sem.',
+    'day' => ':count día|:count días',
+    'a_day' => 'un día|:count días',
+    'd' => ':count d.',
+    'hour' => ':count hora|:count horas',
+    'a_hour' => 'unha hora|:count horas',
+    'h' => ':count h.',
+    'minute' => ':count minuto|:count minutos',
+    'a_minute' => 'un minuto|:count minutos',
+    'min' => ':count min.',
+    'second' => ':count segundo|:count segundos',
+    'a_second' => 'uns segundos|:count segundos',
+    's' => ':count seg.',
+    'ago' => 'hai :time',
+    'from_now' => function ($time) {
+        if (str_starts_with($time, 'un')) {
+            return "n$time";
+        }
+
+        return "en $time";
+    },
+    'diff_now' => 'agora',
+    'diff_today' => 'hoxe',
+    'diff_today_regexp' => 'hoxe(?:\\s+ás)?',
+    'diff_yesterday' => 'onte',
+    'diff_yesterday_regexp' => 'onte(?:\\s+á)?',
+    'diff_tomorrow' => 'mañá',
+    'diff_tomorrow_regexp' => 'mañá(?:\\s+ás)?',
+    'after' => ':time despois',
+    'before' => ':time antes',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D [de] MMMM [de] YYYY',
+        'LLL' => 'D [de] MMMM [de] YYYY H:mm',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => function (CarbonInterface $current) {
+            return '[hoxe '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
+        },
+        'nextDay' => function (CarbonInterface $current) {
+            return '[mañá '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
+        },
+        'nextWeek' => function (CarbonInterface $current) {
+            return 'dddd ['.($current->hour !== 1 ? 'ás' : 'á').'] LT';
+        },
+        'lastDay' => function (CarbonInterface $current) {
+            return '[onte '.($current->hour !== 1 ? 'á' : 'a').'] LT';
+        },
+        'lastWeek' => function (CarbonInterface $current) {
+            return '[o] dddd [pasado '.($current->hour !== 1 ? 'ás' : 'á').'] LT';
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'],
+    'months_short' => ['xan.', 'feb.', 'mar.', 'abr.', 'mai.', 'xuñ.', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.'],
+    'weekdays' => ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'],
+    'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'],
+    'weekdays_min' => ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' e '],
+    'meridiem' => ['a.m.', 'p.m.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
new file mode 100644
index 00000000..9d6c1d96
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/gl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom.php
new file mode 100644
index 00000000..2a0584f8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/gom_Latn.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
new file mode 100644
index 00000000..612bb886
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+    'year' => ':count voros|:count vorsam',
+    'y' => ':countv',
+    'month' => ':count mhoino|:count mhoine',
+    'm' => ':countmh',
+    'week' => ':count satolleacho|:count satolleache',
+    'w' => ':countsa|:countsa',
+    'day' => ':count dis',
+    'd' => ':countd',
+    'hour' => ':count hor|:count horam',
+    'h' => ':counth',
+    'minute' => ':count minute|:count mintam',
+    'min' => ':countm',
+    'second' => ':count second',
+    's' => ':counts',
+
+    'diff_today' => 'Aiz',
+    'diff_yesterday' => 'Kal',
+    'diff_tomorrow' => 'Faleam',
+    'formats' => [
+        'LT' => 'A h:mm [vazta]',
+        'LTS' => 'A h:mm:ss [vazta]',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY A h:mm [vazta]',
+        'LLLL' => 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
+        'llll' => 'ddd, D MMM YYYY, A h:mm [vazta]',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[Aiz] LT',
+        'nextDay' => '[Faleam] LT',
+        'nextWeek' => '[Ieta to] dddd[,] LT',
+        'lastDay' => '[Kal] LT',
+        'lastWeek' => '[Fatlo] dddd[,] LT',
+        'sameElse' => 'L',
+    ],
+
+    'months' => ['Janer', 'Febrer', 'Mars', 'Abril', 'Mai', 'Jun', 'Julai', 'Agost', 'Setembr', 'Otubr', 'Novembr', 'Dezembr'],
+    'months_short' => ['Jan.', 'Feb.', 'Mars', 'Abr.', 'Mai', 'Jun', 'Jul.', 'Ago.', 'Set.', 'Otu.', 'Nov.', 'Dez.'],
+    'weekdays' => ['Aitar', 'Somar', 'Mongllar', 'Budvar', 'Brestar', 'Sukrar', 'Son\'var'],
+    'weekdays_short' => ['Ait.', 'Som.', 'Mon.', 'Bud.', 'Bre.', 'Suk.', 'Son.'],
+    'weekdays_min' => ['Ai', 'Sm', 'Mo', 'Bu', 'Br', 'Su', 'Sn'],
+
+    'ordinal' => function ($number, $period) {
+        return $number.($period === 'D' ? 'er' : '');
+    },
+
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'rati';
+        }
+        if ($hour < 12) {
+            return 'sokalli';
+        }
+        if ($hour < 16) {
+            return 'donparam';
+        }
+        if ($hour < 20) {
+            return 'sanje';
+        }
+
+        return 'rati';
+    },
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' ani '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
new file mode 100644
index 00000000..c5c850ed
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Christopher Dell
+ * - Akira Matsuda
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Henning Kiel
+ * - Aaron Patterson
+ * - Florian Hanke
+ */
+return [
+    'year' => ':count Johr',
+    'month' => ':count Monet',
+    'week' => ':count Woche',
+    'day' => ':count Tag',
+    'hour' => ':count Schtund',
+    'minute' => ':count Minute',
+    'second' => ':count Sekunde',
+    'weekdays' => ['Sunntig', 'Mäntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'],
+    'weekdays_short' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'],
+    'weekdays_min' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'],
+    'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'September', 'Oktober', 'November', 'Dezember'],
+    'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+    'meridiem' => ['am Vormittag', 'am Namittag'],
+    'ordinal' => ':number.',
+    'list' => [', ', ' und '],
+    'diff_now' => 'now',
+    'diff_yesterday' => 'geschter',
+    'diff_tomorrow' => 'moorn',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'Do MMMM YYYY',
+        'LLL' => 'Do MMMM, HH:mm [Uhr]',
+        'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
new file mode 100644
index 00000000..594eb25d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/gsw.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
new file mode 100644
index 00000000..3581dcfb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/gsw.php', [
+    'meridiem' => ['vorm.', 'nam.'],
+    'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LLL' => 'Do MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, Do MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
new file mode 100644
index 00000000..3581dcfb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/gsw.php', [
+    'meridiem' => ['vorm.', 'nam.'],
+    'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LLL' => 'Do MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, Do MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu.php
new file mode 100644
index 00000000..8bc43114
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Kaushik Thanki
+ * - Josh Soref
+ */
+return [
+    'year' => 'એક વર્ષ|:count વર્ષ',
+    'y' => ':countવર્ષ|:countવર્ષો',
+    'month' => 'એક મહિનો|:count મહિના',
+    'm' => ':countમહિનો|:countમહિના',
+    'week' => ':count અઠવાડિયું|:count અઠવાડિયા',
+    'w' => ':countઅઠ.|:countઅઠ.',
+    'day' => 'એક દિવસ|:count દિવસ',
+    'd' => ':countદિ.|:countદિ.',
+    'hour' => 'એક કલાક|:count કલાક',
+    'h' => ':countક.|:countક.',
+    'minute' => 'એક મિનિટ|:count મિનિટ',
+    'min' => ':countમિ.|:countમિ.',
+    'second' => 'અમુક પળો|:count સેકંડ',
+    's' => ':countસે.|:countસે.',
+    'ago' => ':time પેહલા',
+    'from_now' => ':time મા',
+    'after' => ':time પછી',
+    'before' => ':time પહેલા',
+    'diff_now' => 'હમણાં',
+    'diff_today' => 'આજ',
+    'diff_yesterday' => 'ગઇકાલે',
+    'diff_tomorrow' => 'કાલે',
+    'formats' => [
+        'LT' => 'A h:mm વાગ્યે',
+        'LTS' => 'A h:mm:ss વાગ્યે',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm વાગ્યે',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
+    ],
+    'calendar' => [
+        'sameDay' => '[આજ] LT',
+        'nextDay' => '[કાલે] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[ગઇકાલે] LT',
+        'lastWeek' => '[પાછલા] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'રાત';
+        }
+        if ($hour < 10) {
+            return 'સવાર';
+        }
+        if ($hour < 17) {
+            return 'બપોર';
+        }
+        if ($hour < 20) {
+            return 'સાંજ';
+        }
+
+        return 'રાત';
+    },
+    'months' => ['જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટ્બર', 'નવેમ્બર', 'ડિસેમ્બર'],
+    'months_short' => ['જાન્યુ.', 'ફેબ્રુ.', 'માર્ચ', 'એપ્રિ.', 'મે', 'જૂન', 'જુલા.', 'ઑગ.', 'સપ્ટે.', 'ઑક્ટ્.', 'નવે.', 'ડિસે.'],
+    'weekdays' => ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધ્વાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'],
+    'weekdays_short' => ['રવિ', 'સોમ', 'મંગળ', 'બુધ્', 'ગુરુ', 'શુક્ર', 'શનિ'],
+    'weekdays_min' => ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'],
+    'list' => [', ', ' અને '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
new file mode 100644
index 00000000..02654b1f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/gu.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/guz.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/guz.php
new file mode 100644
index 00000000..6230165c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/guz.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Ma', 'Mo'],
+    'weekdays' => ['Chumapiri', 'Chumatato', 'Chumaine', 'Chumatano', 'Aramisi', 'Ichuma', 'Esabato'],
+    'weekdays_short' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'],
+    'weekdays_min' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'],
+    'months' => ['Chanuari', 'Feburari', 'Machi', 'Apiriri', 'Mei', 'Juni', 'Chulai', 'Agosti', 'Septemba', 'Okitoba', 'Nobemba', 'Disemba'],
+    'months_short' => ['Can', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Cul', 'Agt', 'Sep', 'Okt', 'Nob', 'Dis'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'month' => ':count omotunyi', // less reliable
+    'm' => ':count omotunyi', // less reliable
+    'a_month' => ':count omotunyi', // less reliable
+
+    'week' => ':count isano naibere', // less reliable
+    'w' => ':count isano naibere', // less reliable
+    'a_week' => ':count isano naibere', // less reliable
+
+    'second' => ':count ibere', // less reliable
+    's' => ':count ibere', // less reliable
+    'a_second' => ':count ibere', // less reliable
+
+    'year' => ':count omwaka',
+    'y' => ':count omwaka',
+    'a_year' => ':count omwaka',
+
+    'day' => ':count rituko',
+    'd' => ':count rituko',
+    'a_day' => ':count rituko',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv.php
new file mode 100644
index 00000000..7c52b940
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/gv_GB.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
new file mode 100644
index 00000000..6b1168f9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Alastair McKinstry    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Jerrey-geuree', 'Toshiaght-arree', 'Mayrnt', 'Averil', 'Boaldyn', 'Mean-souree', 'Jerrey-souree', 'Luanistyn', 'Mean-fouyir', 'Jerrey-fouyir', 'Mee Houney', 'Mee ny Nollick'],
+    'months_short' => ['J-guer', 'T-arree', 'Mayrnt', 'Avrril', 'Boaldyn', 'M-souree', 'J-souree', 'Luanistyn', 'M-fouyir', 'J-fouyir', 'M.Houney', 'M.Nollick'],
+    'weekdays' => ['Jedoonee', 'Jelhein', 'Jemayrt', 'Jercean', 'Jerdein', 'Jeheiney', 'Jesarn'],
+    'weekdays_short' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'],
+    'weekdays_min' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count blein',
+    'y' => ':count blein',
+    'a_year' => ':count blein',
+
+    'month' => ':count mee',
+    'm' => ':count mee',
+    'a_month' => ':count mee',
+
+    'week' => ':count shiaghtin',
+    'w' => ':count shiaghtin',
+    'a_week' => ':count shiaghtin',
+
+    'day' => ':count laa',
+    'd' => ':count laa',
+    'a_day' => ':count laa',
+
+    'hour' => ':count oor',
+    'h' => ':count oor',
+    'a_hour' => ':count oor',
+
+    'minute' => ':count feer veg',
+    'min' => ':count feer veg',
+    'a_minute' => ':count feer veg',
+
+    'second' => ':count derrey',
+    's' => ':count derrey',
+    'a_second' => ':count derrey',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha.php
new file mode 100644
index 00000000..cd8e34d0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM, YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM, YYYY HH:mm',
+    ],
+    'months' => ['Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', 'Oktoba', 'Nuwamba', 'Disamba'],
+    'months_short' => ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'],
+    'weekdays' => ['Lahadi', 'Litini', 'Talata', 'Laraba', 'Alhamis', 'Jumaʼa', 'Asabar'],
+    'weekdays_short' => ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'],
+    'weekdays_min' => ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'shekara :count',
+    'y' => 'shekara :count',
+    'a_year' => 'shekara :count',
+
+    'month' => ':count wátàa',
+    'm' => ':count wátàa',
+    'a_month' => ':count wátàa',
+
+    'week' => ':count mako',
+    'w' => ':count mako',
+    'a_week' => ':count mako',
+
+    'day' => ':count rana',
+    'd' => ':count rana',
+    'a_day' => ':count rana',
+
+    'hour' => ':count áwàa',
+    'h' => ':count áwàa',
+    'a_hour' => ':count áwàa',
+
+    'minute' => 'minti :count',
+    'min' => 'minti :count',
+    'a_minute' => 'minti :count',
+
+    'second' => ':count ná bíyú',
+    's' => ':count ná bíyú',
+    'a_second' => ':count ná bíyú',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
new file mode 100644
index 00000000..f9f99a73
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ha.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
new file mode 100644
index 00000000..f9f99a73
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ha.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
new file mode 100644
index 00000000..f9f99a73
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ha.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak.php
new file mode 100644
index 00000000..6c3260e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/hak_TW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
new file mode 100644
index 00000000..fe239865
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY年MM月DD日',
+    ],
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
+    'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['上晝', '下晝'],
+
+    'year' => ':count ngien11',
+    'y' => ':count ngien11',
+    'a_year' => ':count ngien11',
+
+    'month' => ':count ngie̍t',
+    'm' => ':count ngie̍t',
+    'a_month' => ':count ngie̍t',
+
+    'week' => ':count lî-pai',
+    'w' => ':count lî-pai',
+    'a_week' => ':count lî-pai',
+
+    'day' => ':count ngit',
+    'd' => ':count ngit',
+    'a_day' => ':count ngit',
+
+    'hour' => ':count sṳ̀',
+    'h' => ':count sṳ̀',
+    'a_hour' => ':count sṳ̀',
+
+    'minute' => ':count fûn',
+    'min' => ':count fûn',
+    'a_minute' => ':count fûn',
+
+    'second' => ':count miéu',
+    's' => ':count miéu',
+    'a_second' => ':count miéu',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/haw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/haw.php
new file mode 100644
index 00000000..cdd36861
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/haw.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'months' => ['Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', 'ʻOkakopa', 'Nowemapa', 'Kekemapa'],
+    'months_short' => ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'],
+    'weekdays' => ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'],
+    'weekdays_short' => ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'],
+    'weekdays_min' => ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm a',
+    ],
+
+    'year' => ':count makahiki',
+    'y' => ':count makahiki',
+    'a_year' => ':count makahiki',
+
+    'month' => ':count mahina',
+    'm' => ':count mahina',
+    'a_month' => ':count mahina',
+
+    'week' => ':count pule',
+    'w' => ':count pule',
+    'a_week' => ':count pule',
+
+    'day' => ':count lā',
+    'd' => ':count lā',
+    'a_day' => ':count lā',
+
+    'hour' => ':count hola',
+    'h' => ':count hola',
+    'a_hour' => ':count hola',
+
+    'minute' => ':count minuke',
+    'min' => ':count minuke',
+    'a_minute' => ':count minuke',
+
+    'second' => ':count lua',
+    's' => ':count lua',
+    'a_second' => ':count lua',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he.php
new file mode 100644
index 00000000..c3fb3e97
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Daniel Cohen Gindi
+ * - JD Isaacks
+ * - Itai Nathaniel
+ * - GabMic
+ * - Yaakov Dahan (yakidahan)
+ */
+return [
+    'year' => 'שנה|{2}שנתיים|:count שנים',
+    'y' => 'שנה|:count שנ׳',
+    'month' => 'חודש|{2}חודשיים|:count חודשים',
+    'm' => 'חודש|:count חו׳',
+    'week' => 'שבוע|{2}שבועיים|:count שבועות',
+    'w' => 'שבוע|:count שב׳',
+    'day' => 'יום|{2}יומיים|:count ימים',
+    'd' => 'יום|:count ימ׳',
+    'hour' => 'שעה|{2}שעתיים|:count שעות',
+    'h' => 'שעה|:count שע׳',
+    'minute' => 'דקה|{2}שתי דקות|:count דקות',
+    'min' => 'דקה|:count דק׳',
+    'second' => 'שנייה|:count שניות',
+    'a_second' => 'כמה שניות|:count שניות',
+    's' => 'שניה|:count שנ׳',
+    'ago' => 'לפני :time',
+    'from_now' => 'בעוד :time מעכשיו',
+    'after' => 'אחרי :time',
+    'before' => 'לפני :time',
+    'diff_now' => 'עכשיו',
+    'diff_today' => 'היום',
+    'diff_today_regexp' => 'היום(?:\\s+ב־)?',
+    'diff_yesterday' => 'אתמול',
+    'diff_yesterday_regexp' => 'אתמול(?:\\s+ב־)?',
+    'diff_tomorrow' => 'מחר',
+    'diff_tomorrow_regexp' => 'מחר(?:\\s+ב־)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D [ב]MMMM YYYY',
+        'LLL' => 'D [ב]MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D [ב]MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[היום ב־]LT',
+        'nextDay' => '[מחר ב־]LT',
+        'nextWeek' => 'dddd [בשעה] LT',
+        'lastDay' => '[אתמול ב־]LT',
+        'lastWeek' => '[ביום] dddd [האחרון בשעה] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour, $minute, $isLower) {
+        if ($hour < 5) {
+            return 'לפנות בוקר';
+        }
+        if ($hour < 10) {
+            return 'בבוקר';
+        }
+        if ($hour < 12) {
+            return $isLower ? 'לפנה"צ' : 'לפני הצהריים';
+        }
+        if ($hour < 18) {
+            return $isLower ? 'אחה"צ' : 'אחרי הצהריים';
+        }
+
+        return 'בערב';
+    },
+    'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
+    'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'],
+    'weekdays' => ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת'],
+    'weekdays_short' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
+    'weekdays_min' => ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'],
+    'list' => [', ', ' ו -'],
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
new file mode 100644
index 00000000..14fab3e9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/he.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi.php
new file mode 100644
index 00000000..70c57a29
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - abhimanyu003
+ * - Josh Soref
+ * - JD Isaacks
+ */
+return [
+    'year' => 'एक वर्ष|:count वर्ष',
+    'y' => '1 वर्ष|:count वर्षों',
+    'month' => 'एक महीने|:count महीने',
+    'm' => '1 माह|:count महीने',
+    'week' => '1 सप्ताह|:count सप्ताह',
+    'w' => '1 सप्ताह|:count सप्ताह',
+    'day' => 'एक दिन|:count दिन',
+    'd' => '1 दिन|:count दिनों',
+    'hour' => 'एक घंटा|:count घंटे',
+    'h' => '1 घंटा|:count घंटे',
+    'minute' => 'एक मिनट|:count मिनट',
+    'min' => '1 मिनट|:count मिनटों',
+    'second' => 'कुछ ही क्षण|:count सेकंड',
+    's' => '1 सेकंड|:count सेकंड',
+    'ago' => ':time पहले',
+    'from_now' => ':time में',
+    'after' => ':time के बाद',
+    'before' => ':time के पहले',
+    'diff_now' => 'अब',
+    'diff_today' => 'आज',
+    'diff_yesterday' => 'कल',
+    'diff_tomorrow' => 'कल',
+    'formats' => [
+        'LT' => 'A h:mm बजे',
+        'LTS' => 'A h:mm:ss बजे',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm बजे',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm बजे',
+    ],
+    'calendar' => [
+        'sameDay' => '[आज] LT',
+        'nextDay' => '[कल] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[कल] LT',
+        'lastWeek' => '[पिछले] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'रात';
+        }
+        if ($hour < 10) {
+            return 'सुबह';
+        }
+        if ($hour < 17) {
+            return 'दोपहर';
+        }
+        if ($hour < 20) {
+            return 'शाम';
+        }
+
+        return 'रात';
+    },
+    'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जन.', 'फ़र.', 'मार्च', 'अप्रै.', 'मई', 'जून', 'जुल.', 'अग.', 'सित.', 'अक्टू.', 'नव.', 'दिस.'],
+    'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरू', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
+    'list' => [', ', ' और '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
new file mode 100644
index 00000000..749dd97c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/hi.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif.php
new file mode 100644
index 00000000..65791dd4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/hif_FJ.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
new file mode 100644
index 00000000..30ad5e74
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    akhilesh.k@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'dddd DD MMM YYYY',
+    ],
+    'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+    'weekdays' => ['Ravivar', 'Somvar', 'Mangalvar', 'Budhvar', 'Guruvar', 'Shukravar', 'Shanivar'],
+    'weekdays_short' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'],
+    'weekdays_min' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'],
+    'meridiem' => ['Purvahan', 'Aparaahna'],
+
+    'hour' => ':count minit', // less reliable
+    'h' => ':count minit', // less reliable
+    'a_hour' => ':count minit', // less reliable
+
+    'year' => ':count saal',
+    'y' => ':count saal',
+    'a_year' => ':count saal',
+
+    'month' => ':count Mahina',
+    'm' => ':count Mahina',
+    'a_month' => ':count Mahina',
+
+    'week' => ':count Hafta',
+    'w' => ':count Hafta',
+    'a_week' => ':count Hafta',
+
+    'day' => ':count Din',
+    'd' => ':count Din',
+    'a_day' => ':count Din',
+
+    'minute' => ':count Minit',
+    'min' => ':count Minit',
+    'a_minute' => ':count Minit',
+
+    'second' => ':count Second',
+    's' => ':count Second',
+    'a_second' => ':count Second',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne.php
new file mode 100644
index 00000000..4bcb05c7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/hne_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
new file mode 100644
index 00000000..a5ca758b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अपरेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितमबर', 'अकटूबर', 'नवमबर', 'दिसमबर'],
+    'months_short' => ['जन', 'फर', 'मार्च', 'अप', 'मई', 'जून', 'जुला', 'अग', 'सित', 'अकटू', 'नव', 'दिस'],
+    'weekdays' => ['इतवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बिरसपत', 'सुकरवार', 'सनिवार'],
+    'weekdays_short' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'],
+    'weekdays_min' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['बिहिनियाँ', 'मंझनियाँ'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr.php
new file mode 100644
index 00000000..cfd85fd4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr.php
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Tim Fish
+ * - shaishavgandhi05
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - tomhorvat
+ * - Josh Soref
+ * - François B
+ * - shaishavgandhi05
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - tomhorvat
+ * - Stjepan Majdak
+ * - Vanja Retkovac (vr00)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count godinu|:count godine|:count godina',
+    'y' => ':count god.|:count god.|:count god.',
+    'month' => ':count mjesec|:count mjeseca|:count mjeseci',
+    'm' => ':count mj.|:count mj.|:count mj.',
+    'week' => ':count tjedan|:count tjedna|:count tjedana',
+    'w' => ':count tj.|:count tj.|:count tj.',
+    'day' => ':count dan|:count dana|:count dana',
+    'd' => ':count d.|:count d.|:count d.',
+    'hour' => ':count sat|:count sata|:count sati',
+    'h' => ':count sat|:count sata|:count sati',
+    'minute' => ':count minutu|:count minute|:count minuta',
+    'min' => ':count min.|:count min.|:count min.',
+    'second' => ':count sekundu|:count sekunde|:count sekundi',
+    'a_second' => 'nekoliko sekundi|:count sekunde|:count sekundi',
+    's' => ':count sek.|:count sek.|:count sek.',
+    'ago' => 'prije :time',
+    'from_now' => 'za :time',
+    'after' => ':time poslije',
+    'before' => ':time prije',
+    'diff_now' => 'sad',
+    'diff_today' => 'danas',
+    'diff_today_regexp' => 'danas(?:\\s+u)?',
+    'diff_yesterday' => 'jučer',
+    'diff_yesterday_regexp' => 'jučer(?:\\s+u)?',
+    'diff_tomorrow' => 'sutra',
+    'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
+    'diff_before_yesterday' => 'prekjučer',
+    'diff_after_tomorrow' => 'prekosutra',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'D. M. YYYY.',
+        'LL' => 'D. MMMM YYYY.',
+        'LLL' => 'D. MMMM YYYY. H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY. H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[danas u] LT',
+        'nextDay' => '[sutra u] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[u] [nedjelju] [u] LT';
+                case 3:
+                    return '[u] [srijedu] [u] LT';
+                case 6:
+                    return '[u] [subotu] [u] LT';
+                default:
+                    return '[u] dddd [u] LT';
+            }
+        },
+        'lastDay' => '[jučer u] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                case 3:
+                    return '[prošlu] dddd [u] LT';
+                case 6:
+                    return '[prošle] [subote] [u] LT';
+                default:
+                    return '[prošli] dddd [u] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'],
+    'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'],
+    'months_short' => ['sij.', 'velj.', 'ožu.', 'tra.', 'svi.', 'lip.', 'srp.', 'kol.', 'ruj.', 'lis.', 'stu.', 'pro.'],
+    'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['nedjelju', 'ponedjeljak', 'utorak', 'srijedu', 'četvrtak', 'petak', 'subotu'],
+    'weekdays_standalone' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
+    'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' i '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
new file mode 100644
index 00000000..7763a458
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - DarkoDevelop
+ */
+return array_replace_recursive(require __DIR__.'/hr.php', [
+    'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
+    'weekdays_min' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'],
+    'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'],
+    'months_short' => ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'],
+    'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D. M. yy.',
+        'LL' => 'D. MMM YYYY.',
+        'LLL' => 'D. MMMM YYYY. HH:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY. HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
new file mode 100644
index 00000000..db74d8c7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/hr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
new file mode 100644
index 00000000..3537b8ba
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/hsb_DE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
new file mode 100644
index 00000000..6ba22716
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Information from Michael Wolf Andrzej Krzysztofowicz ankry@mif.pg.gda.pl
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'DD. MMMM YYYY',
+        'LLL' => 'DD. MMMM, HH:mm [hodź.]',
+        'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [hodź.]',
+    ],
+    'months' => ['januara', 'februara', 'měrca', 'apryla', 'meje', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'],
+    'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Mej', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'],
+    'weekdays' => ['Njedźela', 'Póndźela', 'Wutora', 'Srjeda', 'Štvórtk', 'Pjatk', 'Sobota'],
+    'weekdays_short' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'],
+    'weekdays_min' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count lěto',
+    'y' => ':count lěto',
+    'a_year' => ':count lěto',
+
+    'month' => ':count měsac',
+    'm' => ':count měsac',
+    'a_month' => ':count měsac',
+
+    'week' => ':count tydźeń',
+    'w' => ':count tydźeń',
+    'a_week' => ':count tydźeń',
+
+    'day' => ':count dźeń',
+    'd' => ':count dźeń',
+    'a_day' => ':count dźeń',
+
+    'hour' => ':count hodźina',
+    'h' => ':count hodźina',
+    'a_hour' => ':count hodźina',
+
+    'minute' => ':count chwila',
+    'min' => ':count chwila',
+    'a_minute' => ':count chwila',
+
+    'second' => ':count druhi',
+    's' => ':count druhi',
+    'a_second' => ':count druhi',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht.php
new file mode 100644
index 00000000..ebd12ad1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ht_HT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
new file mode 100644
index 00000000..139b813b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['janvye', 'fevriye', 'mas', 'avril', 'me', 'jen', 'jiyè', 'out', 'septanm', 'oktòb', 'novanm', 'desanm'],
+    'months_short' => ['jan', 'fev', 'mas', 'avr', 'me', 'jen', 'jiy', 'out', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['dimanch', 'lendi', 'madi', 'mèkredi', 'jedi', 'vandredi', 'samdi'],
+    'weekdays_short' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'],
+    'weekdays_min' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count lane',
+    'y' => ':count lane',
+    'a_year' => ':count lane',
+
+    'month' => 'mwa :count',
+    'm' => 'mwa :count',
+    'a_month' => 'mwa :count',
+
+    'week' => 'semèn :count',
+    'w' => 'semèn :count',
+    'a_week' => 'semèn :count',
+
+    'day' => ':count jou',
+    'd' => ':count jou',
+    'a_day' => ':count jou',
+
+    'hour' => ':count lè',
+    'h' => ':count lè',
+    'a_hour' => ':count lè',
+
+    'minute' => ':count minit',
+    'min' => ':count minit',
+    'a_minute' => ':count minit',
+
+    'second' => ':count segonn',
+    's' => ':count segonn',
+    'a_second' => ':count segonn',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu.php
new file mode 100644
index 00000000..b2d2ac11
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu.php
@@ -0,0 +1,118 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Adam Brunner
+ * - Brett Johnson
+ * - balping
+ */
+
+use Carbon\CarbonInterface;
+
+$huWeekEndings = ['vasárnap', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton'];
+
+return [
+    'year' => ':count év',
+    'y' => ':count év',
+    'month' => ':count hónap',
+    'm' => ':count hónap',
+    'week' => ':count hét',
+    'w' => ':count hét',
+    'day' => ':count nap',
+    'd' => ':count nap',
+    'hour' => ':count óra',
+    'h' => ':count óra',
+    'minute' => ':count perc',
+    'min' => ':count perc',
+    'second' => ':count másodperc',
+    's' => ':count másodperc',
+    'ago' => ':time',
+    'from_now' => ':time múlva',
+    'after' => ':time később',
+    'before' => ':time korábban',
+    'year_ago' => ':count éve',
+    'y_ago' => ':count éve',
+    'month_ago' => ':count hónapja',
+    'm_ago' => ':count hónapja',
+    'week_ago' => ':count hete',
+    'w_ago' => ':count hete',
+    'day_ago' => ':count napja',
+    'd_ago' => ':count napja',
+    'hour_ago' => ':count órája',
+    'h_ago' => ':count órája',
+    'minute_ago' => ':count perce',
+    'min_ago' => ':count perce',
+    'second_ago' => ':count másodperce',
+    's_ago' => ':count másodperce',
+    'year_after' => ':count évvel',
+    'y_after' => ':count évvel',
+    'month_after' => ':count hónappal',
+    'm_after' => ':count hónappal',
+    'week_after' => ':count héttel',
+    'w_after' => ':count héttel',
+    'day_after' => ':count nappal',
+    'd_after' => ':count nappal',
+    'hour_after' => ':count órával',
+    'h_after' => ':count órával',
+    'minute_after' => ':count perccel',
+    'min_after' => ':count perccel',
+    'second_after' => ':count másodperccel',
+    's_after' => ':count másodperccel',
+    'year_before' => ':count évvel',
+    'y_before' => ':count évvel',
+    'month_before' => ':count hónappal',
+    'm_before' => ':count hónappal',
+    'week_before' => ':count héttel',
+    'w_before' => ':count héttel',
+    'day_before' => ':count nappal',
+    'd_before' => ':count nappal',
+    'hour_before' => ':count órával',
+    'h_before' => ':count órával',
+    'minute_before' => ':count perccel',
+    'min_before' => ':count perccel',
+    'second_before' => ':count másodperccel',
+    's_before' => ':count másodperccel',
+    'months' => ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'],
+    'months_short' => ['jan.', 'feb.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'],
+    'weekdays' => ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'],
+    'weekdays_short' => ['vas', 'hét', 'kedd', 'sze', 'csüt', 'pén', 'szo'],
+    'weekdays_min' => ['v', 'h', 'k', 'sze', 'cs', 'p', 'sz'],
+    'ordinal' => ':number.',
+    'diff_now' => 'most',
+    'diff_today' => 'ma',
+    'diff_yesterday' => 'tegnap',
+    'diff_tomorrow' => 'holnap',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'YYYY.MM.DD.',
+        'LL' => 'YYYY. MMMM D.',
+        'LLL' => 'YYYY. MMMM D. H:mm',
+        'LLLL' => 'YYYY. MMMM D., dddd H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ma] LT[-kor]',
+        'nextDay' => '[holnap] LT[-kor]',
+        'nextWeek' => function (CarbonInterface $date) use ($huWeekEndings) {
+            return '['.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]';
+        },
+        'lastDay' => '[tegnap] LT[-kor]',
+        'lastWeek' => function (CarbonInterface $date) use ($huWeekEndings) {
+            return '[múlt '.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]';
+        },
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['DE', 'DU'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' és '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
new file mode 100644
index 00000000..b1c48541
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/hu.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
new file mode 100644
index 00000000..8b129947
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - mhamlet
+ */
+return [
+    'year' => ':count Õ¿Õ¡Ö€Õ«',
+    'a_year' => 'Õ¿Õ¡Ö€Õ«|:count Õ¿Õ¡Ö€Õ«',
+    'y' => ':countÕ¿',
+    'month' => ':count Õ¡Õ´Õ«Õ½',
+    'a_month' => 'Õ¡Õ´Õ«Õ½|:count Õ¡Õ´Õ«Õ½',
+    'm' => ':countÕ¡Õ´',
+    'week' => ':count Õ·Õ¡Õ¢Õ¡Õ©',
+    'a_week' => 'Õ·Õ¡Õ¢Õ¡Õ©|:count Õ·Õ¡Õ¢Õ¡Õ©',
+    'w' => ':countÕ·',
+    'day' => ':count Ö…Ö€',
+    'a_day' => 'Ö…Ö€|:count Ö…Ö€',
+    'd' => ':countÖ…Ö€',
+    'hour' => ':count ÕªÕ¡Õ´',
+    'a_hour' => 'ÕªÕ¡Õ´|:count ÕªÕ¡Õ´',
+    'h' => ':countÕª',
+    'minute' => ':count Ö€Õ¸ÕºÕ¥',
+    'a_minute' => 'Ö€Õ¸ÕºÕ¥|:count Ö€Õ¸ÕºÕ¥',
+    'min' => ':countÖ€',
+    'second' => ':count Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',
+    'a_second' => 'Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶|:count Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶',
+    's' => ':countÕ¾Ö€Õ¯',
+    'ago' => ':time Õ¡Õ¼Õ¡Õ»',
+    'from_now' => ':timeից',
+    'after' => ':time Õ°Õ¥Õ¿Õ¸',
+    'before' => ':time Õ¡Õ¼Õ¡Õ»',
+    'diff_now' => 'Õ°Õ«Õ´Õ¡',
+    'diff_today' => 'Õ¡ÕµÕ½Ö…Ö€',
+    'diff_yesterday' => 'Õ¥Ö€Õ¥Õ¯',
+    'diff_tomorrow' => 'Õ¾Õ¡Õ²Õ¨',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY Õ©.',
+        'LLL' => 'D MMMM YYYY Õ©., HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY Õ©., HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Õ¡ÕµÕ½Ö…Ö€] LT',
+        'nextDay' => '[Õ¾Õ¡Õ²Õ¨] LT',
+        'nextWeek' => 'dddd [Ö…Ö€Õ¨ ÕªÕ¡Õ´Õ¨] LT',
+        'lastDay' => '[Õ¥Ö€Õ¥Õ¯] LT',
+        'lastWeek' => '[անցած] dddd [օրը ժամը] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'DDD':
+            case 'w':
+            case 'W':
+            case 'DDDo':
+                return $number.($number === 1 ? '-Õ«Õ¶' : '-Ö€Õ¤');
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'Õ£Õ«Õ·Õ¥Ö€Õ¾Õ¡';
+        }
+        if ($hour < 12) {
+            return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
+        }
+        if ($hour < 17) {
+            return 'ցերեկվա';
+        }
+
+        return 'Õ¥Ö€Õ¥Õ¯Õ¸ÕµÕ¡Õ¶';
+    },
+    'months' => ['Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«', 'ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«', 'Õ´Õ¡Ö€Õ¿Õ«', 'Õ¡ÕºÖ€Õ«Õ¬Õ«', 'Õ´Õ¡ÕµÕ«Õ½Õ«', 'Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«', 'Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«', 'Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«', 'Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«', 'Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«', 'Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«', 'Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«'],
+    'months_standalone' => ['Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€', 'ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€', 'Õ´Õ¡Ö€Õ¿', 'Õ¡ÕºÖ€Õ«Õ¬', 'Õ´Õ¡ÕµÕ«Õ½', 'Õ°Õ¸Ö‚Õ¶Õ«Õ½', 'Õ°Õ¸Ö‚Õ¬Õ«Õ½', 'Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½', 'Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€', 'Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€', 'Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€', 'Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€'],
+    'months_short' => ['Õ°Õ¶Õ¾', 'ÖƒÕ¿Ö€', 'Õ´Ö€Õ¿', 'Õ¡ÕºÖ€', 'Õ´ÕµÕ½', 'Õ°Õ¶Õ½', 'Õ°Õ¬Õ½', 'Ö…Õ£Õ½', 'Õ½ÕºÕ¿', 'Õ°Õ¯Õ¿', 'Õ¶Õ´Õ¢', 'Õ¤Õ¯Õ¿'],
+    'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['Õ¯Õ«Ö€Õ¡Õ¯Õ«', 'Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«', 'Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«', 'Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«', 'Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«', 'Õ¸Ö‚Ö€Õ¢Õ¡Õ©', 'Õ·Õ¡Õ¢Õ¡Õ©'],
+    'weekdays_short' => ['Õ¯Ö€Õ¯', 'Õ¥Ö€Õ¯', 'Õ¥Ö€Ö„', 'Õ¹Ö€Ö„', 'Õ°Õ¶Õ£', 'Õ¸Ö‚Ö€Õ¢', 'Õ·Õ¢Õ©'],
+    'weekdays_min' => ['Õ¯Ö€Õ¯', 'Õ¥Ö€Õ¯', 'Õ¥Ö€Ö„', 'Õ¹Ö€Ö„', 'Õ°Õ¶Õ£', 'Õ¸Ö‚Ö€Õ¢', 'Õ·Õ¢Õ©'],
+    'list' => [', ', ' Õ¥Ö‚ '],
+    'first_day_of_week' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
new file mode 100644
index 00000000..4587df56
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Tim Fish
+ * - Serhan Apaydın
+ * - JD Isaacks
+ */
+return array_replace_recursive(require __DIR__.'/hy.php', [
+    'from_now' => ':time Õ°Õ¥Õ¿Õ¸',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
new file mode 100644
index 00000000..e65449b8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+    'months' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
+    'months_short' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
+    'weekdays' => ['1', '2', '3', '4', '5', '6', '7'],
+    'weekdays_short' => ['1', '2', '3', '4', '5', '6', '7'],
+    'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia.php
new file mode 100644
index 00000000..0a0d5e61
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ia_FR.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
new file mode 100644
index 00000000..de4b2fa0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Fedora Project Nik Kalach nikka@fedoraproject.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', 'octobre', 'novembre', 'decembre'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
+    'weekdays' => ['dominica', 'lunedi', 'martedi', 'mercuridi', 'jovedi', 'venerdi', 'sabbato'],
+    'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'],
+    'weekdays_min' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => 'anno :count',
+    'y' => 'anno :count',
+    'a_year' => 'anno :count',
+
+    'month' => ':count mense',
+    'm' => ':count mense',
+    'a_month' => ':count mense',
+
+    'week' => ':count septimana',
+    'w' => ':count septimana',
+    'a_week' => ':count septimana',
+
+    'day' => ':count die',
+    'd' => ':count die',
+    'a_day' => ':count die',
+
+    'hour' => ':count hora',
+    'h' => ':count hora',
+    'a_hour' => ':count hora',
+
+    'minute' => ':count minuscule',
+    'min' => ':count minuscule',
+    'a_minute' => ':count minuscule',
+
+    'second' => ':count secunda',
+    's' => ':count secunda',
+    'a_second' => ':count secunda',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id.php
new file mode 100644
index 00000000..afaf78f2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id.php
@@ -0,0 +1,92 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - du
+ * - JD Isaacks
+ * - Nafies Luthfi
+ * - Raymundus Jati Primanda (mundusjp)
+ * - diankur313
+ * - a-wip0
+ */
+return [
+    'year' => ':count tahun',
+    'a_year' => '{1}setahun|]1,Inf[:count tahun',
+    'y' => ':countthn',
+    'month' => ':count bulan',
+    'a_month' => '{1}sebulan|]1,Inf[:count bulan',
+    'm' => ':countbln',
+    'week' => ':count minggu',
+    'a_week' => '{1}seminggu|]1,Inf[:count minggu',
+    'w' => ':countmgg',
+    'day' => ':count hari',
+    'a_day' => '{1}sehari|]1,Inf[:count hari',
+    'd' => ':counthr',
+    'hour' => ':count jam',
+    'a_hour' => '{1}sejam|]1,Inf[:count jam',
+    'h' => ':countj',
+    'minute' => ':count menit',
+    'a_minute' => '{1}semenit|]1,Inf[:count menit',
+    'min' => ':countmnt',
+    'second' => ':count detik',
+    'a_second' => '{1}beberapa detik|]1,Inf[:count detik',
+    's' => ':countdt',
+    'ago' => ':time yang lalu',
+    'from_now' => ':time dari sekarang',
+    'after' => ':time setelahnya',
+    'before' => ':time sebelumnya',
+    'diff_now' => 'sekarang',
+    'diff_today' => 'Hari',
+    'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?',
+    'diff_yesterday' => 'kemarin',
+    'diff_yesterday_regexp' => 'Kemarin(?:\\s+pukul)?',
+    'diff_tomorrow' => 'besok',
+    'diff_tomorrow_regexp' => 'Besok(?:\\s+pukul)?',
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm.ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY [pukul] HH.mm',
+        'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Hari ini pukul] LT',
+        'nextDay' => '[Besok pukul] LT',
+        'nextWeek' => 'dddd [pukul] LT',
+        'lastDay' => '[Kemarin pukul] LT',
+        'lastWeek' => 'dddd [lalu pukul] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 11) {
+            return 'pagi';
+        }
+        if ($hour < 15) {
+            return 'siang';
+        }
+        if ($hour < 19) {
+            return 'sore';
+        }
+
+        return 'malam';
+    },
+    'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'],
+    'weekdays_short' => ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],
+    'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' dan '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
new file mode 100644
index 00000000..d5953a14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/id.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig.php
new file mode 100644
index 00000000..de51e9cc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ig_NG.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
new file mode 100644
index 00000000..0034e35d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Jenụwarị', 'Febrụwarị', 'Maachị', 'Eprel', 'Mee', 'Juun', 'Julaị', 'Ọgọọst', 'Septemba', 'Ọktoba', 'Novemba', 'Disemba'],
+    'months_short' => ['Jen', 'Feb', 'Maa', 'Epr', 'Mee', 'Juu', 'Jul', 'Ọgọ', 'Sep', 'Ọkt', 'Nov', 'Dis'],
+    'weekdays' => ['sọnde', 'mọnde', 'tuzde', 'wenzde', 'tọsde', 'fraịde', 'satọde'],
+    'weekdays_short' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'],
+    'weekdays_min' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'afo :count',
+    'y' => 'afo :count',
+    'a_year' => 'afo :count',
+
+    'month' => 'önwa :count',
+    'm' => 'önwa :count',
+    'a_month' => 'önwa :count',
+
+    'week' => 'izu :count',
+    'w' => 'izu :count',
+    'a_week' => 'izu :count',
+
+    'day' => 'ụbọchị :count',
+    'd' => 'ụbọchị :count',
+    'a_day' => 'ụbọchị :count',
+
+    'hour' => 'awa :count',
+    'h' => 'awa :count',
+    'a_hour' => 'awa :count',
+
+    'minute' => 'minit :count',
+    'min' => 'minit :count',
+    'a_minute' => 'minit :count',
+
+    'second' => 'sekọnd :count',
+    's' => 'sekọnd :count',
+    'a_second' => 'sekọnd :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ii.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ii.php
new file mode 100644
index 00000000..a4246c27
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ii.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['ꎸꄑ', 'ꁯꋒ'],
+    'weekdays' => ['ꑭꆏꑍ', 'ꆏꊂꋍ', 'ꆏꊂꑍ', 'ꆏꊂꌕ', 'ꆏꊂꇖ', 'ꆏꊂꉬ', 'ꆏꊂꃘ'],
+    'weekdays_short' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'],
+    'weekdays_min' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'],
+    'months' => null,
+    'months_short' => ['ꋍꆪ', 'ꑍꆪ', 'ꌕꆪ', 'ꇖꆪ', 'ꉬꆪ', 'ꃘꆪ', 'ꏃꆪ', 'ꉆꆪ', 'ꈬꆪ', 'ꊰꆪ', 'ꊰꊪꆪ', 'ꊰꑋꆪ'],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D h:mm a',
+        'LLLL' => 'YYYY MMMM D, dddd h:mm a',
+    ],
+
+    'year' => ':count ê’‰', // less reliable
+    'y' => ':count ê’‰', // less reliable
+    'a_year' => ':count ê’‰', // less reliable
+
+    'month' => ':count ꆪ',
+    'm' => ':count ꆪ',
+    'a_month' => ':count ꆪ',
+
+    'week' => ':count ꏃ', // less reliable
+    'w' => ':count ꏃ', // less reliable
+    'a_week' => ':count ꏃ', // less reliable
+
+    'day' => ':count ꏜ', // less reliable
+    'd' => ':count ꏜ', // less reliable
+    'a_day' => ':count ꏜ', // less reliable
+
+    'hour' => ':count ꄮꈉ',
+    'h' => ':count ꄮꈉ',
+    'a_hour' => ':count ꄮꈉ',
+
+    'minute' => ':count ꀄꊭ', // less reliable
+    'min' => ':count ꀄꊭ', // less reliable
+    'a_minute' => ':count ꀄꊭ', // less reliable
+
+    'second' => ':count ꇅ', // less reliable
+    's' => ':count ꇅ', // less reliable
+    'a_second' => ':count ꇅ', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik.php
new file mode 100644
index 00000000..7a13aa2d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ik_CA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
new file mode 100644
index 00000000..bb2a109b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Siqiññaatchiaq', 'Siqiññaasrugruk', 'Paniqsiqsiivik', 'Qilġich Tatqiat', 'Suppivik', 'Iġñivik', 'Itchavik', 'Tiññivik', 'Amiġaiqsivik', 'Sikkuvik', 'Nippivik', 'Siqiñġiḷaq'],
+    'months_short' => ['Sñt', 'Sñs', 'Pan', 'Qil', 'Sup', 'Iġñ', 'Itc', 'Tiñ', 'Ami', 'Sik', 'Nip', 'Siq'],
+    'weekdays' => ['Minġuiqsioiq', 'Savałłiq', 'Ilaqtchiioiq', 'Qitchiioiq', 'Sisamiioiq', 'Tallimmiioiq', 'Maqinġuoiq'],
+    'weekdays_short' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'],
+    'weekdays_min' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count ukiuq',
+    'y' => ':count ukiuq',
+    'a_year' => ':count ukiuq',
+
+    'month' => ':count Tatqiat',
+    'm' => ':count Tatqiat',
+    'a_month' => ':count Tatqiat',
+
+    'week' => ':count tatqiat', // less reliable
+    'w' => ':count tatqiat', // less reliable
+    'a_week' => ':count tatqiat', // less reliable
+
+    'day' => ':count siqiñiq', // less reliable
+    'd' => ':count siqiñiq', // less reliable
+    'a_day' => ':count siqiñiq', // less reliable
+
+    'hour' => ':count Siḷa', // less reliable
+    'h' => ':count Siḷa', // less reliable
+    'a_hour' => ':count Siḷa', // less reliable
+
+    'second' => ':count iġñiq', // less reliable
+    's' => ':count iġñiq', // less reliable
+    'a_second' => ':count iġñiq', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/in.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/in.php
new file mode 100644
index 00000000..d5953a14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/in.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/id.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is.php
new file mode 100644
index 00000000..9990168c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kristján Ingi Geirsson
+ */
+return [
+    'year' => '1 ár|:count ár',
+    'y' => '1 ár|:count ár',
+    'month' => '1 mánuður|:count mánuðir',
+    'm' => '1 mánuður|:count mánuðir',
+    'week' => '1 vika|:count vikur',
+    'w' => '1 vika|:count vikur',
+    'day' => '1 dagur|:count dagar',
+    'd' => '1 dagur|:count dagar',
+    'hour' => '1 klukkutími|:count klukkutímar',
+    'h' => '1 klukkutími|:count klukkutímar',
+    'minute' => '1 mínúta|:count mínútur',
+    'min' => '1 mínúta|:count mínútur',
+    'second' => '1 sekúnda|:count sekúndur',
+    's' => '1 sekúnda|:count sekúndur',
+    'ago' => ':time síðan',
+    'from_now' => ':time síðan',
+    'after' => ':time eftir',
+    'before' => ':time fyrir',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' og '],
+    'meridiem' => ['fh', 'eh'],
+    'diff_now' => 'núna',
+    'diff_yesterday' => 'í gær',
+    'diff_tomorrow' => 'á morgun',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM [kl.] HH:mm',
+        'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'weekdays' => ['sunnudaginn', 'mánudaginn', 'þriðjudaginn', 'miðvikudaginn', 'fimmtudaginn', 'föstudaginn', 'laugardaginn'],
+    'weekdays_short' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'],
+    'weekdays_min' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'],
+    'months' => ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
new file mode 100644
index 00000000..4d35c448
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/is.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it.php
new file mode 100644
index 00000000..49875d7e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it.php
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ash
+ * - François B
+ * - Marco Perrando
+ * - Massimiliano Caniparoli
+ * - JD Isaacks
+ * - Andrea Martini
+ * - Francesco Marasco
+ * - Tizianoz93
+ * - Davide Casiraghi (davide-casiraghi)
+ * - Pete Scopes (pdscopes)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count anno|:count anni',
+    'a_year' => 'un anno|:count anni',
+    'y' => ':count anno|:count anni',
+    'month' => ':count mese|:count mesi',
+    'a_month' => 'un mese|:count mesi',
+    'm' => ':count mese|:count mesi',
+    'week' => ':count settimana|:count settimane',
+    'a_week' => 'una settimana|:count settimane',
+    'w' => ':count set.',
+    'day' => ':count giorno|:count giorni',
+    'a_day' => 'un giorno|:count giorni',
+    'd' => ':count g|:count gg',
+    'hour' => ':count ora|:count ore',
+    'a_hour' => 'un\'ora|:count ore',
+    'h' => ':count h',
+    'minute' => ':count minuto|:count minuti',
+    'a_minute' => 'un minuto|:count minuti',
+    'min' => ':count min.',
+    'second' => ':count secondo|:count secondi',
+    'a_second' => 'alcuni secondi|:count secondi',
+    's' => ':count sec.',
+    'millisecond' => ':count millisecondo|:count millisecondi',
+    'a_millisecond' => 'un millisecondo|:count millisecondi',
+    'ms' => ':countms',
+    'microsecond' => ':count microsecondo|:count microsecondi',
+    'a_microsecond' => 'un microsecondo|:count microsecondi',
+    'µs' => ':countµs',
+    'ago' => ':time fa',
+    'from_now' => function ($time) {
+        return (preg_match('/^\d.+$/', $time) ? 'tra' : 'in')." $time";
+    },
+    'after' => ':time dopo',
+    'before' => ':time prima',
+    'diff_now' => 'proprio ora',
+    'diff_today' => 'Oggi',
+    'diff_today_regexp' => 'Oggi(?:\\s+alle)?',
+    'diff_yesterday' => 'ieri',
+    'diff_yesterday_regexp' => 'Ieri(?:\\s+alle)?',
+    'diff_tomorrow' => 'domani',
+    'diff_tomorrow_regexp' => 'Domani(?:\\s+alle)?',
+    'diff_before_yesterday' => 'l\'altro ieri',
+    'diff_after_tomorrow' => 'dopodomani',
+    'period_interval' => 'ogni :interval',
+    'period_start_date' => 'dal :date',
+    'period_end_date' => 'al :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Oggi alle] LT',
+        'nextDay' => '[Domani alle] LT',
+        'nextWeek' => 'dddd [alle] LT',
+        'lastDay' => '[Ieri alle] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[la scorsa] dddd [alle] LT';
+                default:
+                    return '[lo scorso] dddd [alle] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'],
+    'months_short' => ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'],
+    'weekdays' => ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'],
+    'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'],
+    'weekdays_min' => ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' e '],
+    'ordinal_words' => [
+        'of' => 'di',
+        'first' => 'primo',
+        'second' => 'secondo',
+        'third' => 'terzo',
+        'fourth' => 'quarto',
+        'fifth' => 'quinto',
+        'last' => 'ultimo',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
new file mode 100644
index 00000000..c23cc50e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Propaganistas
+ */
+return array_replace_recursive(require __DIR__.'/it.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
new file mode 100644
index 00000000..a5d19818
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return require __DIR__.'/it.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
new file mode 100644
index 00000000..5e8fc92f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/it.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
new file mode 100644
index 00000000..5e8fc92f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/it.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu.php
new file mode 100644
index 00000000..4fa97427
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/iu_CA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
new file mode 100644
index 00000000..6ab7e149
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Pablo Saratxaga pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'MM/DD/YY',
+    ],
+    'months' => ['ᔮᓄᐊᓕ', 'ᕕᕗᐊᓕ', 'ᒪᔅᓯ', 'ᐃᐳᓗ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚᐃ', 'ᐊᒋᓯ', 'ᓯᑎᕙ', 'ᐊᑦᑐᕙ', 'ᓄᕕᕙ', 'ᑎᓯᕝᕙ'],
+    'months_short' => ['ᔮᓄ', 'ᕕᕗ', 'ᒪᔅ', 'ᐃᐳ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚ', 'ᐊᒋ', 'ᓯᑎ', 'ᐊᑦ', 'ᓄᕕ', 'ᑎᓯ'],
+    'weekdays' => ['ᓈᑦᑎᖑᔭᕐᕕᒃ', 'ᓇᒡᒐᔾᔭᐅ', 'ᓇᒡᒐᔾᔭᐅᓕᖅᑭᑦ', 'ᐱᖓᓲᓕᖅᓯᐅᑦ', 'ᕿᑎᖅᑰᑦ', 'ᐅᓪᓗᕈᓘᑐᐃᓇᖅ', 'ᓯᕙᑖᕕᒃ'],
+    'weekdays_short' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'],
+    'weekdays_min' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count ᐅᑭᐅᖅ',
+    'y' => ':count ᐅᑭᐅᖅ',
+    'a_year' => ':count ᐅᑭᐅᖅ',
+
+    'month' => ':count qaammat',
+    'm' => ':count qaammat',
+    'a_month' => ':count qaammat',
+
+    'week' => ':count sapaatip akunnera',
+    'w' => ':count sapaatip akunnera',
+    'a_week' => ':count sapaatip akunnera',
+
+    'day' => ':count ulloq',
+    'd' => ':count ulloq',
+    'a_day' => ':count ulloq',
+
+    'hour' => ':count ikarraq',
+    'h' => ':count ikarraq',
+    'a_hour' => ':count ikarraq',
+
+    'minute' => ':count titiqqaralaaq', // less reliable
+    'min' => ':count titiqqaralaaq', // less reliable
+    'a_minute' => ':count titiqqaralaaq', // less reliable
+
+    'second' => ':count marluk', // less reliable
+    's' => ':count marluk', // less reliable
+    'a_second' => ':count marluk', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iw.php
new file mode 100644
index 00000000..a26e3506
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/iw.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'],
+    'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'],
+    'weekdays' => ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'],
+    'weekdays_short' => ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'],
+    'weekdays_min' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
+    'meridiem' => ['לפנה״צ', 'אחה״צ'],
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'D.M.YYYY',
+        'LL' => 'D בMMM YYYY',
+        'LLL' => 'D בMMMM YYYY H:mm',
+        'LLLL' => 'dddd, D בMMMM YYYY H:mm',
+    ],
+
+    'year' => ':count שנה',
+    'y' => ':count שנה',
+    'a_year' => ':count שנה',
+
+    'month' => ':count חודש',
+    'm' => ':count חודש',
+    'a_month' => ':count חודש',
+
+    'week' => ':count שבוע',
+    'w' => ':count שבוע',
+    'a_week' => ':count שבוע',
+
+    'day' => ':count יום',
+    'd' => ':count יום',
+    'a_day' => ':count יום',
+
+    'hour' => ':count שעה',
+    'h' => ':count שעה',
+    'a_hour' => ':count שעה',
+
+    'minute' => ':count דקה',
+    'min' => ':count דקה',
+    'a_minute' => ':count דקה',
+
+    'second' => ':count שניה',
+    's' => ':count שניה',
+    'a_second' => ':count שניה',
+
+    'ago' => 'לפני :time',
+    'from_now' => 'בעוד :time',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
new file mode 100644
index 00000000..1ca67519
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja.php
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Takuya Sawada
+ * - Atsushi Tanaka
+ * - François B
+ * - Jason Katz-Brown
+ * - Serhan Apaydın
+ * - XueWei
+ * - JD Isaacks
+ * - toyama satoshi
+ * - atakigawa
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':countå¹´',
+    'y' => ':countå¹´',
+    'month' => ':countヶ月',
+    'm' => ':countヶ月',
+    'week' => ':count週間',
+    'w' => ':count週間',
+    'day' => ':countæ—¥',
+    'd' => ':countæ—¥',
+    'hour' => ':count時間',
+    'h' => ':count時間',
+    'minute' => ':count分',
+    'min' => ':count分',
+    'second' => ':count秒',
+    'a_second' => '{1}数秒|]1,Inf[:count秒',
+    's' => ':count秒',
+    'ago' => ':time前',
+    'from_now' => ':time後',
+    'after' => ':time後',
+    'before' => ':time前',
+    'diff_now' => '今',
+    'diff_today' => '今日',
+    'diff_yesterday' => '昨日',
+    'diff_tomorrow' => '明日',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY年M月D日',
+        'LLL' => 'YYYY年M月D日 HH:mm',
+        'LLLL' => 'YYYY年M月D日 dddd HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[今日] LT',
+        'nextDay' => '[明日] LT',
+        'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
+            if ($other->week !== $current->week) {
+                return '[来週]dddd LT';
+            }
+
+            return 'dddd LT';
+        },
+        'lastDay' => '[昨日] LT',
+        'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) {
+            if ($other->week !== $current->week) {
+                return '[先週]dddd LT';
+            }
+
+            return 'dddd LT';
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'DDD':
+                return $number.'æ—¥';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => ['午前', '午後'],
+    'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'weekdays' => ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'],
+    'weekdays_short' => ['日', '月', '火', '水', '木', '金', '土'],
+    'weekdays_min' => ['日', '月', '火', '水', '木', '金', '土'],
+    'list' => '、',
+    'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十', '三十一', '三十二', '三十三', '三十四', '三十五', '三十六', '三十七', '三十八', '三十九', '四十', '四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九', '五十', '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九', '六十', '六十一', '六十二', '六十三', '六十四', '六十五', '六十六', '六十七', '六十八', '六十九', '七十', '七十一', '七十二', '七十三', '七十四', '七十五', '七十六', '七十七', '七十八', '七十九', '八十', '八十一', '八十二', '八十三', '八十四', '八十五', '八十六', '八十七', '八十八', '八十九', '九十', '九十一', '九十二', '九十三', '九十四', '九十五', '九十六', '九十七', '九十八', '九十九'],
+    'alt_numbers_pow' => [
+        10000 => '万',
+        1000 => '千',
+        100 => '百',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
new file mode 100644
index 00000000..c2836253
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ja.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
new file mode 100644
index 00000000..6a1e77a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
new file mode 100644
index 00000000..ed92e8e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['utuko', 'kyiukonyi'],
+    'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jv.php
new file mode 100644
index 00000000..bcbe044e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/jv.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - tgfjt
+ * - JD Isaacks
+ */
+return [
+    'year' => '{1}setaun|]1,Inf[:count taun',
+    'month' => '{1}sewulan|]1,Inf[:count wulan',
+    'week' => '{1}sakminggu|]1,Inf[:count minggu',
+    'day' => '{1}sedinten|]1,Inf[:count dinten',
+    'hour' => '{1}setunggal jam|]1,Inf[:count jam',
+    'minute' => '{1}setunggal menit|]1,Inf[:count menit',
+    'second' => '{1}sawetawis detik|]1,Inf[:count detik',
+    'ago' => ':time ingkang kepengker',
+    'from_now' => 'wonten ing :time',
+    'diff_today' => 'Dinten',
+    'diff_yesterday' => 'Kala',
+    'diff_yesterday_regexp' => 'Kala(?:\\s+wingi)?(?:\\s+pukul)?',
+    'diff_tomorrow' => 'Mbenjang',
+    'diff_tomorrow_regexp' => 'Mbenjang(?:\\s+pukul)?',
+    'diff_today_regexp' => 'Dinten(?:\\s+puniko)?(?:\\s+pukul)?',
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm.ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY [pukul] HH.mm',
+        'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Dinten puniko pukul] LT',
+        'nextDay' => '[Mbenjang pukul] LT',
+        'nextWeek' => 'dddd [pukul] LT',
+        'lastDay' => '[Kala wingi pukul] LT',
+        'lastWeek' => 'dddd [kepengker pukul] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 11) {
+            return 'enjing';
+        }
+        if ($hour < 15) {
+            return 'siyang';
+        }
+        if ($hour < 19) {
+            return 'sonten';
+        }
+
+        return 'ndalu';
+    },
+    'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'Nopember', 'Desember'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ags', 'Sep', 'Okt', 'Nop', 'Des'],
+    'weekdays' => ['Minggu', 'Senen', 'Seloso', 'Rebu', 'Kemis', 'Jemuwah', 'Septu'],
+    'weekdays_short' => ['Min', 'Sen', 'Sel', 'Reb', 'Kem', 'Jem', 'Sep'],
+    'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sp'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' lan '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka.php
new file mode 100644
index 00000000..a5d563d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka.php
@@ -0,0 +1,204 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Tornike Razmadze
+ * - François B
+ * - Lasha Dolidze
+ * - Tim Fish
+ * - JD Isaacks
+ * - Tornike Razmadze
+ * - François B
+ * - Lasha Dolidze
+ * - JD Isaacks
+ * - LONGMAN
+ * - Avtandil Kikabidze (akalongman)
+ * - Levan Velijanashvili (Stichoza)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count წელი',
+    'y' => ':count წელი',
+    'a_year' => '{1}წელი|]1,Inf[:count წელი',
+    'month' => ':count თვე',
+    'm' => ':count თვე',
+    'a_month' => '{1}თვე|]1,Inf[:count თვე',
+    'week' => ':count კვირა',
+    'w' => ':count კვირა',
+    'a_week' => '{1}კვირა|]1,Inf[:count კვირა',
+    'day' => ':count დღე',
+    'd' => ':count დღე',
+    'a_day' => '{1}დღე|]1,Inf[:count დღე',
+    'hour' => ':count საათი',
+    'h' => ':count საათი',
+    'a_hour' => '{1}საათი|]1,Inf[:count საათი',
+    'minute' => ':count წუთი',
+    'min' => ':count წუთი',
+    'a_minute' => '{1}წუთი|]1,Inf[:count წუთი',
+    'second' => ':count წამი',
+    's' => ':count წამი',
+    'a_second' => '{1}რამდენიმე წამი|]1,Inf[:count წამი',
+    'ago' => function ($time) {
+        $replacements = [
+            // year
+            'წელი' => 'წლის',
+            // month
+            'თვე' => 'თვის',
+            // week
+            'კვირა' => 'კვირის',
+            // day
+            'დღე' => 'დღის',
+            // hour
+            'საათი' => 'საათის',
+            // minute
+            'წუთი' => 'წუთის',
+            // second
+            'წამი' => 'წამის',
+        ];
+        $time = strtr($time, array_flip($replacements));
+        $time = strtr($time, $replacements);
+
+        return "$time წინ";
+    },
+    'from_now' => function ($time) {
+        $replacements = [
+            // year
+            'წელი' => 'წელიწადში',
+            // week
+            'კვირა' => 'კვირაში',
+            // day
+            'დღე' => 'დღეში',
+            // month
+            'თვე' => 'თვეში',
+            // hour
+            'საათი' => 'საათში',
+            // minute
+            'წუთი' => 'წუთში',
+            // second
+            'წამი' => 'წამში',
+        ];
+        $time = strtr($time, array_flip($replacements));
+        $time = strtr($time, $replacements);
+
+        return $time;
+    },
+    'after' => function ($time) {
+        $replacements = [
+            // year
+            'წელი' => 'წლის',
+            // month
+            'თვე' => 'თვის',
+            // week
+            'კვირა' => 'კვირის',
+            // day
+            'დღე' => 'დღის',
+            // hour
+            'საათი' => 'საათის',
+            // minute
+            'წუთი' => 'წუთის',
+            // second
+            'წამი' => 'წამის',
+        ];
+        $time = strtr($time, array_flip($replacements));
+        $time = strtr($time, $replacements);
+
+        return "$time შემდეგ";
+    },
+    'before' => function ($time) {
+        $replacements = [
+            // year
+            'წელი' => 'წლით',
+            // month
+            'თვე' => 'თვით',
+            // week
+            'კვირა' => 'კვირით',
+            // day
+            'დღე' => 'დღით',
+            // hour
+            'საათი' => 'საათით',
+            // minute
+            'წუთი' => 'წუთით',
+            // second
+            'წამი' => 'წამით',
+        ];
+        $time = strtr($time, array_flip($replacements));
+        $time = strtr($time, $replacements);
+
+        return "$time ადრე";
+    },
+    'diff_now' => 'ახლა',
+    'diff_today' => 'დღეს',
+    'diff_yesterday' => 'გუშინ',
+    'diff_tomorrow' => 'ხვალ',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[დღეს], LT[-ზე]',
+        'nextDay' => '[ხვალ], LT[-ზე]',
+        'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
+            return ($current->isSameWeek($other) ? '' : '[შემდეგ] ').'dddd, LT[-ზე]';
+        },
+        'lastDay' => '[გუშინ], LT[-ზე]',
+        'lastWeek' => '[წინა] dddd, LT-ზე',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        if ($number === 0) {
+            return $number;
+        }
+        if ($number === 1) {
+            return $number.'-ლი';
+        }
+        if (($number < 20) || ($number <= 100 && ($number % 20 === 0)) || ($number % 100 === 0)) {
+            return 'მე-'.$number;
+        }
+
+        return $number.'-ე';
+    },
+    'months' => ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'],
+    'months_standalone' => ['იანვარს', 'თებერვალს', 'მარტს', 'აპრილს', 'მაისს', 'ივნისს', 'ივლისს', 'აგვისტოს', 'სექტემბერს', 'ოქტომბერს', 'ნოემბერს', 'დეკემბერს'],
+    'months_short' => ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'],
+    'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['კვირას', 'ორშაბათს', 'სამშაბათს', 'ოთხშაბათს', 'ხუთშაბათს', 'პარასკევს', 'შაბათს'],
+    'weekdays_standalone' => ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'],
+    'weekdays_short' => ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'],
+    'weekdays_min' => ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'],
+    'weekdays_regexp' => '/^([^d].*|.*[^d])$/',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' და '],
+    'meridiem' => function ($hour) {
+        if ($hour >= 4) {
+            if ($hour < 11) {
+                return 'დილის';
+            }
+
+            if ($hour < 16) {
+                return 'შუადღის';
+            }
+
+            if ($hour < 22) {
+                return 'საღამოს';
+            }
+        }
+
+        return 'ღამის';
+    },
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
new file mode 100644
index 00000000..a26d9305
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ka.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab.php
new file mode 100644
index 00000000..94d64737
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/kab_DZ.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
new file mode 100644
index 00000000..796660be
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - belkacem77@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Yennayer', 'Fuṛar', 'Meɣres', 'Yebrir', 'Mayyu', 'Yunyu', 'Yulyu', 'ɣuct', 'Ctembeṛ', 'Tubeṛ', 'Wambeṛ', 'Dujembeṛ'],
+    'months_short' => ['Yen', 'Fur', 'Meɣ', 'Yeb', 'May', 'Yun', 'Yul', 'ɣuc', 'Cte', 'Tub', 'Wam', 'Duj'],
+    'weekdays' => ['Acer', 'Arim', 'Aram', 'Ahad', 'Amhad', 'Sem', 'Sed'],
+    'weekdays_short' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'],
+    'weekdays_min' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['FT', 'MD'],
+
+    'year' => ':count n yiseggasen',
+    'y' => ':count n yiseggasen',
+    'a_year' => ':count n yiseggasen',
+
+    'month' => ':count n wayyuren',
+    'm' => ':count n wayyuren',
+    'a_month' => ':count n wayyuren',
+
+    'week' => ':count n ledwaá¹›', // less reliable
+    'w' => ':count n ledwaá¹›', // less reliable
+    'a_week' => ':count n ledwaá¹›', // less reliable
+
+    'day' => ':count n wussan',
+    'd' => ':count n wussan',
+    'a_day' => ':count n wussan',
+
+    'hour' => ':count n tsaɛtin',
+    'h' => ':count n tsaɛtin',
+    'a_hour' => ':count n tsaɛtin',
+
+    'minute' => ':count n tedqiqin',
+    'min' => ':count n tedqiqin',
+    'a_minute' => ':count n tedqiqin',
+
+    'second' => ':count tasdidt', // less reliable
+    's' => ':count tasdidt', // less reliable
+    'a_second' => ':count tasdidt', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kam.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kam.php
new file mode 100644
index 00000000..0fc70d70
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kam.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Ĩyakwakya', 'Ĩyawĩoo'],
+    'weekdays' => ['Wa kyumwa', 'Wa kwambĩlĩlya', 'Wa kelĩ', 'Wa katatũ', 'Wa kana', 'Wa katano', 'Wa thanthatũ'],
+    'weekdays_short' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'],
+    'weekdays_min' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'],
+    'months' => ['Mwai wa mbee', 'Mwai wa kelĩ', 'Mwai wa katatũ', 'Mwai wa kana', 'Mwai wa katano', 'Mwai wa thanthatũ', 'Mwai wa muonza', 'Mwai wa nyaanya', 'Mwai wa kenda', 'Mwai wa ĩkumi', 'Mwai wa ĩkumi na ĩmwe', 'Mwai wa ĩkumi na ilĩ'],
+    'months_short' => ['Mbe', 'Kel', 'Ktũ', 'Kan', 'Ktn', 'Tha', 'Moo', 'Nya', 'Knd', 'Ĩku', 'Ĩkm', 'Ĩkl'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    // Too unreliable
+    /*
+    'year' => ':count mbua', // less reliable
+    'y' => ':count mbua', // less reliable
+    'a_year' => ':count mbua', // less reliable
+
+    'month' => ':count ndakitali', // less reliable
+    'm' => ':count ndakitali', // less reliable
+    'a_month' => ':count ndakitali', // less reliable
+
+    'day' => ':count wia', // less reliable
+    'd' => ':count wia', // less reliable
+    'a_day' => ':count wia', // less reliable
+
+    'hour' => ':count orasan', // less reliable
+    'h' => ':count orasan', // less reliable
+    'a_hour' => ':count orasan', // less reliable
+
+    'minute' => ':count orasan', // less reliable
+    'min' => ':count orasan', // less reliable
+    'a_minute' => ':count orasan', // less reliable
+    */
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kde.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kde.php
new file mode 100644
index 00000000..fbcc9f3d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kde.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Muhi', 'Chilo'],
+    'weekdays' => ['Liduva lyapili', 'Liduva lyatatu', 'Liduva lyanchechi', 'Liduva lyannyano', 'Liduva lyannyano na linji', 'Liduva lyannyano na mavili', 'Liduva litandi'],
+    'weekdays_short' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'],
+    'weekdays_min' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'],
+    'months' => ['Mwedi Ntandi', 'Mwedi wa Pili', 'Mwedi wa Tatu', 'Mwedi wa Nchechi', 'Mwedi wa Nnyano', 'Mwedi wa Nnyano na Umo', 'Mwedi wa Nnyano na Mivili', 'Mwedi wa Nnyano na Mitatu', 'Mwedi wa Nnyano na Nchechi', 'Mwedi wa Nnyano na Nnyano', 'Mwedi wa Nnyano na Nnyano na U', 'Mwedi wa Nnyano na Nnyano na M'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kea.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kea.php
new file mode 100644
index 00000000..8b6c21b9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kea.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['a', 'p'],
+    'weekdays' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sabadu'],
+    'weekdays_short' => ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'],
+    'weekdays_min' => ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'],
+    'weekdays_standalone' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sábadu'],
+    'months' => ['Janeru', 'Febreru', 'Marsu', 'Abril', 'Maiu', 'Junhu', 'Julhu', 'Agostu', 'Setenbru', 'Otubru', 'Nuvenbru', 'Dizenbru'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Otu', 'Nuv', 'Diz'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D [di] MMMM [di] YYYY HH:mm',
+        'LLLL' => 'dddd, D [di] MMMM [di] YYYY HH:mm',
+    ],
+
+    'year' => ':count otunu', // less reliable
+    'y' => ':count otunu', // less reliable
+    'a_year' => ':count otunu', // less reliable
+
+    'week' => ':count día dumingu', // less reliable
+    'w' => ':count día dumingu', // less reliable
+    'a_week' => ':count día dumingu', // less reliable
+
+    'day' => ':count diâ', // less reliable
+    'd' => ':count diâ', // less reliable
+    'a_day' => ':count diâ', // less reliable
+
+    'minute' => ':count sugundu', // less reliable
+    'min' => ':count sugundu', // less reliable
+    'a_minute' => ':count sugundu', // less reliable
+
+    'second' => ':count dós', // less reliable
+    's' => ':count dós', // less reliable
+    'a_second' => ':count dós', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/khq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/khq.php
new file mode 100644
index 00000000..7a834cf0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/khq.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Adduha', 'Aluula'],
+    'weekdays' => ['Alhadi', 'Atini', 'Atalata', 'Alarba', 'Alhamiisa', 'Aljuma', 'Assabdu'],
+    'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'],
+    'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'],
+    'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
+    'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ki.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ki.php
new file mode 100644
index 00000000..d86afc50
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ki.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Kiroko', 'Hwaĩ-inĩ'],
+    'weekdays' => ['Kiumia', 'Njumatatũ', 'Njumaine', 'Njumatana', 'Aramithi', 'Njumaa', 'Njumamothi'],
+    'weekdays_short' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'],
+    'weekdays_min' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'],
+    'months' => ['Njenuarĩ', 'Mwere wa kerĩ', 'Mwere wa gatatũ', 'Mwere wa kana', 'Mwere wa gatano', 'Mwere wa gatandatũ', 'Mwere wa mũgwanja', 'Mwere wa kanana', 'Mwere wa kenda', 'Mwere wa ikũmi', 'Mwere wa ikũmi na ũmwe', 'Ndithemba'],
+    'months_short' => ['JEN', 'WKR', 'WGT', 'WKN', 'WTN', 'WTD', 'WMJ', 'WNN', 'WKD', 'WIK', 'WMW', 'DIT'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count mĩaka', // less reliable
+    'y' => ':count mĩaka', // less reliable
+    'a_year' => ':count mĩaka', // less reliable
+
+    'month' => ':count mweri', // less reliable
+    'm' => ':count mweri', // less reliable
+    'a_month' => ':count mweri', // less reliable
+
+    'week' => ':count kiumia', // less reliable
+    'w' => ':count kiumia', // less reliable
+    'a_week' => ':count kiumia', // less reliable
+
+    'day' => ':count mũthenya', // less reliable
+    'd' => ':count mũthenya', // less reliable
+    'a_day' => ':count mũthenya', // less reliable
+
+    'hour' => ':count thaa', // less reliable
+    'h' => ':count thaa', // less reliable
+    'a_hour' => ':count thaa', // less reliable
+
+    'minute' => ':count mundu', // less reliable
+    'min' => ':count mundu', // less reliable
+    'a_minute' => ':count mundu', // less reliable
+
+    'second' => ':count igego', // less reliable
+    's' => ':count igego', // less reliable
+    'a_second' => ':count igego', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
new file mode 100644
index 00000000..59fa9aff
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk.php
@@ -0,0 +1,103 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - Talat Uspanov
+ * - Нурлан Рахимжанов
+ * - Toleugazy Kali
+ */
+return [
+    'year' => ':count жыл',
+    'a_year' => '{1}бір жыл|:count жыл',
+    'y' => ':count ж.',
+    'month' => ':count ай',
+    'a_month' => '{1}бір ай|:count ай',
+    'm' => ':count ай',
+    'week' => ':count апта',
+    'a_week' => '{1}бір апта',
+    'w' => ':count ап.',
+    'day' => ':count күн',
+    'a_day' => '{1}бір күн|:count күн',
+    'd' => ':count к.',
+    'hour' => ':count сағат',
+    'a_hour' => '{1}бір сағат|:count сағат',
+    'h' => ':count са.',
+    'minute' => ':count минут',
+    'a_minute' => '{1}бір минут|:count минут',
+    'min' => ':count м.',
+    'second' => ':count секунд',
+    'a_second' => '{1}бірнеше секунд|:count секунд',
+    's' => ':count се.',
+    'ago' => ':time бұрын',
+    'from_now' => ':time ішінде',
+    'after' => ':time кейін',
+    'before' => ':time бұрын',
+    'diff_now' => 'қазір',
+    'diff_today' => 'Бүгін',
+    'diff_today_regexp' => 'Бүгін(?:\\s+сағат)?',
+    'diff_yesterday' => 'кеше',
+    'diff_yesterday_regexp' => 'Кеше(?:\\s+сағат)?',
+    'diff_tomorrow' => 'ертең',
+    'diff_tomorrow_regexp' => 'Ертең(?:\\s+сағат)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Бүгін сағат] LT',
+        'nextDay' => '[Ертең сағат] LT',
+        'nextWeek' => 'dddd [сағат] LT',
+        'lastDay' => '[Кеше сағат] LT',
+        'lastWeek' => '[Өткен аптаның] dddd [сағат] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        static $suffixes = [
+            0 => '-ші',
+            1 => '-ші',
+            2 => '-ші',
+            3 => '-ші',
+            4 => '-ші',
+            5 => '-ші',
+            6 => '-шы',
+            7 => '-ші',
+            8 => '-ші',
+            9 => '-шы',
+            10 => '-шы',
+            20 => '-шы',
+            30 => '-шы',
+            40 => '-шы',
+            50 => '-ші',
+            60 => '-шы',
+            70 => '-ші',
+            80 => '-ші',
+            90 => '-шы',
+            100 => '-ші',
+        ];
+
+        return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
+    },
+    'months' => ['қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', 'қазан', 'қараша', 'желтоқсан'],
+    'months_short' => ['қаң', 'ақп', 'нау', 'сәу', 'мам', 'мау', 'шіл', 'там', 'қыр', 'қаз', 'қар', 'жел'],
+    'weekdays' => ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'],
+    'weekdays_short' => ['жек', 'дүй', 'сей', 'сәр', 'бей', 'жұм', 'сен'],
+    'weekdays_min' => ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' және '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
new file mode 100644
index 00000000..7dc5ebcc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/kk.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
new file mode 100644
index 00000000..6a1e77a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl.php
new file mode 100644
index 00000000..7329a075
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/kl_GL.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
new file mode 100644
index 00000000..4fed720a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Danish Standards Association    bug-glibc-locales@gnu.org
+ * - John Eyðstein Johannesen (mashema)
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'months' => ['januaarip', 'februaarip', 'marsip', 'apriilip', 'maajip', 'juunip', 'juulip', 'aggustip', 'septembarip', 'oktobarip', 'novembarip', 'decembarip'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['sapaat', 'ataasinngorneq', 'marlunngorneq', 'pingasunngorneq', 'sisamanngorneq', 'tallimanngorneq', 'arfininngorneq'],
+    'weekdays_short' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'],
+    'weekdays_min' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => '{1}ukioq :count|{0}:count ukiut|]1,Inf[ukiut :count',
+    'a_year' => '{1}ukioq|{0}:count ukiut|]1,Inf[ukiut :count',
+    'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs',
+
+    'month' => '{1}qaammat :count|{0}:count qaammatit|]1,Inf[qaammatit :count',
+    'a_month' => '{1}qaammat|{0}:count qaammatit|]1,Inf[qaammatit :count',
+    'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos',
+
+    'week' => '{1}:count sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.',
+    'a_week' => '{1}a sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.',
+    'w' => ':countw',
+
+    'day' => '{1}:count ulloq|{0}:count ullut|]1,Inf[:count ullut',
+    'a_day' => '{1}a ulloq|{0}:count ullut|]1,Inf[:count ullut',
+    'd' => ':countd',
+
+    'hour' => '{1}:count tiimi|{0}:count tiimit|]1,Inf[:count tiimit',
+    'a_hour' => '{1}tiimi|{0}:count tiimit|]1,Inf[:count tiimit',
+    'h' => ':counth',
+
+    'minute' => '{1}:count minutsi|{0}:count minutsit|]1,Inf[:count minutsit',
+    'a_minute' => '{1}a minutsi|{0}:count minutsit|]1,Inf[:count minutsit',
+    'min' => ':countm',
+
+    'second' => '{1}:count sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit',
+    'a_second' => '{1}sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit',
+    's' => ':counts',
+
+    'ago' => ':time matuma siorna',
+
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kln.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kln.php
new file mode 100644
index 00000000..b9c39968
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kln.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['krn', 'koosk'],
+    'weekdays' => ['Kotisap', 'Kotaai', 'Koaeng’', 'Kosomok', 'Koang’wan', 'Komuut', 'Kolo'],
+    'weekdays_short' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'],
+    'weekdays_min' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'],
+    'months' => ['Mulgul', 'Ng’atyaato', 'Kiptaamo', 'Iwootkuut', 'Mamuut', 'Paagi', 'Ng’eiyeet', 'Rooptui', 'Bureet', 'Epeeso', 'Kipsuunde ne taai', 'Kipsuunde nebo aeng’'],
+    'months_short' => ['Mul', 'Ngat', 'Taa', 'Iwo', 'Mam', 'Paa', 'Nge', 'Roo', 'Bur', 'Epe', 'Kpt', 'Kpa'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count maghatiat', // less reliable
+    'y' => ':count maghatiat', // less reliable
+    'a_year' => ':count maghatiat', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km.php
new file mode 100644
index 00000000..da790ac8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kruy Vanna
+ * - Sereysethy Touch
+ * - JD Isaacks
+ * - Sovichet Tep
+ */
+return [
+    'year' => '{1}មួយឆ្នាំ|]1,Inf[:count ឆ្នាំ',
+    'y' => ':count ឆ្នាំ',
+    'month' => '{1}មួយខែ|]1,Inf[:count ខែ',
+    'm' => ':count ខែ',
+    'week' => ':count សប្ដាហ៍',
+    'w' => ':count សប្ដាហ៍',
+    'day' => '{1}មួយថ្ងៃ|]1,Inf[:count ថ្ងៃ',
+    'd' => ':count ថ្ងៃ',
+    'hour' => '{1}មួយម៉ោង|]1,Inf[:count ម៉ោង',
+    'h' => ':count ម៉ោង',
+    'minute' => '{1}មួយនាទី|]1,Inf[:count នាទី',
+    'min' => ':count នាទី',
+    'second' => '{1}ប៉ុន្មានវិនាទី|]1,Inf[:count វិនាទី',
+    's' => ':count វិនាទី',
+    'ago' => ':timeមុន',
+    'from_now' => ':timeទៀត',
+    'after' => 'នៅ​ក្រោយ :time',
+    'before' => 'នៅ​មុន :time',
+    'diff_now' => 'ឥឡូវ',
+    'diff_today' => 'ថ្ងៃនេះ',
+    'diff_today_regexp' => 'ថ្ងៃនេះ(?:\\s+ម៉ោង)?',
+    'diff_yesterday' => 'ម្សិលមិញ',
+    'diff_yesterday_regexp' => 'ម្សិលមិញ(?:\\s+ម៉ោង)?',
+    'diff_tomorrow' => 'ថ្ងៃ​ស្អែក',
+    'diff_tomorrow_regexp' => 'ស្អែក(?:\\s+ម៉ោង)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ថ្ងៃនេះ ម៉ោង] LT',
+        'nextDay' => '[ស្អែក ម៉ោង] LT',
+        'nextWeek' => 'dddd [ម៉ោង] LT',
+        'lastDay' => '[ម្សិលមិញ ម៉ោង] LT',
+        'lastWeek' => 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => 'ទី:number',
+    'meridiem' => ['ព្រឹក', 'ល្ងាច'],
+    'months' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'],
+    'months_short' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'],
+    'weekdays' => ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'],
+    'weekdays_short' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'],
+    'weekdays_min' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', 'áž“áž·áž„ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
new file mode 100644
index 00000000..92e5fdbd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/km.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn.php
new file mode 100644
index 00000000..0d2ad08b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn.php
@@ -0,0 +1,75 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - MOHAN M U
+ * - François B
+ * - rajeevnaikte
+ */
+return [
+    'year' => '{1}ಒಂದು ವರ್ಷ|]1,Inf[:count ವರ್ಷ',
+    'month' => '{1}ಒಂದು ತಿಂಗಳು|]1,Inf[:count ತಿಂಗಳು',
+    'week' => '{1}ಒಂದು ವಾರ|]1,Inf[:count ವಾರಗಳು',
+    'day' => '{1}ಒಂದು ದಿನ|]1,Inf[:count ದಿನ',
+    'hour' => '{1}ಒಂದು ಗಂಟೆ|]1,Inf[:count ಗಂಟೆ',
+    'minute' => '{1}ಒಂದು ನಿಮಿಷ|]1,Inf[:count ನಿಮಿಷ',
+    'second' => '{1}ಕೆಲವು ಕ್ಷಣಗಳು|]1,Inf[:count ಸೆಕೆಂಡುಗಳು',
+    'ago' => ':time ಹಿಂದೆ',
+    'from_now' => ':time ನಂತರ',
+    'diff_now' => 'ಈಗ',
+    'diff_today' => 'ಇಂದು',
+    'diff_yesterday' => 'ನಿನ್ನೆ',
+    'diff_tomorrow' => 'ನಾಳೆ',
+    'formats' => [
+        'LT' => 'A h:mm',
+        'LTS' => 'A h:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ಇಂದು] LT',
+        'nextDay' => '[ನಾಳೆ] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[ನಿನ್ನೆ] LT',
+        'lastWeek' => '[ಕೊನೆಯ] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberನೇ',
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'ರಾತ್ರಿ';
+        }
+        if ($hour < 10) {
+            return 'ಬೆಳಿಗ್ಗೆ';
+        }
+        if ($hour < 17) {
+            return 'ಮಧ್ಯಾಹ್ನ';
+        }
+        if ($hour < 20) {
+            return 'ಸಂಜೆ';
+        }
+
+        return 'ರಾತ್ರಿ';
+    },
+    'months' => ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'],
+    'months_short' => ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'],
+    'weekdays' => ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'],
+    'weekdays_short' => ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'],
+    'weekdays_min' => ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
+    'list' => ', ',
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
new file mode 100644
index 00000000..30e3d886
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/kn.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko.php
new file mode 100644
index 00000000..4fa62376
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko.php
@@ -0,0 +1,91 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - FourwingsY
+ * - François B
+ * - Jason Katz-Brown
+ * - Seokjun Kim
+ * - Junho Kim
+ * - JD Isaacks
+ * - Juwon Kim
+ */
+return [
+    'year' => ':countë…„',
+    'a_year' => '{1}일년|]1,Inf[:count년',
+    'y' => ':countë…„',
+    'month' => ':count개월',
+    'a_month' => '{1}한달|]1,Inf[:count개월',
+    'm' => ':count개월',
+    'week' => ':count주',
+    'a_week' => '{1}일주일|]1,Inf[:count 주',
+    'w' => ':count주일',
+    'day' => ':count일',
+    'a_day' => '{1}하루|]1,Inf[:count일',
+    'd' => ':count일',
+    'hour' => ':count시간',
+    'a_hour' => '{1}한시간|]1,Inf[:count시간',
+    'h' => ':count시간',
+    'minute' => ':count분',
+    'a_minute' => '{1}일분|]1,Inf[:count분',
+    'min' => ':count분',
+    'second' => ':countì´ˆ',
+    'a_second' => '{1}몇초|]1,Inf[:count초',
+    's' => ':countì´ˆ',
+    'ago' => ':time ì „',
+    'from_now' => ':time 후',
+    'after' => ':time 후',
+    'before' => ':time ì „',
+    'diff_now' => '지금',
+    'diff_today' => '오늘',
+    'diff_yesterday' => '어제',
+    'diff_tomorrow' => '내일',
+    'formats' => [
+        'LT' => 'A h:mm',
+        'LTS' => 'A h:mm:ss',
+        'L' => 'YYYY.MM.DD.',
+        'LL' => 'YYYY년 MMMM D일',
+        'LLL' => 'YYYY년 MMMM D일 A h:mm',
+        'LLLL' => 'YYYY년 MMMM D일 dddd A h:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '오늘 LT',
+        'nextDay' => '내일 LT',
+        'nextWeek' => 'dddd LT',
+        'lastDay' => '어제 LT',
+        'lastWeek' => '지난주 dddd LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'DDD':
+                return $number.'일';
+            case 'M':
+                return $number.'ì›”';
+            case 'w':
+            case 'W':
+                return $number.'주';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => ['오전', '오후'],
+    'months' => ['1ì›”', '2ì›”', '3ì›”', '4ì›”', '5ì›”', '6ì›”', '7ì›”', '8ì›”', '9ì›”', '10ì›”', '11ì›”', '12ì›”'],
+    'months_short' => ['1ì›”', '2ì›”', '3ì›”', '4ì›”', '5ì›”', '6ì›”', '7ì›”', '8ì›”', '9ì›”', '10ì›”', '11ì›”', '12ì›”'],
+    'weekdays' => ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],
+    'weekdays_short' => ['일', '월', '화', '수', '목', '금', '토'],
+    'weekdays_min' => ['일', '월', '화', '수', '목', '금', '토'],
+    'list' => ' ',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
new file mode 100644
index 00000000..4ba802b3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ko.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
new file mode 100644
index 00000000..9d873a27
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ko.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok.php
new file mode 100644
index 00000000..4adcddcc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/kok_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
new file mode 100644
index 00000000..92ba844c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D-M-YY',
+    ],
+    'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
+    'months_short' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
+    'weekdays' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
+    'weekdays_short' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
+    'weekdays_min' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['म.पू.', 'म.नं.'],
+
+    'year' => ':count वैशाकु', // less reliable
+    'y' => ':count वैशाकु', // less reliable
+    'a_year' => ':count वैशाकु', // less reliable
+
+    'week' => ':count आदित्यवार', // less reliable
+    'w' => ':count आदित्यवार', // less reliable
+    'a_week' => ':count आदित्यवार', // less reliable
+
+    'minute' => ':count नोंद', // less reliable
+    'min' => ':count नोंद', // less reliable
+    'a_minute' => ':count नोंद', // less reliable
+
+    'second' => ':count तेंको', // less reliable
+    's' => ':count तेंको', // less reliable
+    'a_second' => ':count तेंको', // less reliable
+
+    'month' => ':count मैनो',
+    'm' => ':count मैनो',
+    'a_month' => ':count मैनो',
+
+    'day' => ':count दिवसु',
+    'd' => ':count दिवसु',
+    'a_day' => ':count दिवसु',
+
+    'hour' => ':count घंते',
+    'h' => ':count घंते',
+    'a_hour' => ':count घंते',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks.php
new file mode 100644
index 00000000..98760790
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ks_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
new file mode 100644
index 00000000..ce9d5d4a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'M/D/YY',
+    ],
+    'months' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'],
+    'weekdays' => ['آتهوار', 'ژءندروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
+    'weekdays_short' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
+    'weekdays_min' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['دوپھربرونھ', 'دوپھرپتھ'],
+
+    'year' => ':count آب', // less reliable
+    'y' => ':count آب', // less reliable
+    'a_year' => ':count آب', // less reliable
+
+    'month' => ':count रान्', // less reliable
+    'm' => ':count रान्', // less reliable
+    'a_month' => ':count रान्', // less reliable
+
+    'week' => ':count آتھٕوار', // less reliable
+    'w' => ':count آتھٕوار', // less reliable
+    'a_week' => ':count آتھٕوار', // less reliable
+
+    'hour' => ':count سۄن', // less reliable
+    'h' => ':count سۄن', // less reliable
+    'a_hour' => ':count سۄن', // less reliable
+
+    'minute' => ':count فَن', // less reliable
+    'min' => ':count فَن', // less reliable
+    'a_minute' => ':count فَن', // less reliable
+
+    'second' => ':count दोʼयुम', // less reliable
+    's' => ':count दोʼयुम', // less reliable
+    'a_second' => ':count दोʼयुम', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
new file mode 100644
index 00000000..a2ae8b64
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ks-gnome-trans-commits@lists.code.indlinux.net
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'M/D/YY',
+    ],
+    'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'weekdays' => ['आथवार', 'चॅ़दुरवार', 'बोमवार', 'ब्वदवार', 'ब्रसवार', 'शोकुरवार', 'बटुवार'],
+    'weekdays_short' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'],
+    'weekdays_min' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
new file mode 100644
index 00000000..aaa00614
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['makeo', 'nyiaghuo'],
+    'weekdays' => ['Jumaapii', 'Jumaatatu', 'Jumaane', 'Jumaatano', 'Alhamisi', 'Ijumaa', 'Jumaamosi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Januali', 'Febluali', 'Machi', 'Aplili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
new file mode 100644
index 00000000..84a59672
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['sárúwá', 'cɛɛ́nko'],
+    'weekdays' => ['sɔ́ndǝ', 'lǝndí', 'maadí', 'mɛkrɛdí', 'jǝǝdí', 'júmbá', 'samdí'],
+    'weekdays_short' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'],
+    'weekdays_min' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'],
+    'months' => ['ŋwíí a ntɔ́ntɔ', 'ŋwíí akǝ bɛ́ɛ', 'ŋwíí akǝ ráá', 'ŋwíí akǝ nin', 'ŋwíí akǝ táan', 'ŋwíí akǝ táafɔk', 'ŋwíí akǝ táabɛɛ', 'ŋwíí akǝ táaraa', 'ŋwíí akǝ táanin', 'ŋwíí akǝ ntɛk', 'ŋwíí akǝ ntɛk di bɔ́k', 'ŋwíí akǝ ntɛk di bɛ́ɛ'],
+    'months_short' => ['Å‹1', 'Å‹2', 'Å‹3', 'Å‹4', 'Å‹5', 'Å‹6', 'Å‹7', 'Å‹8', 'Å‹9', 'Å‹10', 'Å‹11', 'Å‹12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
new file mode 100644
index 00000000..95457e24
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['v.M.', 'n.M.'],
+    'weekdays' => ['Sunndaach', 'Mohndaach', 'Dinnsdaach', 'Metwoch', 'Dunnersdaach', 'Friidaach', 'Samsdaach'],
+    'weekdays_short' => ['Su.', 'Mo.', 'Di.', 'Me.', 'Du.', 'Fr.', 'Sa.'],
+    'weekdays_min' => ['Su', 'Mo', 'Di', 'Me', 'Du', 'Fr', 'Sa'],
+    'months' => ['Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', 'Oktohber', 'Novämber', 'Dezämber'],
+    'months_short' => ['Jan', 'Fäb', 'Mäz', 'Apr', 'Mai', 'Jun', 'Jul', 'Ouj', 'Säp', 'Okt', 'Nov', 'Dez'],
+    'months_short_standalone' => ['Jan.', 'Fäb.', 'Mäz.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Ouj.', 'Säp.', 'Okt.', 'Nov.', 'Dez.'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D. M. YYYY',
+        'LL' => 'D. MMM. YYYY',
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, [dä] D. MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count Johr',
+    'y' => ':count Johr',
+    'a_year' => ':count Johr',
+
+    'month' => ':count Moohnd',
+    'm' => ':count Moohnd',
+    'a_month' => ':count Moohnd',
+
+    'week' => ':count woch',
+    'w' => ':count woch',
+    'a_week' => ':count woch',
+
+    'day' => ':count Daach',
+    'd' => ':count Daach',
+    'a_day' => ':count Daach',
+
+    'hour' => ':count Uhr',
+    'h' => ':count Uhr',
+    'a_hour' => ':count Uhr',
+
+    'minute' => ':count Menutt',
+    'min' => ':count Menutt',
+    'a_minute' => ':count Menutt',
+
+    'second' => ':count Sekůndt',
+    's' => ':count Sekůndt',
+    'a_second' => ':count Sekůndt',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku.php
new file mode 100644
index 00000000..189960c8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku.php
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Unicode, Inc.
+ */
+
+return [
+    'ago' => 'berî :time',
+    'from_now' => 'di :time de',
+    'after' => ':time piştî',
+    'before' => ':time berê',
+    'year' => ':count sal',
+    'year_ago' => ':count salê|:count salan',
+    'year_from_now' => 'salekê|:count salan',
+    'month' => ':count meh',
+    'week' => ':count hefte',
+    'day' => ':count roj',
+    'hour' => ':count saet',
+    'minute' => ':count deqîqe',
+    'second' => ':count saniye',
+    'months' => ['rêbendanê', 'reşemiyê', 'adarê', 'avrêlê', 'gulanê', 'pûşperê', 'tîrmehê', 'gelawêjê', 'rezberê', 'kewçêrê', 'sermawezê', 'berfanbarê'],
+    'months_standalone' => ['rêbendan', 'reşemî', 'adar', 'avrêl', 'gulan', 'pûşper', 'tîrmeh', 'gelawêj', 'rezber', 'kewçêr', 'sermawez', 'berfanbar'],
+    'months_short' => ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'],
+    'weekdays' => ['yekşem', 'duşem', 'sêşem', 'çarşem', 'pêncşem', 'în', 'şemî'],
+    'weekdays_short' => ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'],
+    'weekdays_min' => ['Y', 'D', 'S', 'Ç', 'P', 'Î', 'Ş'],
+    'list' => [', ', ' û '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
new file mode 100644
index 00000000..4243a82f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ku.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw.php
new file mode 100644
index 00000000..26e242e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/kw_GB.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
new file mode 100644
index 00000000..00bf52bd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Alastair McKinstry    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['mis Genver', 'mis Hwevrer', 'mis Meurth', 'mis Ebrel', 'mis Me', 'mis Metheven', 'mis Gortheren', 'mis Est', 'mis Gwynngala', 'mis Hedra', 'mis Du', 'mis Kevardhu'],
+    'months_short' => ['Gen', 'Hwe', 'Meu', 'Ebr', 'Me', 'Met', 'Gor', 'Est', 'Gwn', 'Hed', 'Du', 'Kev'],
+    'weekdays' => ['De Sul', 'De Lun', 'De Merth', 'De Merher', 'De Yow', 'De Gwener', 'De Sadorn'],
+    'weekdays_short' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'],
+    'weekdays_min' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count bledhen',
+    'y' => ':count bledhen',
+    'a_year' => ':count bledhen',
+
+    'month' => ':count mis',
+    'm' => ':count mis',
+    'a_month' => ':count mis',
+
+    'week' => ':count seythen',
+    'w' => ':count seythen',
+    'a_week' => ':count seythen',
+
+    'day' => ':count dydh',
+    'd' => ':count dydh',
+    'a_day' => ':count dydh',
+
+    'hour' => ':count eur',
+    'h' => ':count eur',
+    'a_hour' => ':count eur',
+
+    'minute' => ':count mynysen',
+    'min' => ':count mynysen',
+    'a_minute' => ':count mynysen',
+
+    'second' => ':count pryjwyth',
+    's' => ':count pryjwyth',
+    'a_second' => ':count pryjwyth',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky.php
new file mode 100644
index 00000000..e0d1af10
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky.php
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - acutexyz
+ * - Josh Soref
+ * - François B
+ * - Chyngyz Arystan uulu
+ * - Chyngyz
+ * - acutexyz
+ * - Josh Soref
+ * - François B
+ * - Chyngyz Arystan uulu
+ */
+return [
+    'year' => ':count жыл',
+    'a_year' => '{1}бир жыл|:count жыл',
+    'y' => ':count жыл',
+    'month' => ':count ай',
+    'a_month' => '{1}бир ай|:count ай',
+    'm' => ':count ай',
+    'week' => ':count апта',
+    'a_week' => '{1}бир апта|:count апта',
+    'w' => ':count апт.',
+    'day' => ':count күн',
+    'a_day' => '{1}бир күн|:count күн',
+    'd' => ':count күн',
+    'hour' => ':count саат',
+    'a_hour' => '{1}бир саат|:count саат',
+    'h' => ':count саат.',
+    'minute' => ':count мүнөт',
+    'a_minute' => '{1}бир мүнөт|:count мүнөт',
+    'min' => ':count мүн.',
+    'second' => ':count секунд',
+    'a_second' => '{1}бирнече секунд|:count секунд',
+    's' => ':count сек.',
+    'ago' => ':time мурун',
+    'from_now' => ':time ичинде',
+    'diff_now' => 'азыр',
+    'diff_today' => 'Бүгүн',
+    'diff_today_regexp' => 'Бүгүн(?:\\s+саат)?',
+    'diff_yesterday' => 'кечээ',
+    'diff_yesterday_regexp' => 'Кече(?:\\s+саат)?',
+    'diff_tomorrow' => 'эртең',
+    'diff_tomorrow_regexp' => 'Эртең(?:\\s+саат)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Бүгүн саат] LT',
+        'nextDay' => '[Эртең саат] LT',
+        'nextWeek' => 'dddd [саат] LT',
+        'lastDay' => '[Кече саат] LT',
+        'lastWeek' => '[Өткен аптанын] dddd [күнү] [саат] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        static $suffixes = [
+            0 => '-чү',
+            1 => '-чи',
+            2 => '-чи',
+            3 => '-чү',
+            4 => '-чү',
+            5 => '-чи',
+            6 => '-чы',
+            7 => '-чи',
+            8 => '-чи',
+            9 => '-чу',
+            10 => '-чу',
+            20 => '-чы',
+            30 => '-чу',
+            40 => '-чы',
+            50 => '-чү',
+            60 => '-чы',
+            70 => '-чи',
+            80 => '-чи',
+            90 => '-чу',
+            100 => '-чү',
+        ];
+
+        return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
+    },
+    'months' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
+    'months_short' => ['янв', 'фев', 'март', 'апр', 'май', 'июнь', 'июль', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'weekdays' => ['Жекшемби', 'Дүйшөмбү', 'Шейшемби', 'Шаршемби', 'Бейшемби', 'Жума', 'Ишемби'],
+    'weekdays_short' => ['Жек', 'Дүй', 'Шей', 'Шар', 'Бей', 'Жум', 'Ише'],
+    'weekdays_min' => ['Жк', 'Дй', 'Шй', 'Шр', 'Бй', 'Жм', 'Иш'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => ' ',
+    'meridiem' => ['таңкы', 'түштөн кийинки'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
new file mode 100644
index 00000000..9923a31e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ky.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lag.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lag.php
new file mode 100644
index 00000000..f3f57f6a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lag.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['TOO', 'MUU'],
+    'weekdays' => ['Jumapíiri', 'Jumatátu', 'Jumaíne', 'Jumatáano', 'Alamíisi', 'Ijumáa', 'Jumamóosi'],
+    'weekdays_short' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'],
+    'weekdays_min' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'],
+    'months' => ['Kʉfúngatɨ', 'Kʉnaanɨ', 'Kʉkeenda', 'Kwiikumi', 'Kwiinyambála', 'Kwiidwaata', 'Kʉmʉʉnchɨ', 'Kʉvɨɨrɨ', 'Kʉsaatʉ', 'Kwiinyi', 'Kʉsaano', 'Kʉsasatʉ'],
+    'months_short' => ['Fúngatɨ', 'Naanɨ', 'Keenda', 'Ikúmi', 'Inyambala', 'Idwaata', 'Mʉʉnchɨ', 'Vɨɨrɨ', 'Saatʉ', 'Inyi', 'Saano', 'Sasatʉ'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb.php
new file mode 100644
index 00000000..7636655e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb.php
@@ -0,0 +1,88 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - dan-nl
+ * - Simon Lelorrain (slelorrain)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count Joer',
+    'y' => ':countJ',
+    'month' => ':count Mount|:count Méint',
+    'm' => ':countMo',
+    'week' => ':count Woch|:count Wochen',
+    'w' => ':countWo|:countWo',
+    'day' => ':count Dag|:count Deeg',
+    'd' => ':countD',
+    'hour' => ':count Stonn|:count Stonnen',
+    'h' => ':countSto',
+    'minute' => ':count Minutt|:count Minutten',
+    'min' => ':countM',
+    'second' => ':count Sekonn|:count Sekonnen',
+    's' => ':countSek',
+
+    'ago' => 'virun :time',
+    'from_now' => 'an :time',
+    'before' => ':time virdrun',
+    'after' => ':time duerno',
+
+    'diff_today' => 'Haut',
+    'diff_yesterday' => 'Gëschter',
+    'diff_yesterday_regexp' => 'Gëschter(?:\\s+um)?',
+    'diff_tomorrow' => 'Muer',
+    'diff_tomorrow_regexp' => 'Muer(?:\\s+um)?',
+    'diff_today_regexp' => 'Haut(?:\\s+um)?',
+    'formats' => [
+        'LT' => 'H:mm [Auer]',
+        'LTS' => 'H:mm:ss [Auer]',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm [Auer]',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm [Auer]',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[Haut um] LT',
+        'nextDay' => '[Muer um] LT',
+        'nextWeek' => 'dddd [um] LT',
+        'lastDay' => '[Gëschter um] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
+            switch ($date->dayOfWeek) {
+                case 2:
+                case 4:
+                    return '[Leschten] dddd [um] LT';
+                default:
+                    return '[Leschte] dddd [um] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+
+    'months' => ['Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
+    'months_short' => ['Jan.', 'Febr.', 'Mrz.', 'Abr.', 'Mee', 'Jun.', 'Jul.', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.'],
+    'weekdays' => ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'],
+    'weekdays_short' => ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'],
+    'weekdays_min' => ['So', 'Mé', 'Dë', 'Më', 'Do', 'Fr', 'Sa'],
+    'ordinal' => ':number.',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' an '],
+    'meridiem' => ['moies', 'mëttes'],
+    'weekdays_short_standalone' => ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'],
+    'months_short_standalone' => ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
new file mode 100644
index 00000000..414bd4d0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/lb.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg.php
new file mode 100644
index 00000000..48bc68be
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/lg_UG.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
new file mode 100644
index 00000000..aa022140
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Akademe ya Luganda Kizito Birabwa kompyuta@kizito.uklinux.net
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'],
+    'weekdays' => ['Sabiiti', 'Balaza', 'Lwakubiri', 'Lwakusatu', 'Lwakuna', 'Lwakutaano', 'Lwamukaaga'],
+    'weekdays_short' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'],
+    'weekdays_min' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'month' => ':count njuba', // less reliable
+    'm' => ':count njuba', // less reliable
+    'a_month' => ':count njuba', // less reliable
+
+    'year' => ':count mwaaka',
+    'y' => ':count mwaaka',
+    'a_year' => ':count mwaaka',
+
+    'week' => ':count sabbiiti',
+    'w' => ':count sabbiiti',
+    'a_week' => ':count sabbiiti',
+
+    'day' => ':count lunaku',
+    'd' => ':count lunaku',
+    'a_day' => ':count lunaku',
+
+    'hour' => 'saawa :count',
+    'h' => 'saawa :count',
+    'a_hour' => 'saawa :count',
+
+    'minute' => 'ddakiika :count',
+    'min' => 'ddakiika :count',
+    'a_minute' => 'ddakiika :count',
+
+    'second' => ':count kyʼokubiri',
+    's' => ':count kyʼokubiri',
+    'a_second' => ':count kyʼokubiri',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li.php
new file mode 100644
index 00000000..86c3009e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/li_NL.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
new file mode 100644
index 00000000..6c5feb79
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['jannewarie', 'fibberwarie', 'miert', 'eprèl', 'meij', 'junie', 'julie', 'augustus', 'september', 'oktober', 'november', 'desember'],
+    'months_short' => ['jan', 'fib', 'mie', 'epr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['zóndig', 'maondig', 'daensdig', 'goonsdig', 'dónderdig', 'vriedig', 'zaoterdig'],
+    'weekdays_short' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'],
+    'weekdays_min' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'minute' => ':count momênt', // less reliable
+    'min' => ':count momênt', // less reliable
+    'a_minute' => ':count momênt', // less reliable
+
+    'year' => ':count jaor',
+    'y' => ':count jaor',
+    'a_year' => ':count jaor',
+
+    'month' => ':count maond',
+    'm' => ':count maond',
+    'a_month' => ':count maond',
+
+    'week' => ':count waek',
+    'w' => ':count waek',
+    'a_week' => ':count waek',
+
+    'day' => ':count daag',
+    'd' => ':count daag',
+    'a_day' => ':count daag',
+
+    'hour' => ':count oer',
+    'h' => ':count oer',
+    'a_hour' => ':count oer',
+
+    'second' => ':count Secónd',
+    's' => ':count Secónd',
+    'a_second' => ':count Secónd',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij.php
new file mode 100644
index 00000000..45732b55
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/lij_IT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
new file mode 100644
index 00000000..f8726fd2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Gastaldi    alessio.gastaldi@libero.it
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['zenâ', 'fevrâ', 'marzo', 'avrî', 'mazzo', 'zûgno', 'lûggio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dixembre'],
+    'months_short' => ['zen', 'fev', 'mar', 'arv', 'maz', 'zûg', 'lûg', 'ago', 'set', 'ött', 'nov', 'dix'],
+    'weekdays' => ['domenega', 'lûnedì', 'martedì', 'mercUrdì', 'zêggia', 'venardì', 'sabbo'],
+    'weekdays_short' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'],
+    'weekdays_min' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count etæ', // less reliable
+    'y' => ':count etæ', // less reliable
+    'a_year' => ':count etæ', // less reliable
+
+    'month' => ':count meize',
+    'm' => ':count meize',
+    'a_month' => ':count meize',
+
+    'week' => ':count settemannha',
+    'w' => ':count settemannha',
+    'a_week' => ':count settemannha',
+
+    'day' => ':count giorno',
+    'd' => ':count giorno',
+    'a_day' => ':count giorno',
+
+    'hour' => ':count reléuio', // less reliable
+    'h' => ':count reléuio', // less reliable
+    'a_hour' => ':count reléuio', // less reliable
+
+    'minute' => ':count menûo',
+    'min' => ':count menûo',
+    'a_minute' => ':count menûo',
+
+    'second' => ':count segondo',
+    's' => ':count segondo',
+    'a_second' => ':count segondo',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
new file mode 100644
index 00000000..ae73a97b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+
+    'month' => ':count haŋwí', // less reliable
+    'm' => ':count haŋwí', // less reliable
+    'a_month' => ':count haŋwí', // less reliable
+
+    'week' => ':count šakówiŋ', // less reliable
+    'w' => ':count šakówiŋ', // less reliable
+    'a_week' => ':count šakówiŋ', // less reliable
+
+    'hour' => ':count maza škaŋškaŋ', // less reliable
+    'h' => ':count maza škaŋškaŋ', // less reliable
+    'a_hour' => ':count maza škaŋškaŋ', // less reliable
+
+    'minute' => ':count číkʼala', // less reliable
+    'min' => ':count číkʼala', // less reliable
+    'a_minute' => ':count číkʼala', // less reliable
+
+    'year' => ':count waníyetu',
+    'y' => ':count waníyetu',
+    'a_year' => ':count waníyetu',
+
+    'day' => ':count aŋpétu',
+    'd' => ':count aŋpétu',
+    'a_day' => ':count aŋpétu',
+
+    'second' => ':count icinuŋpa',
+    's' => ':count icinuŋpa',
+    'a_second' => ':count icinuŋpa',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln.php
new file mode 100644
index 00000000..9d5c35dd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'months' => ['sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé'],
+    'months_short' => ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'],
+    'weekdays' => ['Lomíngo', 'Mosálá mɔ̌kɔ́', 'Misálá míbalé', 'Misálá mísáto', 'Misálá mínei', 'Misálá mítáno', 'Mpɔ́sɔ'],
+    'weekdays_short' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'],
+    'weekdays_min' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'mbula :count',
+    'y' => 'mbula :count',
+    'a_year' => 'mbula :count',
+
+    'month' => 'sánzá :count',
+    'm' => 'sánzá :count',
+    'a_month' => 'sánzá :count',
+
+    'week' => 'mpɔ́sɔ :count',
+    'w' => 'mpɔ́sɔ :count',
+    'a_week' => 'mpɔ́sɔ :count',
+
+    'day' => 'mokɔlɔ :count',
+    'd' => 'mokɔlɔ :count',
+    'a_day' => 'mokɔlɔ :count',
+
+    'hour' => 'ngonga :count',
+    'h' => 'ngonga :count',
+    'a_hour' => 'ngonga :count',
+
+    'minute' => 'miniti :count',
+    'min' => 'miniti :count',
+    'a_minute' => 'miniti :count',
+
+    'second' => 'segɔnde :count',
+    's' => 'segɔnde :count',
+    'a_second' => 'segɔnde :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
new file mode 100644
index 00000000..7fdb7f1b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ln.php', [
+    'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
+    'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
new file mode 100644
index 00000000..13635fcc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com
+ */
+return require __DIR__.'/ln.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
new file mode 100644
index 00000000..7fdb7f1b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ln.php', [
+    'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
+    'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
new file mode 100644
index 00000000..7fdb7f1b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ln.php', [
+    'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'],
+    'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'],
+    'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo.php
new file mode 100644
index 00000000..48715f5c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - ryanhart2
+ */
+return [
+    'year' => ':count ປີ',
+    'y' => ':count ປີ',
+    'month' => ':count ເດືອນ',
+    'm' => ':count ດ. ',
+    'week' => ':count ອາທິດ',
+    'w' => ':count ອທ. ',
+    'day' => ':count ມື້',
+    'd' => ':count ມື້',
+    'hour' => ':count ຊົ່ວໂມງ',
+    'h' => ':count ຊມ. ',
+    'minute' => ':count ນາທີ',
+    'min' => ':count ນທ. ',
+    'second' => '{1}ບໍ່ເທົ່າໃດວິນາທີ|]1,Inf[:count ວິນາທີ',
+    's' => ':count ວິ. ',
+    'ago' => ':timeຜ່ານມາ',
+    'from_now' => 'ອີກ :time',
+    'diff_now' => 'ຕອນນີ້',
+    'diff_today' => 'ມື້ນີ້ເວລາ',
+    'diff_yesterday' => 'ມື້ວານນີ້ເວລາ',
+    'diff_tomorrow' => 'ມື້ອື່ນເວລາ',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'ວັນdddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ມື້ນີ້ເວລາ] LT',
+        'nextDay' => '[ມື້ອື່ນເວລາ] LT',
+        'nextWeek' => '[ວັນ]dddd[ໜ້າເວລາ] LT',
+        'lastDay' => '[ມື້ວານນີ້ເວລາ] LT',
+        'lastWeek' => '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => 'ທີ່:number',
+    'meridiem' => ['ຕອນເຊົ້າ', 'ຕອນແລງ'],
+    'months' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'],
+    'months_short' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'],
+    'weekdays' => ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'],
+    'weekdays_short' => ['ທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'],
+    'weekdays_min' => ['ທ', 'ຈ', 'ອຄ', 'ພ', 'ພຫ', 'ສກ', 'ສ'],
+    'list' => [', ', 'ແລະ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
new file mode 100644
index 00000000..9b7fd9bf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/lo.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
new file mode 100644
index 00000000..546e6791
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+
+    'minute' => ':count هنر', // less reliable
+    'min' => ':count هنر', // less reliable
+    'a_minute' => ':count هنر', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
new file mode 100644
index 00000000..d42f5e97
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php
@@ -0,0 +1,13 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/lrc.php', [
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt.php
new file mode 100644
index 00000000..7d1b6f74
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt.php
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - tjku
+ * - valdas406
+ * - Justas Palumickas
+ * - Max Melentiev
+ * - Andrius Janauskas
+ * - Juanito Fatas
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Nicolás Hock Isaza
+ * - Laurynas Butkus
+ * - Sven Fuchs
+ * - Dominykas Tijūnaitis
+ * - Justinas Bolys
+ * - Ričardas
+ * - Kirill Chalkin
+ * - Rolandas
+ * - Justinas (Gamesh)
+ */
+return [
+    'year' => ':count metai|:count metai|:count metų',
+    'y' => ':count m.',
+    'month' => ':count mėnuo|:count mėnesiai|:count mėnesį',
+    'm' => ':count mÄ—n.',
+    'week' => ':count savaitÄ—|:count savaitÄ—s|:count savaitÄ™',
+    'w' => ':count sav.',
+    'day' => ':count diena|:count dienos|:count dienų',
+    'd' => ':count d.',
+    'hour' => ':count valanda|:count valandos|:count valandų',
+    'h' => ':count val.',
+    'minute' => ':count minutÄ—|:count minutÄ—s|:count minutÄ™',
+    'min' => ':count min.',
+    'second' => ':count sekundė|:count sekundės|:count sekundžių',
+    's' => ':count sek.',
+
+    'year_ago' => ':count metus|:count metus|:count metų',
+    'month_ago' => ':count mėnesį|:count mėnesius|:count mėnesių',
+    'week_ago' => ':count savaitę|:count savaites|:count savaičių',
+    'day_ago' => ':count dieną|:count dienas|:count dienų',
+    'hour_ago' => ':count valandą|:count valandas|:count valandų',
+    'minute_ago' => ':count minutę|:count minutes|:count minučių',
+    'second_ago' => ':count sekundę|:count sekundes|:count sekundžių',
+
+    'year_from_now' => ':count metų',
+    'month_from_now' => ':count mėnesio|:count mėnesių|:count mėnesių',
+    'week_from_now' => ':count savaitės|:count savaičių|:count savaičių',
+    'day_from_now' => ':count dienos|:count dienų|:count dienų',
+    'hour_from_now' => ':count valandos|:count valandų|:count valandų',
+    'minute_from_now' => ':count minutės|:count minučių|:count minučių',
+    'second_from_now' => ':count sekundės|:count sekundžių|:count sekundžių',
+
+    'year_after' => ':count metų',
+    'month_after' => ':count mėnesio|:count mėnesių|:count mėnesių',
+    'week_after' => ':count savaitės|:count savaičių|:count savaičių',
+    'day_after' => ':count dienos|:count dienų|:count dienų',
+    'hour_after' => ':count valandos|:count valandų|:count valandų',
+    'minute_after' => ':count minutės|:count minučių|:count minučių',
+    'second_after' => ':count sekundės|:count sekundžių|:count sekundžių',
+
+    'ago' => 'prieš :time',
+    'from_now' => ':time nuo dabar',
+    'after' => 'po :time',
+    'before' => 'už :time',
+
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'diff_now' => 'kÄ… tik',
+    'diff_today' => 'Å iandien',
+    'diff_yesterday' => 'vakar',
+    'diff_yesterday_regexp' => 'Vakar',
+    'diff_tomorrow' => 'rytoj',
+    'diff_tomorrow_regexp' => 'Rytoj',
+    'diff_before_yesterday' => 'užvakar',
+    'diff_after_tomorrow' => 'poryt',
+
+    'period_recurrences' => 'kartą|:count kartų',
+    'period_interval' => 'kiekvienÄ… :interval',
+    'period_start_date' => 'nuo :date',
+    'period_end_date' => 'iki :date',
+
+    'months' => ['sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio'],
+    'months_standalone' => ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'],
+    'months_regexp' => '/(L{2,4}|D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?)/',
+    'months_short' => ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'gru'],
+    'weekdays' => ['sekmadienį', 'pirmadienį', 'antradienį', 'trečiadienį', 'ketvirtadienį', 'penktadienį', 'šeštadienį'],
+    'weekdays_standalone' => ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'],
+    'weekdays_short' => ['sek', 'pir', 'ant', 'tre', 'ket', 'pen', 'šeš'],
+    'weekdays_min' => ['se', 'pi', 'an', 'tr', 'ke', 'pe', 'Å¡e'],
+    'list' => [', ', ' ir '],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'MMMM DD, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Å iandien] LT',
+        'nextDay' => '[Rytoj] LT',
+        'nextWeek' => 'dddd LT',
+        'lastDay' => '[Vakar] LT',
+        'lastWeek' => '[Paskutinį] dddd LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        switch ($number) {
+            case 0:
+                return '0-is';
+            case 3:
+                return '3-ias';
+            default:
+                return "$number-as";
+        }
+    },
+    'meridiem' => ['priešpiet', 'popiet'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
new file mode 100644
index 00000000..f772d38b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/lt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lu.php
new file mode 100644
index 00000000..c8cd83af
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lu.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Dinda', 'Dilolo'],
+    'weekdays' => ['Lumingu', 'Nkodya', 'Ndàayà', 'Ndangù', 'Njòwa', 'Ngòvya', 'Lubingu'],
+    'weekdays_short' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'],
+    'weekdays_min' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'],
+    'months' => ['Ciongo', 'Lùishi', 'Lusòlo', 'Mùuyà', 'Lumùngùlù', 'Lufuimi', 'Kabàlàshìpù', 'Lùshìkà', 'Lutongolo', 'Lungùdi', 'Kaswèkèsè', 'Ciswà'],
+    'months_short' => ['Cio', 'Lui', 'Lus', 'Muu', 'Lum', 'Luf', 'Kab', 'Lush', 'Lut', 'Lun', 'Kas', 'Cis'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luo.php
new file mode 100644
index 00000000..b55af731
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luo.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['OD', 'OT'],
+    'weekdays' => ['Jumapil', 'Wuok Tich', 'Tich Ariyo', 'Tich Adek', 'Tich Ang’wen', 'Tich Abich', 'Ngeso'],
+    'weekdays_short' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'],
+    'weekdays_min' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'],
+    'months' => ['Dwe mar Achiel', 'Dwe mar Ariyo', 'Dwe mar Adek', 'Dwe mar Ang’wen', 'Dwe mar Abich', 'Dwe mar Auchiel', 'Dwe mar Abiriyo', 'Dwe mar Aboro', 'Dwe mar Ochiko', 'Dwe mar Apar', 'Dwe mar gi achiel', 'Dwe mar Apar gi ariyo'],
+    'months_short' => ['DAC', 'DAR', 'DAD', 'DAN', 'DAH', 'DAU', 'DAO', 'DAB', 'DOC', 'DAP', 'DGI', 'DAG'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => 'higni :count',
+    'y' => 'higni :count',
+    'a_year' => ':higni :count',
+
+    'month' => 'dweche :count',
+    'm' => 'dweche :count',
+    'a_month' => 'dweche :count',
+
+    'week' => 'jumbe :count',
+    'w' => 'jumbe :count',
+    'a_week' => 'jumbe :count',
+
+    'day' => 'ndalo :count',
+    'd' => 'ndalo :count',
+    'a_day' => 'ndalo :count',
+
+    'hour' => 'seche :count',
+    'h' => 'seche :count',
+    'a_hour' => 'seche :count',
+
+    'minute' => 'dakika :count',
+    'min' => 'dakika :count',
+    'a_minute' => 'dakika :count',
+
+    'second' => 'nus dakika :count',
+    's' => 'nus dakika :count',
+    'a_second' => 'nus dakika :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luy.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luy.php
new file mode 100644
index 00000000..2b37e3e3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/luy.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Jumapiri', 'Jumatatu', 'Jumanne', 'Jumatano', 'Murwa wa Kanne', 'Murwa wa Katano', 'Jumamosi'],
+    'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
+    'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    // Too unreliable
+    /*
+    'year' => ':count liliino', // less reliable
+    'y' => ':count liliino', // less reliable
+    'a_year' => ':count liliino', // less reliable
+
+    'month' => ':count kumwesi', // less reliable
+    'm' => ':count kumwesi', // less reliable
+    'a_month' => ':count kumwesi', // less reliable
+
+    'week' => ':count olutambi', // less reliable
+    'w' => ':count olutambi', // less reliable
+    'a_week' => ':count olutambi', // less reliable
+
+    'day' => ':count luno', // less reliable
+    'd' => ':count luno', // less reliable
+    'a_day' => ':count luno', // less reliable
+
+    'hour' => ':count ekengele', // less reliable
+    'h' => ':count ekengele', // less reliable
+    'a_hour' => ':count ekengele', // less reliable
+
+    'minute' => ':count omundu', // less reliable
+    'min' => ':count omundu', // less reliable
+    'a_minute' => ':count omundu', // less reliable
+
+    'second' => ':count liliino', // less reliable
+    's' => ':count liliino', // less reliable
+    'a_second' => ':count liliino', // less reliable
+    */
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv.php
new file mode 100644
index 00000000..d5cba7ca
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv.php
@@ -0,0 +1,183 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Carbon\CarbonInterface;
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - pirminis
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Andris Zāģeris
+ * - Max Melentiev
+ * - Edgars Beigarts
+ * - Juanito Fatas
+ * - Vitauts Stočka
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Kaspars Bankovskis
+ * - Nicolás Hock Isaza
+ * - Viesturs Kavacs (Kavacky)
+ * - zakse
+ * - Janis Eglitis (janiseglitis)
+ * - Guntars
+ * - Juris Sudmalis
+ */
+$daysOfWeek = ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena'];
+$daysOfWeekLocativum = ['svētdien', 'pirmdien', 'otrdien', 'trešdien', 'ceturtdien', 'piektdien', 'sestdien'];
+
+$transformDiff = function ($input) {
+    return strtr($input, [
+        // Nominative => "pirms/pēc" Dative
+        'gads' => 'gada',
+        'gadi' => 'gadiem',
+        'gadu' => 'gadiem',
+        'mēnesis' => 'mēneša',
+        'mēneši' => 'mēnešiem',
+        'mēnešu' => 'mēnešiem',
+        'nedēļa' => 'nedēļas',
+        'nedēļas' => 'nedēļām',
+        'nedēļu' => 'nedēļām',
+        'diena' => 'dienas',
+        'dienas' => 'dienām',
+        'dienu' => 'dienām',
+        'stunda' => 'stundas',
+        'stundas' => 'stundām',
+        'stundu' => 'stundām',
+        'minūte' => 'minūtes',
+        'minūtes' => 'minūtēm',
+        'minūšu' => 'minūtēm',
+        'sekunde' => 'sekundes',
+        'sekundes' => 'sekundēm',
+        'sekunžu' => 'sekundēm',
+    ]);
+};
+
+return [
+    'ago' => function ($time) use ($transformDiff) {
+        return 'pirms '.$transformDiff($time);
+    },
+    'from_now' => function ($time) use ($transformDiff) {
+        return 'pēc '.$transformDiff($time);
+    },
+
+    'year' => '0 gadu|:count gads|:count gadi',
+    'y' => ':count g.',
+    'a_year' => '{1}gads|0 gadu|:count gads|:count gadi',
+    'month' => '0 mēnešu|:count mēnesis|:count mēneši',
+    'm' => ':count mēn.',
+    'a_month' => '{1}mēnesis|0 mēnešu|:count mēnesis|:count mēneši',
+    'week' => '0 nedēļu|:count nedēļa|:count nedēļas',
+    'w' => ':count ned.',
+    'a_week' => '{1}nedēļa|0 nedēļu|:count nedēļa|:count nedēļas',
+    'day' => '0 dienu|:count diena|:count dienas',
+    'd' => ':count d.',
+    'a_day' => '{1}diena|0 dienu|:count diena|:count dienas',
+    'hour' => '0 stundu|:count stunda|:count stundas',
+    'h' => ':count st.',
+    'a_hour' => '{1}stunda|0 stundu|:count stunda|:count stundas',
+    'minute' => '0 minūšu|:count minūte|:count minūtes',
+    'min' => ':count min.',
+    'a_minute' => '{1}minūte|0 minūšu|:count minūte|:count minūtes',
+    'second' => '0 sekunžu|:count sekunde|:count sekundes',
+    's' => ':count sek.',
+    'a_second' => '{1}sekunde|0 sekunžu|:count sekunde|:count sekundes',
+
+    'after' => ':time vēlāk',
+    'year_after' => '0 gadus|:count gadu|:count gadus',
+    'a_year_after' => '{1}gadu|0 gadus|:count gadu|:count gadus',
+    'month_after' => '0 mēnešus|:count mēnesi|:count mēnešus',
+    'a_month_after' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus',
+    'week_after' => '0 nedēļas|:count nedēļu|:count nedēļas',
+    'a_week_after' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas',
+    'day_after' => '0 dienas|:count dienu|:count dienas',
+    'a_day_after' => '{1}dienu|0 dienas|:count dienu|:count dienas',
+    'hour_after' => '0 stundas|:count stundu|:count stundas',
+    'a_hour_after' => '{1}stundu|0 stundas|:count stundu|:count stundas',
+    'minute_after' => '0 minūtes|:count minūti|:count minūtes',
+    'a_minute_after' => '{1}minūti|0 minūtes|:count minūti|:count minūtes',
+    'second_after' => '0 sekundes|:count sekundi|:count sekundes',
+    'a_second_after' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes',
+
+    'before' => ':time agrāk',
+    'year_before' => '0 gadus|:count gadu|:count gadus',
+    'a_year_before' => '{1}gadu|0 gadus|:count gadu|:count gadus',
+    'month_before' => '0 mēnešus|:count mēnesi|:count mēnešus',
+    'a_month_before' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus',
+    'week_before' => '0 nedēļas|:count nedēļu|:count nedēļas',
+    'a_week_before' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas',
+    'day_before' => '0 dienas|:count dienu|:count dienas',
+    'a_day_before' => '{1}dienu|0 dienas|:count dienu|:count dienas',
+    'hour_before' => '0 stundas|:count stundu|:count stundas',
+    'a_hour_before' => '{1}stundu|0 stundas|:count stundu|:count stundas',
+    'minute_before' => '0 minūtes|:count minūti|:count minūtes',
+    'a_minute_before' => '{1}minūti|0 minūtes|:count minūti|:count minūtes',
+    'second_before' => '0 sekundes|:count sekundi|:count sekundes',
+    'a_second_before' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes',
+
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' un '],
+
+    'diff_now' => 'tagad',
+    'diff_today' => 'Å¡odien',
+    'diff_yesterday' => 'vakar',
+    'diff_before_yesterday' => 'aizvakar',
+    'diff_tomorrow' => 'rīt',
+    'diff_after_tomorrow' => 'parīt',
+
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY.',
+        'LL' => 'YYYY. [gada] D. MMMM',
+        'LLL' => 'DD.MM.YYYY., HH:mm',
+        'LLLL' => 'YYYY. [gada] D. MMMM, HH:mm',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[Å¡odien] [plkst.] LT',
+        'nextDay' => '[rīt] [plkst.] LT',
+        'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) use ($daysOfWeekLocativum) {
+            if ($current->week !== $other->week) {
+                return '[nākošo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
+            }
+
+            return '['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
+        },
+        'lastDay' => '[vakar] [plkst.] LT',
+        'lastWeek' => function (CarbonInterface $current) use ($daysOfWeekLocativum) {
+            return '[pagājušo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT';
+        },
+        'sameElse' => 'L',
+    ],
+
+    'weekdays' => $daysOfWeek,
+    'weekdays_short' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'],
+    'weekdays_min' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'],
+    'months' => ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris'],
+    'months_standalone' => ['janvārī', 'februārī', 'martā', 'aprīlī', 'maijā', 'jūnijā', 'jūlijā', 'augustā', 'septembrī', 'oktobrī', 'novembrī', 'decembrī'],
+    'months_short' => ['janv.', 'febr.', 'martā', 'apr.', 'maijā', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'],
+    'meridiem' => ['priekšpusdiena', 'pēcpusdiena'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
new file mode 100644
index 00000000..ee91c369
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/lv.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
new file mode 100644
index 00000000..1180c6bb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/lzh_TW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
new file mode 100644
index 00000000..3b1493ee
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'OY[å¹´]MMMMOD[æ—¥]',
+    ],
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => [' 一 ', ' 二 ', ' 三 ', ' 四 ', ' 五 ', ' 六 ', ' 七 ', ' 八 ', ' 九 ', ' 十 ', '十一', '十二'],
+    'weekdays' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'day_of_first_week_of_year' => 1,
+    'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '廿', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '卅', '卅一'],
+    'meridiem' => ['朝', '暮'],
+
+    'year' => ':count 夏', // less reliable
+    'y' => ':count 夏', // less reliable
+    'a_year' => ':count 夏', // less reliable
+
+    'month' => ':count 月', // less reliable
+    'm' => ':count 月', // less reliable
+    'a_month' => ':count 月', // less reliable
+
+    'hour' => ':count æ°§', // less reliable
+    'h' => ':count æ°§', // less reliable
+    'a_hour' => ':count æ°§', // less reliable
+
+    'minute' => ':count 點', // less reliable
+    'min' => ':count 點', // less reliable
+    'a_minute' => ':count 點', // less reliable
+
+    'second' => ':count 楚', // less reliable
+    's' => ':count 楚', // less reliable
+    'a_second' => ':count 楚', // less reliable
+
+    'week' => ':count 星期',
+    'w' => ':count 星期',
+    'a_week' => ':count 星期',
+
+    'day' => ':count 日(曆法)',
+    'd' => ':count 日(曆法)',
+    'a_day' => ':count 日(曆法)',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag.php
new file mode 100644
index 00000000..7532436d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mag_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
new file mode 100644
index 00000000..193f67a7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bhashaghar@googlegroups.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'weekdays' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
+    'weekdays_short' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
+    'weekdays_min' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai.php
new file mode 100644
index 00000000..792b9739
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mai_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
new file mode 100644
index 00000000..03049d45
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Maithili Computing Research Center, Pune, India    rajeshkajha@yahoo.com,akhilesh.k@samusng.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'],
+    'months_short' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'],
+    'weekdays' => ['रविदिन', 'सोमदिन', 'मंगलदिन', 'बुधदिन', 'बृहस्पतीदिन', 'शुक्रदिन', 'शनीदिन'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'],
+    'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+
+    'year' => ':count ऋतु', // less reliable
+    'y' => ':count ऋतु', // less reliable
+    'a_year' => ':count ऋतु', // less reliable
+
+    'month' => ':count महिना',
+    'm' => ':count महिना',
+    'a_month' => ':count महिना',
+
+    'week' => ':count श्रेणी:क्यालेन्डर', // less reliable
+    'w' => ':count श्रेणी:क्यालेन्डर', // less reliable
+    'a_week' => ':count श्रेणी:क्यालेन्डर', // less reliable
+
+    'day' => ':count दिन',
+    'd' => ':count दिन',
+    'a_day' => ':count दिन',
+
+    'hour' => ':count घण्टा',
+    'h' => ':count घण्टा',
+    'a_hour' => ':count घण्टा',
+
+    'minute' => ':count समय', // less reliable
+    'min' => ':count समय', // less reliable
+    'a_minute' => ':count समय', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas.php
new file mode 100644
index 00000000..cbd610c2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Ɛnkakɛnyá', 'Ɛndámâ'],
+    'weekdays' => ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s'],
+    'months_short' => ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count olameyu', // less reliable
+    'y' => ':count olameyu', // less reliable
+    'a_year' => ':count olameyu', // less reliable
+
+    'week' => ':count engolongeare orwiki', // less reliable
+    'w' => ':count engolongeare orwiki', // less reliable
+    'a_week' => ':count engolongeare orwiki', // less reliable
+
+    'hour' => ':count esahabu', // less reliable
+    'h' => ':count esahabu', // less reliable
+    'a_hour' => ':count esahabu', // less reliable
+
+    'second' => ':count are', // less reliable
+    's' => ':count are', // less reliable
+    'a_second' => ':count are', // less reliable
+
+    'month' => ':count olapa',
+    'm' => ':count olapa',
+    'a_month' => ':count olapa',
+
+    'day' => ':count enkolongʼ',
+    'd' => ':count enkolongʼ',
+    'a_day' => ':count enkolongʼ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
new file mode 100644
index 00000000..56e29053
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/mas.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mer.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mer.php
new file mode 100644
index 00000000..2e14597f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mer.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['RŨ', 'ŨG'],
+    'weekdays' => ['Kiumia', 'Muramuko', 'Wairi', 'Wethatu', 'Wena', 'Wetano', 'Jumamosi'],
+    'weekdays_short' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'],
+    'weekdays_min' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'],
+    'months' => ['Januarĩ', 'Feburuarĩ', 'Machi', 'Ĩpurũ', 'Mĩĩ', 'Njuni', 'Njuraĩ', 'Agasti', 'Septemba', 'Oktũba', 'Novemba', 'Dicemba'],
+    'months_short' => ['JAN', 'FEB', 'MAC', 'ĨPU', 'MĨĨ', 'NJU', 'NJR', 'AGA', 'SPT', 'OKT', 'NOV', 'DEC'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count murume', // less reliable
+    'y' => ':count murume', // less reliable
+    'a_year' => ':count murume', // less reliable
+
+    'month' => ':count muchaara', // less reliable
+    'm' => ':count muchaara', // less reliable
+    'a_month' => ':count muchaara', // less reliable
+
+    'minute' => ':count monto', // less reliable
+    'min' => ':count monto', // less reliable
+    'a_minute' => ':count monto', // less reliable
+
+    'second' => ':count gikeno', // less reliable
+    's' => ':count gikeno', // less reliable
+    'a_second' => ':count gikeno', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
new file mode 100644
index 00000000..4d6e6b69
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mfe_MU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
new file mode 100644
index 00000000..2d27b457
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    akhilesh.k@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['zanvie', 'fevriye', 'mars', 'avril', 'me', 'zin', 'zilye', 'out', 'septam', 'oktob', 'novam', 'desam'],
+    'months_short' => ['zan', 'fev', 'mar', 'avr', 'me', 'zin', 'zil', 'out', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['dimans', 'lindi', 'mardi', 'merkredi', 'zedi', 'vandredi', 'samdi'],
+    'weekdays_short' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'],
+    'weekdays_min' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'],
+
+    'year' => ':count banané',
+    'y' => ':count banané',
+    'a_year' => ':count banané',
+
+    'month' => ':count mwa',
+    'm' => ':count mwa',
+    'a_month' => ':count mwa',
+
+    'week' => ':count sémenn',
+    'w' => ':count sémenn',
+    'a_week' => ':count sémenn',
+
+    'day' => ':count zour',
+    'd' => ':count zour',
+    'a_day' => ':count zour',
+
+    'hour' => ':count -er-tan',
+    'h' => ':count -er-tan',
+    'a_hour' => ':count -er-tan',
+
+    'minute' => ':count minitt',
+    'min' => ':count minitt',
+    'a_minute' => ':count minitt',
+
+    'second' => ':count déziém',
+    's' => ':count déziém',
+    'a_second' => ':count déziém',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg.php
new file mode 100644
index 00000000..40bc2a82
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mg_MG.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
new file mode 100644
index 00000000..6a14535a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - The Debian Project modified by GNU//Linux Malagasy Rado Ramarotafika,Do-Risika RAFIEFERANTSIARONJY rado@linuxmg.org,dourix@free.fr
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Janoary', 'Febroary', 'Martsa', 'Aprily', 'Mey', 'Jona', 'Jolay', 'Aogositra', 'Septambra', 'Oktobra', 'Novambra', 'Desambra'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mey', 'Jon', 'Jol', 'Aog', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['alahady', 'alatsinainy', 'talata', 'alarobia', 'alakamisy', 'zoma', 'sabotsy'],
+    'weekdays_short' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'],
+    'weekdays_min' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'minute' => ':count minitra', // less reliable
+    'min' => ':count minitra', // less reliable
+    'a_minute' => ':count minitra', // less reliable
+
+    'year' => ':count taona',
+    'y' => ':count taona',
+    'a_year' => ':count taona',
+
+    'month' => ':count volana',
+    'm' => ':count volana',
+    'a_month' => ':count volana',
+
+    'week' => ':count herinandro',
+    'w' => ':count herinandro',
+    'a_week' => ':count herinandro',
+
+    'day' => ':count andro',
+    'd' => ':count andro',
+    'a_day' => ':count andro',
+
+    'hour' => ':count ora',
+    'h' => ':count ora',
+    'a_hour' => ':count ora',
+
+    'second' => ':count segondra',
+    's' => ':count segondra',
+    'a_second' => ':count segondra',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
new file mode 100644
index 00000000..2a80960d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['wichishu', 'mchochil’l'],
+    'weekdays' => ['Sabato', 'Jumatatu', 'Jumanne', 'Jumatano', 'Arahamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'],
+    'months' => ['Mweri wo kwanza', 'Mweri wo unayeli', 'Mweri wo uneraru', 'Mweri wo unecheshe', 'Mweri wo unethanu', 'Mweri wo thanu na mocha', 'Mweri wo saba', 'Mweri wo nane', 'Mweri wo tisa', 'Mweri wo kumi', 'Mweri wo kumi na moja', 'Mweri wo kumi na yel’li'],
+    'months_short' => ['Kwa', 'Una', 'Rar', 'Che', 'Tha', 'Moc', 'Sab', 'Nan', 'Tis', 'Kum', 'Moj', 'Yel'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
new file mode 100644
index 00000000..a126c9ff
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'],
+    'weekdays_short' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'],
+    'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'],
+    'months' => ['iməg mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'],
+    'months_short' => ['mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'dddd, YYYY MMMM DD HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
new file mode 100644
index 00000000..6bbc9f6d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mhr_RU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
new file mode 100644
index 00000000..309ead9d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - PeshSajSoft Ltd. Vyacheslav Kileev slavakileev@yandex.ru
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY.MM.DD',
+    ],
+    'months' => ['Шорыкйол', 'Пургыж', 'Ӱярня', 'Вӱдшор', 'Ага', 'Пеледыш', 'Сӱрем', 'Сорла', 'Идым', 'Шыжа', 'Кылме', 'Теле'],
+    'months_short' => ['Шрк', 'Пгж', 'Ӱрн', 'Вшр', 'Ага', 'Пдш', 'Срм', 'Срл', 'Идм', 'Шыж', 'Клм', 'Тел'],
+    'weekdays' => ['Рушарня', 'Шочмо', 'Кушкыжмо', 'Вӱргече', 'Изарня', 'Кугарня', 'Шуматкече'],
+    'weekdays_short' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'],
+    'weekdays_min' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count идалык',
+    'y' => ':count идалык',
+    'a_year' => ':count идалык',
+
+    'month' => ':count Тылзе',
+    'm' => ':count Тылзе',
+    'a_month' => ':count Тылзе',
+
+    'week' => ':count арня',
+    'w' => ':count арня',
+    'a_week' => ':count арня',
+
+    'day' => ':count кече',
+    'd' => ':count кече',
+    'a_day' => ':count кече',
+
+    'hour' => ':count час',
+    'h' => ':count час',
+    'a_hour' => ':count час',
+
+    'minute' => ':count минут',
+    'min' => ':count минут',
+    'a_minute' => ':count минут',
+
+    'second' => ':count кокымшан',
+    's' => ':count кокымшан',
+    'a_second' => ':count кокымшан',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi.php
new file mode 100644
index 00000000..b7f51ec2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - John Corrigan
+ * - François B
+ */
+return [
+    'year' => ':count tau',
+    'a_year' => '{1}he tau|:count tau',
+    'month' => ':count marama',
+    'a_month' => '{1}he marama|:count marama',
+    'week' => ':count wiki',
+    'a_week' => '{1}he wiki|:count wiki',
+    'day' => ':count ra',
+    'a_day' => '{1}he ra|:count ra',
+    'hour' => ':count haora',
+    'a_hour' => '{1}te haora|:count haora',
+    'minute' => ':count meneti',
+    'a_minute' => '{1}he meneti|:count meneti',
+    'second' => ':count hēkona',
+    'a_second' => '{1}te hēkona ruarua|:count hēkona',
+    'ago' => ':time i mua',
+    'from_now' => 'i roto i :time',
+    'diff_yesterday' => 'inanahi',
+    'diff_yesterday_regexp' => 'inanahi(?:\\s+i)?',
+    'diff_today' => 'i teie',
+    'diff_today_regexp' => 'i teie(?:\\s+mahana,)?(?:\\s+i)?',
+    'diff_tomorrow' => 'apopo',
+    'diff_tomorrow_regexp' => 'apopo(?:\\s+i)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY [i] HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY [i] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[i teie mahana, i] LT',
+        'nextDay' => '[apopo i] LT',
+        'nextWeek' => 'dddd [i] LT',
+        'lastDay' => '[inanahi i] LT',
+        'lastWeek' => 'dddd [whakamutunga i] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['Kohi-tāte', 'Hui-tanguru', 'Poutū-te-rangi', 'Paenga-whāwhā', 'Haratua', 'Pipiri', 'Hōngoingoi', 'Here-turi-kōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea'],
+    'months_short' => ['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngoi', 'Here', 'Mahu', 'Whi-nu', 'Whi-ra', 'Haki'],
+    'weekdays' => ['Rātapu', 'Mane', 'Tūrei', 'Wenerei', 'Tāite', 'Paraire', 'Hātarei'],
+    'weekdays_short' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'],
+    'weekdays_min' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' me te '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
new file mode 100644
index 00000000..6b964e3a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/mi.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq.php
new file mode 100644
index 00000000..51e5a985
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/miq_NI.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
new file mode 100644
index 00000000..57faa318
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'],
+    'months_short' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'],
+    'weekdays' => ['sandi', 'mundi', 'tiusdi', 'wensde', 'tausde', 'praidi', 'satadi'],
+    'weekdays_short' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'],
+    'weekdays_min' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 7,
+    'meridiem' => ['VM', 'NM'],
+
+    'month' => ':count kati', // less reliable
+    'm' => ':count kati', // less reliable
+    'a_month' => ':count kati', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
new file mode 100644
index 00000000..617154cd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mjw_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
new file mode 100644
index 00000000..58ed0d18
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Jor Teron    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['Arkoi', 'Thangthang', 'There', 'Jangmi', 'Aru', 'Vosik', 'Jakhong', 'Paipai', 'Chiti', 'Phere', 'Phaikuni', 'Matijong'],
+    'months_short' => ['Ark', 'Thang', 'The', 'Jang', 'Aru', 'Vos', 'Jak', 'Pai', 'Chi', 'Phe', 'Phai', 'Mati'],
+    'weekdays' => ['Bhomkuru', 'Urmi', 'Durmi', 'Thelang', 'Theman', 'Bhomta', 'Bhomti'],
+    'weekdays_short' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'],
+    'weekdays_min' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk.php
new file mode 100644
index 00000000..d822de09
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sashko Todorov
+ * - Josh Soref
+ * - François B
+ * - Serhan Apaydın
+ * - Borislav Mickov
+ * - JD Isaacks
+ * - Tomi Atanasoski
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count година|:count години',
+    'a_year' => 'година|:count години',
+    'y' => ':count год.',
+    'month' => ':count месец|:count месеци',
+    'a_month' => 'месец|:count месеци',
+    'm' => ':count месец|:count месеци',
+    'week' => ':count седмица|:count седмици',
+    'a_week' => 'седмица|:count седмици',
+    'w' => ':count седмица|:count седмици',
+    'day' => ':count ден|:count дена',
+    'a_day' => 'ден|:count дена',
+    'd' => ':count ден|:count дена',
+    'hour' => ':count час|:count часа',
+    'a_hour' => 'час|:count часа',
+    'h' => ':count час|:count часа',
+    'minute' => ':count минута|:count минути',
+    'a_minute' => 'минута|:count минути',
+    'min' => ':count мин.',
+    'second' => ':count секунда|:count секунди',
+    'a_second' => 'неколку секунди|:count секунди',
+    's' => ':count сек.',
+    'ago' => 'пред :time',
+    'from_now' => 'после :time',
+    'after' => 'по :time',
+    'before' => 'пред :time',
+    'diff_now' => 'сега',
+    'diff_today' => 'Денес',
+    'diff_today_regexp' => 'Денес(?:\\s+во)?',
+    'diff_yesterday' => 'вчера',
+    'diff_yesterday_regexp' => 'Вчера(?:\\s+во)?',
+    'diff_tomorrow' => 'утре',
+    'diff_tomorrow_regexp' => 'Утре(?:\\s+во)?',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'D.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Денес во] LT',
+        'nextDay' => '[Утре во] LT',
+        'nextWeek' => '[Во] dddd [во] LT',
+        'lastDay' => '[Вчера во] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                case 3:
+                case 6:
+                    return '[Изминатата] dddd [во] LT';
+                default:
+                    return '[Изминатиот] dddd [во] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        $lastDigit = $number % 10;
+        $last2Digits = $number % 100;
+        if ($number === 0) {
+            return $number.'-ев';
+        }
+        if ($last2Digits === 0) {
+            return $number.'-ен';
+        }
+        if ($last2Digits > 10 && $last2Digits < 20) {
+            return $number.'-ти';
+        }
+        if ($lastDigit === 1) {
+            return $number.'-ви';
+        }
+        if ($lastDigit === 2) {
+            return $number.'-ри';
+        }
+        if ($lastDigit === 7 || $lastDigit === 8) {
+            return $number.'-ми';
+        }
+
+        return $number.'-ти';
+    },
+    'months' => ['јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', 'октомври', 'ноември', 'декември'],
+    'months_short' => ['јан', 'фев', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'ное', 'дек'],
+    'weekdays' => ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'],
+    'weekdays_short' => ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'],
+    'weekdays_min' => ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' и '],
+    'meridiem' => ['АМ', 'ПМ'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
new file mode 100644
index 00000000..95e2ff9c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/mk.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml.php
new file mode 100644
index 00000000..1abd6c44
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count വർഷം',
+    'a_year' => 'ഒരു വർഷം|:count വർഷം',
+    'month' => ':count മാസം',
+    'a_month' => 'ഒരു മാസം|:count മാസം',
+    'week' => ':count ആഴ്ച',
+    'a_week' => 'ഒരാഴ്ച|:count ആഴ്ച',
+    'day' => ':count ദിവസം',
+    'a_day' => 'ഒരു ദിവസം|:count ദിവസം',
+    'hour' => ':count മണിക്കൂർ',
+    'a_hour' => 'ഒരു മണിക്കൂർ|:count മണിക്കൂർ',
+    'minute' => ':count മിനിറ്റ്',
+    'a_minute' => 'ഒരു മിനിറ്റ്|:count മിനിറ്റ്',
+    'second' => ':count സെക്കൻഡ്',
+    'a_second' => 'അൽപ നിമിഷങ്ങൾ|:count സെക്കൻഡ്',
+    'ago' => ':time മുൻപ്',
+    'from_now' => ':time കഴിഞ്ഞ്',
+    'diff_now' => 'ഇപ്പോൾ',
+    'diff_today' => 'ഇന്ന്',
+    'diff_yesterday' => 'ഇന്നലെ',
+    'diff_tomorrow' => 'നാളെ',
+    'formats' => [
+        'LT' => 'A h:mm -നു',
+        'LTS' => 'A h:mm:ss -നു',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm -നു',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm -നു',
+    ],
+    'calendar' => [
+        'sameDay' => '[ഇന്ന്] LT',
+        'nextDay' => '[നാളെ] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[ഇന്നലെ] LT',
+        'lastWeek' => '[കഴിഞ്ഞ] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'രാത്രി';
+        }
+        if ($hour < 12) {
+            return 'രാവിലെ';
+        }
+        if ($hour < 17) {
+            return 'ഉച്ച കഴിഞ്ഞ്';
+        }
+        if ($hour < 20) {
+            return 'വൈകുന്നേരം';
+        }
+
+        return 'രാത്രി';
+    },
+    'months' => ['ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്ടോബർ', 'നവംബർ', 'ഡിസംബർ'],
+    'months_short' => ['ജനു.', 'ഫെബ്രു.', 'മാർ.', 'ഏപ്രി.', 'മേയ്', 'ജൂൺ', 'ജൂലൈ.', 'ഓഗ.', 'സെപ്റ്റ.', 'ഒക്ടോ.', 'നവം.', 'ഡിസം.'],
+    'weekdays' => ['ഞായറാഴ്ച', 'തിങ്കളാഴ്ച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്ച', 'വ്യാഴാഴ്ച', 'വെള്ളിയാഴ്ച', 'ശനിയാഴ്ച'],
+    'weekdays_short' => ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'],
+    'weekdays_min' => ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'],
+    'list' => ', ',
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
new file mode 100644
index 00000000..000e7958
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ml.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
new file mode 100644
index 00000000..38c6434d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Zolzaya Erdenebaatar
+ * - Tom Hughes
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Michael Kessler
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Nicolás Hock Isaza
+ * - Ochirkhuyag
+ * - Batmandakh
+ * - lucifer-crybaby
+ */
+return [
+    'year' => ':count жил',
+    'y' => ':count жил',
+    'month' => ':count сар',
+    'm' => ':count сар',
+    'week' => ':count долоо хоног',
+    'w' => ':count долоо хоног',
+    'day' => ':count өдөр',
+    'd' => ':count өдөр',
+    'hour' => ':count цаг',
+    'h' => ':countц',
+    'minute' => ':count минут',
+    'min' => ':countм',
+    'second' => ':count секунд',
+    's' => ':countс',
+
+    'ago_mode' => 'last',
+    'ago' => ':time өмнө',
+    'year_ago' => ':count жилийн',
+    'y_ago' => ':count жилийн',
+    'month_ago' => ':count сарын',
+    'm_ago' => ':count сарын',
+    'day_ago' => ':count хоногийн',
+    'd_ago' => ':count хоногийн',
+    'week_ago' => ':count долоо хоногийн',
+    'w_ago' => ':count долоо хоногийн',
+    'hour_ago' => ':count цагийн',
+    'minute_ago' => ':count минутын',
+    'second_ago' => ':count секундын',
+
+    'from_now_mode' => 'last',
+    'from_now' => 'одоогоос :time',
+    'year_from_now' => ':count жилийн дараа',
+    'y_from_now' => ':count жилийн дараа',
+    'month_from_now' => ':count сарын дараа',
+    'm_from_now' => ':count сарын дараа',
+    'day_from_now' => ':count хоногийн дараа',
+    'd_from_now' => ':count хоногийн дараа',
+    'hour_from_now' => ':count цагийн дараа',
+    'minute_from_now' => ':count минутын дараа',
+    'second_from_now' => ':count секундын дараа',
+
+    'after_mode' => 'last',
+    'after' => ':time дараа',
+    'year_after' => ':count жилийн',
+    'y_after' => ':count жилийн',
+    'month_after' => ':count сарын',
+    'm_after' => ':count сарын',
+    'day_after' => ':count хоногийн',
+    'd_after' => ':count хоногийн',
+    'hour_after' => ':count цагийн',
+    'minute_after' => ':count минутын',
+    'second_after' => ':count секундын',
+
+    'before_mode' => 'last',
+    'before' => ':time өмнө',
+    'year_before' => ':count жилийн',
+    'y_before' => ':count жилийн',
+    'month_before' => ':count сарын',
+    'm_before' => ':count сарын',
+    'day_before' => ':count хоногийн',
+    'd_before' => ':count хоногийн',
+    'hour_before' => ':count цагийн',
+    'minute_before' => ':count минутын',
+    'second_before' => ':count секундын',
+
+    'list' => ', ',
+    'diff_now' => 'одоо',
+    'diff_yesterday' => 'өчигдөр',
+    'diff_tomorrow' => 'маргааш',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'YYYY MMMM DD',
+        'LLL' => 'YY-MM-DD, HH:mm',
+        'LLLL' => 'YYYY MMMM DD, HH:mm',
+    ],
+    'weekdays' => ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'],
+    'weekdays_short' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
+    'weekdays_min' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'],
+    'months' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
+    'months_short' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'],
+    'meridiem' => ['өглөө', 'орой'],
+    'first_day_of_week' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
new file mode 100644
index 00000000..e5ce426c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/mn.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni.php
new file mode 100644
index 00000000..cafa2f87
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/mni_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
new file mode 100644
index 00000000..45d430ef
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat Pune    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['জানুৱারি', 'ফেব্রুৱারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'সেপ্তেম্বর', 'ওক্তোবর', 'নবেম্বর', 'ডিসেম্বর'],
+    'months_short' => ['জান', 'ফেব', 'মার', 'এপ্রি', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ', 'ওক্ত', 'নবে', 'ডিস'],
+    'weekdays' => ['নোংমাইজিং', 'নিংথৌকাবা', 'লৈবাকপোকপা', 'য়ুমশকৈশা', 'শগোলশেন', 'ইরাই', 'থাংজ'],
+    'weekdays_short' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'],
+    'weekdays_min' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['এ.ম.', 'প.ম.'],
+
+    'year' => ':count ইসিং', // less reliable
+    'y' => ':count ইসিং', // less reliable
+    'a_year' => ':count ইসিং', // less reliable
+
+    'second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
+    's' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
+    'a_second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mo.php
new file mode 100644
index 00000000..102afcde
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mo.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ro.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr.php
new file mode 100644
index 00000000..4aaeafd0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Vikram-enyota
+ */
+return [
+    'year' => ':count वर्ष',
+    'y' => ':count वर्ष',
+    'month' => ':count महिना|:count महिने',
+    'm' => ':count महिना|:count महिने',
+    'week' => ':count आठवडा|:count आठवडे',
+    'w' => ':count आठवडा|:count आठवडे',
+    'day' => ':count दिवस',
+    'd' => ':count दिवस',
+    'hour' => ':count तास',
+    'h' => ':count तास',
+    'minute' => ':count मिनिटे',
+    'min' => ':count मिनिटे',
+    'second' => ':count सेकंद',
+    's' => ':count सेकंद',
+
+    'ago' => ':timeपूर्वी',
+    'from_now' => ':timeमध्ये',
+    'before' => ':timeपूर्वी',
+    'after' => ':timeनंतर',
+
+    'diff_now' => 'आत्ता',
+    'diff_today' => 'आज',
+    'diff_yesterday' => 'काल',
+    'diff_tomorrow' => 'उद्या',
+
+    'formats' => [
+        'LT' => 'A h:mm वाजता',
+        'LTS' => 'A h:mm:ss वाजता',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm वाजता',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm वाजता',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[आज] LT',
+        'nextDay' => '[उद्या] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[काल] LT',
+        'lastWeek' => '[मागील] dddd, LT',
+        'sameElse' => 'L',
+    ],
+
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'रात्री';
+        }
+        if ($hour < 10) {
+            return 'सकाळी';
+        }
+        if ($hour < 17) {
+            return 'दुपारी';
+        }
+        if ($hour < 20) {
+            return 'सायंकाळी';
+        }
+
+        return 'रात्री';
+    },
+
+    'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', 'डिसेंबर'],
+    'months_short' => ['जाने.', 'फेब्रु.', 'मार्च.', 'एप्रि.', 'मे.', 'जून.', 'जुलै.', 'ऑग.', 'सप्टें.', 'ऑक्टो.', 'नोव्हें.', 'डिसें.'],
+    'weekdays' => ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरू', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'],
+    'list' => [', ', ' आणि '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
new file mode 100644
index 00000000..7bca919f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/mr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms.php
new file mode 100644
index 00000000..36934eeb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Azri Jamil
+ * - JD Isaacks
+ * - Josh Soref
+ * - Azri Jamil
+ * - Hariadi Hinta
+ * - Ashraf Kamarudin
+ */
+return [
+    'year' => ':count tahun',
+    'a_year' => '{1}setahun|]1,Inf[:count tahun',
+    'y' => ':count tahun',
+    'month' => ':count bulan',
+    'a_month' => '{1}sebulan|]1,Inf[:count bulan',
+    'm' => ':count bulan',
+    'week' => ':count minggu',
+    'a_week' => '{1}seminggu|]1,Inf[:count minggu',
+    'w' => ':count minggu',
+    'day' => ':count hari',
+    'a_day' => '{1}sehari|]1,Inf[:count hari',
+    'd' => ':count hari',
+    'hour' => ':count jam',
+    'a_hour' => '{1}sejam|]1,Inf[:count jam',
+    'h' => ':count jam',
+    'minute' => ':count minit',
+    'a_minute' => '{1}seminit|]1,Inf[:count minit',
+    'min' => ':count minit',
+    'second' => ':count saat',
+    'a_second' => '{1}beberapa saat|]1,Inf[:count saat',
+    'millisecond' => ':count milisaat',
+    'a_millisecond' => '{1}semilisaat|]1,Inf[:count milliseconds',
+    'microsecond' => ':count mikrodetik',
+    'a_microsecond' => '{1}semikrodetik|]1,Inf[:count mikrodetik',
+    's' => ':count saat',
+    'ago' => ':time yang lepas',
+    'from_now' => ':time dari sekarang',
+    'after' => ':time kemudian',
+    'before' => ':time lepas',
+    'diff_now' => 'sekarang',
+    'diff_today' => 'Hari',
+    'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?',
+    'diff_yesterday' => 'semalam',
+    'diff_yesterday_regexp' => 'Semalam(?:\\s+pukul)?',
+    'diff_tomorrow' => 'esok',
+    'diff_tomorrow_regexp' => 'Esok(?:\\s+pukul)?',
+    'diff_before_yesterday' => 'kelmarin',
+    'diff_after_tomorrow' => 'lusa',
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm.ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY [pukul] HH.mm',
+        'LLLL' => 'dddd, D MMMM YYYY [pukul] HH.mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Hari ini pukul] LT',
+        'nextDay' => '[Esok pukul] LT',
+        'nextWeek' => 'dddd [pukul] LT',
+        'lastDay' => '[Kelmarin pukul] LT',
+        'lastWeek' => 'dddd [lepas pukul] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 1) {
+            return 'tengah malam';
+        }
+
+        if ($hour < 12) {
+            return 'pagi';
+        }
+
+        if ($hour < 13) {
+            return 'tengah hari';
+        }
+
+        if ($hour < 19) {
+            return 'petang';
+        }
+
+        return 'malam';
+    },
+    'months' => ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogs', 'Sep', 'Okt', 'Nov', 'Dis'],
+    'weekdays' => ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'],
+    'weekdays_short' => ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'],
+    'weekdays_min' => ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' dan '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
new file mode 100644
index 00000000..ef837a2d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ms.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/MM/yy',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, h:mm a',
+        'LLLL' => 'dd MMMM YYYY, h:mm a',
+    ],
+    'meridiem' => ['a', 'p'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
new file mode 100644
index 00000000..970d6048
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Azri Jamil
+ * - JD Isaacks
+ */
+return require __DIR__.'/ms.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
new file mode 100644
index 00000000..77cb83d2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ms.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/MM/yy',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY, h:mm a',
+    ],
+    'meridiem' => ['a', 'p'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt.php
new file mode 100644
index 00000000..e8aadcc9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Alessandro Maruccia
+ */
+return [
+    'year' => 'sena|:count sni|:count sni|:count sni',
+    'y' => 'sa sena|:count snin|:count snin|:count snin',
+    'month' => 'xahar|:count xhur|:count xhur|:count xhur',
+    'm' => ':count xahar|:count xhur|:count xhur|:count xhur',
+    'week' => 'gimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat',
+    'w' => 'ġimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat',
+    'day' => 'Ä¡urnata|:count Ä¡ranet|:count Ä¡ranet|:count Ä¡ranet',
+    'd' => 'Ä¡urnata|:count Ä¡ranet|:count Ä¡ranet|:count Ä¡ranet',
+    'hour' => 'siegħa|:count siegħat|:count siegħat|:count siegħat',
+    'h' => 'siegħa|:count sigħat|:count sigħat|:count sigħat',
+    'minute' => 'minuta|:count minuti|:count minuti|:count minuti',
+    'min' => 'min.|:count min.|:count min.|:count min.',
+    'second' => 'ftit sekondi|:count sekondi|:count sekondi|:count sekondi',
+    's' => 'sek.|:count sek.|:count sek.|:count sek.',
+    'ago' => ':time ilu',
+    'from_now' => 'f’ :time',
+    'diff_now' => 'issa',
+    'diff_today' => 'Illum',
+    'diff_today_regexp' => 'Illum(?:\\s+fil-)?',
+    'diff_yesterday' => 'lbieraħ',
+    'diff_yesterday_regexp' => 'Il-bieraħ(?:\\s+fil-)?',
+    'diff_tomorrow' => 'għada',
+    'diff_tomorrow_regexp' => 'Għada(?:\\s+fil-)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Illum fil-]LT',
+        'nextDay' => '[Għada fil-]LT',
+        'nextWeek' => 'dddd [fil-]LT',
+        'lastDay' => '[Il-bieraħ fil-]LT',
+        'lastWeek' => 'dddd [li għadda] [fil-]LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', 'Ottubru', 'Novembru', 'Diċembru'],
+    'months_short' => ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'],
+    'weekdays' => ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'],
+    'weekdays_short' => ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'],
+    'weekdays_min' => ['Ħa', 'Tn', 'Tl', 'Er', 'Ħa', 'Ġi', 'Si'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' u '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
new file mode 100644
index 00000000..9534f687
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/mt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mua.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mua.php
new file mode 100644
index 00000000..a3a3c6fd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mua.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['comme', 'lilli'],
+    'weekdays' => ['Com’yakke', 'Comlaaɗii', 'Comzyiiɗii', 'Comkolle', 'Comkaldǝɓlii', 'Comgaisuu', 'Comzyeɓsuu'],
+    'weekdays_short' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'],
+    'weekdays_min' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'],
+    'months' => ['Fĩi Loo', 'Cokcwaklaŋne', 'Cokcwaklii', 'Fĩi Marfoo', 'Madǝǝuutǝbijaŋ', 'Mamǝŋgwãafahbii', 'Mamǝŋgwãalii', 'Madǝmbii', 'Fĩi Dǝɓlii', 'Fĩi Mundaŋ', 'Fĩi Gwahlle', 'Fĩi Yuru'],
+    'months_short' => ['FLO', 'CLA', 'CKI', 'FMF', 'MAD', 'MBI', 'MLI', 'MAM', 'FDE', 'FMU', 'FGW', 'FYU'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my.php
new file mode 100644
index 00000000..bbdfba40
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my.php
@@ -0,0 +1,70 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ * - Nay Lin Aung
+ */
+return [
+    'year' => '{1}တစ်နှစ်|]1,Inf[:count နှစ်',
+    'y' => ':count နှစ်',
+    'month' => '{1}တစ်လ|]1,Inf[:count လ',
+    'm' => ':count လ',
+    'week' => ':count ပတ်',
+    'w' => ':count ပတ်',
+    'day' => '{1}တစ်ရက်|]1,Inf[:count ရက်',
+    'd' => ':count ရက်',
+    'hour' => '{1}တစ်နာရီ|]1,Inf[:count နာရီ',
+    'h' => ':count နာရီ',
+    'minute' => '{1}တစ်မိနစ်|]1,Inf[:count မိနစ်',
+    'min' => ':count မိနစ်',
+    'second' => '{1}စက္ကန်.အနည်းငယ်|]1,Inf[:count စက္ကန့်',
+    's' => ':count စက္ကန့်',
+    'ago' => 'လွန်ခဲ့သော :time က',
+    'from_now' => 'လာမည့် :time မှာ',
+    'after' => ':time ကြာပြီးနောက်',
+    'before' => ':time မတိုင်ခင်',
+    'diff_now' => 'အခုလေးတင်',
+    'diff_today' => 'ယနေ.',
+    'diff_yesterday' => 'မနေ့က',
+    'diff_yesterday_regexp' => 'မနေ.က',
+    'diff_tomorrow' => 'မနက်ဖြန်',
+    'diff_before_yesterday' => 'တမြန်နေ့က',
+    'diff_after_tomorrow' => 'တဘက်ခါ',
+    'period_recurrences' => ':count ကြိမ်',
+    'formats' => [
+        'LT' => 'Oh:Om A',
+        'LTS' => 'Oh:Om:Os A',
+        'L' => 'OD/OM/OY',
+        'LL' => 'OD MMMM OY',
+        'LLL' => 'OD MMMM OY Oh:Om A',
+        'LLLL' => 'dddd OD MMMM OY Oh:Om A',
+    ],
+    'calendar' => [
+        'sameDay' => '[ယနေ.] LT [မှာ]',
+        'nextDay' => '[မနက်ဖြန်] LT [မှာ]',
+        'nextWeek' => 'dddd LT [မှာ]',
+        'lastDay' => '[မနေ.က] LT [မှာ]',
+        'lastWeek' => '[ပြီးခဲ့သော] dddd LT [မှာ]',
+        'sameElse' => 'L',
+    ],
+    'months' => ['ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'သြဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', 'ဒီဇင်ဘာ'],
+    'months_short' => ['ဇန်', 'ဖေ', 'မတ်', 'ပြီ', 'မေ', 'ဇွန်', 'လိုင်', 'သြ', 'စက်', 'အောက်', 'နို', 'ဒီ'],
+    'weekdays' => ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'],
+    'weekdays_short' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'],
+    'weekdays_min' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'alt_numbers' => ['၀၀', '၀၁', '၀၂', '၀၃', '၀၄', '၀၅', '၀၆', '၀၇', '၀၈', '၀၉', '၁၀', '၁၁', '၁၂', '၁၃', '၁၄', '၁၅', '၁၆', '၁၇', '၁၈', '၁၉', '၂၀', '၂၁', '၂၂', '၂၃', '၂၄', '၂၅', '၂၆', '၂၇', '၂၈', '၂၉', '၃၀', '၃၁', '၃၂', '၃၃', '၃၄', '၃၅', '၃၆', '၃၇', '၃၈', '၃၉', '၄၀', '၄၁', '၄၂', '၄၃', '၄၄', '၄၅', '၄၆', '၄၇', '၄၈', '၄၉', '၅၀', '၅၁', '၅၂', '၅၃', '၅၄', '၅၅', '၅၆', '၅၇', '၅၈', '၅၉', '၆၀', '၆၁', '၆၂', '၆၃', '၆၄', '၆၅', '၆၆', '၆၇', '၆၈', '၆၉', '၇၀', '၇၁', '၇၂', '၇၃', '၇၄', '၇၅', '၇၆', '၇၇', '၇၈', '၇၉', '၈၀', '၈၁', '၈၂', '၈၃', '၈၄', '၈၅', '၈၆', '၈၇', '၈၈', '၈၉', '၉၀', '၉၁', '၉၂', '၉၃', '၉၄', '၉၅', '၉၆', '၉၇', '၉၈', '၉၉'],
+    'meridiem' => ['နံနက်', 'ညနေ'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
new file mode 100644
index 00000000..a0108dd4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/my.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
new file mode 100644
index 00000000..70f5f23c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fa.php', [
+    'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+    'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'],
+    'first_day_of_week' => 6,
+    'weekend' => [5, 5],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan.php
new file mode 100644
index 00000000..0affece8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/nan_TW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
new file mode 100644
index 00000000..5c50aa48
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY年MM月DD日',
+    ],
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'],
+    'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['頂晡', '下晡'],
+
+    'year' => ':count å¹´',
+    'y' => ':count å¹´',
+    'a_year' => ':count å¹´',
+
+    'month' => ':count goe̍h',
+    'm' => ':count goe̍h',
+    'a_month' => ':count goe̍h',
+
+    'week' => ':count lé-pài',
+    'w' => ':count lé-pài',
+    'a_week' => ':count lé-pài',
+
+    'day' => ':count æ—¥',
+    'd' => ':count æ—¥',
+    'a_day' => ':count æ—¥',
+
+    'hour' => ':count tiám-cheng',
+    'h' => ':count tiám-cheng',
+    'a_hour' => ':count tiám-cheng',
+
+    'minute' => ':count Hun-cheng',
+    'min' => ':count Hun-cheng',
+    'a_minute' => ':count Hun-cheng',
+
+    'second' => ':count Bió',
+    's' => ':count Bió',
+    'a_second' => ':count Bió',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
new file mode 100644
index 00000000..99ca2a42
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Arne Goetje arne@canonical.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+    'months' => ['1goe̍h', '2goe̍h', '3goe̍h', '4goe̍h', '5goe̍h', '6goe̍h', '7goe̍h', '8goe̍h', '9goe̍h', '10goe̍h', '11goe̍h', '12goe̍h'],
+    'months_short' => ['1g', '2g', '3g', '4g', '5g', '6g', '7g', '8g', '9g', '10g', '11g', '12g'],
+    'weekdays' => ['lé-pài-ji̍t', 'pài-it', 'pài-jī', 'pài-saⁿ', 'pài-sì', 'pài-gō͘', 'pài-la̍k'],
+    'weekdays_short' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'],
+    'weekdays_min' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['téng-po͘', 'ē-po͘'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/naq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/naq.php
new file mode 100644
index 00000000..fbd9be91
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/naq.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['ǁgoagas', 'ǃuias'],
+    'weekdays' => ['Sontaxtsees', 'Mantaxtsees', 'Denstaxtsees', 'Wunstaxtsees', 'Dondertaxtsees', 'Fraitaxtsees', 'Satertaxtsees'],
+    'weekdays_short' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'],
+    'weekdays_min' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'],
+    'months' => ['ǃKhanni', 'ǃKhanǀgôab', 'ǀKhuuǁkhâb', 'ǃHôaǂkhaib', 'ǃKhaitsâb', 'Gamaǀaeb', 'ǂKhoesaob', 'Aoǁkhuumûǁkhâb', 'Taraǀkhuumûǁkhâb', 'ǂNûǁnâiseb', 'ǀHooǂgaeb', 'Hôasoreǁkhâb'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm a',
+    ],
+
+    'year' => ':count kurigu',
+    'y' => ':count kurigu',
+    'a_year' => ':count kurigu',
+
+    'month' => ':count ǁaub', // less reliable
+    'm' => ':count ǁaub', // less reliable
+    'a_month' => ':count ǁaub', // less reliable
+
+    'week' => ':count hû', // less reliable
+    'w' => ':count hû', // less reliable
+    'a_week' => ':count hû', // less reliable
+
+    'day' => ':count ǀhobas', // less reliable
+    'd' => ':count ǀhobas', // less reliable
+    'a_day' => ':count ǀhobas', // less reliable
+
+    'hour' => ':count Ç‚gaes', // less reliable
+    'h' => ':count Ç‚gaes', // less reliable
+    'a_hour' => ':count Ç‚gaes', // less reliable
+
+    'minute' => ':count minutga', // less reliable
+    'min' => ':count minutga', // less reliable
+    'a_minute' => ':count minutga', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb.php
new file mode 100644
index 00000000..371ee840
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Alexander Tømmerås
+ * - Sigurd Gartmann
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count år|:count år',
+    'a_year' => 'ett år|:count år',
+    'y' => ':count år|:count år',
+    'month' => ':count måned|:count måneder',
+    'a_month' => 'en måned|:count måneder',
+    'm' => ':count md.',
+    'week' => ':count uke|:count uker',
+    'a_week' => 'en uke|:count uker',
+    'w' => ':count u.',
+    'day' => ':count dag|:count dager',
+    'a_day' => 'en dag|:count dager',
+    'd' => ':count d.',
+    'hour' => ':count time|:count timer',
+    'a_hour' => 'en time|:count timer',
+    'h' => ':count t',
+    'minute' => ':count minutt|:count minutter',
+    'a_minute' => 'ett minutt|:count minutter',
+    'min' => ':count min',
+    'second' => ':count sekund|:count sekunder',
+    'a_second' => 'noen sekunder|:count sekunder',
+    's' => ':count sek',
+    'ago' => ':time siden',
+    'from_now' => 'om :time',
+    'after' => ':time etter',
+    'before' => ':time før',
+    'diff_now' => 'akkurat nå',
+    'diff_today' => 'i dag',
+    'diff_today_regexp' => 'i dag(?:\\s+kl.)?',
+    'diff_yesterday' => 'i går',
+    'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?',
+    'diff_tomorrow' => 'i morgen',
+    'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?',
+    'diff_before_yesterday' => 'i forgårs',
+    'diff_after_tomorrow' => 'i overmorgen',
+    'period_recurrences' => 'en gang|:count ganger',
+    'period_interval' => 'hver :interval',
+    'period_start_date' => 'fra :date',
+    'period_end_date' => 'til :date',
+    'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'],
+    'weekdays_short' => ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'],
+    'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'],
+    'ordinal' => ':number.',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY [kl.] HH:mm',
+        'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[i dag kl.] LT',
+        'nextDay' => '[i morgen kl.] LT',
+        'nextWeek' => 'dddd [kl.] LT',
+        'lastDay' => '[i går kl.] LT',
+        'lastWeek' => '[forrige] dddd [kl.] LT',
+        'sameElse' => 'L',
+    ],
+    'list' => [', ', ' og '],
+    'meridiem' => ['a.m.', 'p.m.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
new file mode 100644
index 00000000..31678c53
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nb.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
new file mode 100644
index 00000000..ce0210bc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/nb.php', [
+    'formats' => [
+        'LL' => 'D. MMM YYYY',
+        'LLL' => 'D. MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd D. MMMM YYYY, HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nd.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nd.php
new file mode 100644
index 00000000..f75d9a71
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nd.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Sonto', 'Mvulo', 'Sibili', 'Sithathu', 'Sine', 'Sihlanu', 'Mgqibelo'],
+    'weekdays_short' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'],
+    'weekdays_min' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'],
+    'months' => ['Zibandlela', 'Nhlolanja', 'Mbimbitho', 'Mabasa', 'Nkwenkwezi', 'Nhlangula', 'Ntulikazi', 'Ncwabakazi', 'Mpandula', 'Mfumfu', 'Lwezi', 'Mpalakazi'],
+    'months_short' => ['Zib', 'Nhlo', 'Mbi', 'Mab', 'Nkw', 'Nhla', 'Ntu', 'Ncw', 'Mpan', 'Mfu', 'Lwe', 'Mpal'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+
+    'year' => 'okweminyaka engu-:count', // less reliable
+    'y' => 'okweminyaka engu-:count', // less reliable
+    'a_year' => 'okweminyaka engu-:count', // less reliable
+
+    'month' => 'inyanga ezingu-:count',
+    'm' => 'inyanga ezingu-:count',
+    'a_month' => 'inyanga ezingu-:count',
+
+    'week' => 'amaviki angu-:count',
+    'w' => 'amaviki angu-:count',
+    'a_week' => 'amaviki angu-:count',
+
+    'day' => 'kwamalanga angu-:count',
+    'd' => 'kwamalanga angu-:count',
+    'a_day' => 'kwamalanga angu-:count',
+
+    'hour' => 'amahola angu-:count',
+    'h' => 'amahola angu-:count',
+    'a_hour' => 'amahola angu-:count',
+
+    'minute' => 'imizuzu engu-:count',
+    'min' => 'imizuzu engu-:count',
+    'a_minute' => 'imizuzu engu-:count',
+
+    'second' => 'imizuzwana engu-:count',
+    's' => 'imizuzwana engu-:count',
+    'a_second' => 'imizuzwana engu-:count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds.php
new file mode 100644
index 00000000..c0b3775e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/nds_DE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
new file mode 100644
index 00000000..a6c57a91
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Jannuaar', 'Feberwaar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],
+    'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
+    'weekdays' => ['Sünndag', 'Maandag', 'Dingsdag', 'Middeweek', 'Dunnersdag', 'Freedag', 'Sünnavend'],
+    'weekdays_short' => ['Sdag', 'Maan', 'Ding', 'Midd', 'Dunn', 'Free', 'Svd.'],
+    'weekdays_min' => ['Sd', 'Ma', 'Di', 'Mi', 'Du', 'Fr', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count Johr',
+    'y' => ':countJ',
+    'a_year' => '{1}een Johr|:count Johr',
+
+    'month' => ':count Maand',
+    'm' => ':countM',
+    'a_month' => '{1}een Maand|:count Maand',
+
+    'week' => ':count Week|:count Weken',
+    'w' => ':countW',
+    'a_week' => '{1}een Week|:count Week|:count Weken',
+
+    'day' => ':count Dag|:count Daag',
+    'd' => ':countD',
+    'a_day' => '{1}een Dag|:count Dag|:count Daag',
+
+    'hour' => ':count Stünn|:count Stünnen',
+    'h' => ':countSt',
+    'a_hour' => '{1}een Stünn|:count Stünn|:count Stünnen',
+
+    'minute' => ':count Minuut|:count Minuten',
+    'min' => ':countm',
+    'a_minute' => '{1}een Minuut|:count Minuut|:count Minuten',
+
+    'second' => ':count Sekunn|:count Sekunnen',
+    's' => ':counts',
+    'a_second' => 'en poor Sekunnen|:count Sekunn|:count Sekunnen',
+
+    'ago' => 'vör :time',
+    'from_now' => 'in :time',
+    'before' => ':time vörher',
+    'after' => ':time later',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
new file mode 100644
index 00000000..de2c57bc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'],
+    'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'],
+    'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'],
+    'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
+    'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne.php
new file mode 100644
index 00000000..d4caf0e2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - nootanghimire
+ * - Josh Soref
+ * - Nj Subedi
+ * - JD Isaacks
+ */
+return [
+    'year' => 'एक बर्ष|:count बर्ष',
+    'y' => ':count वर्ष',
+    'month' => 'एक महिना|:count महिना',
+    'm' => ':count महिना',
+    'week' => ':count हप्ता',
+    'w' => ':count हप्ता',
+    'day' => 'एक दिन|:count दिन',
+    'd' => ':count दिन',
+    'hour' => 'एक घण्टा|:count घण्टा',
+    'h' => ':count घण्टा',
+    'minute' => 'एक मिनेट|:count मिनेट',
+    'min' => ':count मिनेट',
+    'second' => 'केही क्षण|:count सेकेण्ड',
+    's' => ':count सेकेण्ड',
+    'ago' => ':time अगाडि',
+    'from_now' => ':timeमा',
+    'after' => ':time पछि',
+    'before' => ':time अघि',
+    'diff_now' => 'अहिले',
+    'diff_today' => 'आज',
+    'diff_yesterday' => 'हिजो',
+    'diff_tomorrow' => 'भोलि',
+    'formats' => [
+        'LT' => 'Aको h:mm बजे',
+        'LTS' => 'Aको h:mm:ss बजे',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, Aको h:mm बजे',
+        'LLLL' => 'dddd, D MMMM YYYY, Aको h:mm बजे',
+    ],
+    'calendar' => [
+        'sameDay' => '[आज] LT',
+        'nextDay' => '[भोलि] LT',
+        'nextWeek' => '[आउँदो] dddd[,] LT',
+        'lastDay' => '[हिजो] LT',
+        'lastWeek' => '[गएको] dddd[,] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 3) {
+            return 'राति';
+        }
+        if ($hour < 12) {
+            return 'बिहान';
+        }
+        if ($hour < 16) {
+            return 'दिउँसो';
+        }
+        if ($hour < 20) {
+            return 'साँझ';
+        }
+
+        return 'राति';
+    },
+    'months' => ['जनवरी', 'फेब्रुवरी', 'मार्च', 'अप्रिल', 'मई', 'जुन', 'जुलाई', 'अगष्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
+    'months_short' => ['जन.', 'फेब्रु.', 'मार्च', 'अप्रि.', 'मई', 'जुन', 'जुलाई.', 'अग.', 'सेप्ट.', 'अक्टो.', 'नोभे.', 'डिसे.'],
+    'weekdays' => ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'],
+    'weekdays_short' => ['आइत.', 'सोम.', 'मङ्गल.', 'बुध.', 'बिहि.', 'शुक्र.', 'शनि.'],
+    'weekdays_min' => ['आ.', 'सो.', 'मं.', 'बु.', 'बि.', 'शु.', 'श.'],
+    'list' => [', ', ' र '],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
new file mode 100644
index 00000000..f68d00e3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ne.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'yy/M/d',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D, h:mm a',
+        'LLLL' => 'YYYY MMMM D, dddd, h:mm a',
+    ],
+    'months' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
+    'months_short' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'],
+    'weekend' => [0, 0],
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
new file mode 100644
index 00000000..27840c0f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ne.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
new file mode 100644
index 00000000..5a858315
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/nhn_MX.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
new file mode 100644
index 00000000..9db88a12
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'],
+    'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'],
+    'weekdays' => ['teoilhuitl', 'ceilhuitl', 'omeilhuitl', 'yeilhuitl', 'nahuilhuitl', 'macuililhuitl', 'chicuaceilhuitl'],
+    'weekdays_short' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'],
+    'weekdays_min' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'],
+    'day_of_first_week_of_year' => 1,
+
+    'month' => ':count metztli', // less reliable
+    'm' => ':count metztli', // less reliable
+    'a_month' => ':count metztli', // less reliable
+
+    'week' => ':count tonalli', // less reliable
+    'w' => ':count tonalli', // less reliable
+    'a_week' => ':count tonalli', // less reliable
+
+    'day' => ':count tonatih', // less reliable
+    'd' => ':count tonatih', // less reliable
+    'a_day' => ':count tonatih', // less reliable
+
+    'minute' => ':count toltecayotl', // less reliable
+    'min' => ':count toltecayotl', // less reliable
+    'a_minute' => ':count toltecayotl', // less reliable
+
+    'second' => ':count ome', // less reliable
+    's' => ':count ome', // less reliable
+    'a_second' => ':count ome', // less reliable
+
+    'year' => ':count xihuitl',
+    'y' => ':count xihuitl',
+    'a_year' => ':count xihuitl',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu.php
new file mode 100644
index 00000000..bd9be8aa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/niu_NU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
new file mode 100644
index 00000000..6e7a697b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RockET Systems Emani Fakaotimanava-Lui emani@niue.nu
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Ianuali', 'Fepuali', 'Masi', 'Apelila', 'Me', 'Iuni', 'Iulai', 'Aokuso', 'Sepetema', 'Oketopa', 'Novema', 'Tesemo'],
+    'months_short' => ['Ian', 'Fep', 'Mas', 'Ape', 'Me', 'Iun', 'Iul', 'Aok', 'Sep', 'Oke', 'Nov', 'Tes'],
+    'weekdays' => ['Aho Tapu', 'Aho Gofua', 'Aho Ua', 'Aho Lotu', 'Aho Tuloto', 'Aho Falaile', 'Aho Faiumu'],
+    'weekdays_short' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'],
+    'weekdays_min' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count tau',
+    'y' => ':count tau',
+    'a_year' => ':count tau',
+
+    'month' => ':count mahina',
+    'm' => ':count mahina',
+    'a_month' => ':count mahina',
+
+    'week' => ':count faahi tapu',
+    'w' => ':count faahi tapu',
+    'a_week' => ':count faahi tapu',
+
+    'day' => ':count aho',
+    'd' => ':count aho',
+    'a_day' => ':count aho',
+
+    'hour' => ':count e tulā',
+    'h' => ':count e tulā',
+    'a_hour' => ':count e tulā',
+
+    'minute' => ':count minuti',
+    'min' => ':count minuti',
+    'a_minute' => ':count minuti',
+
+    'second' => ':count sekone',
+    's' => ':count sekone',
+    'a_second' => ':count sekone',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl.php
new file mode 100644
index 00000000..2d737703
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Roy
+ * - Stephan
+ * - François B
+ * - Tim Fish
+ * - Kevin Huang
+ * - Jacob Middag
+ * - JD Isaacks
+ * - Roy
+ * - Stephan
+ * - François B
+ * - Tim Fish
+ * - Jacob Middag
+ * - JD Isaacks
+ * - Propaganistas
+ * - MegaXLR
+ * - adriaanzon
+ * - MonkeyPhysics
+ * - JeroenG
+ * - RikSomers
+ * - proclame
+ * - Rik de Groot (hwdegroot)
+ */
+return [
+    'year' => ':count jaar|:count jaar',
+    'a_year' => 'een jaar|:count jaar',
+    'y' => ':countj',
+    'month' => ':count maand|:count maanden',
+    'a_month' => 'een maand|:count maanden',
+    'm' => ':countmnd',
+    'week' => ':count week|:count weken',
+    'a_week' => 'een week|:count weken',
+    'w' => ':countw',
+    'day' => ':count dag|:count dagen',
+    'a_day' => 'een dag|:count dagen',
+    'd' => ':countd',
+    'hour' => ':count uur|:count uur',
+    'a_hour' => 'een uur|:count uur',
+    'h' => ':countu',
+    'minute' => ':count minuut|:count minuten',
+    'a_minute' => 'een minuut|:count minuten',
+    'min' => ':countmin',
+    'second' => ':count seconde|:count seconden',
+    'a_second' => 'een paar seconden|:count seconden',
+    's' => ':counts',
+    'ago' => ':time geleden',
+    'from_now' => 'over :time',
+    'after' => ':time later',
+    'before' => ':time eerder',
+    'diff_now' => 'nu',
+    'diff_today' => 'vandaag',
+    'diff_today_regexp' => 'vandaag(?:\\s+om)?',
+    'diff_yesterday' => 'gisteren',
+    'diff_yesterday_regexp' => 'gisteren(?:\\s+om)?',
+    'diff_tomorrow' => 'morgen',
+    'diff_tomorrow_regexp' => 'morgen(?:\\s+om)?',
+    'diff_after_tomorrow' => 'overmorgen',
+    'diff_before_yesterday' => 'eergisteren',
+    'period_recurrences' => ':count keer',
+    'period_interval' => function (string $interval = '') {
+        /** @var string $output */
+        $output = preg_replace('/^(een|één|1)\s+/u', '', $interval);
+
+        if (preg_match('/^(een|één|1)( jaar|j| uur|u)/u', $interval)) {
+            return "elk $output";
+        }
+
+        return "elke $output";
+    },
+    'period_start_date' => 'van :date',
+    'period_end_date' => 'tot :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD-MM-YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[vandaag om] LT',
+        'nextDay' => '[morgen om] LT',
+        'nextWeek' => 'dddd [om] LT',
+        'lastDay' => '[gisteren om] LT',
+        'lastWeek' => '[afgelopen] dddd [om] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de');
+    },
+    'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'mmm_suffix' => '.',
+    'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+    'weekdays_short' => ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'],
+    'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' en '],
+    'meridiem' => ['\'s ochtends', '\'s middags'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
new file mode 100644
index 00000000..5ec136d1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Free Software Foundation, Inc.    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/nl.php', [
+    'formats' => [
+        'L' => 'DD-MM-YY',
+    ],
+    'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+    'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+    'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
new file mode 100644
index 00000000..037f5b4a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Roy
+ * - Stephan
+ * - François B
+ * - Tim Fish
+ * - Kevin Huang
+ * - Jacob Middag
+ * - JD Isaacks
+ * - Propaganistas
+ */
+return array_replace_recursive(require __DIR__.'/nl.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
new file mode 100644
index 00000000..c269197b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
new file mode 100644
index 00000000..c269197b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
new file mode 100644
index 00000000..14e4853e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php
@@ -0,0 +1,24 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/nl.php', [
+    'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
+    'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+    'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
new file mode 100644
index 00000000..c269197b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
new file mode 100644
index 00000000..c269197b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
new file mode 100644
index 00000000..4d1df6e5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['maná', 'kugú'],
+    'weekdays' => ['sɔ́ndɔ', 'mɔ́ndɔ', 'sɔ́ndɔ mafú mába', 'sɔ́ndɔ mafú málal', 'sɔ́ndɔ mafú mána', 'mabágá má sukul', 'sásadi'],
+    'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'],
+    'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'],
+    'months' => ['ngwɛn matáhra', 'ngwɛn ńmba', 'ngwɛn ńlal', 'ngwɛn ńna', 'ngwɛn ńtan', 'ngwɛn ńtuó', 'ngwɛn hɛmbuɛrí', 'ngwɛn lɔmbi', 'ngwɛn rɛbvuâ', 'ngwɛn wum', 'ngwɛn wum navǔr', 'krísimin'],
+    'months_short' => ['ng1', 'ng2', 'ng3', 'ng4', 'ng5', 'ng6', 'ng7', 'ng8', 'ng9', 'ng10', 'ng11', 'kris'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn.php
new file mode 100644
index 00000000..041f7b29
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Alexander Tømmerås
+ * - Øystein
+ * - JD Isaacks
+ * - Gaute Hvoslef Kvalnes (gaute)
+ */
+return [
+    'year' => ':count år',
+    'a_year' => 'eit år|:count år',
+    'y' => ':count år',
+    'month' => ':count månad|:count månader',
+    'a_month' => 'ein månad|:count månader',
+    'm' => ':count md',
+    'week' => ':count veke|:count veker',
+    'a_week' => 'ei veke|:count veker',
+    'w' => ':countv',
+    'day' => ':count dag|:count dagar',
+    'a_day' => 'ein dag|:count dagar',
+    'd' => ':countd',
+    'hour' => ':count time|:count timar',
+    'a_hour' => 'ein time|:count timar',
+    'h' => ':countt',
+    'minute' => ':count minutt',
+    'a_minute' => 'eit minutt|:count minutt',
+    'min' => ':countm',
+    'second' => ':count sekund',
+    'a_second' => 'nokre sekund|:count sekund',
+    's' => ':counts',
+    'ago' => ':time sidan',
+    'from_now' => 'om :time',
+    'after' => ':time etter',
+    'before' => ':time før',
+    'diff_today' => 'I dag',
+    'diff_yesterday' => 'I går',
+    'diff_yesterday_regexp' => 'I går(?:\\s+klokka)?',
+    'diff_tomorrow' => 'I morgon',
+    'diff_tomorrow_regexp' => 'I morgon(?:\\s+klokka)?',
+    'diff_today_regexp' => 'I dag(?:\\s+klokka)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY [kl.] H:mm',
+        'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[I dag klokka] LT',
+        'nextDay' => '[I morgon klokka] LT',
+        'nextWeek' => 'dddd [klokka] LT',
+        'lastDay' => '[I går klokka] LT',
+        'lastWeek' => '[Føregåande] dddd [klokka] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'],
+    'weekdays' => ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'],
+    'weekdays_short' => ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'lau'],
+    'weekdays_min' => ['su', 'må', 'ty', 'on', 'to', 'fr', 'la'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' og '],
+    'meridiem' => ['f.m.', 'e.m.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
new file mode 100644
index 00000000..8e168711
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/nn.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
new file mode 100644
index 00000000..007d2399
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['mbaʼámbaʼ', 'ncwònzém'],
+    'weekdays' => null,
+    'weekdays_short' => ['lyɛʼɛ́ sẅíŋtè', 'mvfò lyɛ̌ʼ', 'mbɔ́ɔntè mvfò lyɛ̌ʼ', 'tsètsɛ̀ɛ lyɛ̌ʼ', 'mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ', 'mvfò màga lyɛ̌ʼ', 'màga lyɛ̌ʼ'],
+    'weekdays_min' => null,
+    'months' => null,
+    'months_short' => ['saŋ tsetsɛ̀ɛ lùm', 'saŋ kàg ngwóŋ', 'saŋ lepyè shúm', 'saŋ cÿó', 'saŋ tsɛ̀ɛ cÿó', 'saŋ njÿoláʼ', 'saŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ', 'saŋ mbʉ̀ŋ', 'saŋ ngwɔ̀ʼ mbÿɛ', 'saŋ tàŋa tsetsáʼ', 'saŋ mejwoŋó', 'saŋ lùm'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/yy',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => '[lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm',
+        'LLLL' => 'dddd , [lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/no.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/no.php
new file mode 100644
index 00000000..f4497c75
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/no.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Daniel S. Billing
+ * - Paul
+ * - Jimmie Johansson
+ * - Jens Herlevsen
+ */
+return array_replace_recursive(require __DIR__.'/nb.php', [
+    'formats' => [
+        'LLL' => 'D. MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY [kl.] HH:mm',
+    ],
+    'calendar' => [
+        'nextWeek' => 'på dddd [kl.] LT',
+        'lastWeek' => '[i] dddd[s kl.] LT',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr.php
new file mode 100644
index 00000000..1bc999f9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/nr_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
new file mode 100644
index 00000000..f9a7be82
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Janabari', 'uFeberbari', 'uMatjhi', 'u-Apreli', 'Meyi', 'Juni', 'Julayi', 'Arhostosi', 'Septemba', 'Oktoba', 'Usinyikhaba', 'Disemba'],
+    'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mey', 'Jun', 'Jul', 'Arh', 'Sep', 'Okt', 'Usi', 'Dis'],
+    'weekdays' => ['uSonto', 'uMvulo', 'uLesibili', 'lesithathu', 'uLesine', 'ngoLesihlanu', 'umGqibelo'],
+    'weekdays_short' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'],
+    'weekdays_min' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso.php
new file mode 100644
index 00000000..2a6cabbf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/nso_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
new file mode 100644
index 00000000..b08fe6dc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Janaware', 'Febereware', 'Matšhe', 'Aprele', 'Mei', 'June', 'Julae', 'Agostose', 'Setemere', 'Oktobere', 'Nofemere', 'Disemere'],
+    'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Set', 'Okt', 'Nof', 'Dis'],
+    'weekdays' => ['LaMorena', 'Mošupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Mokibelo'],
+    'weekdays_short' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'],
+    'weekdays_min' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count ngwaga',
+    'y' => ':count ngwaga',
+    'a_year' => ':count ngwaga',
+
+    'month' => ':count Kgwedi',
+    'm' => ':count Kgwedi',
+    'a_month' => ':count Kgwedi',
+
+    'week' => ':count Beke',
+    'w' => ':count Beke',
+    'a_week' => ':count Beke',
+
+    'day' => ':count Letšatši',
+    'd' => ':count Letšatši',
+    'a_day' => ':count Letšatši',
+
+    'hour' => ':count Iri',
+    'h' => ':count Iri',
+    'a_hour' => ':count Iri',
+
+    'minute' => ':count Motsotso',
+    'min' => ':count Motsotso',
+    'a_minute' => ':count Motsotso',
+
+    'second' => ':count motsotswana',
+    's' => ':count motsotswana',
+    'a_second' => ':count motsotswana',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nus.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nus.php
new file mode 100644
index 00000000..789bc391
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nus.php
@@ -0,0 +1,36 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['RW', 'TÅŠ'],
+    'weekdays' => ['Cäŋ kuɔth', 'Jiec la̱t', 'Rɛw lätni', 'Diɔ̱k lätni', 'Ŋuaan lätni', 'Dhieec lätni', 'Bäkɛl lätni'],
+    'weekdays_short' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'],
+    'weekdays_min' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'],
+    'months' => ['Tiop thar pɛt', 'Pɛt', 'Duɔ̱ɔ̱ŋ', 'Guak', 'Duät', 'Kornyoot', 'Pay yie̱tni', 'Tho̱o̱r', 'Tɛɛr', 'Laath', 'Kur', 'Tio̱p in di̱i̱t'],
+    'months_short' => ['Tiop', 'Pɛt', 'Duɔ̱ɔ̱', 'Guak', 'Duä', 'Kor', 'Pay', 'Thoo', 'Tɛɛ', 'Laa', 'Kur', 'Tid'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd D MMMM YYYY h:mm a',
+    ],
+
+    'year' => ':count jiök', // less reliable
+    'y' => ':count jiök', // less reliable
+    'a_year' => ':count jiök', // less reliable
+
+    'month' => ':count pay', // less reliable
+    'm' => ':count pay', // less reliable
+    'a_month' => ':count pay', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
new file mode 100644
index 00000000..8660ea42
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'],
+    'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
+    'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'],
+    'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'],
+    'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc.php
new file mode 100644
index 00000000..89693e67
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc.php
@@ -0,0 +1,100 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Quentí
+ */
+// @codeCoverageIgnoreStart
+use Symfony\Component\Translation\PluralizationRules;
+
+if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
+    PluralizationRules::set(function ($number) {
+        return $number == 1 ? 0 : 1;
+    }, 'oc');
+}
+// @codeCoverageIgnoreEnd
+
+return [
+    'year' => ':count an|:count ans',
+    'a_year' => 'un an|:count ans',
+    'y' => ':count an|:count ans',
+    'month' => ':count mes|:count meses',
+    'a_month' => 'un mes|:count meses',
+    'm' => ':count mes|:count meses',
+    'week' => ':count setmana|:count setmanas',
+    'a_week' => 'una setmana|:count setmanas',
+    'w' => ':count setmana|:count setmanas',
+    'day' => ':count jorn|:count jorns',
+    'a_day' => 'un jorn|:count jorns',
+    'd' => ':count jorn|:count jorns',
+    'hour' => ':count ora|:count oras',
+    'a_hour' => 'una ora|:count oras',
+    'h' => ':count ora|:count oras',
+    'minute' => ':count minuta|:count minutas',
+    'a_minute' => 'una minuta|:count minutas',
+    'min' => ':count minuta|:count minutas',
+    'second' => ':count segonda|:count segondas',
+    'a_second' => 'una segonda|:count segondas',
+    's' => ':count segonda|:count segondas',
+    'ago' => 'fa :time',
+    'from_now' => 'd\'aquí :time',
+    'after' => ':time aprèp',
+    'before' => ':time abans',
+    'diff_now' => 'ara meteis',
+    'diff_today' => 'Uèi',
+    'diff_today_regexp' => 'Uèi(?:\\s+a)?',
+    'diff_yesterday' => 'ièr',
+    'diff_yesterday_regexp' => 'Ièr(?:\\s+a)?',
+    'diff_tomorrow' => 'deman',
+    'diff_tomorrow_regexp' => 'Deman(?:\\s+a)?',
+    'diff_before_yesterday' => 'ièr delà',
+    'diff_after_tomorrow' => 'deman passat',
+    'period_recurrences' => ':count còp|:count còps',
+    'period_interval' => 'cada :interval',
+    'period_start_date' => 'de :date',
+    'period_end_date' => 'fins a :date',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM [de] YYYY',
+        'LLL' => 'D MMMM [de] YYYY [a] H:mm',
+        'LLLL' => 'dddd D MMMM [de] YYYY [a] H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Uèi a] LT',
+        'nextDay' => '[Deman a] LT',
+        'nextWeek' => 'dddd [a] LT',
+        'lastDay' => '[Ièr a] LT',
+        'lastWeek' => 'dddd [passat a] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['de genièr', 'de febrièr', 'de març', 'd\'abrial', 'de mai', 'de junh', 'de julhet', 'd\'agost', 'de setembre', 'd’octòbre', 'de novembre', 'de decembre'],
+    'months_standalone' => ['genièr', 'febrièr', 'març', 'abrial', 'mai', 'junh', 'julh', 'agost', 'setembre', 'octòbre', 'novembre', 'decembre'],
+    'months_short' => ['gen.', 'feb.', 'març', 'abr.', 'mai', 'junh', 'julh', 'ago.', 'sep.', 'oct.', 'nov.', 'dec.'],
+    'weekdays' => ['dimenge', 'diluns', 'dimars', 'dimècres', 'dijòus', 'divendres', 'dissabte'],
+    'weekdays_short' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'],
+    'weekdays_min' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'],
+    'ordinal' => function ($number, string $period = '') {
+        $ordinal = [1 => 'èr', 2 => 'nd'][(int) $number] ?? 'en';
+
+        // feminine for year, week, hour, minute, second
+        if (preg_match('/^[yYwWhHgGis]$/', $period)) {
+            $ordinal .= 'a';
+        }
+
+        return $number.$ordinal;
+    },
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' e '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
new file mode 100644
index 00000000..01eb5c14
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/oc.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om.php
new file mode 100644
index 00000000..b8d5a0b0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om.php
@@ -0,0 +1,60 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation & Sagalee Oromoo Publishing Co. Inc.    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'dd-MMM-YYYY',
+        'LLL' => 'dd MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, MMMM D, YYYY HH:mm',
+    ],
+    'months' => ['Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee'],
+    'months_short' => ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'],
+    'weekdays' => ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'],
+    'weekdays_short' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'],
+    'weekdays_min' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['WD', 'WB'],
+
+    'year' => 'wggoota :count',
+    'y' => 'wggoota :count',
+    'a_year' => 'wggoota :count',
+
+    'month' => 'ji’a :count',
+    'm' => 'ji’a :count',
+    'a_month' => 'ji’a :count',
+
+    'week' => 'torban :count',
+    'w' => 'torban :count',
+    'a_week' => 'torban :count',
+
+    'day' => 'guyyaa :count',
+    'd' => 'guyyaa :count',
+    'a_day' => 'guyyaa :count',
+
+    'hour' => 'saʼaatii :count',
+    'h' => 'saʼaatii :count',
+    'a_hour' => 'saʼaatii :count',
+
+    'minute' => 'daqiiqaa :count',
+    'min' => 'daqiiqaa :count',
+    'a_minute' => 'daqiiqaa :count',
+
+    'second' => 'sekoondii :count',
+    's' => 'sekoondii :count',
+    'a_second' => 'sekoondii :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
new file mode 100644
index 00000000..044760e3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/om.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
new file mode 100644
index 00000000..f5a4d1c9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/om.php', [
+    'day_of_first_week_of_year' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or.php
new file mode 100644
index 00000000..3aa71732
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/or_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
new file mode 100644
index 00000000..57a89f5d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM AP Linux Technology Center, Yamato Software Laboratory    bug-glibc@gnu.org
+ */
+return [
+    'diff_now' => 'ବର୍ତ୍ତମାନ',
+    'diff_yesterday' => 'ଗତକାଲି',
+    'diff_tomorrow' => 'ଆସନ୍ତାକାଲି',
+    'formats' => [
+        'LT' => 'Oh:Om A',
+        'LTS' => 'Oh:Om:Os A',
+        'L' => 'OD-OM-OY',
+        'LL' => 'OD MMMM OY',
+        'LLL' => 'OD MMMM OY Oh:Om A',
+        'LLLL' => 'dddd OD MMMM OY Oh:Om A',
+    ],
+    'months' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'],
+    'months_short' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'],
+    'weekdays' => ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'],
+    'weekdays_short' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'],
+    'weekdays_min' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'],
+    'day_of_first_week_of_year' => 1,
+    'alt_numbers' => ['୦', '୧', '୨', '୩', '୪', '୫', '୬', '୭', '୮', '୯', '୧୦', '୧୧', '୧୨', '୧୩', '୧୪', '୧୫', '୧୬', '୧୭', '୧୮', '୧୯', '୨୦', '୨୧', '୨୨', '୨୩', '୨୪', '୨୫', '୨୬', '୨୭', '୨୮', '୨୯', '୩୦', '୩୧', '୩୨', '୩୩', '୩୪', '୩୫', '୩୬', '୩୭', '୩୮', '୩୯', '୪୦', '୪୧', '୪୨', '୪୩', '୪୪', '୪୫', '୪୬', '୪୭', '୪୮', '୪୯', '୫୦', '୫୧', '୫୨', '୫୩', '୫୪', '୫୫', '୫୬', '୫୭', '୫୮', '୫୯', '୬୦', '୬୧', '୬୨', '୬୩', '୬୪', '୬୫', '୬୬', '୬୭', '୬୮', '୬୯', '୭୦', '୭୧', '୭୨', '୭୩', '୭୪', '୭୫', '୭୬', '୭୭', '୭୮', '୭୯', '୮୦', '୮୧', '୮୨', '୮୩', '୮୪', '୮୫', '୮୬', '୮୭', '୮୮', '୮୯', '୯୦', '୯୧', '୯୨', '୯୩', '୯୪', '୯୫', '୯୬', '୯୭', '୯୮', '୯୯'],
+    'year' => ':count ବର୍ଷ',
+    'y' => ':count ବ.',
+    'month' => ':count ମାସ',
+    'm' => ':count ମା.',
+    'week' => ':count ସପ୍ତାହ',
+    'w' => ':count ସପ୍ତା.',
+    'day' => ':count ଦିନ',
+    'd' => ':count ଦିନ',
+    'hour' => ':count ଘଣ୍ତ',
+    'h' => ':count ଘ.',
+    'minute' => ':count ମିନଟ',
+    'min' => ':count ମି.',
+    'second' => ':count ସେକଣ୍ଢ',
+    's' => ':count ସେ.',
+    'ago' => ':time ପୂର୍ବେ',
+    'from_now' => ':timeରେ',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os.php
new file mode 100644
index 00000000..5f55e8a2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/os_RU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
new file mode 100644
index 00000000..9592d15d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', 'октябры', 'ноябры', 'декабры'],
+    'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
+    'weekdays' => ['Хуыцаубон', 'Къуырисæр', 'Дыццæг', 'Æртыццæг', 'Цыппæрæм', 'Майрæмбон', 'Сабат'],
+    'weekdays_short' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'],
+    'weekdays_min' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'minute' => ':count гыццыл', // less reliable
+    'min' => ':count гыццыл', // less reliable
+    'a_minute' => ':count гыццыл', // less reliable
+
+    'second' => ':count æндæр', // less reliable
+    's' => ':count æндæр', // less reliable
+    'a_second' => ':count æндæр', // less reliable
+
+    'year' => ':count аз',
+    'y' => ':count аз',
+    'a_year' => ':count аз',
+
+    'month' => ':count мӕй',
+    'm' => ':count мӕй',
+    'a_month' => ':count мӕй',
+
+    'week' => ':count къуыри',
+    'w' => ':count къуыри',
+    'a_week' => ':count къуыри',
+
+    'day' => ':count бон',
+    'd' => ':count бон',
+    'a_day' => ':count бон',
+
+    'hour' => ':count сахат',
+    'h' => ':count сахат',
+    'a_hour' => ':count сахат',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa.php
new file mode 100644
index 00000000..48b20331
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - Punjab
+ */
+return [
+    'year' => 'ਇੱਕ ਸਾਲ|:count ਸਾਲ',
+    'month' => 'ਇੱਕ ਮਹੀਨਾ|:count ਮਹੀਨੇ',
+    'week' => 'ਹਫਤਾ|:count ਹਫ਼ਤੇ',
+    'day' => 'ਇੱਕ ਦਿਨ|:count ਦਿਨ',
+    'hour' => 'ਇੱਕ ਘੰਟਾ|:count ਘੰਟੇ',
+    'minute' => 'ਇਕ ਮਿੰਟ|:count ਮਿੰਟ',
+    'second' => 'ਕੁਝ ਸਕਿੰਟ|:count ਸਕਿੰਟ',
+    'ago' => ':time ਪਹਿਲਾਂ',
+    'from_now' => ':time ਵਿੱਚ',
+    'before' => ':time ਤੋਂ ਪਹਿਲਾਂ',
+    'after' => ':time ਤੋਂ ਬਾਅਦ',
+    'diff_now' => 'ਹੁਣ',
+    'diff_today' => 'ਅਜ',
+    'diff_yesterday' => 'ਕਲ',
+    'diff_tomorrow' => 'ਕਲ',
+    'formats' => [
+        'LT' => 'A h:mm ਵਜੇ',
+        'LTS' => 'A h:mm:ss ਵਜੇ',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm ਵਜੇ',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
+    ],
+    'calendar' => [
+        'sameDay' => '[ਅਜ] LT',
+        'nextDay' => '[ਕਲ] LT',
+        'nextWeek' => '[ਅਗਲਾ] dddd, LT',
+        'lastDay' => '[ਕਲ] LT',
+        'lastWeek' => '[ਪਿਛਲੇ] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'ਰਾਤ';
+        }
+        if ($hour < 10) {
+            return 'ਸਵੇਰ';
+        }
+        if ($hour < 17) {
+            return 'ਦੁਪਹਿਰ';
+        }
+        if ($hour < 20) {
+            return 'ਸ਼ਾਮ';
+        }
+
+        return 'ਰਾਤ';
+    },
+    'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
+    'months_short' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
+    'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨੀਚਰਵਾਰ'],
+    'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'],
+    'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' ਅਤੇ '],
+    'weekend' => [0, 0],
+    'alt_numbers' => ['੦', '੧', '੨', '੩', '੪', '੫', '੬', '੭', '੮', '੯'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
new file mode 100644
index 00000000..39b06532
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ur.php', [
+    'weekdays' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
+    'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
+    'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'],
+    'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd, DD MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
new file mode 100644
index 00000000..7adff5c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/pa.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D/M/yy',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY, h:mm a',
+    ],
+    'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'],
+    'months_short' => ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'],
+    'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'],
+    'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'],
+    'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'],
+    'weekend' => [0, 0],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
new file mode 100644
index 00000000..ca67642a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Guo Xiang Tan
+ * - Josh Soref
+ * - Ash
+ * - harpreetkhalsagtbit
+ */
+return require __DIR__.'/pa.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
new file mode 100644
index 00000000..f9af11c6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'],
+    'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ص', 'ش'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap.php
new file mode 100644
index 00000000..b4c1706f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return [
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm:ss',
+        'L' => 'DD-MM-YY',
+        'LL' => 'MMMM [di] DD, YYYY',
+        'LLL' => 'DD MMM HH.mm',
+        'LLLL' => 'MMMM DD, YYYY HH.mm',
+    ],
+    'months' => ['yanüari', 'febrüari', 'mart', 'aprel', 'mei', 'yüni', 'yüli', 'ougùstùs', 'sèptèmber', 'oktober', 'novèmber', 'desèmber'],
+    'months_short' => ['yan', 'feb', 'mar', 'apr', 'mei', 'yün', 'yül', 'oug', 'sèp', 'okt', 'nov', 'des'],
+    'weekdays' => ['djadomingo', 'djaluna', 'djamars', 'djawebs', 'djarason', 'djabierne', 'djasabra'],
+    'weekdays_short' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'],
+    'weekdays_min' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'year' => ':count aña',
+    'month' => ':count luna',
+    'week' => ':count siman',
+    'day' => ':count dia',
+    'hour' => ':count ora',
+    'minute' => ':count minüt',
+    'second' => ':count sekònde',
+    'list' => [', ', ' i '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
new file mode 100644
index 00000000..e9a48ffc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return require __DIR__.'/pap.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
new file mode 100644
index 00000000..e9a48ffc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return require __DIR__.'/pap.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
new file mode 100644
index 00000000..f0196c0d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl.php
@@ -0,0 +1,126 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Wacław Jacek
+ * - François B
+ * - Tim Fish
+ * - Serhan Apaydın
+ * - Massimiliano Caniparoli
+ * - JD Isaacks
+ * - Jakub Szwacz
+ * - Jan
+ * - Paul
+ * - damlys
+ * - Marek (marast78)
+ * - Peter (UnrulyNatives)
+ * - Qrzysio
+ * - Jan (aso824)
+ * - diverpl
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count rok|:count lata|:count lat',
+    'a_year' => 'rok|:count lata|:count lat',
+    'y' => ':count r|:count l|:count l',
+    'month' => ':count miesiąc|:count miesiące|:count miesięcy',
+    'a_month' => 'miesiąc|:count miesiące|:count miesięcy',
+    'm' => ':count mies.',
+    'week' => ':count tydzień|:count tygodnie|:count tygodni',
+    'a_week' => 'tydzień|:count tygodnie|:count tygodni',
+    'w' => ':count tyg.',
+    'day' => ':count dzień|:count dni|:count dni',
+    'a_day' => 'dzień|:count dni|:count dni',
+    'd' => ':count d',
+    'hour' => ':count godzina|:count godziny|:count godzin',
+    'a_hour' => 'godzina|:count godziny|:count godzin',
+    'h' => ':count godz.',
+    'minute' => ':count minuta|:count minuty|:count minut',
+    'a_minute' => 'minuta|:count minuty|:count minut',
+    'min' => ':count min',
+    'second' => ':count sekunda|:count sekundy|:count sekund',
+    'a_second' => '{1}kilka sekund|:count sekunda|:count sekundy|:count sekund',
+    's' => ':count sek.',
+    'ago' => ':time temu',
+    'from_now' => static function ($time) {
+        return 'za '.strtr($time, [
+            'godzina' => 'godzinÄ™',
+            'minuta' => 'minutÄ™',
+            'sekunda' => 'sekundÄ™',
+        ]);
+    },
+    'after' => ':time po',
+    'before' => ':time przed',
+    'diff_now' => 'przed chwilÄ…',
+    'diff_today' => 'DziÅ›',
+    'diff_today_regexp' => 'DziÅ›(?:\\s+o)?',
+    'diff_yesterday' => 'wczoraj',
+    'diff_yesterday_regexp' => 'Wczoraj(?:\\s+o)?',
+    'diff_tomorrow' => 'jutro',
+    'diff_tomorrow_regexp' => 'Jutro(?:\\s+o)?',
+    'diff_before_yesterday' => 'przedwczoraj',
+    'diff_after_tomorrow' => 'pojutrze',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[DziÅ› o] LT',
+        'nextDay' => '[Jutro o] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[W niedzielÄ™ o] LT';
+                case 2:
+                    return '[We wtorek o] LT';
+                case 3:
+                    return '[W środę o] LT';
+                case 6:
+                    return '[W sobotÄ™ o] LT';
+                default:
+                    return '[W] dddd [o] LT';
+            }
+        },
+        'lastDay' => '[Wczoraj o] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[W zeszłą niedzielę o] LT';
+                case 3:
+                    return '[W zeszłą środę o] LT';
+                case 6:
+                    return '[W zeszłą sobotę o] LT';
+                default:
+                    return '[W zeszły] dddd [o] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'],
+    'months_standalone' => ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'],
+    'months_short' => ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'],
+    'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'],
+    'weekdays_short' => ['ndz', 'pon', 'wt', 'śr', 'czw', 'pt', 'sob'],
+    'weekdays_min' => ['Nd', 'Pn', 'Wt', 'Åšr', 'Cz', 'Pt', 'So'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' i '],
+    'meridiem' => ['przed południem', 'po południu'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
new file mode 100644
index 00000000..222bcdb4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/prg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/prg.php
new file mode 100644
index 00000000..6e63f4ad
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/prg.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+
+    'year' => ':count meta',
+    'y' => ':count meta',
+    'a_year' => ':count meta',
+
+    'month' => ':count mēniks', // less reliable
+    'm' => ':count mēniks', // less reliable
+    'a_month' => ':count mēniks', // less reliable
+
+    'week' => ':count sawaītin', // less reliable
+    'w' => ':count sawaītin', // less reliable
+    'a_week' => ':count sawaītin', // less reliable
+
+    'day' => ':count di',
+    'd' => ':count di',
+    'a_day' => ':count di',
+
+    'hour' => ':count bruktēt', // less reliable
+    'h' => ':count bruktēt', // less reliable
+    'a_hour' => ':count bruktēt', // less reliable
+
+    'minute' => ':count līkuts', // less reliable
+    'min' => ':count līkuts', // less reliable
+    'a_minute' => ':count līkuts', // less reliable
+
+    'second' => ':count kitan', // less reliable
+    's' => ':count kitan', // less reliable
+    'a_second' => ':count kitan', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
new file mode 100644
index 00000000..a928b28e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Muhammad Nasir Rahimi
+ * - Nassim Nasibullah (spinzar)
+ */
+return [
+    'year' => ':count کال|:count کاله',
+    'y' => ':countکال|:countکاله',
+    'month' => ':count مياشت|:count مياشتي',
+    'm' => ':countمياشت|:countمياشتي',
+    'week' => ':count اونۍ|:count اونۍ',
+    'w' => ':countاونۍ|:countاونۍ',
+    'day' => ':count ورځ|:count ورځي',
+    'd' => ':countورځ|:countورځي',
+    'hour' => ':count ساعت|:count ساعته',
+    'h' => ':countساعت|:countساعته',
+    'minute' => ':count دقيقه|:count دقيقې',
+    'min' => ':countدقيقه|:countدقيقې',
+    'second' => ':count ثانيه|:count ثانيې',
+    's' => ':countثانيه|:countثانيې',
+    'ago' => ':time دمخه',
+    'from_now' => ':time له اوس څخه',
+    'after' => ':time وروسته',
+    'before' => ':time دمخه',
+    'list' => ['، ', ' او '],
+    'meridiem' => ['غ.م.', 'غ.و.'],
+    'weekdays' => ['اتوار', 'ګل', 'نهه', 'شورو', 'زيارت', 'جمعه', 'خالي'],
+    'weekdays_short' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'],
+    'weekdays_min' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'],
+    'months' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_standalone' => ['جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short_standalone' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'first_day_of_week' => 6,
+    'weekend' => [4, 5],
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'YYYY/M/d',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'د YYYY د MMMM D H:mm',
+        'LLLL' => 'dddd د YYYY د MMMM D H:mm',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
new file mode 100644
index 00000000..6ec51804
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ps.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt.php
new file mode 100644
index 00000000..bb6359b1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt.php
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Cassiano Montanari
+ * - Matt Pope
+ * - François B
+ * - Prodis
+ * - JD Isaacks
+ * - Raphael Amorim
+ * - João Magalhães
+ * - victortobias
+ * - Paulo Freitas
+ * - Sebastian Thierer
+ * - Claudson Martins (claudsonm)
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count ano|:count anos',
+    'a_year' => 'um ano|:count anos',
+    'y' => ':counta',
+    'month' => ':count mês|:count meses',
+    'a_month' => 'um mês|:count meses',
+    'm' => ':countm',
+    'week' => ':count semana|:count semanas',
+    'a_week' => 'uma semana|:count semanas',
+    'w' => ':countsem',
+    'day' => ':count dia|:count dias',
+    'a_day' => 'um dia|:count dias',
+    'd' => ':countd',
+    'hour' => ':count hora|:count horas',
+    'a_hour' => 'uma hora|:count horas',
+    'h' => ':counth',
+    'minute' => ':count minuto|:count minutos',
+    'a_minute' => 'um minuto|:count minutos',
+    'min' => ':countmin',
+    'second' => ':count segundo|:count segundos',
+    'a_second' => 'alguns segundos|:count segundos',
+    's' => ':counts',
+    'millisecond' => ':count milissegundo|:count milissegundos',
+    'a_millisecond' => 'um milissegundo|:count milissegundos',
+    'ms' => ':countms',
+    'microsecond' => ':count microssegundo|:count microssegundos',
+    'a_microsecond' => 'um microssegundo|:count microssegundos',
+    'µs' => ':countµs',
+    'ago' => 'há :time',
+    'from_now' => 'em :time',
+    'after' => ':time depois',
+    'before' => ':time antes',
+    'diff_now' => 'agora',
+    'diff_today' => 'Hoje',
+    'diff_today_regexp' => 'Hoje(?:\\s+às)?',
+    'diff_yesterday' => 'ontem',
+    'diff_yesterday_regexp' => 'Ontem(?:\\s+às)?',
+    'diff_tomorrow' => 'amanhã',
+    'diff_tomorrow_regexp' => 'Amanhã(?:\\s+às)?',
+    'diff_before_yesterday' => 'anteontem',
+    'diff_after_tomorrow' => 'depois de amanhã',
+    'period_recurrences' => 'uma vez|:count vezes',
+    'period_interval' => 'cada :interval',
+    'period_start_date' => 'de :date',
+    'period_end_date' => 'até :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D [de] MMMM [de] YYYY',
+        'LLL' => 'D [de] MMMM [de] YYYY HH:mm',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Hoje às] LT',
+        'nextDay' => '[Amanhã às] LT',
+        'nextWeek' => 'dddd [às] LT',
+        'lastDay' => '[Ontem às] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                case 6:
+                    return '[Último] dddd [às] LT';
+                default:
+                    return '[Última] dddd [às] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
+    'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],
+    'weekdays' => ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'],
+    'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
+    'weekdays_min' => ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' e '],
+    'ordinal_words' => [
+        'of' => 'de',
+        'first' => 'primeira',
+        'second' => 'segunda',
+        'third' => 'terceira',
+        'fourth' => 'quarta',
+        'fifth' => 'quinta',
+        'last' => 'última',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
new file mode 100644
index 00000000..e917c5cd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Cassiano Montanari
+ * - Eduardo Dalla Vecchia
+ * - David Rodrigues
+ * - Matt Pope
+ * - François B
+ * - Prodis
+ * - Marlon Maxwel
+ * - JD Isaacks
+ * - Raphael Amorim
+ * - Rafael Raupp
+ * - felipeleite1
+ * - swalker
+ * - Lucas Macedo
+ * - Paulo Freitas
+ * - Sebastian Thierer
+ */
+return array_replace_recursive(require __DIR__.'/pt.php', [
+    'period_recurrences' => 'uma|:count vez',
+    'period_interval' => 'toda :interval',
+    'formats' => [
+        'LLL' => 'D [de] MMMM [de] YYYY [às] HH:mm',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
+    ],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
new file mode 100644
index 00000000..f2b5eab7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/pt.php', [
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'LLL' => 'D [de] MMMM [de] YYYY, h:mm a',
+        'LLLL' => 'dddd, D [de] MMMM [de] YYYY, h:mm a',
+    ],
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
new file mode 100644
index 00000000..fbc0c97b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/pt.php', [
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
new file mode 100644
index 00000000..2a76fc1f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RAP    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/pt.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'],
+    'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'],
+    'weekdays' => ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'],
+    'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
+    'weekdays_min' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
new file mode 100644
index 00000000..22c01ec5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/pt.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu.php
new file mode 100644
index 00000000..65278cd1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/es_UY.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM, YYYY HH:mm',
+    ],
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
new file mode 100644
index 00000000..d5db6bf5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/qu.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
new file mode 100644
index 00000000..d5db6bf5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/qu.php', [
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz.php
new file mode 100644
index 00000000..1640c02f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/quz_PE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
new file mode 100644
index 00000000..d3229189
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['iniru', 'phiwriru', 'marsu', 'awril', 'mayu', 'huniyu', 'huliyu', 'agustu', 'siptiyimri', 'uktuwri', 'nuwiyimri', 'tisiyimri'],
+    'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'hun', 'hul', 'agu', 'sip', 'ukt', 'nuw', 'tis'],
+    'weekdays' => ['tuminku', 'lunis', 'martis', 'miyirkulis', 'juywis', 'wiyirnis', 'sawatu'],
+    'weekdays_short' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'],
+    'weekdays_min' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'],
+    'day_of_first_week_of_year' => 1,
+
+    'minute' => ':count uchuy', // less reliable
+    'min' => ':count uchuy', // less reliable
+    'a_minute' => ':count uchuy', // less reliable
+
+    'year' => ':count wata',
+    'y' => ':count wata',
+    'a_year' => ':count wata',
+
+    'month' => ':count killa',
+    'm' => ':count killa',
+    'a_month' => ':count killa',
+
+    'week' => ':count simana',
+    'w' => ':count simana',
+    'a_week' => ':count simana',
+
+    'day' => ':count pʼunchaw',
+    'd' => ':count pʼunchaw',
+    'a_day' => ':count pʼunchaw',
+
+    'hour' => ':count ura',
+    'h' => ':count ura',
+    'a_hour' => ':count ura',
+
+    'second' => ':count iskay ñiqin',
+    's' => ':count iskay ñiqin',
+    'a_second' => ':count iskay ñiqin',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj.php
new file mode 100644
index 00000000..26138c9b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/raj_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
new file mode 100644
index 00000000..7b4589cd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - meghrajsuthar03@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'],
+    'months_short' => ['जन', 'फर', 'मार्च', 'अप्रै', 'मई', 'जून', 'जुल', 'अग', 'सित', 'अक्टू', 'नव', 'दिस'],
+    'weekdays' => ['रविवार', 'सोमवार', 'मंगल्लवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'],
+    'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+
+    'year' => ':count आंहू', // less reliable
+    'y' => ':count आंहू', // less reliable
+    'a_year' => ':count आंहू', // less reliable
+
+    'month' => ':count सूरज', // less reliable
+    'm' => ':count सूरज', // less reliable
+    'a_month' => ':count सूरज', // less reliable
+
+    'week' => ':count निवाज', // less reliable
+    'w' => ':count निवाज', // less reliable
+    'a_week' => ':count निवाज', // less reliable
+
+    'day' => ':count अेक', // less reliable
+    'd' => ':count अेक', // less reliable
+    'a_day' => ':count अेक', // less reliable
+
+    'hour' => ':count दुनियांण', // less reliable
+    'h' => ':count दुनियांण', // less reliable
+    'a_hour' => ':count दुनियांण', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rm.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rm.php
new file mode 100644
index 00000000..1843f456
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rm.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - tjku
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - Tsutomu Kuroda
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Nicolás Hock Isaza
+ * - sebastian de castelberg
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'Do MMMM YYYY',
+        'LLL' => 'Do MMMM, HH:mm [Uhr]',
+        'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]',
+    ],
+    'year' => ':count onn|:count onns',
+    'month' => ':count mais',
+    'week' => ':count emna|:count emnas',
+    'day' => ':count di|:count dis',
+    'hour' => ':count oura|:count ouras',
+    'minute' => ':count minuta|:count minutas',
+    'second' => ':count secunda|:count secundas',
+    'weekdays' => ['dumengia', 'glindesdi', 'mardi', 'mesemna', 'gievgia', 'venderdi', 'sonda'],
+    'weekdays_short' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'],
+    'weekdays_min' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'],
+    'months' => ['schaner', 'favrer', 'mars', 'avrigl', 'matg', 'zercladur', 'fanadur', 'avust', 'settember', 'october', 'november', 'december'],
+    'months_short' => ['schan', 'favr', 'mars', 'avr', 'matg', 'zercl', 'fan', 'avust', 'sett', 'oct', 'nov', 'dec'],
+    'meridiem' => ['avantmezdi', 'suentermezdi'],
+    'list' => [', ', ' e '],
+    'first_day_of_week' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rn.php
new file mode 100644
index 00000000..8ab958eb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rn.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Z.MU.', 'Z.MW.'],
+    'weekdays' => ['Ku w’indwi', 'Ku wa mbere', 'Ku wa kabiri', 'Ku wa gatatu', 'Ku wa kane', 'Ku wa gatanu', 'Ku wa gatandatu'],
+    'weekdays_short' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'],
+    'weekdays_min' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'],
+    'months' => ['Nzero', 'Ruhuhuma', 'Ntwarante', 'Ndamukiza', 'Rusama', 'Ruheshi', 'Mukakaro', 'Nyandagaro', 'Nyakanga', 'Gitugutu', 'Munyonyo', 'Kigarama'],
+    'months_short' => ['Mut.', 'Gas.', 'Wer.', 'Mat.', 'Gic.', 'Kam.', 'Nya.', 'Kan.', 'Nze.', 'Ukw.', 'Ugu.', 'Uku.'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'year' => 'imyaka :count',
+    'y' => 'imyaka :count',
+    'a_year' => 'imyaka :count',
+
+    'month' => 'amezi :count',
+    'm' => 'amezi :count',
+    'a_month' => 'amezi :count',
+
+    'week' => 'indwi :count',
+    'w' => 'indwi :count',
+    'a_week' => 'indwi :count',
+
+    'day' => 'imisi :count',
+    'd' => 'imisi :count',
+    'a_day' => 'imisi :count',
+
+    'hour' => 'amasaha :count',
+    'h' => 'amasaha :count',
+    'a_hour' => 'amasaha :count',
+
+    'minute' => 'iminuta :count',
+    'min' => 'iminuta :count',
+    'a_minute' => 'iminuta :count',
+
+    'second' => 'inguvu :count', // less reliable
+    's' => 'inguvu :count', // less reliable
+    'a_second' => 'inguvu :count', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro.php
new file mode 100644
index 00000000..868a3279
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ * - Cătălin Georgescu
+ * - Valentin IvaÅŸcu (oriceon)
+ */
+return [
+    'year' => ':count an|:count ani|:count ani',
+    'a_year' => 'un an|:count ani|:count ani',
+    'y' => ':count a.',
+    'month' => ':count lună|:count luni|:count luni',
+    'a_month' => 'o lună|:count luni|:count luni',
+    'm' => ':count l.',
+    'week' => ':count săptămână|:count săptămâni|:count săptămâni',
+    'a_week' => 'o săptămână|:count săptămâni|:count săptămâni',
+    'w' => ':count săp.',
+    'day' => ':count zi|:count zile|:count zile',
+    'a_day' => 'o zi|:count zile|:count zile',
+    'd' => ':count z.',
+    'hour' => ':count oră|:count ore|:count ore',
+    'a_hour' => 'o oră|:count ore|:count ore',
+    'h' => ':count o.',
+    'minute' => ':count minut|:count minute|:count minute',
+    'a_minute' => 'un minut|:count minute|:count minute',
+    'min' => ':count m.',
+    'second' => ':count secundă|:count secunde|:count secunde',
+    'a_second' => 'câteva secunde|:count secunde|:count secunde',
+    's' => ':count sec.',
+    'ago' => ':time în urmă',
+    'from_now' => 'peste :time',
+    'after' => 'peste :time',
+    'before' => 'acum :time',
+    'diff_now' => 'acum',
+    'diff_today' => 'azi',
+    'diff_today_regexp' => 'azi(?:\\s+la)?',
+    'diff_yesterday' => 'ieri',
+    'diff_yesterday_regexp' => 'ieri(?:\\s+la)?',
+    'diff_tomorrow' => 'mâine',
+    'diff_tomorrow_regexp' => 'mâine(?:\\s+la)?',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[azi la] LT',
+        'nextDay' => '[mâine la] LT',
+        'nextWeek' => 'dddd [la] LT',
+        'lastDay' => '[ieri la] LT',
+        'lastWeek' => '[fosta] dddd [la] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'],
+    'months_short' => ['ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.'],
+    'weekdays' => ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'],
+    'weekdays_short' => ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'],
+    'weekdays_min' => ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' și '],
+    'meridiem' => ['a.m.', 'p.m.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
new file mode 100644
index 00000000..ad1d2fa8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ro.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
new file mode 100644
index 00000000..102afcde
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ro.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rof.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rof.php
new file mode 100644
index 00000000..205fc266
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rof.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['kang’ama', 'kingoto'],
+    'weekdays' => ['Ijumapili', 'Ijumatatu', 'Ijumanne', 'Ijumatano', 'Alhamisi', 'Ijumaa', 'Ijumamosi'],
+    'weekdays_short' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'],
+    'weekdays_min' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'],
+    'months' => ['Mweri wa kwanza', 'Mweri wa kaili', 'Mweri wa katatu', 'Mweri wa kaana', 'Mweri wa tanu', 'Mweri wa sita', 'Mweri wa saba', 'Mweri wa nane', 'Mweri wa tisa', 'Mweri wa ikumi', 'Mweri wa ikumi na moja', 'Mweri wa ikumi na mbili'],
+    'months_short' => ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
new file mode 100644
index 00000000..673b043b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru.php
@@ -0,0 +1,191 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Bari Badamshin
+ * - Jørn Ølmheim
+ * - François B
+ * - Tim Fish
+ * - Коренберг Марк (imac)
+ * - Serhan Apaydın
+ * - RomeroMsk
+ * - vsn4ik
+ * - JD Isaacks
+ * - Bari Badamshin
+ * - Jørn Ølmheim
+ * - François B
+ * - Коренберг Марк (imac)
+ * - Serhan Apaydın
+ * - RomeroMsk
+ * - vsn4ik
+ * - JD Isaacks
+ * - Fellzo
+ * - andrey-helldar
+ * - Pavel Skripkin (psxx)
+ * - AlexWalkerson
+ * - Vladislav UnsealedOne
+ * - dima-bzz
+ */
+
+use Carbon\CarbonInterface;
+
+$transformDiff = function ($input) {
+    return strtr($input, [
+        'неделя' => 'неделю',
+        'секунда' => 'секунду',
+        'минута' => 'минуту',
+    ]);
+};
+
+return [
+    'year' => ':count год|:count года|:count лет',
+    'y' => ':count г.|:count г.|:count л.',
+    'a_year' => '{1}год|:count год|:count года|:count лет',
+    'month' => ':count месяц|:count месяца|:count месяцев',
+    'm' => ':count мес.',
+    'a_month' => '{1}месяц|:count месяц|:count месяца|:count месяцев',
+    'week' => ':count неделя|:count недели|:count недель',
+    'w' => ':count нед.',
+    'a_week' => '{1}неделя|:count неделю|:count недели|:count недель',
+    'day' => ':count день|:count дня|:count дней',
+    'd' => ':count д.',
+    'a_day' => '{1}день|:count день|:count дня|:count дней',
+    'hour' => ':count час|:count часа|:count часов',
+    'h' => ':count ч.',
+    'a_hour' => '{1}час|:count час|:count часа|:count часов',
+    'minute' => ':count минута|:count минуты|:count минут',
+    'min' => ':count мин.',
+    'a_minute' => '{1}минута|:count минута|:count минуты|:count минут',
+    'second' => ':count секунда|:count секунды|:count секунд',
+    's' => ':count сек.',
+    'a_second' => '{1}несколько секунд|:count секунду|:count секунды|:count секунд',
+    'ago' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' назад';
+    },
+    'from_now' => function ($time) use ($transformDiff) {
+        return 'через '.$transformDiff($time);
+    },
+    'after' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' после';
+    },
+    'before' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' до';
+    },
+    'diff_now' => 'только что',
+    'diff_today' => 'Сегодня,',
+    'diff_today_regexp' => 'Сегодня,?(?:\\s+в)?',
+    'diff_yesterday' => 'вчера',
+    'diff_yesterday_regexp' => 'Вчера,?(?:\\s+в)?',
+    'diff_tomorrow' => 'завтра',
+    'diff_tomorrow_regexp' => 'Завтра,?(?:\\s+в)?',
+    'diff_before_yesterday' => 'позавчера',
+    'diff_after_tomorrow' => 'послезавтра',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY г.',
+        'LLL' => 'D MMMM YYYY г., H:mm',
+        'LLLL' => 'dddd, D MMMM YYYY г., H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Сегодня, в] LT',
+        'nextDay' => '[Завтра, в] LT',
+        'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) {
+            if ($current->week !== $other->week) {
+                switch ($current->dayOfWeek) {
+                    case 0:
+                        return '[В следующее] dddd, [в] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                        return '[В следующий] dddd, [в] LT';
+                    case 3:
+                    case 5:
+                    case 6:
+                        return '[В следующую] dddd, [в] LT';
+                }
+            }
+
+            if ($current->dayOfWeek === 2) {
+                return '[Во] dddd, [в] LT';
+            }
+
+            return '[В] dddd, [в] LT';
+        },
+        'lastDay' => '[Вчера, в] LT',
+        'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) {
+            if ($current->week !== $other->week) {
+                switch ($current->dayOfWeek) {
+                    case 0:
+                        return '[В прошлое] dddd, [в] LT';
+                    case 1:
+                    case 2:
+                    case 4:
+                        return '[В прошлый] dddd, [в] LT';
+                    case 3:
+                    case 5:
+                    case 6:
+                        return '[В прошлую] dddd, [в] LT';
+                }
+            }
+
+            if ($current->dayOfWeek === 2) {
+                return '[Во] dddd, [в] LT';
+            }
+
+            return '[В] dddd, [в] LT';
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'M':
+            case 'd':
+            case 'DDD':
+                return $number.'-й';
+            case 'D':
+                return $number.'-го';
+            case 'w':
+            case 'W':
+                return $number.'-я';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'ночи';
+        }
+        if ($hour < 12) {
+            return 'утра';
+        }
+        if ($hour < 17) {
+            return 'дня';
+        }
+
+        return 'вечера';
+    },
+    'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'],
+    'months_standalone' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'],
+    'months_short' => ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'months_short_standalone' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'],
+    'weekdays_standalone' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
+    'weekdays_short' => ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'],
+    'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+    'weekdays_regexp' => '/\[\s*(В|в)\s*((?:прошлую|следующую|эту)\s*)?\]\s*dddd/',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' и '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
new file mode 100644
index 00000000..8ca7df34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ru.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
new file mode 100644
index 00000000..8ca7df34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ru.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
new file mode 100644
index 00000000..8ca7df34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ru.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
new file mode 100644
index 00000000..8ca7df34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ru.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
new file mode 100644
index 00000000..8ca7df34
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ru.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
new file mode 100644
index 00000000..db958d68
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - RFC 2319    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ru.php', [
+    'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'],
+    'weekdays_short' => ['вск', 'пнд', 'вто', 'срд', 'чтв', 'птн', 'суб'],
+    'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'су'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw.php
new file mode 100644
index 00000000..bc4a347f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/rw_RW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
new file mode 100644
index 00000000..9b3e0682
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Rwanda Steve Murphy murf@e-tools.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Mutarama', 'Gashyantare', 'Werurwe', 'Mata', 'Gicuransi', 'Kamena', 'Nyakanga', 'Kanama', 'Nzeli', 'Ukwakira', 'Ugushyingo', 'Ukuboza'],
+    'months_short' => ['Mut', 'Gas', 'Wer', 'Mat', 'Gic', 'Kam', 'Nya', 'Kan', 'Nze', 'Ukw', 'Ugu', 'Uku'],
+    'weekdays' => ['Ku cyumweru', 'Kuwa mbere', 'Kuwa kabiri', 'Kuwa gatatu', 'Kuwa kane', 'Kuwa gatanu', 'Kuwa gatandatu'],
+    'weekdays_short' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'],
+    'weekdays_min' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'second' => ':count vuna', // less reliable
+    's' => ':count vuna', // less reliable
+    'a_second' => ':count vuna', // less reliable
+
+    'year' => 'aka :count',
+    'y' => 'aka :count',
+    'a_year' => 'aka :count',
+
+    'month' => 'ezi :count',
+    'm' => 'ezi :count',
+    'a_month' => 'ezi :count',
+
+    'week' => ':count icyumweru',
+    'w' => ':count icyumweru',
+    'a_week' => ':count icyumweru',
+
+    'day' => ':count nsi',
+    'd' => ':count nsi',
+    'a_day' => ':count nsi',
+
+    'hour' => 'saha :count',
+    'h' => 'saha :count',
+    'a_hour' => 'saha :count',
+
+    'minute' => ':count -nzinya',
+    'min' => ':count -nzinya',
+    'a_minute' => ':count -nzinya',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
new file mode 100644
index 00000000..ed92e8e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['utuko', 'kyiukonyi'],
+    'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa.php
new file mode 100644
index 00000000..1357c030
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sa_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
new file mode 100644
index 00000000..cfda9a63
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - The Debian project Christian Perrier bubulle@debian.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D-MM-YY',
+    ],
+    'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'weekdays' => ['रविवासर:', 'सोमवासर:', 'मंगलवासर:', 'बुधवासर:', 'बृहस्पतिवासरः', 'शुक्रवासर', 'शनिवासर:'],
+    'weekdays_short' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'],
+    'weekdays_min' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+
+    'minute' => ':count होरा', // less reliable
+    'min' => ':count होरा', // less reliable
+    'a_minute' => ':count होरा', // less reliable
+
+    'year' => ':count वर्ष',
+    'y' => ':count वर्ष',
+    'a_year' => ':count वर्ष',
+
+    'month' => ':count मास',
+    'm' => ':count मास',
+    'a_month' => ':count मास',
+
+    'week' => ':count सप्ताहः saptahaĥ',
+    'w' => ':count सप्ताहः saptahaĥ',
+    'a_week' => ':count सप्ताहः saptahaĥ',
+
+    'day' => ':count दिन',
+    'd' => ':count दिन',
+    'a_day' => ':count दिन',
+
+    'hour' => ':count घण्टा',
+    'h' => ':count घण्टा',
+    'a_hour' => ':count घण्टा',
+
+    'second' => ':count द्वितीयः',
+    's' => ':count द्वितीयः',
+    'a_second' => ':count द्वितीयः',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah.php
new file mode 100644
index 00000000..b8288242
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sah_RU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
new file mode 100644
index 00000000..94cc0cb0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Valery Timiriliyev Valery Timiriliyev timiriliyev@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/ru.php', [
+    'formats' => [
+        'L' => 'YYYY.MM.DD',
+    ],
+    'months' => ['тохсунньу', 'олунньу', 'кулун тутар', 'муус устар', 'ыам ыйын', 'бэс ыйын', 'от ыйын', 'атырдьах ыйын', 'балаҕан ыйын', 'алтынньы', 'сэтинньи', 'ахсынньы'],
+    'months_short' => ['тохс', 'олун', 'кул', 'муус', 'ыам', 'бэс', 'от', 'атыр', 'бал', 'алт', 'сэт', 'ахс'],
+    'weekdays' => ['баскыһыанньа', 'бэнидиэнньик', 'оптуорунньук', 'сэрэдэ', 'чэппиэр', 'бээтинсэ', 'субуота'],
+    'weekdays_short' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'],
+    'weekdays_min' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/saq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/saq.php
new file mode 100644
index 00000000..ff8bf604
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/saq.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Tesiran', 'Teipa'],
+    'weekdays' => ['Mderot ee are', 'Mderot ee kuni', 'Mderot ee ong’wan', 'Mderot ee inet', 'Mderot ee ile', 'Mderot ee sapa', 'Mderot ee kwe'],
+    'weekdays_short' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'],
+    'weekdays_min' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'],
+    'months' => ['Lapa le obo', 'Lapa le waare', 'Lapa le okuni', 'Lapa le ong’wan', 'Lapa le imet', 'Lapa le ile', 'Lapa le sapa', 'Lapa le isiet', 'Lapa le saal', 'Lapa le tomon', 'Lapa le tomon obo', 'Lapa le tomon waare'],
+    'months_short' => ['Obo', 'Waa', 'Oku', 'Ong', 'Ime', 'Ile', 'Sap', 'Isi', 'Saa', 'Tom', 'Tob', 'Tow'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat.php
new file mode 100644
index 00000000..c9914c66
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sat_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
new file mode 100644
index 00000000..632b1af6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat Pune    libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'],
+    'weekdays' => ['सिंगेमाँहाँ', 'ओतेमाँहाँ', 'बालेमाँहाँ', 'सागुनमाँहाँ', 'सारदीमाँहाँ', 'जारुममाँहाँ', 'ञुहुममाँहाँ'],
+    'weekdays_short' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'],
+    'weekdays_min' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'],
+    'day_of_first_week_of_year' => 1,
+
+    'month' => ':count ńindạ cando', // less reliable
+    'm' => ':count ńindạ cando', // less reliable
+    'a_month' => ':count ńindạ cando', // less reliable
+
+    'week' => ':count mãhã', // less reliable
+    'w' => ':count mãhã', // less reliable
+    'a_week' => ':count mãhã', // less reliable
+
+    'hour' => ':count ᱥᱳᱱᱚ', // less reliable
+    'h' => ':count ᱥᱳᱱᱚ', // less reliable
+    'a_hour' => ':count ᱥᱳᱱᱚ', // less reliable
+
+    'minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable
+    'min' => ':count ᱯᱤᱞᱪᱩ', // less reliable
+    'a_minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable
+
+    'second' => ':count ar', // less reliable
+    's' => ':count ar', // less reliable
+    'a_second' => ':count ar', // less reliable
+
+    'year' => ':count ne̲s',
+    'y' => ':count ne̲s',
+    'a_year' => ':count ne̲s',
+
+    'day' => ':count ᱫᱤᱱ',
+    'd' => ':count ᱫᱤᱱ',
+    'a_day' => ':count ᱫᱤᱱ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
new file mode 100644
index 00000000..e29ca379
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Lwamilawu', 'Pashamihe'],
+    'weekdays' => ['Mulungu', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alahamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Mupalangulwa', 'Mwitope', 'Mushende', 'Munyi', 'Mushende Magali', 'Mujimbi', 'Mushipepo', 'Mupuguto', 'Munyense', 'Mokhu', 'Musongandembwe', 'Muhaano'],
+    'months_short' => ['Mup', 'Mwi', 'Msh', 'Mun', 'Mag', 'Muj', 'Msp', 'Mpg', 'Mye', 'Mok', 'Mus', 'Muh'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc.php
new file mode 100644
index 00000000..7178cf4f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sc_IT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
new file mode 100644
index 00000000..5d1e4cec
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Sardinian Translators Team Massimeddu Cireddu massimeddu@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD. MM. YY',
+    ],
+    'months' => ['Ghennàrgiu', 'Freàrgiu', 'Martzu', 'Abrile', 'Maju', 'Làmpadas', 'Argiolas//Trìulas', 'Austu', 'Cabudanni', 'Santugaine//Ladàmine', 'Onniasantu//Santandria', 'Nadale//Idas'],
+    'months_short' => ['Ghe', 'Fre', 'Mar', 'Abr', 'Maj', 'Làm', 'Arg', 'Aus', 'Cab', 'Lad', 'Onn', 'Nad'],
+    'weekdays' => ['Domìnigu', 'Lunis', 'Martis', 'Mèrcuris', 'Giòbia', 'Chenàbura', 'Sàbadu'],
+    'weekdays_short' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'],
+    'weekdays_min' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'minute' => ':count mementu', // less reliable
+    'min' => ':count mementu', // less reliable
+    'a_minute' => ':count mementu', // less reliable
+
+    'year' => ':count annu',
+    'y' => ':count annu',
+    'a_year' => ':count annu',
+
+    'month' => ':count mese',
+    'm' => ':count mese',
+    'a_month' => ':count mese',
+
+    'week' => ':count chida',
+    'w' => ':count chida',
+    'a_week' => ':count chida',
+
+    'day' => ':count dí',
+    'd' => ':count dí',
+    'a_day' => ':count dí',
+
+    'hour' => ':count ora',
+    'h' => ':count ora',
+    'a_hour' => ':count ora',
+
+    'second' => ':count secundu',
+    's' => ':count secundu',
+    'a_second' => ':count secundu',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd.php
new file mode 100644
index 00000000..0022c5a9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$months = [
+    'جنوري',
+    'فيبروري',
+    'مارچ',
+    'اپريل',
+    'مئي',
+    'جون',
+    'جولاءِ',
+    'آگسٽ',
+    'سيپٽمبر',
+    'آڪٽوبر',
+    'نومبر',
+    'ڊسمبر',
+];
+
+$weekdays = [
+    'آچر',
+    'سومر',
+    'اڱارو',
+    'اربع',
+    'خميس',
+    'جمع',
+    'ڇنڇر',
+];
+
+/*
+ * Authors:
+ * - Narain Sagar
+ * - Sawood Alam
+ * - Narain Sagar
+ */
+return [
+    'year' => '{1}'.'هڪ سال'.'|:count '.'سال',
+    'month' => '{1}'.'هڪ مهينو'.'|:count '.'مهينا',
+    'week' => '{1}'.'ھڪ ھفتو'.'|:count '.'هفتا',
+    'day' => '{1}'.'هڪ ڏينهن'.'|:count '.'ڏينهن',
+    'hour' => '{1}'.'هڪ ڪلاڪ'.'|:count '.'ڪلاڪ',
+    'minute' => '{1}'.'هڪ منٽ'.'|:count '.'منٽ',
+    'second' => '{1}'.'چند سيڪنڊ'.'|:count '.'سيڪنڊ',
+    'ago' => ':time اڳ',
+    'from_now' => ':time پوء',
+    'diff_yesterday' => 'ڪالهه',
+    'diff_today' => 'اڄ',
+    'diff_tomorrow' => 'سڀاڻي',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd، D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[اڄ] LT',
+        'nextDay' => '[سڀاڻي] LT',
+        'nextWeek' => 'dddd [اڳين هفتي تي] LT',
+        'lastDay' => '[ڪالهه] LT',
+        'lastWeek' => '[گزريل هفتي] dddd [تي] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['صبح', 'شام'],
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => $weekdays,
+    'weekdays_short' => $weekdays,
+    'weekdays_min' => $weekdays,
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => ['، ', ' ۽ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
new file mode 100644
index 00000000..de1dad05
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/sd.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],
+    'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],
+    'weekdays' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
+    'weekdays_short' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
+    'weekdays_min' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
new file mode 100644
index 00000000..061fcc16
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/sd.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'],
+    'months_short' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'],
+    'weekdays' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
+    'weekdays_short' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
+    'weekdays_min' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['म.पू.', 'म.नं.'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se.php
new file mode 100644
index 00000000..7c4b92a5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Karamell
+ */
+return [
+    'year' => '{1}:count jahki|:count jagit',
+    'a_year' => '{1}okta jahki|:count jagit',
+    'y' => ':count j.',
+    'month' => '{1}:count mánnu|:count mánut',
+    'a_month' => '{1}okta mánnu|:count mánut',
+    'm' => ':count mán.',
+    'week' => '{1}:count vahkku|:count vahkku',
+    'a_week' => '{1}okta vahkku|:count vahkku',
+    'w' => ':count v.',
+    'day' => '{1}:count beaivi|:count beaivvit',
+    'a_day' => '{1}okta beaivi|:count beaivvit',
+    'd' => ':count b.',
+    'hour' => '{1}:count diimmu|:count diimmut',
+    'a_hour' => '{1}okta diimmu|:count diimmut',
+    'h' => ':count d.',
+    'minute' => '{1}:count minuhta|:count minuhtat',
+    'a_minute' => '{1}okta minuhta|:count minuhtat',
+    'min' => ':count min.',
+    'second' => '{1}:count sekunddat|:count sekunddat',
+    'a_second' => '{1}moadde sekunddat|:count sekunddat',
+    's' => ':count s.',
+    'ago' => 'maŋit :time',
+    'from_now' => ':time geažes',
+    'diff_yesterday' => 'ikte',
+    'diff_yesterday_regexp' => 'ikte(?:\\s+ti)?',
+    'diff_today' => 'otne',
+    'diff_today_regexp' => 'otne(?:\\s+ti)?',
+    'diff_tomorrow' => 'ihttin',
+    'diff_tomorrow_regexp' => 'ihttin(?:\\s+ti)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'MMMM D. [b.] YYYY',
+        'LLL' => 'MMMM D. [b.] YYYY [ti.] HH:mm',
+        'LLLL' => 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[otne ti] LT',
+        'nextDay' => '[ihttin ti] LT',
+        'nextWeek' => 'dddd [ti] LT',
+        'lastDay' => '[ikte ti] LT',
+        'lastWeek' => '[ovddit] dddd [ti] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'],
+    'months_short' => ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'],
+    'weekdays' => ['sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvardat'],
+    'weekdays_short' => ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'],
+    'weekdays_min' => ['s', 'v', 'm', 'g', 'd', 'b', 'L'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' ja '],
+    'meridiem' => ['i.b.', 'e.b.'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
new file mode 100644
index 00000000..cf01805d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/se.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'],
+    'months_short' => ['ođđj', 'guov', 'njuk', 'cuoŋ', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'],
+    'weekdays' => ['sotnabeaivi', 'mánnodat', 'disdat', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvordat'],
+    'weekdays_short' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'],
+    'weekdays_min' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'],
+    'meridiem' => ['i', 'e'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
new file mode 100644
index 00000000..177c7e94
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/se.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
new file mode 100644
index 00000000..177c7e94
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/se.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/seh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/seh.php
new file mode 100644
index 00000000..babf9afb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/seh.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['Dimingu', 'Chiposi', 'Chipiri', 'Chitatu', 'Chinai', 'Chishanu', 'Sabudu'],
+    'weekdays_short' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'],
+    'weekdays_min' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'],
+    'months' => ['Janeiro', 'Fevreiro', 'Marco', 'Abril', 'Maio', 'Junho', 'Julho', 'Augusto', 'Setembro', 'Otubro', 'Novembro', 'Decembro'],
+    'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Otu', 'Nov', 'Dec'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'd [de] MMM [de] YYYY',
+        'LLL' => 'd [de] MMMM [de] YYYY HH:mm',
+        'LLLL' => 'dddd, d [de] MMMM [de] YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ses.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ses.php
new file mode 100644
index 00000000..e1099e65
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ses.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Adduha', 'Aluula'],
+    'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'],
+    'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
+    'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'],
+    'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'],
+    'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'month' => ':count alaada', // less reliable
+    'm' => ':count alaada', // less reliable
+    'a_month' => ':count alaada', // less reliable
+
+    'hour' => ':count ɲaajin', // less reliable
+    'h' => ':count ɲaajin', // less reliable
+    'a_hour' => ':count ɲaajin', // less reliable
+
+    'minute' => ':count zarbu', // less reliable
+    'min' => ':count zarbu', // less reliable
+    'a_minute' => ':count zarbu', // less reliable
+
+    'year' => ':count jiiri',
+    'y' => ':count jiiri',
+    'a_year' => ':count jiiri',
+
+    'week' => ':count jirbiiyye',
+    'w' => ':count jirbiiyye',
+    'a_week' => ':count jirbiiyye',
+
+    'day' => ':count zaari',
+    'd' => ':count zaari',
+    'a_day' => ':count zaari',
+
+    'second' => ':count ihinkante',
+    's' => ':count ihinkante',
+    'a_second' => ':count ihinkante',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sg.php
new file mode 100644
index 00000000..9264e893
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sg.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['ND', 'LK'],
+    'weekdays' => ['Bikua-ôko', 'Bïkua-ûse', 'Bïkua-ptâ', 'Bïkua-usïö', 'Bïkua-okü', 'Lâpôsö', 'Lâyenga'],
+    'weekdays_short' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'],
+    'weekdays_min' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'],
+    'months' => ['Nyenye', 'Fulundïgi', 'Mbängü', 'Ngubùe', 'Bêläwü', 'Föndo', 'Lengua', 'Kükürü', 'Mvuka', 'Ngberere', 'Nabändüru', 'Kakauka'],
+    'months_short' => ['Nye', 'Ful', 'Mbä', 'Ngu', 'Bêl', 'Fön', 'Len', 'Kük', 'Mvu', 'Ngb', 'Nab', 'Kak'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count dā', // less reliable
+    'y' => ':count dā', // less reliable
+    'a_year' => ':count dā', // less reliable
+
+    'week' => ':count bïkua-okü', // less reliable
+    'w' => ':count bïkua-okü', // less reliable
+    'a_week' => ':count bïkua-okü', // less reliable
+
+    'day' => ':count ziggawâ', // less reliable
+    'd' => ':count ziggawâ', // less reliable
+    'a_day' => ':count ziggawâ', // less reliable
+
+    'hour' => ':count yângâködörö', // less reliable
+    'h' => ':count yângâködörö', // less reliable
+    'a_hour' => ':count yângâködörö', // less reliable
+
+    'second' => ':count bïkua-ôko', // less reliable
+    's' => ':count bïkua-ôko', // less reliable
+    'a_second' => ':count bïkua-ôko', // less reliable
+
+    'month' => ':count Nze tî ngu',
+    'm' => ':count Nze tî ngu',
+    'a_month' => ':count Nze tî ngu',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
new file mode 100644
index 00000000..864b9892
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sgs_LT.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
new file mode 100644
index 00000000..aa9e942e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Arnas Udovičius bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY.MM.DD',
+    ],
+    'months' => ['sausė', 'vasarė', 'kuova', 'balondė', 'gegožės', 'bėrželė', 'lëpas', 'rogpjūtė', 'siejės', 'spalė', 'lapkrėstė', 'grůdė'],
+    'months_short' => ['Sau', 'Vas', 'Kuo', 'Bal', 'Geg', 'Bėr', 'Lëp', 'Rgp', 'Sie', 'Spa', 'Lap', 'Grd'],
+    'weekdays' => ['nedielės dëna', 'panedielis', 'oterninks', 'sereda', 'četvergs', 'petnīčė', 'sobata'],
+    'weekdays_short' => ['Nd', 'Pn', 'Ot', 'Sr', 'ÄŒt', 'Pt', 'Sb'],
+    'weekdays_min' => ['Nd', 'Pn', 'Ot', 'Sr', 'ÄŒt', 'Pt', 'Sb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'minute' => ':count mažos', // less reliable
+    'min' => ':count mažos', // less reliable
+    'a_minute' => ':count mažos', // less reliable
+
+    'year' => ':count metā',
+    'y' => ':count metā',
+    'a_year' => ':count metā',
+
+    'month' => ':count mienou',
+    'm' => ':count mienou',
+    'a_month' => ':count mienou',
+
+    'week' => ':count nedielÄ—',
+    'w' => ':count nedielÄ—',
+    'a_week' => ':count nedielÄ—',
+
+    'day' => ':count dīna',
+    'd' => ':count dīna',
+    'a_day' => ':count dīna',
+
+    'hour' => ':count adīna',
+    'h' => ':count adīna',
+    'a_hour' => ':count adīna',
+
+    'second' => ':count SekondÄ—',
+    's' => ':count SekondÄ—',
+    'a_second' => ':count SekondÄ—',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sh.php
new file mode 100644
index 00000000..e4aa5a1c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sh.php
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+// @codeCoverageIgnoreStart
+use Symfony\Component\Translation\PluralizationRules;
+
+if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) {
+    PluralizationRules::set(function ($number) {
+        return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2);
+    }, 'sh');
+}
+// @codeCoverageIgnoreEnd
+
+/*
+ * Authors:
+ * - Томица Кораћ
+ * - Enrique Vidal
+ * - Christopher Dell
+ * - dmilisic
+ * - danijel
+ * - Miroslav Matkovic (mikki021)
+ */
+return [
+    'diff_now' => 'sada',
+    'diff_yesterday' => 'juče',
+    'diff_tomorrow' => 'sutra',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'MMMM D, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'year' => ':count godina|:count godine|:count godina',
+    'y' => ':count g.',
+    'month' => ':count mesec|:count meseca|:count meseci',
+    'm' => ':count m.',
+    'week' => ':count nedelja|:count nedelje|:count nedelja',
+    'w' => ':count n.',
+    'day' => ':count dan|:count dana|:count dana',
+    'd' => ':count d.',
+    'hour' => ':count sat|:count sata|:count sati',
+    'h' => ':count č.',
+    'minute' => ':count minut|:count minuta|:count minuta',
+    'min' => ':count min.',
+    'second' => ':count sekund|:count sekunde|:count sekundi',
+    's' => ':count s.',
+    'ago' => 'pre :time',
+    'from_now' => 'za :time',
+    'after' => 'nakon :time',
+    'before' => ':time raniјe',
+    'weekdays' => ['Nedelja', 'Ponedeljak', 'Utorak', 'Sreda', 'ÄŒetvrtak', 'Petak', 'Subota'],
+    'weekdays_short' => ['Ned', 'Pon', 'Uto', 'Sre', 'ÄŒet', 'Pet', 'Sub'],
+    'weekdays_min' => ['Ned', 'Pon', 'Uto', 'Sre', 'ÄŒet', 'Pet', 'Sub'],
+    'months' => ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Jun', 'Jul', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],
+    'list' => [', ', ' i '],
+    'meridiem' => ['pre podne', 'po podne'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi.php
new file mode 100644
index 00000000..78151869
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'],
+    'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
+    'weekdays_short' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'],
+    'weekdays_min' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'],
+    'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'],
+    'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'],
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'year' => ':count aseggwas',
+    'y' => ':count aseggwas',
+    'a_year' => ':count aseggwas',
+
+    'month' => ':count ayyur',
+    'm' => ':count ayyur',
+    'a_month' => ':count ayyur',
+
+    'week' => ':count imalass',
+    'w' => ':count imalass',
+    'a_week' => ':count imalass',
+
+    'day' => ':count ass',
+    'd' => ':count ass',
+    'a_day' => ':count ass',
+
+    'hour' => ':count urɣ', // less reliable
+    'h' => ':count urɣ', // less reliable
+    'a_hour' => ':count urɣ', // less reliable
+
+    'minute' => ':count ⴰⵎⵥⵉ', // less reliable
+    'min' => ':count ⴰⵎⵥⵉ', // less reliable
+    'a_minute' => ':count ⴰⵎⵥⵉ', // less reliable
+
+    'second' => ':count sin', // less reliable
+    's' => ':count sin', // less reliable
+    'a_second' => ':count sin', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
new file mode 100644
index 00000000..cddfb242
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/shi.php', [
+    'meridiem' => ['tifawt', 'tadggÊ·at'],
+    'weekdays' => ['asamas', 'aynas', 'asinas', 'akṛas', 'akwas', 'asimwas', 'asiḍyas'],
+    'weekdays_short' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'],
+    'weekdays_min' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'],
+    'months' => ['innayr', 'bṛayṛ', 'maṛṣ', 'ibrir', 'mayyu', 'yunyu', 'yulyuz', 'ɣuct', 'cutanbir', 'ktubr', 'nuwanbir', 'dujanbir'],
+    'months_short' => ['inn', 'bá¹›a', 'maá¹›', 'ibr', 'may', 'yun', 'yul', 'É£uc', 'cut', 'ktu', 'nuw', 'duj'],
+    'first_day_of_week' => 6,
+    'weekend' => [5, 6],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+
+    'minute' => ':count agur', // less reliable
+    'min' => ':count agur', // less reliable
+    'a_minute' => ':count agur', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
new file mode 100644
index 00000000..f3df1f2c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/shi.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn.php
new file mode 100644
index 00000000..fe7b1ea5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/shn_MM.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
new file mode 100644
index 00000000..f399acf0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - ubuntu Myanmar LoCo Team https://ubuntu-mm.net Bone Pyae Sone bone.burma@mail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'OY MMM OD dddd',
+    ],
+    'months' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'],
+    'months_short' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'],
+    'weekdays' => ['ဝၼ်းဢႃးတိတ်ႉ', 'ဝၼ်းၸၼ်', 'ဝၼ်း​ဢၢင်း​ၵၢၼ်း', 'ဝၼ်းပူတ်ႉ', 'ဝၼ်းၽတ်း', 'ဝၼ်းသုၵ်း', 'ဝၼ်းသဝ်'],
+    'weekdays_short' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'],
+    'weekdays_min' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'],
+    'alt_numbers' => ['႐႐', '႐႑', '႐႒', '႐႓', '႐႔', '႐႕', '႐႖', '႐႗', '႐႘', '႐႙', '႑႐', '႑႑', '႑႒', '႑႓', '႑႔', '႑႕', '႑႖', '႑႗', '႑႘', '႑႙', '႒႐', '႒႑', '႒႒', '႒႓', '႒႔', '႒႕', '႒႖', '႒႗', '႒႘', '႒႙', '႓႐', '႓႑', '႓႒', '႓႓', '႓႔', '႓႕', '႓႖', '႓႗', '႓႘', '႓႙', '႔႐', '႔႑', '႔႒', '႔႓', '႔႔', '႔႕', '႔႖', '႔႗', '႔႘', '႔႙', '႕႐', '႕႑', '႕႒', '႕႓', '႕႔', '႕႕', '႕႖', '႕႗', '႕႘', '႕႙', '႖႐', '႖႑', '႖႒', '႖႓', '႖႔', '႖႕', '႖႖', '႖႗', '႖႘', '႖႙', '႗႐', '႗႑', '႗႒', '႗႓', '႗႔', '႗႕', '႗႖', '႗႗', '႗႘', '႗႙', '႘႐', '႘႑', '႘႒', '႘႓', '႘႔', '႘႕', '႘႖', '႘႗', '႘႘', '႘႙', '႙႐', '႙႑', '႙႒', '႙႓', '႙႔', '႙႕', '႙႖', '႙႗', '႙႘', '႙႙'],
+    'meridiem' => ['ၵၢင်ၼႂ်', 'တၢမ်းၶမ်ႈ'],
+
+    'month' => ':count လိူၼ်', // less reliable
+    'm' => ':count လိူၼ်', // less reliable
+    'a_month' => ':count လိူၼ်', // less reliable
+
+    'week' => ':count ဝၼ်း', // less reliable
+    'w' => ':count ဝၼ်း', // less reliable
+    'a_week' => ':count ဝၼ်း', // less reliable
+
+    'hour' => ':count ຕີ', // less reliable
+    'h' => ':count ຕີ', // less reliable
+    'a_hour' => ':count ຕີ', // less reliable
+
+    'minute' => ':count ເດັກ', // less reliable
+    'min' => ':count ເດັກ', // less reliable
+    'a_minute' => ':count ເດັກ', // less reliable
+
+    'second' => ':count ဢိုၼ်ႇ', // less reliable
+    's' => ':count ဢိုၼ်ႇ', // less reliable
+    'a_second' => ':count ဢိုၼ်ႇ', // less reliable
+
+    'year' => ':count ပီ',
+    'y' => ':count ပီ',
+    'a_year' => ':count ပီ',
+
+    'day' => ':count ກາງວັນ',
+    'd' => ':count ກາງວັນ',
+    'a_day' => ':count ກາງວັນ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs.php
new file mode 100644
index 00000000..8d2e1d7d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/shs_CA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
new file mode 100644
index 00000000..08d385e6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Neskie Manuel    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Pellkwet̓min', 'Pelctsipwen̓ten', 'Pellsqépts', 'Peslléwten', 'Pell7ell7é7llqten', 'Pelltspéntsk', 'Pelltqwelq̓wél̓t', 'Pellct̓éxel̓cten', 'Pesqelqlélten', 'Pesllwélsten', 'Pellc7ell7é7llcwten̓', 'Pelltetétq̓em'],
+    'months_short' => ['Kwe', 'Tsi', 'Sqe', 'Éwt', 'Ell', 'Tsp', 'Tqw', 'Ct̓é', 'Qel', 'Wél', 'U7l', 'Tet'],
+    'weekdays' => ['Sxetspesq̓t', 'Spetkesq̓t', 'Selesq̓t', 'Skellesq̓t', 'Smesesq̓t', 'Stselkstesq̓t', 'Stqmekstesq̓t'],
+    'weekdays_short' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'],
+    'weekdays_min' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count sqlélten', // less reliable
+    'y' => ':count sqlélten', // less reliable
+    'a_year' => ':count sqlélten', // less reliable
+
+    'month' => ':count swewll', // less reliable
+    'm' => ':count swewll', // less reliable
+    'a_month' => ':count swewll', // less reliable
+
+    'hour' => ':count seqwlút', // less reliable
+    'h' => ':count seqwlút', // less reliable
+    'a_hour' => ':count seqwlút', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si.php
new file mode 100644
index 00000000..636bf691
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - Malinda Weerasinghe (MalindaWMD)
+ */
+return [
+    'year' => '{1}වසර 1|වසර :count',
+    'a_year' => '{1}වසරක්|වසර :count',
+    'month' => '{1}මාස 1|මාස :count',
+    'a_month' => '{1}මාසය|මාස :count',
+    'week' => '{1}සති 1|සති :count',
+    'a_week' => '{1}සතියක්|සති :count',
+    'day' => '{1}දින 1|දින :count',
+    'a_day' => '{1}දිනක්|දින :count',
+    'hour' => '{1}පැය 1|පැය :count',
+    'a_hour' => '{1}පැයක්|පැය :count',
+    'minute' => '{1}මිනිත්තු 1|මිනිත්තු :count',
+    'a_minute' => '{1}මිනිත්තුවක්|මිනිත්තු :count',
+    'second' => '{1}තත්පර 1|තත්පර :count',
+    'a_second' => '{1}තත්පර කිහිපයකට|තත්පර :count',
+    'ago' => ':time කට පෙර',
+    'from_now' => function ($time) {
+        if (preg_match('/දින \d/u', $time)) {
+            return $time.' න්';
+        }
+
+        return $time.' කින්';
+    },
+    'before' => ':time කට පෙර',
+    'after' => function ($time) {
+        if (preg_match('/දින \d/u', $time)) {
+            return $time.' න්';
+        }
+
+        return $time.' කින්';
+    },
+    'diff_now' => 'දැන්',
+    'diff_today' => 'අද',
+    'diff_yesterday' => 'ඊයේ',
+    'diff_tomorrow' => 'හෙට',
+    'formats' => [
+        'LT' => 'a h:mm',
+        'LTS' => 'a h:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY MMMM D',
+        'LLL' => 'YYYY MMMM D, a h:mm',
+        'LLLL' => 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
+    ],
+    'calendar' => [
+        'sameDay' => '[අද] LT[ට]',
+        'nextDay' => '[හෙට] LT[ට]',
+        'nextWeek' => 'dddd LT[ට]',
+        'lastDay' => '[ඊයේ] LT[ට]',
+        'lastWeek' => '[පසුගිය] dddd LT[ට]',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number වැනි',
+    'meridiem' => ['පෙර වරු', 'පස් වරු', 'පෙ.ව.', 'ප.ව.'],
+    'months' => ['ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්‍රේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', 'නොවැම්බර්', 'දෙසැම්බර්'],
+    'months_short' => ['ජන', 'පෙබ', 'මාර්', 'අප්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'],
+    'weekdays' => ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්‍රහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'],
+    'weekdays_short' => ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්‍රහ', 'සිකු', 'සෙන'],
+    'weekdays_min' => ['ඉ', 'ස', 'අ', 'බ', 'බ්‍ර', 'සි', 'සෙ'],
+    'first_day_of_week' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
new file mode 100644
index 00000000..81c44e0e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/si.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid.php
new file mode 100644
index 00000000..b1c65218
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sid_ET.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
new file mode 100644
index 00000000..1296f9be
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+    'weekdays' => ['Sambata', 'Sanyo', 'Maakisanyo', 'Roowe', 'Hamuse', 'Arbe', 'Qidaame'],
+    'weekdays_short' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'],
+    'weekdays_min' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['soodo', 'hawwaro'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
new file mode 100644
index 00000000..08af197c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk.php
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Martin Suja
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - Ivan Stana
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - James McKinney
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Jozef Fulop
+ * - Nicolás Hock Isaza
+ * - Tom Hughes
+ * - Simon Hürlimann (CyT)
+ * - jofi
+ * - Jakub ADAMEC
+ * - Marek Adamický
+ * - AlterwebStudio
+ */
+return [
+    'year' => 'rok|:count roky|:count rokov',
+    'y' => ':count r',
+    'month' => 'mesiac|:count mesiace|:count mesiacov',
+    'm' => ':count m',
+    'week' => 'týždeň|:count týždne|:count týždňov',
+    'w' => ':count t',
+    'day' => 'deň|:count dni|:count dní',
+    'd' => ':count d',
+    'hour' => 'hodinu|:count hodiny|:count hodín',
+    'h' => ':count h',
+    'minute' => 'minútu|:count minúty|:count minút',
+    'min' => ':count min',
+    'second' => 'sekundu|:count sekundy|:count sekúnd',
+    'a_second' => 'pár sekúnd|:count sekundy|:count sekúnd',
+    's' => ':count s',
+    'ago' => 'pred :time',
+    'from_now' => 'o :time',
+    'after' => ':time po',
+    'before' => ':time pred',
+    'year_ago' => 'rokom|:count rokmi|:count rokmi',
+    'month_ago' => 'mesiacom|:count mesiacmi|:count mesiacmi',
+    'week_ago' => 'týždňom|:count týždňami|:count týždňami',
+    'day_ago' => 'dňom|:count dňami|:count dňami',
+    'hour_ago' => 'hodinou|:count hodinami|:count hodinami',
+    'minute_ago' => 'minútou|:count minútami|:count minútami',
+    'second_ago' => 'sekundou|:count sekundami|:count sekundami',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' a '],
+    'diff_now' => 'teraz',
+    'diff_yesterday' => 'včera',
+    'diff_tomorrow' => 'zajtra',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'DD. MMMM YYYY',
+        'LLL' => 'D. M. HH:mm',
+        'LLLL' => 'dddd D. MMMM YYYY HH:mm',
+    ],
+    'weekdays' => ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'],
+    'weekdays_short' => ['ned', 'pod', 'uto', 'str', 'Å¡tv', 'pia', 'sob'],
+    'weekdays_min' => ['ne', 'po', 'ut', 'st', 'Å¡t', 'pi', 'so'],
+    'months' => ['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'meridiem' => ['dopoludnia', 'popoludní'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
new file mode 100644
index 00000000..0515601a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sk.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl.php
new file mode 100644
index 00000000..b000e30e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl.php
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Nicolás Hock Isaza
+ * - Miha Rebernik
+ * - Gal Jakič (morpheus7CS)
+ * - Glavić
+ * - Anže Časar
+ * - Lovro Tramšek (Lovro1107)
+ * - burut13
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count leto|:count leti|:count leta|:count let',
+    'y' => ':count leto|:count leti|:count leta|:count let',
+    'month' => ':count mesec|:count meseca|:count mesece|:count mesecev',
+    'm' => ':count mes.',
+    'week' => ':count teden|:count tedna|:count tedne|:count tednov',
+    'w' => ':count ted.',
+    'day' => ':count dan|:count dni|:count dni|:count dni',
+    'd' => ':count dan|:count dni|:count dni|:count dni',
+    'hour' => ':count ura|:count uri|:count ure|:count ur',
+    'h' => ':count h',
+    'minute' => ':count minuta|:count minuti|:count minute|:count minut',
+    'min' => ':count min.',
+    'second' => ':count sekunda|:count sekundi|:count sekunde|:count sekund',
+    'a_second' => '{1}nekaj sekund|:count sekunda|:count sekundi|:count sekunde|:count sekund',
+    's' => ':count s',
+
+    'year_ago' => ':count letom|:count letoma|:count leti|:count leti',
+    'y_ago' => ':count letom|:count letoma|:count leti|:count leti',
+    'month_ago' => ':count mesecem|:count meseci|:count meseci|:count meseci',
+    'week_ago' => ':count tednom|:count tednoma|:count tedni|:count tedni',
+    'day_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi',
+    'd_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi',
+    'hour_ago' => ':count uro|:count urama|:count urami|:count urami',
+    'minute_ago' => ':count minuto|:count minutama|:count minutami|:count minutami',
+    'second_ago' => ':count sekundo|:count sekundama|:count sekundami|:count sekundami',
+
+    'day_from_now' => ':count dan|:count dneva|:count dni|:count dni',
+    'd_from_now' => ':count dan|:count dneva|:count dni|:count dni',
+    'hour_from_now' => ':count uro|:count uri|:count ure|:count ur',
+    'minute_from_now' => ':count minuto|:count minuti|:count minute|:count minut',
+    'second_from_now' => ':count sekundo|:count sekundi|:count sekunde|:count sekund',
+
+    'ago' => 'pred :time',
+    'from_now' => 'čez :time',
+    'after' => ':time kasneje',
+    'before' => ':time prej',
+
+    'diff_now' => 'ravnokar',
+    'diff_today' => 'danes',
+    'diff_today_regexp' => 'danes(?:\\s+ob)?',
+    'diff_yesterday' => 'včeraj',
+    'diff_yesterday_regexp' => 'včeraj(?:\\s+ob)?',
+    'diff_tomorrow' => 'jutri',
+    'diff_tomorrow_regexp' => 'jutri(?:\\s+ob)?',
+    'diff_before_yesterday' => 'predvčerajšnjim',
+    'diff_after_tomorrow' => 'pojutrišnjem',
+
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'period_start_date' => 'od :date',
+    'period_end_date' => 'do :date',
+
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[danes ob] LT',
+        'nextDay' => '[jutri ob] LT',
+        'nextWeek' => 'dddd [ob] LT',
+        'lastDay' => '[včeraj ob] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[preteklo] [nedeljo] [ob] LT';
+                case 1:
+                    return '[pretekli] [ponedeljek] [ob] LT';
+                case 2:
+                    return '[pretekli] [torek] [ob] LT';
+                case 3:
+                    return '[preteklo] [sredo] [ob] LT';
+                case 4:
+                    return '[pretekli] [četrtek] [ob] LT';
+                case 5:
+                    return '[pretekli] [petek] [ob] LT';
+                case 6:
+                    return '[preteklo] [soboto] [ob] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'months' => ['januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'],
+    'weekdays_short' => ['ned', 'pon', 'tor', 'sre', 'čet', 'pet', 'sob'],
+    'weekdays_min' => ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'],
+    'list' => [', ', ' in '],
+    'meridiem' => ['dopoldan', 'popoldan'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
new file mode 100644
index 00000000..5dad8c81
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm.php
new file mode 100644
index 00000000..e8c118ac
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/sm_WS.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
new file mode 100644
index 00000000..f0660687
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    akhilesh.k@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Ianuari', 'Fepuari', 'Mati', 'Aperila', 'Me', 'Iuni', 'Iulai', 'Auguso', 'Setema', 'Oketopa', 'Novema', 'Tesema'],
+    'months_short' => ['Ian', 'Fep', 'Mat', 'Ape', 'Me', 'Iun', 'Iul', 'Aug', 'Set', 'Oke', 'Nov', 'Tes'],
+    'weekdays' => ['Aso Sa', 'Aso Gafua', 'Aso Lua', 'Aso Lulu', 'Aso Tofi', 'Aso Farail', 'Aso To\'ana\'i'],
+    'weekdays_short' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''],
+    'weekdays_min' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''],
+
+    'hour' => ':count uati', // less reliable
+    'h' => ':count uati', // less reliable
+    'a_hour' => ':count uati', // less reliable
+
+    'minute' => ':count itiiti', // less reliable
+    'min' => ':count itiiti', // less reliable
+    'a_minute' => ':count itiiti', // less reliable
+
+    'second' => ':count lua', // less reliable
+    's' => ':count lua', // less reliable
+    'a_second' => ':count lua', // less reliable
+
+    'year' => ':count tausaga',
+    'y' => ':count tausaga',
+    'a_year' => ':count tausaga',
+
+    'month' => ':count māsina',
+    'm' => ':count māsina',
+    'a_month' => ':count māsina',
+
+    'week' => ':count vaiaso',
+    'w' => ':count vaiaso',
+    'a_week' => ':count vaiaso',
+
+    'day' => ':count aso',
+    'd' => ':count aso',
+    'a_day' => ':count aso',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/smn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/smn.php
new file mode 100644
index 00000000..20add023
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/smn.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['ip.', 'ep.'],
+    'weekdays' => ['pasepeeivi', 'vuossaargâ', 'majebaargâ', 'koskoho', 'tuorâstuv', 'vástuppeeivi', 'lávurduv'],
+    'weekdays_short' => ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'],
+    'weekdays_min' => ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'],
+    'weekdays_standalone' => ['pasepeivi', 'vuossargâ', 'majebargâ', 'koskokko', 'tuorâstâh', 'vástuppeivi', 'lávurdâh'],
+    'months' => ['uđđâivemáánu', 'kuovâmáánu', 'njuhčâmáánu', 'cuáŋuimáánu', 'vyesimáánu', 'kesimáánu', 'syeinimáánu', 'porgemáánu', 'čohčâmáánu', 'roovvâdmáánu', 'skammâmáánu', 'juovlâmáánu'],
+    'months_short' => ['uđiv', 'kuovâ', 'njuhčâ', 'cuáŋui', 'vyesi', 'kesi', 'syeini', 'porge', 'čohčâ', 'roovvâd', 'skammâ', 'juovlâ'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'H.mm',
+        'LTS' => 'H.mm.ss',
+        'L' => 'D.M.YYYY',
+        'LL' => 'MMM D. YYYY',
+        'LLL' => 'MMMM D. YYYY H.mm',
+        'LLLL' => 'dddd, MMMM D. YYYY H.mm',
+    ],
+
+    'hour' => ':count äigi', // less reliable
+    'h' => ':count äigi', // less reliable
+    'a_hour' => ':count äigi', // less reliable
+
+    'year' => ':count ihe',
+    'y' => ':count ihe',
+    'a_year' => ':count ihe',
+
+    'month' => ':count mánuppaje',
+    'm' => ':count mánuppaje',
+    'a_month' => ':count mánuppaje',
+
+    'week' => ':count okko',
+    'w' => ':count okko',
+    'a_week' => ':count okko',
+
+    'day' => ':count peivi',
+    'd' => ':count peivi',
+    'a_day' => ':count peivi',
+
+    'minute' => ':count miinut',
+    'min' => ':count miinut',
+    'a_minute' => ':count miinut',
+
+    'second' => ':count nubbe',
+    's' => ':count nubbe',
+    'a_second' => ':count nubbe',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sn.php
new file mode 100644
index 00000000..4f25028a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sn.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['a', 'p'],
+    'weekdays' => ['Svondo', 'Muvhuro', 'Chipiri', 'Chitatu', 'China', 'Chishanu', 'Mugovera'],
+    'weekdays_short' => ['Svo', 'Muv', 'Chp', 'Cht', 'Chn', 'Chs', 'Mug'],
+    'weekdays_min' => ['Sv', 'Mu', 'Cp', 'Ct', 'Cn', 'Cs', 'Mg'],
+    'months' => ['Ndira', 'Kukadzi', 'Kurume', 'Kubvumbi', 'Chivabvu', 'Chikumi', 'Chikunguru', 'Nyamavhuvhu', 'Gunyana', 'Gumiguru', 'Mbudzi', 'Zvita'],
+    'months_short' => ['Ndi', 'Kuk', 'Kur', 'Kub', 'Chv', 'Chk', 'Chg', 'Nya', 'Gun', 'Gum', 'Mbu', 'Zvi'],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+
+    'year' => 'makore :count',
+    'y' => 'makore :count',
+    'a_year' => 'makore :count',
+
+    'month' => 'mwedzi :count',
+    'm' => 'mwedzi :count',
+    'a_month' => 'mwedzi :count',
+
+    'week' => 'vhiki :count',
+    'w' => 'vhiki :count',
+    'a_week' => 'vhiki :count',
+
+    'day' => 'mazuva :count',
+    'd' => 'mazuva :count',
+    'a_day' => 'mazuva :count',
+
+    'hour' => 'maawa :count',
+    'h' => 'maawa :count',
+    'a_hour' => 'maawa :count',
+
+    'minute' => 'minitsi :count',
+    'min' => 'minitsi :count',
+    'a_minute' => 'minitsi :count',
+
+    'second' => 'sekonzi :count',
+    's' => 'sekonzi :count',
+    'a_second' => 'sekonzi :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so.php
new file mode 100644
index 00000000..57852719
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Author:
+ * - Abdifatah Abdilahi(@abdifatahz)
+ */
+return [
+    'year' => ':count sanad|:count sanadood',
+    'a_year' => 'sanad|:count sanadood',
+    'y' => '{1}:countsn|{0}:countsns|]1,Inf[:countsn',
+    'month' => ':count bil|:count bilood',
+    'a_month' => 'bil|:count bilood',
+    'm' => ':countbil',
+    'week' => ':count isbuuc',
+    'a_week' => 'isbuuc|:count isbuuc',
+    'w' => ':countis',
+    'day' => ':count maalin|:count maalmood',
+    'a_day' => 'maalin|:count maalmood',
+    'd' => ':countml',
+    'hour' => ':count saac',
+    'a_hour' => 'saacad|:count saac',
+    'h' => ':countsc',
+    'minute' => ':count daqiiqo',
+    'a_minute' => 'daqiiqo|:count daqiiqo',
+    'min' => ':countdq',
+    'second' => ':count ilbidhiqsi',
+    'a_second' => 'xooga ilbidhiqsiyo|:count ilbidhiqsi',
+    's' => ':countil',
+    'ago' => ':time kahor',
+    'from_now' => ':time gudahood',
+    'after' => ':time kedib',
+    'before' => ':time kahor',
+    'diff_now' => 'hada',
+    'diff_today' => 'maanta',
+    'diff_today_regexp' => 'maanta(?:\s+markay\s+(?:tahay|ahayd))?',
+    'diff_yesterday' => 'shalayto',
+    'diff_yesterday_regexp' => 'shalayto(?:\s+markay\s+ahayd)?',
+    'diff_tomorrow' => 'beri',
+    'diff_tomorrow_regexp' => 'beri(?:\s+markay\s+tahay)?',
+    'diff_before_yesterday' => 'doraato',
+    'diff_after_tomorrow' => 'saadanbe',
+    'period_recurrences' => 'mar|:count jeer',
+    'period_interval' => ':interval kasta',
+    'period_start_date' => 'laga bilaabo :date',
+    'period_end_date' => 'ilaa :date',
+    'months' => ['Janaayo', 'Febraayo', 'Abriil', 'Maajo', 'Juun', 'Luuliyo', 'Agoosto', 'Sebteembar', 'Oktoobar', 'Nofeembar', 'Diseembar'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mjo', 'Jun', 'Lyo', 'Agt', 'Seb', 'Okt', 'Nof', 'Dis'],
+    'weekdays' => ['Axad', 'Isniin', 'Talaada', 'Arbaca', 'Khamiis', 'Jimce', 'Sabti'],
+    'weekdays_short' => ['Axd', 'Isn', 'Tal', 'Arb', 'Kha', 'Jim', 'Sbt'],
+    'weekdays_min' => ['Ax', 'Is', 'Ta', 'Ar', 'Kh', 'Ji', 'Sa'],
+    'list' => [', ', ' and '],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'calendar' => [
+        'sameDay' => '[Maanta markay tahay] LT',
+        'nextDay' => '[Beri markay tahay] LT',
+        'nextWeek' => 'dddd [markay tahay] LT',
+        'lastDay' => '[Shalay markay ahayd] LT',
+        'lastWeek' => '[Hore] dddd [Markay ahayd] LT',
+        'sameElse' => 'L',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
new file mode 100644
index 00000000..273dda8d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/so.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
new file mode 100644
index 00000000..7b699715
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return require __DIR__.'/so.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
new file mode 100644
index 00000000..7b699715
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return require __DIR__.'/so.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
new file mode 100644
index 00000000..7b699715
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return require __DIR__.'/so.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq.php
new file mode 100644
index 00000000..ffa592ec
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - JD Isaacks
+ * - Fadion Dashi
+ */
+return [
+    'year' => ':count vit|:count vjet',
+    'a_year' => 'një vit|:count vite',
+    'y' => ':count v.',
+    'month' => ':count muaj',
+    'a_month' => 'një muaj|:count muaj',
+    'm' => ':count muaj',
+    'week' => ':count javë',
+    'a_week' => ':count javë|:count javë',
+    'w' => ':count j.',
+    'day' => ':count ditë',
+    'a_day' => 'një ditë|:count ditë',
+    'd' => ':count d.',
+    'hour' => ':count orë',
+    'a_hour' => 'një orë|:count orë',
+    'h' => ':count o.',
+    'minute' => ':count minutë|:count minuta',
+    'a_minute' => 'një minutë|:count minuta',
+    'min' => ':count min.',
+    'second' => ':count sekondë|:count sekonda',
+    'a_second' => 'disa sekonda|:count sekonda',
+    's' => ':count s.',
+    'ago' => ':time më parë',
+    'from_now' => 'në :time',
+    'after' => ':time pas',
+    'before' => ':time para',
+    'diff_now' => 'tani',
+    'diff_today' => 'Sot',
+    'diff_today_regexp' => 'Sot(?:\\s+në)?',
+    'diff_yesterday' => 'dje',
+    'diff_yesterday_regexp' => 'Dje(?:\\s+në)?',
+    'diff_tomorrow' => 'nesër',
+    'diff_tomorrow_regexp' => 'Nesër(?:\\s+në)?',
+    'diff_before_yesterday' => 'pardje',
+    'diff_after_tomorrow' => 'pasnesër',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Sot në] LT',
+        'nextDay' => '[Nesër në] LT',
+        'nextWeek' => 'dddd [në] LT',
+        'lastDay' => '[Dje në] LT',
+        'lastWeek' => 'dddd [e kaluar në] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'meridiem' => ['PD', 'MD'],
+    'months' => ['janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', 'nëntor', 'dhjetor'],
+    'months_short' => ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'kor', 'gus', 'sht', 'tet', 'nën', 'dhj'],
+    'weekdays' => ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'],
+    'weekdays_short' => ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'],
+    'weekdays_min' => ['d', 'h', 'ma', 'më', 'e', 'p', 'sh'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' dhe '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
new file mode 100644
index 00000000..ea5df3f2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sq.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
new file mode 100644
index 00000000..62f752c4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sq.php', [
+    'formats' => [
+        'L' => 'D.M.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
new file mode 100644
index 00000000..62f752c4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sq.php', [
+    'formats' => [
+        'L' => 'D.M.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
new file mode 100644
index 00000000..68ba663a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr.php
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - shaishavgandhi05
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - Glavić
+ * - Milos Sakovic
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => ':count godina|:count godine|:count godina',
+    'y' => ':count g.',
+    'month' => ':count mesec|:count meseca|:count meseci',
+    'm' => ':count mj.',
+    'week' => ':count nedelja|:count nedelje|:count nedelja',
+    'w' => ':count ned.',
+    'day' => ':count dan|:count dana|:count dana',
+    'd' => ':count d.',
+    'hour' => ':count sat|:count sata|:count sati',
+    'h' => ':count č.',
+    'minute' => ':count minut|:count minuta|:count minuta',
+    'min' => ':count min.',
+    'second' => ':count sekundu|:count sekunde|:count sekundi',
+    's' => ':count sek.',
+    'ago' => 'pre :time',
+    'from_now' => 'za :time',
+    'after' => 'nakon :time',
+    'before' => 'pre :time',
+
+    'year_from_now' => ':count godinu|:count godine|:count godina',
+    'year_ago' => ':count godinu|:count godine|:count godina',
+    'week_from_now' => ':count nedelju|:count nedelje|:count nedelja',
+    'week_ago' => ':count nedelju|:count nedelje|:count nedelja',
+
+    'diff_now' => 'upravo sada',
+    'diff_today' => 'danas',
+    'diff_today_regexp' => 'danas(?:\\s+u)?',
+    'diff_yesterday' => 'juče',
+    'diff_yesterday_regexp' => 'juče(?:\\s+u)?',
+    'diff_tomorrow' => 'sutra',
+    'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?',
+    'diff_before_yesterday' => 'prekjuče',
+    'diff_after_tomorrow' => 'preksutra',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[danas u] LT',
+        'nextDay' => '[sutra u] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[u nedelju u] LT';
+                case 3:
+                    return '[u sredu u] LT';
+                case 6:
+                    return '[u subotu u] LT';
+                default:
+                    return '[u] dddd [u] LT';
+            }
+        },
+        'lastDay' => '[juče u] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[prošle nedelje u] LT';
+                case 1:
+                    return '[prošlog ponedeljka u] LT';
+                case 2:
+                    return '[prošlog utorka u] LT';
+                case 3:
+                    return '[prošle srede u] LT';
+                case 4:
+                    return '[prošlog četvrtka u] LT';
+                case 5:
+                    return '[prošlog petka u] LT';
+                default:
+                    return '[prošle subote u] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'],
+    'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'],
+    'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'],
+    'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' i '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
new file mode 100644
index 00000000..c09df19c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - shaishavgandhi05
+ * - Serhan Apaydın
+ * - JD Isaacks
+ * - Glavić
+ * - Nikola Zeravcic
+ * - Milos Sakovic
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+    'y' => ':count г.',
+    'month' => '{1}:count месец|{2,3,4}:count месеца|[0,Inf[:count месеци',
+    'm' => ':count м.',
+    'week' => '{1}:count недеља|{2,3,4}:count недеље|[0,Inf[:count недеља',
+    'w' => ':count нед.',
+    'day' => '{1,21,31}:count дан|[0,Inf[:count дана',
+    'd' => ':count д.',
+    'hour' => '{1,21}:count сат|{2,3,4,22,23,24}:count сата|[0,Inf[:count сати',
+    'h' => ':count ч.',
+    'minute' => '{1,21,31,41,51}:count минут|[0,Inf[:count минута',
+    'min' => ':count мин.',
+    'second' => '{1,21,31,41,51}:count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[0,Inf[:count секунди',
+    's' => ':count сек.',
+    'ago' => 'пре :time',
+    'from_now' => 'за :time',
+    'after' => ':time након',
+    'before' => ':time пре',
+    'year_from_now' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+    'year_ago' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+    'week_from_now' => '{1}:count недељу|{2,3,4}:count недеље|[0,Inf[:count недеља',
+    'week_ago' => '{1}:count недељу|{2,3,4}:count недеље|[0,Inf[:count недеља',
+    'diff_now' => 'управо сада',
+    'diff_today' => 'данас',
+    'diff_today_regexp' => 'данас(?:\\s+у)?',
+    'diff_yesterday' => 'јуче',
+    'diff_yesterday_regexp' => 'јуче(?:\\s+у)?',
+    'diff_tomorrow' => 'сутра',
+    'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?',
+    'diff_before_yesterday' => 'прекјуче',
+    'diff_after_tomorrow' => 'прекосутра',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[данас у] LT',
+        'nextDay' => '[сутра у] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[у недељу у] LT';
+                case 3:
+                    return '[у среду у] LT';
+                case 6:
+                    return '[у суботу у] LT';
+                default:
+                    return '[у] dddd [у] LT';
+            }
+        },
+        'lastDay' => '[јуче у] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[прошле недеље у] LT';
+                case 1:
+                    return '[прошлог понедељка у] LT';
+                case 2:
+                    return '[прошлог уторка у] LT';
+                case 3:
+                    return '[прошле среде у] LT';
+                case 4:
+                    return '[прошлог четвртка у] LT';
+                case 5:
+                    return '[прошлог петка у] LT';
+                default:
+                    return '[прошле суботе у] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
+    'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
+    'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
+    'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
+    'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' и '],
+    'meridiem' => ['АМ', 'ПМ'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
new file mode 100644
index 00000000..0fb63d76
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sr_Cyrl.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D.M.yy.',
+        'LL' => 'DD.MM.YYYY.',
+        'LLL' => 'DD. MMMM YYYY. HH:mm',
+        'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
+    ],
+    'weekdays' => ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'],
+    'weekdays_short' => ['нед.', 'пон.', 'ут.', 'ср.', 'чет.', 'пет.', 'суб.'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
new file mode 100644
index 00000000..d13229ab
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Glavić
+ * - Milos Sakovic
+ */
+
+use Carbon\CarbonInterface;
+
+return [
+    'year' => '{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+    'y' => ':count г.',
+    'month' => '{1}:count мјесец|{2,3,4}:count мјесеца|[0,Inf[:count мјесеци',
+    'm' => ':count мј.',
+    'week' => '{1}:count недјеља|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
+    'w' => ':count нед.',
+    'day' => '{1,21,31}:count дан|[0,Inf[:count дана',
+    'd' => ':count д.',
+    'hour' => '{1,21}:count сат|{2,3,4,22,23,24}:count сата|[0,Inf[:count сати',
+    'h' => ':count ч.',
+    'minute' => '{1,21,31,41,51}:count минут|[0,Inf[:count минута',
+    'min' => ':count мин.',
+    'second' => '{1,21,31,41,51}:count секунд|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count секунде|[0,Inf[:count секунди',
+    's' => ':count сек.',
+    'ago' => 'прије :time',
+    'from_now' => 'за :time',
+    'after' => ':time након',
+    'before' => ':time прије',
+
+    'year_from_now' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+    'year_ago' => '{1,21,31,41,51}:count годину|{2,3,4,22,23,24,32,33,34,42,43,44,52,53,54}:count године|[0,Inf[:count година',
+
+    'week_from_now' => '{1}:count недјељу|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
+    'week_ago' => '{1}:count недјељу|{2,3,4}:count недјеље|[0,Inf[:count недјеља',
+
+    'diff_now' => 'управо сада',
+    'diff_today' => 'данас',
+    'diff_today_regexp' => 'данас(?:\\s+у)?',
+    'diff_yesterday' => 'јуче',
+    'diff_yesterday_regexp' => 'јуче(?:\\s+у)?',
+    'diff_tomorrow' => 'сутра',
+    'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?',
+    'diff_before_yesterday' => 'прекјуче',
+    'diff_after_tomorrow' => 'прекосјутра',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM YYYY',
+        'LLL' => 'D. MMMM YYYY H:mm',
+        'LLLL' => 'dddd, D. MMMM YYYY H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[данас у] LT',
+        'nextDay' => '[сутра у] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[у недељу у] LT';
+                case 3:
+                    return '[у среду у] LT';
+                case 6:
+                    return '[у суботу у] LT';
+                default:
+                    return '[у] dddd [у] LT';
+            }
+        },
+        'lastDay' => '[јуче у] LT',
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[прошле недеље у] LT';
+                case 1:
+                    return '[прошлог понедељка у] LT';
+                case 2:
+                    return '[прошлог уторка у] LT';
+                case 3:
+                    return '[прошле среде у] LT';
+                case 4:
+                    return '[прошлог четвртка у] LT';
+                case 5:
+                    return '[прошлог петка у] LT';
+                default:
+                    return '[прошле суботе у] LT';
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
+    'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
+    'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
+    'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
+    'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' и '],
+    'meridiem' => ['АМ', 'ПМ'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
new file mode 100644
index 00000000..492baf0c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sr_Cyrl_BA.php', [
+    'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
new file mode 100644
index 00000000..99716747
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
new file mode 100644
index 00000000..897c674a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sr_Latn.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D.M.yy.',
+        'LL' => 'DD.MM.YYYY.',
+        'LLL' => 'DD. MMMM YYYY. HH:mm',
+        'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm',
+    ],
+    'weekdays' => ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned.', 'pon.', 'ut.', 'sr.', 'čet.', 'pet.', 'sub.'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
new file mode 100644
index 00000000..e2133ef1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php
@@ -0,0 +1,66 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Glavić
+ * - Milos Sakovic
+ */
+
+use Carbon\CarbonInterface;
+
+return array_replace_recursive(require __DIR__.'/sr.php', [
+    'month' => ':count mjesec|:count mjeseca|:count mjeseci',
+    'week' => ':count nedjelja|:count nedjelje|:count nedjelja',
+    'second' => ':count sekund|:count sekunde|:count sekundi',
+    'ago' => 'prije :time',
+    'from_now' => 'za :time',
+    'after' => ':time nakon',
+    'before' => ':time prije',
+    'week_from_now' => ':count nedjelju|:count nedjelje|:count nedjelja',
+    'week_ago' => ':count nedjelju|:count nedjelje|:count nedjelja',
+    'diff_tomorrow' => 'sjutra',
+    'calendar' => [
+        'nextDay' => '[sjutra u] LT',
+        'nextWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[u nedjelju u] LT';
+                case 3:
+                    return '[u srijedu u] LT';
+                case 6:
+                    return '[u subotu u] LT';
+                default:
+                    return '[u] dddd [u] LT';
+            }
+        },
+        'lastWeek' => function (CarbonInterface $date) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                    return '[prošle nedjelje u] LT';
+                case 1:
+                    return '[prošle nedjelje u] LT';
+                case 2:
+                    return '[prošlog utorka u] LT';
+                case 3:
+                    return '[prošle srijede u] LT';
+                case 4:
+                    return '[prošlog četvrtka u] LT';
+                case 5:
+                    return '[prošlog petka u] LT';
+                default:
+                    return '[prošle subote u] LT';
+            }
+        },
+    ],
+    'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'],
+    'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
new file mode 100644
index 00000000..d0b9d10b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sr_Latn_BA.php', [
+    'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
new file mode 100644
index 00000000..d7c65b91
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sr_Latn_ME.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
new file mode 100644
index 00000000..bc5e04bf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - sr_YU, sr_CS locale Danilo Segan bug-glibc-locales@gnu.org
+ */
+return require __DIR__.'/sr_Cyrl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
new file mode 100644
index 00000000..99716747
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss.php
new file mode 100644
index 00000000..1c52c9bf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Nicolai Davies
+ */
+return [
+    'year' => '{1}umnyaka|:count iminyaka',
+    'month' => '{1}inyanga|:count tinyanga',
+    'week' => '{1}:count liviki|:count emaviki',
+    'day' => '{1}lilanga|:count emalanga',
+    'hour' => '{1}lihora|:count emahora',
+    'minute' => '{1}umzuzu|:count emizuzu',
+    'second' => '{1}emizuzwana lomcane|:count mzuzwana',
+    'ago' => 'wenteka nga :time',
+    'from_now' => 'nga :time',
+    'diff_yesterday' => 'Itolo',
+    'diff_yesterday_regexp' => 'Itolo(?:\\s+nga)?',
+    'diff_today' => 'Namuhla',
+    'diff_today_regexp' => 'Namuhla(?:\\s+nga)?',
+    'diff_tomorrow' => 'Kusasa',
+    'diff_tomorrow_regexp' => 'Kusasa(?:\\s+nga)?',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm A',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm A',
+    ],
+    'calendar' => [
+        'sameDay' => '[Namuhla nga] LT',
+        'nextDay' => '[Kusasa nga] LT',
+        'nextWeek' => 'dddd [nga] LT',
+        'lastDay' => '[Itolo nga] LT',
+        'lastWeek' => 'dddd [leliphelile] [nga] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        $lastDigit = $number % 10;
+
+        return $number.(
+            ((int) ($number % 100 / 10) === 1) ? 'e' : (
+                ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e'
+            )
+        );
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 11) {
+            return 'ekuseni';
+        }
+        if ($hour < 15) {
+            return 'emini';
+        }
+        if ($hour < 19) {
+            return 'entsambama';
+        }
+
+        return 'ebusuku';
+    },
+    'months' => ['Bhimbidvwane', 'Indlovana', 'Indlov\'lenkhulu', 'Mabasa', 'Inkhwekhweti', 'Inhlaba', 'Kholwane', 'Ingci', 'Inyoni', 'Imphala', 'Lweti', 'Ingongoni'],
+    'months_short' => ['Bhi', 'Ina', 'Inu', 'Mab', 'Ink', 'Inh', 'Kho', 'Igc', 'Iny', 'Imp', 'Lwe', 'Igo'],
+    'weekdays' => ['Lisontfo', 'Umsombuluko', 'Lesibili', 'Lesitsatfu', 'Lesine', 'Lesihlanu', 'Umgcibelo'],
+    'weekdays_short' => ['Lis', 'Umb', 'Lsb', 'Les', 'Lsi', 'Lsh', 'Umg'],
+    'weekdays_min' => ['Li', 'Us', 'Lb', 'Lt', 'Ls', 'Lh', 'Ug'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
new file mode 100644
index 00000000..ba89527c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/ss.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st.php
new file mode 100644
index 00000000..b065445b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/st_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
new file mode 100644
index 00000000..5bce7f20
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Pherekgong', 'Hlakola', 'Tlhakubele', 'Mmese', 'Motsheanong', 'Phupjane', 'Phupu', 'Phato', 'Leotse', 'Mphalane', 'Pudungwana', 'Tshitwe'],
+    'months_short' => ['Phe', 'Hla', 'TlH', 'Mme', 'Mot', 'Jan', 'Upu', 'Pha', 'Leo', 'Mph', 'Pud', 'Tsh'],
+    'weekdays' => ['Sontaha', 'Mantaha', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Moqebelo'],
+    'weekdays_short' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'],
+    'weekdays_min' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'],
+    'day_of_first_week_of_year' => 1,
+
+    'week' => ':count Sontaha', // less reliable
+    'w' => ':count Sontaha', // less reliable
+    'a_week' => ':count Sontaha', // less reliable
+
+    'day' => ':count letsatsi', // less reliable
+    'd' => ':count letsatsi', // less reliable
+    'a_day' => ':count letsatsi', // less reliable
+
+    'hour' => ':count sešupanako', // less reliable
+    'h' => ':count sešupanako', // less reliable
+    'a_hour' => ':count sešupanako', // less reliable
+
+    'minute' => ':count menyane', // less reliable
+    'min' => ':count menyane', // less reliable
+    'a_minute' => ':count menyane', // less reliable
+
+    'second' => ':count thusa', // less reliable
+    's' => ':count thusa', // less reliable
+    'a_second' => ':count thusa', // less reliable
+
+    'year' => ':count selemo',
+    'y' => ':count selemo',
+    'a_year' => ':count selemo',
+
+    'month' => ':count kgwedi',
+    'm' => ':count kgwedi',
+    'a_month' => ':count kgwedi',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv.php
new file mode 100644
index 00000000..1706c719
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv.php
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Kristoffer Snabb
+ * - JD Isaacks
+ * - Jens Herlevsen
+ * - Nightpine
+ * - Anders Nygren (litemerafrukt)
+ */
+return [
+    'year' => ':count år',
+    'a_year' => 'ett år|:count år',
+    'y' => ':count år',
+    'month' => ':count månad|:count månader',
+    'a_month' => 'en månad|:count månader',
+    'm' => ':count mån',
+    'week' => ':count vecka|:count veckor',
+    'a_week' => 'en vecka|:count veckor',
+    'w' => ':count v',
+    'day' => ':count dag|:count dagar',
+    'a_day' => 'en dag|:count dagar',
+    'd' => ':count dgr',
+    'hour' => ':count timme|:count timmar',
+    'a_hour' => 'en timme|:count timmar',
+    'h' => ':count tim',
+    'minute' => ':count minut|:count minuter',
+    'a_minute' => 'en minut|:count minuter',
+    'min' => ':count min',
+    'second' => ':count sekund|:count sekunder',
+    'a_second' => 'några sekunder|:count sekunder',
+    's' => ':count s',
+    'ago' => 'för :time sedan',
+    'from_now' => 'om :time',
+    'after' => ':time efter',
+    'before' => ':time före',
+    'diff_now' => 'nu',
+    'diff_today' => 'I dag',
+    'diff_yesterday' => 'i går',
+    'diff_yesterday_regexp' => 'I går',
+    'diff_tomorrow' => 'i morgon',
+    'diff_tomorrow_regexp' => 'I morgon',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY [kl.] HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY [kl.] HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[I dag] LT',
+        'nextDay' => '[I morgon] LT',
+        'nextWeek' => '[PÃ¥] dddd LT',
+        'lastDay' => '[I går] LT',
+        'lastWeek' => '[I] dddd[s] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        $lastDigit = $number % 10;
+
+        return $number.(
+            ((int) ($number % 100 / 10) === 1) ? 'e' : (
+                ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e'
+            )
+        );
+    },
+    'months' => ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],
+    'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'],
+    'weekdays' => ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'],
+    'weekdays_short' => ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'],
+    'weekdays_min' => ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' och '],
+    'meridiem' => ['fm', 'em'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
new file mode 100644
index 00000000..70cc5585
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sv.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
new file mode 100644
index 00000000..d7182c83
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sv.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
new file mode 100644
index 00000000..d7182c83
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/sv.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw.php
new file mode 100644
index 00000000..f8630d53
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - leyluj
+ * - Josh Soref
+ * - ryanhart2
+ */
+return [
+    'year' => 'mwaka :count|miaka :count',
+    'a_year' => 'mwaka mmoja|miaka :count',
+    'y' => 'mwaka :count|miaka :count',
+    'month' => 'mwezi :count|miezi :count',
+    'a_month' => 'mwezi mmoja|miezi :count',
+    'm' => 'mwezi :count|miezi :count',
+    'week' => 'wiki :count',
+    'a_week' => 'wiki mmoja|wiki :count',
+    'w' => 'w. :count',
+    'day' => 'siku :count',
+    'a_day' => 'siku moja|masiku :count',
+    'd' => 'si. :count',
+    'hour' => 'saa :count|masaa :count',
+    'a_hour' => 'saa limoja|masaa :count',
+    'h' => 'saa :count|masaa :count',
+    'minute' => 'dakika :count',
+    'a_minute' => 'dakika moja|dakika :count',
+    'min' => 'd. :count',
+    'second' => 'sekunde :count',
+    'a_second' => 'hivi punde|sekunde :count',
+    's' => 'se. :count',
+    'ago' => 'tokea :time',
+    'from_now' => ':time baadaye',
+    'after' => ':time baada',
+    'before' => ':time kabla',
+    'diff_now' => 'sasa hivi',
+    'diff_today' => 'leo',
+    'diff_today_regexp' => 'leo(?:\\s+saa)?',
+    'diff_yesterday' => 'jana',
+    'diff_tomorrow' => 'kesho',
+    'diff_tomorrow_regexp' => 'kesho(?:\\s+saa)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[leo saa] LT',
+        'nextDay' => '[kesho saa] LT',
+        'nextWeek' => '[wiki ijayo] dddd [saat] LT',
+        'lastDay' => '[jana] LT',
+        'lastWeek' => '[wiki iliyopita] dddd [saat] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Jpl', 'Jtat', 'Jnne', 'Jtan', 'Alh', 'Ijm', 'Jmos'],
+    'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' na '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
new file mode 100644
index 00000000..ec9117b5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sw.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
new file mode 100644
index 00000000..2ace0db2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kamusi Project Martin Benjamin locales@kamusi.org
+ */
+return array_replace_recursive(require __DIR__.'/sw.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
+    'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['asubuhi', 'alasiri'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
new file mode 100644
index 00000000..fab3cd68
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kamusi Project Martin Benjamin locales@kamusi.org
+ */
+return array_replace_recursive(require __DIR__.'/sw.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
+    'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['asubuhi', 'alasiri'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
new file mode 100644
index 00000000..ec9117b5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/sw.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl.php
new file mode 100644
index 00000000..4429c4f5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/szl_PL.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
new file mode 100644
index 00000000..9adddcf8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - szl_PL locale Przemyslaw Buczkowski libc-alpha@sourceware.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['styczyń', 'luty', 'merc', 'kwjeciyń', 'moj', 'czyrwjyń', 'lipjyń', 'siyrpjyń', 'wrzesiyń', 'październik', 'listopad', 'grudziyń'],
+    'months_short' => ['sty', 'lut', 'mer', 'kwj', 'moj', 'czy', 'lip', 'siy', 'wrz', 'paź', 'lis', 'gru'],
+    'weekdays' => ['niydziela', 'pyńdziŏek', 'wtŏrek', 'strzŏda', 'sztwortek', 'pjōntek', 'sobŏta'],
+    'weekdays_short' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'],
+    'weekdays_min' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count rok',
+    'y' => ':count rok',
+    'a_year' => ':count rok',
+
+    'month' => ':count mjeśůnc',
+    'm' => ':count mjeśůnc',
+    'a_month' => ':count mjeśůnc',
+
+    'week' => ':count tydźyń',
+    'w' => ':count tydźyń',
+    'a_week' => ':count tydźyń',
+
+    'day' => ':count dźyń',
+    'd' => ':count dźyń',
+    'a_day' => ':count dźyń',
+
+    'hour' => ':count godzina',
+    'h' => ':count godzina',
+    'a_hour' => ':count godzina',
+
+    'minute' => ':count minuta',
+    'min' => ':count minuta',
+    'a_minute' => ':count minuta',
+
+    'second' => ':count sekůnda',
+    's' => ':count sekůnda',
+    'a_second' => ':count sekůnda',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta.php
new file mode 100644
index 00000000..c1d89cbb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta.php
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - François B
+ * - JD Isaacks
+ * - Satheez
+ */
+return [
+    'year' => ':count வருடம்|:count ஆண்டுகள்',
+    'a_year' => 'ஒரு வருடம்|:count ஆண்டுகள்',
+    'y' => ':count வருட.|:count ஆண்.',
+    'month' => ':count மாதம்|:count மாதங்கள்',
+    'a_month' => 'ஒரு மாதம்|:count மாதங்கள்',
+    'm' => ':count மாத.',
+    'week' => ':count வாரம்|:count வாரங்கள்',
+    'a_week' => 'ஒரு வாரம்|:count வாரங்கள்',
+    'w' => ':count வார.',
+    'day' => ':count நாள்|:count நாட்கள்',
+    'a_day' => 'ஒரு நாள்|:count நாட்கள்',
+    'd' => ':count நாள்|:count நாட்.',
+    'hour' => ':count மணி நேரம்|:count மணி நேரம்',
+    'a_hour' => 'ஒரு மணி நேரம்|:count மணி நேரம்',
+    'h' => ':count மணி.',
+    'minute' => ':count நிமிடம்|:count நிமிடங்கள்',
+    'a_minute' => 'ஒரு நிமிடம்|:count நிமிடங்கள்',
+    'min' => ':count நிமி.',
+    'second' => ':count சில விநாடிகள்|:count விநாடிகள்',
+    'a_second' => 'ஒரு சில விநாடிகள்|:count விநாடிகள்',
+    's' => ':count விநா.',
+    'ago' => ':time முன்',
+    'from_now' => ':time இல்',
+    'before' => ':time முன்',
+    'after' => ':time பின்',
+    'diff_now' => 'இப்போது',
+    'diff_today' => 'இன்று',
+    'diff_yesterday' => 'நேற்று',
+    'diff_tomorrow' => 'நாளை',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[இன்று] LT',
+        'nextDay' => '[நாளை] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[நேற்று] LT',
+        'lastWeek' => '[கடந்த வாரம்] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberவது',
+    'meridiem' => function ($hour) {
+        if ($hour < 2) {
+            return ' யாமம்';
+        }
+        if ($hour < 6) {
+            return ' வைகறை';
+        }
+        if ($hour < 10) {
+            return ' காலை';
+        }
+        if ($hour < 14) {
+            return ' நண்பகல்';
+        }
+        if ($hour < 18) {
+            return ' எற்பாடு';
+        }
+        if ($hour < 22) {
+            return ' மாலை';
+        }
+
+        return ' யாமம்';
+    },
+    'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'months_short' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'weekdays' => ['ஞாயிற்றுக்கிழமை', 'திங்கட்கிழமை', 'செவ்வாய்கிழமை', 'புதன்கிழமை', 'வியாழக்கிழமை', 'வெள்ளிக்கிழமை', 'சனிக்கிழமை'],
+    'weekdays_short' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
+    'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' மற்றும் '],
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
new file mode 100644
index 00000000..492d4c56
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ta.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
+    'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
+    'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['காலை', 'மாலை'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
new file mode 100644
index 00000000..8e2afbf6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - J.Yogaraj 94-777-315206 yogaraj.ubuntu@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/ta.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'months_short' => ['ஜன', 'பிப்', 'மார்', 'ஏப்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக', 'செப்', 'அக்', 'நவ', 'டிச'],
+    'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
+    'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['காலை', 'மாலை'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
new file mode 100644
index 00000000..a6cd8b51
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ta.php', [
+    'formats' => [
+        'LT' => 'a h:mm',
+        'LTS' => 'a h:mm:ss',
+        'L' => 'D/M/yy',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM, YYYY, a h:mm',
+        'LLLL' => 'dddd, D MMMM, YYYY, a h:mm',
+    ],
+    'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
+    'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
+    'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'],
+    'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'first_day_of_week' => 1,
+    'meridiem' => ['மு.ப', 'பி.ப'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
new file mode 100644
index 00000000..7dbedeee
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ta.php', [
+    'formats' => [
+        'LT' => 'a h:mm',
+        'LTS' => 'a h:mm:ss',
+        'L' => 'D/M/yy',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM, YYYY, a h:mm',
+        'LLLL' => 'dddd, D MMMM, YYYY, a h:mm',
+    ],
+    'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'],
+    'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'],
+    'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'],
+    'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'],
+    'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'],
+    'meridiem' => ['மு.ப', 'பி.ப'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
new file mode 100644
index 00000000..2eb99057
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tcy_IN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
new file mode 100644
index 00000000..2ff20e0e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IndLinux.org, Samsung Electronics Co., Ltd.    alexey.merzlyakov@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['ಜನವರಿ', 'ಫೆಬ್ರುವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್‌‌', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್‌', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'],
+    'months_short' => ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'],
+    'weekdays' => ['ಐಥಾರ', 'ಸೋಮಾರ', 'ಅಂಗರೆ', 'ಬುಧಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರರ', 'ಶನಿವಾರ'],
+    'weekdays_short' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
+    'weekdays_min' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ಕಾಂಡೆ', 'ಬಯ್ಯ'],
+
+    'year' => ':count ನೀರ್', // less reliable
+    'y' => ':count ನೀರ್', // less reliable
+    'a_year' => ':count ನೀರ್', // less reliable
+
+    'month' => ':count ಮೀನ್', // less reliable
+    'm' => ':count ಮೀನ್', // less reliable
+    'a_month' => ':count ಮೀನ್', // less reliable
+
+    'day' => ':count ಸುಗ್ಗಿ', // less reliable
+    'd' => ':count ಸುಗ್ಗಿ', // less reliable
+    'a_day' => ':count ಸುಗ್ಗಿ', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te.php
new file mode 100644
index 00000000..ac38218f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - Josh Soref
+ * - François B
+ * - kc
+ */
+return [
+    'year' => ':count సంవత్సరం|:count సంవత్సరాలు',
+    'a_year' => 'ఒక సంవత్సరం|:count సంవత్సరాలు',
+    'y' => ':count సం.',
+    'month' => ':count నెల|:count నెలలు',
+    'a_month' => 'ఒక నెల|:count నెలలు',
+    'm' => ':count నెల|:count నెల.',
+    'week' => ':count వారం|:count వారాలు',
+    'a_week' => 'ఒక వారం|:count వారాలు',
+    'w' => ':count వార.|:count వారా.',
+    'day' => ':count రోజు|:count రోజులు',
+    'a_day' => 'ఒక రోజు|:count రోజులు',
+    'd' => ':count రోజు|:count రోజు.',
+    'hour' => ':count గంట|:count గంటలు',
+    'a_hour' => 'ఒక గంట|:count గంటలు',
+    'h' => ':count à°—à°‚.',
+    'minute' => ':count నిమిషం|:count నిమిషాలు',
+    'a_minute' => 'ఒక నిమిషం|:count నిమిషాలు',
+    'min' => ':count నిమి.',
+    'second' => ':count సెకను|:count సెకన్లు',
+    'a_second' => 'కొన్ని క్షణాలు|:count సెకన్లు',
+    's' => ':count సెక.',
+    'ago' => ':time క్రితం',
+    'from_now' => ':time లో',
+    'diff_now' => 'ప్రస్తుతం',
+    'diff_today' => 'నేడు',
+    'diff_yesterday' => 'నిన్న',
+    'diff_tomorrow' => 'రేపు',
+    'formats' => [
+        'LT' => 'A h:mm',
+        'LTS' => 'A h:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, A h:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, A h:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[నేడు] LT',
+        'nextDay' => '[రేపు] LT',
+        'nextWeek' => 'dddd, LT',
+        'lastDay' => '[నిన్న] LT',
+        'lastWeek' => '[à°—à°¤] dddd, LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberà°µ',
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'రాత్రి';
+        }
+        if ($hour < 10) {
+            return 'ఉదయం';
+        }
+        if ($hour < 17) {
+            return 'మధ్యాహ్నం';
+        }
+        if ($hour < 20) {
+            return 'సాయంత్రం';
+        }
+
+        return ' రాత్రి';
+    },
+    'months' => ['జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జూలై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', 'డిసెంబర్'],
+    'months_short' => ['జన.', 'ఫిబ్ర.', 'మార్చి', 'ఏప్రి.', 'మే', 'జూన్', 'జూలై', 'ఆగ.', 'సెప్.', 'అక్టో.', 'నవ.', 'డిసె.'],
+    'weekdays' => ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'],
+    'weekdays_short' => ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'],
+    'weekdays_min' => ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'],
+    'list' => ', ',
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [0, 0],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
new file mode 100644
index 00000000..3963f8d5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/te.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo.php
new file mode 100644
index 00000000..ca30c37d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ta.php', [
+    'meridiem' => ['Taparachu', 'Ebongi'],
+    'weekdays' => ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'],
+    'weekdays_short' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'],
+    'weekdays_min' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'],
+    'months' => ['Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo'],
+    'months_short' => ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
new file mode 100644
index 00000000..010a04f5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/teo.php', [
+    'first_day_of_week' => 0,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tet.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tet.php
new file mode 100644
index 00000000..d0544d4e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tet.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Joshua Brooks
+ * - François B
+ */
+return [
+    'year' => 'tinan :count',
+    'a_year' => '{1}tinan ida|tinan :count',
+    'month' => 'fulan :count',
+    'a_month' => '{1}fulan ida|fulan :count',
+    'week' => 'semana :count',
+    'a_week' => '{1}semana ida|semana :count',
+    'day' => 'loron :count',
+    'a_day' => '{1}loron ida|loron :count',
+    'hour' => 'oras :count',
+    'a_hour' => '{1}oras ida|oras :count',
+    'minute' => 'minutu :count',
+    'a_minute' => '{1}minutu ida|minutu :count',
+    'second' => 'segundu :count',
+    'a_second' => '{1}segundu balun|segundu :count',
+    'ago' => ':time liuba',
+    'from_now' => 'iha :time',
+    'diff_yesterday' => 'Horiseik',
+    'diff_yesterday_regexp' => 'Horiseik(?:\\s+iha)?',
+    'diff_today' => 'Ohin',
+    'diff_today_regexp' => 'Ohin(?:\\s+iha)?',
+    'diff_tomorrow' => 'Aban',
+    'diff_tomorrow_regexp' => 'Aban(?:\\s+iha)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Ohin iha] LT',
+        'nextDay' => '[Aban iha] LT',
+        'nextWeek' => 'dddd [iha] LT',
+        'lastDay' => '[Horiseik iha] LT',
+        'lastWeek' => 'dddd [semana kotuk] [iha] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':numberº',
+    'months' => ['Janeiru', 'Fevereiru', 'Marsu', 'Abril', 'Maiu', 'Juñu', 'Jullu', 'Agustu', 'Setembru', 'Outubru', 'Novembru', 'Dezembru'],
+    'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
+    'weekdays' => ['Domingu', 'Segunda', 'Tersa', 'Kuarta', 'Kinta', 'Sesta', 'Sabadu'],
+    'weekdays_short' => ['Dom', 'Seg', 'Ters', 'Kua', 'Kint', 'Sest', 'Sab'],
+    'weekdays_min' => ['Do', 'Seg', 'Te', 'Ku', 'Ki', 'Ses', 'Sa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg.php
new file mode 100644
index 00000000..b7df893c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg.php
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Orif N. Jr
+ */
+return [
+    'year' => '{1}як сол|:count сол',
+    'month' => '{1}як моҳ|:count моҳ',
+    'week' => '{1}як ҳафта|:count ҳафта',
+    'day' => '{1}як рӯз|:count рӯз',
+    'hour' => '{1}як соат|:count соат',
+    'minute' => '{1}як дақиқа|:count дақиқа',
+    'second' => '{1}якчанд сония|:count сония',
+    'ago' => ':time пеш',
+    'from_now' => 'баъди :time',
+    'diff_today' => 'Имрӯз',
+    'diff_yesterday' => 'Дирӯз',
+    'diff_yesterday_regexp' => 'Дирӯз(?:\\s+соати)?',
+    'diff_tomorrow' => 'Пагоҳ',
+    'diff_tomorrow_regexp' => 'Пагоҳ(?:\\s+соати)?',
+    'diff_today_regexp' => 'Имрӯз(?:\\s+соати)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Имрӯз соати] LT',
+        'nextDay' => '[Пагоҳ соати] LT',
+        'nextWeek' => 'dddd[и] [ҳафтаи оянда соати] LT',
+        'lastDay' => '[Дирӯз соати] LT',
+        'lastWeek' => 'dddd[и] [ҳафтаи гузашта соати] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number) {
+        if ($number === 0) { // special case for zero
+            return "$number-ıncı";
+        }
+
+        static $suffixes = [
+            0 => '-ум',
+            1 => '-ум',
+            2 => '-юм',
+            3 => '-юм',
+            4 => '-ум',
+            5 => '-ум',
+            6 => '-ум',
+            7 => '-ум',
+            8 => '-ум',
+            9 => '-ум',
+            10 => '-ум',
+            12 => '-ум',
+            13 => '-ум',
+            20 => '-ум',
+            30 => '-юм',
+            40 => '-ум',
+            50 => '-ум',
+            60 => '-ум',
+            70 => '-ум',
+            80 => '-ум',
+            90 => '-ум',
+            100 => '-ум',
+        ];
+
+        return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'шаб';
+        }
+        if ($hour < 11) {
+            return 'субҳ';
+        }
+        if ($hour < 16) {
+            return 'рӯз';
+        }
+        if ($hour < 19) {
+            return 'бегоҳ';
+        }
+
+        return 'шаб';
+    },
+    'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'],
+    'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'weekdays' => ['якшанбе', 'душанбе', 'сешанбе', 'чоршанбе', 'панҷшанбе', 'ҷумъа', 'шанбе'],
+    'weekdays_short' => ['яшб', 'дшб', 'сшб', 'чшб', 'пшб', 'ҷум', 'шнб'],
+    'weekdays_min' => ['яш', 'дш', 'сш', 'чш', 'пш', 'ҷм', 'шб'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' ва '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
new file mode 100644
index 00000000..badc7d1f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/tg.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th.php
new file mode 100644
index 00000000..6397f6e4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th.php
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Nate Whittaker
+ * - John MacAslan
+ * - Chanintorn Asavavichairoj
+ * - JD Isaacks
+ * - ROKAISAKKON
+ * - RO'KAISAKKON
+ * - Andreas Möller
+ * - nithisa
+ */
+return [
+    'year' => ':count ปี',
+    'y' => ':count ปี',
+    'month' => ':count เดือน',
+    'm' => ':count เดือน',
+    'week' => ':count สัปดาห์',
+    'w' => ':count สัปดาห์',
+    'day' => ':count วัน',
+    'd' => ':count วัน',
+    'hour' => ':count ชั่วโมง',
+    'h' => ':count ชั่วโมง',
+    'minute' => ':count นาที',
+    'min' => ':count นาที',
+    'second' => ':count วินาที',
+    'a_second' => '{1}ไม่กี่วินาที|]1,Inf[:count วินาที',
+    's' => ':count วินาที',
+    'ago' => ':timeที่แล้ว',
+    'from_now' => 'อีก :time',
+    'after' => ':timeหลังจากนี้',
+    'before' => ':timeก่อน',
+    'diff_now' => 'ขณะนี้',
+    'diff_today' => 'วันนี้',
+    'diff_today_regexp' => 'วันนี้(?:\\s+เวลา)?',
+    'diff_yesterday' => 'เมื่อวาน',
+    'diff_yesterday_regexp' => 'เมื่อวานนี้(?:\\s+เวลา)?',
+    'diff_tomorrow' => 'พรุ่งนี้',
+    'diff_tomorrow_regexp' => 'พรุ่งนี้(?:\\s+เวลา)?',
+    'formats' => [
+        'LT' => 'H:mm',
+        'LTS' => 'H:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY เวลา H:mm',
+        'LLLL' => 'วันddddที่ D MMMM YYYY เวลา H:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[วันนี้ เวลา] LT',
+        'nextDay' => '[พรุ่งนี้ เวลา] LT',
+        'nextWeek' => 'dddd[หน้า เวลา] LT',
+        'lastDay' => '[เมื่อวานนี้ เวลา] LT',
+        'lastWeek' => '[วัน]dddd[ที่แล้ว เวลา] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ก่อนเที่ยง', 'หลังเที่ยง'],
+    'months' => ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],
+    'months_short' => ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],
+    'weekdays' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'],
+    'weekdays_short' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัส', 'ศุกร์', 'เสาร์'],
+    'weekdays_min' => ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],
+    'list' => [', ', ' และ '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
new file mode 100644
index 00000000..b9f94b2d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/th.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the.php
new file mode 100644
index 00000000..85f8333b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/the_NP.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
new file mode 100644
index 00000000..34da1627
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Chitwanix OS Development    info@chitwanix.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'dddd DD MMM YYYY',
+    ],
+    'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'],
+    'weekdays' => ['आइतबार', 'सोमबार', 'मंगलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'],
+    'weekdays_short' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'],
+    'weekdays_min' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['पूर्वाह्न', 'अपराह्न'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti.php
new file mode 100644
index 00000000..ffd32369
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ti_ER.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
new file mode 100644
index 00000000..310c51cc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'],
+    'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'],
+    'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'],
+
+    'year' => ':count ዓመት',
+    'y' => ':count ዓመት',
+    'a_year' => ':count ዓመት',
+
+    'month' => 'ወርሒ :count',
+    'm' => 'ወርሒ :count',
+    'a_month' => 'ወርሒ :count',
+
+    'week' => ':count ሰሙን',
+    'w' => ':count ሰሙን',
+    'a_week' => ':count ሰሙን',
+
+    'day' => ':count መዓልቲ',
+    'd' => ':count መዓልቲ',
+    'a_day' => ':count መዓልቲ',
+
+    'hour' => ':count ሰዓት',
+    'h' => ':count ሰዓት',
+    'a_hour' => ':count ሰዓት',
+
+    'minute' => ':count ደቒቕ',
+    'min' => ':count ደቒቕ',
+    'a_minute' => ':count ደቒቕ',
+
+    'second' => ':count ሰከንድ',
+    's' => ':count ሰከንድ',
+    'a_second' => ':count ሰከንድ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
new file mode 100644
index 00000000..024217f2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
+    'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
+    'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig.php
new file mode 100644
index 00000000..186fe713
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tig_ER.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
new file mode 100644
index 00000000..46887b05
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'],
+    'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'],
+    'weekdays' => ['ሰንበት ዓባይ', 'ሰኖ', 'ታላሸኖ', 'ኣረርባዓ', 'ከሚሽ', 'ጅምዓት', 'ሰንበት ንኢሽ'],
+    'weekdays_short' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'],
+    'weekdays_min' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ቀደም ሰር ምዕል', 'ሓቆ ሰር ምዕል'],
+
+    'year' => ':count ማይ', // less reliable
+    'y' => ':count ማይ', // less reliable
+    'a_year' => ':count ማይ', // less reliable
+
+    'month' => ':count ሸምሽ', // less reliable
+    'm' => ':count ሸምሽ', // less reliable
+    'a_month' => ':count ሸምሽ', // less reliable
+
+    'week' => ':count ሰቡዕ', // less reliable
+    'w' => ':count ሰቡዕ', // less reliable
+    'a_week' => ':count ሰቡዕ', // less reliable
+
+    'day' => ':count ዎሮ', // less reliable
+    'd' => ':count ዎሮ', // less reliable
+    'a_day' => ':count ዎሮ', // less reliable
+
+    'hour' => ':count ሰዓት', // less reliable
+    'h' => ':count ሰዓት', // less reliable
+    'a_hour' => ':count ሰዓት', // less reliable
+
+    'minute' => ':count ካልኣይት', // less reliable
+    'min' => ':count ካልኣይት', // less reliable
+    'a_minute' => ':count ካልኣይት', // less reliable
+
+    'second' => ':count ካልኣይ',
+    's' => ':count ካልኣይ',
+    'a_second' => ':count ካልኣይ',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk.php
new file mode 100644
index 00000000..d8f7d19d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tk_TM.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
new file mode 100644
index 00000000..f949a430
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Authors:
+ * - Ghorban M. Tavakoly Pablo Saratxaga & Ghorban M. Tavakoly pablo@walon.org & gmt314@yahoo.com
+ * - SuperManPHP
+ * - Maksat Meredow (isadma)
+ */
+$transformDiff = function ($input) {
+    return strtr($input, [
+        'sekunt' => 'sekunt',
+        'hepde' => 'hepde',
+    ]);
+};
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Ýanwar', 'Fewral', 'Mart', 'Aprel', 'Maý', 'Iýun', 'Iýul', 'Awgust', 'Sentýabr', 'Oktýabr', 'Noýabr', 'Dekabr'],
+    'months_short' => ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýn', 'Iýl', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'],
+    'weekdays' => ['Duşenbe', 'Sişenbe', 'Çarşenbe', 'Penşenbe', 'Anna', 'Şenbe', 'Ýekşenbe'],
+    'weekdays_short' => ['Duş', 'Siş', 'Çar', 'Pen', 'Ann', 'Şen', 'Ýek'],
+    'weekdays_min' => ['Du', 'Si', 'Ça', 'Pe', 'An', 'Şe', 'Ýe'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count ýyl',
+    'y' => ':count ýyl',
+    'a_year' => ':count ýyl',
+
+    'month' => ':count aý',
+    'm' => ':count aý',
+    'a_month' => ':count aý',
+
+    'week' => ':count hepde',
+    'w' => ':count hepde',
+    'a_week' => ':count hepde',
+
+    'day' => ':count gün',
+    'd' => ':count gün',
+    'a_day' => ':count gün',
+
+    'hour' => ':count sagat',
+    'h' => ':count sagat',
+    'a_hour' => ':count sagat',
+
+    'minute' => ':count minut',
+    'min' => ':count minut',
+    'a_minute' => ':count minut',
+
+    'second' => ':count sekunt',
+    's' => ':count sekunt',
+    'a_second' => ':count sekunt',
+
+    'ago' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' ozal';
+    },
+    'from_now' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' soňra';
+    },
+    'after' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' soň';
+    },
+    'before' => function ($time) use ($transformDiff) {
+        return $transformDiff($time).' öň';
+    },
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl.php
new file mode 100644
index 00000000..410a2660
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl.php
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+    'year' => ':count taon',
+    'a_year' => '{1}isang taon|:count taon',
+    'month' => ':count buwan',
+    'a_month' => '{1}isang buwan|:count buwan',
+    'week' => ':count linggo',
+    'a_week' => '{1}isang linggo|:count linggo',
+    'day' => ':count araw',
+    'a_day' => '{1}isang araw|:count araw',
+    'hour' => ':count oras',
+    'a_hour' => '{1}isang oras|:count oras',
+    'minute' => ':count minuto',
+    'a_minute' => '{1}isang minuto|:count minuto',
+    'min' => ':count min.',
+    'second' => ':count segundo',
+    'a_second' => '{1}ilang segundo|:count segundo',
+    's' => ':count seg.',
+    'ago' => ':time ang nakalipas',
+    'from_now' => 'sa loob ng :time',
+    'diff_now' => 'ngayon',
+    'diff_today' => 'ngayong',
+    'diff_today_regexp' => 'ngayong(?:\\s+araw)?',
+    'diff_yesterday' => 'kahapon',
+    'diff_tomorrow' => 'bukas',
+    'diff_tomorrow_regexp' => 'Bukas(?:\\s+ng)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'MM/D/YYYY',
+        'LL' => 'MMMM D, YYYY',
+        'LLL' => 'MMMM D, YYYY HH:mm',
+        'LLLL' => 'dddd, MMMM DD, YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => 'LT [ngayong araw]',
+        'nextDay' => '[Bukas ng] LT',
+        'nextWeek' => 'LT [sa susunod na] dddd',
+        'lastDay' => 'LT [kahapon]',
+        'lastWeek' => 'LT [noong nakaraang] dddd',
+        'sameElse' => 'L',
+    ],
+    'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'],
+    'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'],
+    'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'],
+    'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'],
+    'weekdays_min' => ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sab'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' at '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
new file mode 100644
index 00000000..95f508c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php
@@ -0,0 +1,18 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Ian De La Cruz
+ * - JD Isaacks
+ */
+return require __DIR__.'/tl.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
new file mode 100644
index 00000000..fbf9e6f7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Serhan Apaydın
+ * - Dominika
+ */
+return [
+    'year' => '{1}wa’ DIS|:count DIS',
+    'month' => '{1}wa’ jar|:count jar',
+    'week' => '{1}wa’ hogh|:count hogh',
+    'day' => '{1}wa’ jaj|:count jaj',
+    'hour' => '{1}wa’ rep|:count rep',
+    'minute' => '{1}wa’ tup|:count tup',
+    'second' => '{1}puS lup|:count lup',
+    'ago' => function ($time) {
+        $output = strtr($time, [
+            'jaj' => 'Hu’',
+            'jar' => 'wen',
+            'DIS' => 'ben',
+        ]);
+
+        return $output === $time ? "$time ret" : $output;
+    },
+    'from_now' => function ($time) {
+        $output = strtr($time, [
+            'jaj' => 'leS',
+            'jar' => 'waQ',
+            'DIS' => 'nem',
+        ]);
+
+        return $output === $time ? "$time pIq" : $output;
+    },
+    'diff_yesterday' => 'wa’Hu’',
+    'diff_today' => 'DaHjaj',
+    'diff_tomorrow' => 'wa’leS',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[DaHjaj] LT',
+        'nextDay' => '[wa’leS] LT',
+        'nextWeek' => 'LLL',
+        'lastDay' => '[wa’Hu’] LT',
+        'lastWeek' => 'LLL',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => ':number.',
+    'months' => ['tera’ jar wa’', 'tera’ jar cha’', 'tera’ jar wej', 'tera’ jar loS', 'tera’ jar vagh', 'tera’ jar jav', 'tera’ jar Soch', 'tera’ jar chorgh', 'tera’ jar Hut', 'tera’ jar wa’maH', 'tera’ jar wa’maH wa’', 'tera’ jar wa’maH cha’'],
+    'months_short' => ['jar wa’', 'jar cha’', 'jar wej', 'jar loS', 'jar vagh', 'jar jav', 'jar Soch', 'jar chorgh', 'jar Hut', 'jar wa’maH', 'jar wa’maH wa’', 'jar wa’maH cha’'],
+    'weekdays' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
+    'weekdays_short' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
+    'weekdays_min' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' ’ej '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn.php
new file mode 100644
index 00000000..f29bdf68
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tn_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
new file mode 100644
index 00000000..aada7db5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Ferikgong', 'Tlhakole', 'Mopitlwe', 'Moranang', 'Motsheganong', 'Seetebosigo', 'Phukwi', 'Phatwe', 'Lwetse', 'Diphalane', 'Ngwanatsele', 'Sedimonthole'],
+    'months_short' => ['Fer', 'Tlh', 'Mop', 'Mor', 'Mot', 'See', 'Phu', 'Pha', 'Lwe', 'Dip', 'Ngw', 'Sed'],
+    'weekdays' => ['laTshipi', 'Mosupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labotlhano', 'Lamatlhatso'],
+    'weekdays_short' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'],
+    'weekdays_min' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'dingwaga di le :count',
+    'y' => 'dingwaga di le :count',
+    'a_year' => 'dingwaga di le :count',
+
+    'month' => 'dikgwedi di le :count',
+    'm' => 'dikgwedi di le :count',
+    'a_month' => 'dikgwedi di le :count',
+
+    'week' => 'dibeke di le :count',
+    'w' => 'dibeke di le :count',
+    'a_week' => 'dibeke di le :count',
+
+    'day' => 'malatsi :count',
+    'd' => 'malatsi :count',
+    'a_day' => 'malatsi :count',
+
+    'hour' => 'diura di le :count',
+    'h' => 'diura di le :count',
+    'a_hour' => 'diura di le :count',
+
+    'minute' => 'metsotso e le :count',
+    'min' => 'metsotso e le :count',
+    'a_minute' => 'metsotso e le :count',
+
+    'second' => 'metsotswana e le :count',
+    's' => 'metsotswana e le :count',
+    'a_second' => 'metsotswana e le :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to.php
new file mode 100644
index 00000000..20581bba
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/to_TO.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
new file mode 100644
index 00000000..335c69a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - International Components for Unicode    akhilesh.k@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'dddd DD MMM YYYY',
+    ],
+    'months' => ['Sānuali', 'Fēpueli', 'Maʻasi', 'ʻEpeleli', 'Mē', 'Sune', 'Siulai', 'ʻAokosi', 'Sepitema', 'ʻOkatopa', 'Nōvema', 'Tīsema'],
+    'months_short' => ['Sān', 'Fēp', 'Maʻa', 'ʻEpe', 'Mē', 'Sun', 'Siu', 'ʻAok', 'Sep', 'ʻOka', 'Nōv', 'Tīs'],
+    'weekdays' => ['Sāpate', 'Mōnite', 'Tūsite', 'Pulelulu', 'Tuʻapulelulu', 'Falaite', 'Tokonaki'],
+    'weekdays_short' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'],
+    'weekdays_min' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'],
+    'meridiem' => ['hengihengi', 'efiafi'],
+
+    'year' => ':count fitu', // less reliable
+    'y' => ':count fitu', // less reliable
+    'a_year' => ':count fitu', // less reliable
+
+    'month' => ':count mahina', // less reliable
+    'm' => ':count mahina', // less reliable
+    'a_month' => ':count mahina', // less reliable
+
+    'week' => ':count Sapate', // less reliable
+    'w' => ':count Sapate', // less reliable
+    'a_week' => ':count Sapate', // less reliable
+
+    'day' => ':count ʻaho', // less reliable
+    'd' => ':count ʻaho', // less reliable
+    'a_day' => ':count ʻaho', // less reliable
+
+    'hour' => ':count houa',
+    'h' => ':count houa',
+    'a_hour' => ':count houa',
+
+    'minute' => ':count miniti',
+    'min' => ':count miniti',
+    'a_minute' => ':count miniti',
+
+    'second' => ':count sekoni',
+    's' => ':count sekoni',
+    'a_second' => ':count sekoni',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
new file mode 100644
index 00000000..7d38daed
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tpi_PG.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
new file mode 100644
index 00000000..5f58c44c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Samsung Electronics Co., Ltd.    akhilesh.k@samsung.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Janueri', 'Februeri', 'Mas', 'Epril', 'Me', 'Jun', 'Julai', 'Ogas', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mas', 'Epr', 'Me', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Des'],
+    'weekdays' => ['Sande', 'Mande', 'Tunde', 'Trinde', 'Fonde', 'Fraide', 'Sarere'],
+    'weekdays_short' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'],
+    'weekdays_min' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['biknait', 'apinun'],
+
+    'year' => 'yia :count',
+    'y' => 'yia :count',
+    'a_year' => 'yia :count',
+
+    'month' => ':count mun',
+    'm' => ':count mun',
+    'a_month' => ':count mun',
+
+    'week' => ':count wik',
+    'w' => ':count wik',
+    'a_week' => ':count wik',
+
+    'day' => ':count de',
+    'd' => ':count de',
+    'a_day' => ':count de',
+
+    'hour' => ':count aua',
+    'h' => ':count aua',
+    'a_hour' => ':count aua',
+
+    'minute' => ':count minit',
+    'min' => ':count minit',
+    'a_minute' => ':count minit',
+
+    'second' => ':count namba tu',
+    's' => ':count namba tu',
+    'a_second' => ':count namba tu',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr.php
new file mode 100644
index 00000000..f5d9f4cc
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr.php
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Alan Agius
+ * - Erhan Gundogan
+ * - François B
+ * - JD Isaacks
+ * - Murat Yüksel
+ * - Baran Şengül
+ * - Selami (selamialtin)
+ * - TeomanBey
+ */
+return [
+    'year' => ':count yıl',
+    'a_year' => '{1}bir yıl|]1,Inf[:count yıl',
+    'y' => ':county',
+    'month' => ':count ay',
+    'a_month' => '{1}bir ay|]1,Inf[:count ay',
+    'm' => ':countay',
+    'week' => ':count hafta',
+    'a_week' => '{1}bir hafta|]1,Inf[:count hafta',
+    'w' => ':counth',
+    'day' => ':count gün',
+    'a_day' => '{1}bir gün|]1,Inf[:count gün',
+    'd' => ':countg',
+    'hour' => ':count saat',
+    'a_hour' => '{1}bir saat|]1,Inf[:count saat',
+    'h' => ':countsa',
+    'minute' => ':count dakika',
+    'a_minute' => '{1}bir dakika|]1,Inf[:count dakika',
+    'min' => ':countdk',
+    'second' => ':count saniye',
+    'a_second' => '{1}birkaç saniye|]1,Inf[:count saniye',
+    's' => ':countsn',
+    'ago' => ':time önce',
+    'from_now' => ':time sonra',
+    'after' => ':time sonra',
+    'before' => ':time önce',
+    'diff_now' => 'ÅŸimdi',
+    'diff_today' => 'bugün',
+    'diff_today_regexp' => 'bugün(?:\\s+saat)?',
+    'diff_yesterday' => 'dün',
+    'diff_tomorrow' => 'yarın',
+    'diff_tomorrow_regexp' => 'yarın(?:\\s+saat)?',
+    'diff_before_yesterday' => 'evvelsi gün',
+    'diff_after_tomorrow' => 'öbür gün',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[bugün saat] LT',
+        'nextDay' => '[yarın saat] LT',
+        'nextWeek' => '[gelecek] dddd [saat] LT',
+        'lastDay' => '[dün] LT',
+        'lastWeek' => '[geçen] dddd [saat] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'Do':
+            case 'DD':
+                return $number;
+            default:
+                if ($number === 0) {  // special case for zero
+                    return "$number'ıncı";
+                }
+
+                static $suffixes = [
+                    1 => '\'inci',
+                    5 => '\'inci',
+                    8 => '\'inci',
+                    70 => '\'inci',
+                    80 => '\'inci',
+                    2 => '\'nci',
+                    7 => '\'nci',
+                    20 => '\'nci',
+                    50 => '\'nci',
+                    3 => '\'üncü',
+                    4 => '\'üncü',
+                    100 => '\'üncü',
+                    6 => '\'ncı',
+                    9 => '\'uncu',
+                    10 => '\'uncu',
+                    30 => '\'uncu',
+                    60 => '\'ıncı',
+                    90 => '\'ıncı',
+                ];
+
+                $lastDigit = $number % 10;
+
+                return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? '');
+        }
+    },
+    'meridiem' => ['ÖÖ', 'ÖS', 'öö', 'ös'],
+    'months' => ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],
+    'months_short' => ['Oca', 'Åžub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'AÄŸu', 'Eyl', 'Eki', 'Kas', 'Ara'],
+    'weekdays' => ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
+    'weekdays_short' => ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'],
+    'weekdays_min' => ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' ve '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
new file mode 100644
index 00000000..23f11449
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/tr.php', [
+    'weekdays_short' => ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
+    'weekdays_min' => ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'D.MM.YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'D MMMM YYYY dddd h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
new file mode 100644
index 00000000..9e994824
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/tr.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts.php
new file mode 100644
index 00000000..525736bf
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ts_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
new file mode 100644
index 00000000..37a24ec4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Sunguti', 'Nyenyenyani', 'Nyenyankulu', 'Dzivamisoko', 'Mudyaxihi', 'Khotavuxika', 'Mawuwani', 'Mhawuri', 'Ndzhati', 'Nhlangula', 'Hukuri', 'N\'wendzamhala'],
+    'months_short' => ['Sun', 'Yan', 'Kul', 'Dzi', 'Mud', 'Kho', 'Maw', 'Mha', 'Ndz', 'Nhl', 'Huk', 'N\'w'],
+    'weekdays' => ['Sonto', 'Musumbhunuku', 'Ravumbirhi', 'Ravunharhu', 'Ravumune', 'Ravuntlhanu', 'Mugqivela'],
+    'weekdays_short' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'],
+    'weekdays_min' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'malembe ya :count',
+    'y' => 'malembe ya :count',
+    'a_year' => 'malembe ya :count',
+
+    'month' => 'tin’hweti ta :count',
+    'm' => 'tin’hweti ta :count',
+    'a_month' => 'tin’hweti ta :count',
+
+    'week' => 'mavhiki ya :count',
+    'w' => 'mavhiki ya :count',
+    'a_week' => 'mavhiki ya :count',
+
+    'day' => 'masiku :count',
+    'd' => 'masiku :count',
+    'a_day' => 'masiku :count',
+
+    'hour' => 'tiawara ta :count',
+    'h' => 'tiawara ta :count',
+    'a_hour' => 'tiawara ta :count',
+
+    'minute' => 'timinete ta :count',
+    'min' => 'timinete ta :count',
+    'a_minute' => 'timinete ta :count',
+
+    'second' => 'tisekoni ta :count',
+    's' => 'tisekoni ta :count',
+    'a_second' => 'tisekoni ta :count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt.php
new file mode 100644
index 00000000..d67d896e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/tt_RU.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
new file mode 100644
index 00000000..38e42d05
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Rinat Norkin Pablo Saratxaga, Rinat Norkin pablo@mandrakesoft.com, rinat@taif.ru
+ */
+return [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'DD MMM, HH:mm',
+        'LLLL' => 'DD MMMM YYYY, HH:mm',
+    ],
+    'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'],
+    'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'weekdays' => ['якшәмбе', 'дышәмбе', 'сишәмбе', 'чәршәәмбе', 'пәнҗешмбе', 'җомга', 'шимбә'],
+    'weekdays_short' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'],
+    'weekdays_min' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'year' => ':count ел',
+    'month' => ':count ай',
+    'week' => ':count атна',
+    'day' => ':count көн',
+    'hour' => ':count сәгать',
+    'minute' => ':count минут',
+    'second' => ':count секунд',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
new file mode 100644
index 00000000..16b8efb1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Reshat Sabiq tatar.iqtelif.i18n@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD.MM.YYYY',
+    ],
+    'months' => ['Ğınwar', 'Fiwral\'', 'Mart', 'April', 'May', 'Yün', 'Yül', 'Awgust', 'Sintebír', 'Üktebír', 'Noyebír', 'Dikebír'],
+    'months_short' => ['Ğın', 'Fiw', 'Mar', 'Apr', 'May', 'Yün', 'Yül', 'Awg', 'Sin', 'Ükt', 'Noy', 'Dik'],
+    'weekdays' => ['Yekşembí', 'Düşembí', 'Sişembí', 'Çerşembí', 'Pencíşembí', 'Comğa', 'Şimbe'],
+    'weekdays_short' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'],
+    'weekdays_min' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ÖA', 'ÖS'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/twq.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/twq.php
new file mode 100644
index 00000000..5cbb46e0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/twq.php
@@ -0,0 +1,14 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/ses.php', [
+    'meridiem' => ['Subbaahi', 'Zaarikay b'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
new file mode 100644
index 00000000..50bf26d2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+    'year' => '[0,1]:count ar|:count ars',
+    'y' => '[0,1]:count ar|:count ars',
+    'month' => '[0,1]:count mes|:count mesen',
+    'm' => '[0,1]:count mes|:count mesen',
+    'week' => '[0,1]:count seifetziua|:count seifetziuas',
+    'w' => '[0,1]:count seifetziua|:count seifetziuas',
+    'day' => '[0,1]:count ziua|:count ziuas',
+    'd' => '[0,1]:count ziua|:count ziuas',
+    'hour' => '[0,1]:count þora|:count þoras',
+    'h' => '[0,1]:count þora|:count þoras',
+    'minute' => '[0,1]:count míut|:count míuts',
+    'min' => '[0,1]:count míut|:count míuts',
+    'second' => ':count secunds',
+    's' => ':count secunds',
+
+    'ago' => 'ja :time',
+    'from_now' => 'osprei :time',
+
+    'diff_yesterday' => 'ieiri',
+    'diff_yesterday_regexp' => 'ieiri(?:\\s+à)?',
+    'diff_today' => 'oxhi',
+    'diff_today_regexp' => 'oxhi(?:\\s+à)?',
+    'diff_tomorrow' => 'demà',
+    'diff_tomorrow_regexp' => 'demà(?:\\s+à)?',
+
+    'formats' => [
+        'LT' => 'HH.mm',
+        'LTS' => 'HH.mm.ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D. MMMM [dallas] YYYY',
+        'LLL' => 'D. MMMM [dallas] YYYY HH.mm',
+        'LLLL' => 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
+    ],
+
+    'calendar' => [
+        'sameDay' => '[oxhi à] LT',
+        'nextDay' => '[demà à] LT',
+        'nextWeek' => 'dddd [à] LT',
+        'lastDay' => '[ieiri à] LT',
+        'lastWeek' => '[sür el] dddd [lasteu à] LT',
+        'sameElse' => 'L',
+    ],
+
+    'meridiem' => ["D'A", "D'O"],
+    'months' => ['Januar', 'Fevraglh', 'Març', 'Avrïu', 'Mai', 'Gün', 'Julia', 'Guscht', 'Setemvar', 'Listopäts', 'Noemvar', 'Zecemvar'],
+    'months_short' => ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Gün', 'Jul', 'Gus', 'Set', 'Lis', 'Noe', 'Zec'],
+    'weekdays' => ['Súladi', 'Lúneçi', 'Maitzi', 'Márcuri', 'Xhúadi', 'Viénerçi', 'Sáturi'],
+    'weekdays_short' => ['Súl', 'Lún', 'Mai', 'Már', 'Xhú', 'Vié', 'Sát'],
+    'weekdays_min' => ['Sú', 'Lú', 'Ma', 'Má', 'Xh', 'Vi', 'Sá'],
+    'ordinal' => ':number.',
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
new file mode 100644
index 00000000..2a1a0f2b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ */
+return [
+    'year' => '{1}ⴰⵙⴳⴰⵙ|:count ⵉⵙⴳⴰⵙⵏ',
+    'month' => '{1}ⴰⵢoⵓⵔ|:count ⵉⵢⵢⵉⵔⵏ',
+    'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ',
+    'day' => '{1}ⴰⵙⵙ|:count oⵙⵙⴰⵏ',
+    'hour' => '{1}ⵙⴰⵄⴰ|:count ⵜⴰⵙⵙⴰⵄⵉⵏ',
+    'minute' => '{1}ⵎⵉⵏⵓⴺ|:count ⵎⵉⵏⵓⴺ',
+    'second' => '{1}ⵉⵎⵉⴽ|:count ⵉⵎⵉⴽ',
+    'ago' => 'ⵢⴰⵏ :time',
+    'from_now' => 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ :time',
+    'diff_today' => 'ⴰⵙⴷⵅ',
+    'diff_yesterday' => 'ⴰⵚⴰⵏⵜ',
+    'diff_yesterday_regexp' => 'ⴰⵚⴰⵏⵜ(?:\\s+ⴴ)?',
+    'diff_tomorrow' => 'ⴰⵙⴽⴰ',
+    'diff_tomorrow_regexp' => 'ⴰⵙⴽⴰ(?:\\s+ⴴ)?',
+    'diff_today_regexp' => 'ⴰⵙⴷⵅ(?:\\s+ⴴ)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ⴰⵙⴷⵅ ⴴ] LT',
+        'nextDay' => '[ⴰⵙⴽⴰ ⴴ] LT',
+        'nextWeek' => 'dddd [â´´] LT',
+        'lastDay' => '[ⴰⵚⴰⵏⵜ ⴴ] LT',
+        'lastWeek' => 'dddd [â´´] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'],
+    'months_short' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'],
+    'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
+    'weekdays_short' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
+    'weekdays_min' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+    'weekend' => [5, 6],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
new file mode 100644
index 00000000..5840d209
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - JD Isaacks
+ */
+return [
+    'year' => '{1}:count asgas|:count isgasn',
+    'a_year' => 'asgas|:count isgasn',
+    'month' => '{1}:count ayowr|:count iyyirn',
+    'a_month' => 'ayowr|:count iyyirn',
+    'week' => ':count imalass',
+    'a_week' => ':imalass',
+    'day' => '{1}:count ass|:count ossan',
+    'a_day' => 'ass|:count ossan',
+    'hour' => '{1}:count saɛa|:count tassaɛin',
+    'a_hour' => '{1}saɛa|:count tassaɛin',
+    'minute' => ':count minuḍ',
+    'a_minute' => '{1}minuḍ|:count minuḍ',
+    'second' => ':count imik',
+    'a_second' => '{1}imik|:count imik',
+    'ago' => 'yan :time',
+    'from_now' => 'dadkh s yan :time',
+    'diff_yesterday' => 'assant',
+    'diff_yesterday_regexp' => 'assant(?:\\s+g)?',
+    'diff_today' => 'asdkh',
+    'diff_today_regexp' => 'asdkh(?:\\s+g)?',
+    'diff_tomorrow' => 'aska',
+    'diff_tomorrow_regexp' => 'aska(?:\\s+g)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[asdkh g] LT',
+        'nextDay' => '[aska g] LT',
+        'nextWeek' => 'dddd [g] LT',
+        'lastDay' => '[assant g] LT',
+        'lastWeek' => 'dddd [g] LT',
+        'sameElse' => 'L',
+    ],
+    'months' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'],
+    'months_short' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'],
+    'weekdays' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
+    'weekdays_short' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
+    'weekdays_min' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'],
+    'meridiem' => ['Zdat azal', 'Ḍeffir aza'],
+    'first_day_of_week' => 6,
+    'day_of_first_week_of_year' => 1,
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug.php
new file mode 100644
index 00000000..259b99a4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug.php
@@ -0,0 +1,90 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - yasinn
+ */
+return [
+    'year' => '{1}'.'بىر يىل'.'|:count '.'يىل',
+    'month' => '{1}'.'بىر ئاي'.'|:count '.'ئاي',
+    'week' => '{1}'.'بىر ھەپتە'.'|:count '.'ھەپتە',
+    'day' => '{1}'.'بىر كۈن'.'|:count '.'كۈن',
+    'hour' => '{1}'.'بىر سائەت'.'|:count '.'سائەت',
+    'minute' => '{1}'.'بىر مىنۇت'.'|:count '.'مىنۇت',
+    'second' => '{1}'.'نەچچە سېكونت'.'|:count '.'سېكونت',
+    'ago' => ':time بۇرۇن',
+    'from_now' => ':time كېيىن',
+    'diff_today' => 'بۈگۈن',
+    'diff_yesterday' => 'تۆنۈگۈن',
+    'diff_tomorrow' => 'ئەتە',
+    'diff_tomorrow_regexp' => 'ئەتە(?:\\s+سائەت)?',
+    'diff_today_regexp' => 'بۈگۈن(?:\\s+سائەت)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-DD',
+        'LL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى',
+        'LLL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+        'LLLL' => 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[بۈگۈن سائەت] LT',
+        'nextDay' => '[ئەتە سائەت] LT',
+        'nextWeek' => '[كېلەركى] dddd [سائەت] LT',
+        'lastDay' => '[تۆنۈگۈن] LT',
+        'lastWeek' => '[ئالدىنقى] dddd [سائەت] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'DDD':
+                return $number.'-كۈنى';
+            case 'w':
+            case 'W':
+                return $number.'-ھەپتە';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour, $minute) {
+        $time = $hour * 100 + $minute;
+        if ($time < 600) {
+            return 'يېرىم كېچە';
+        }
+        if ($time < 900) {
+            return 'سەھەر';
+        }
+        if ($time < 1130) {
+            return 'چۈشتىن بۇرۇن';
+        }
+        if ($time < 1230) {
+            return 'چۈش';
+        }
+        if ($time < 1800) {
+            return 'چۈشتىن كېيىن';
+        }
+
+        return 'ÙƒÛ•Ú†';
+    },
+    'months' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'],
+    'months_short' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'],
+    'weekdays' => ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'],
+    'weekdays_short' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'],
+    'weekdays_min' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' Û‹Û• '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
new file mode 100644
index 00000000..deb828c5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - Alim Boyaq
+ */
+return require __DIR__.'/ug.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
new file mode 100644
index 00000000..1d5ba703
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk.php
@@ -0,0 +1,212 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Carbon\CarbonInterface;
+
+$processHoursFunction = function (CarbonInterface $date, string $format) {
+    return $format.'о'.($date->hour === 11 ? 'б' : '').'] LT';
+};
+
+/*
+ * Authors:
+ * - Kunal Marwaha
+ * - Josh Soref
+ * - François B
+ * - Tim Fish
+ * - Serhan Apaydın
+ * - Max Mykhailenko
+ * - JD Isaacks
+ * - Max Kovpak
+ * - AucT
+ * - Philippe Vaucher
+ * - Ilya Shaplyko
+ * - Vadym Ievsieiev
+ * - Denys Kurets
+ * - Igor Kasyanchuk
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Oleh
+ * - epaminond
+ * - Juanito Fatas
+ * - Vitalii Khustochka
+ * - Akira Matsuda
+ * - Christopher Dell
+ * - Enrique Vidal
+ * - Simone Carletti
+ * - Aaron Patterson
+ * - Andriy Tyurnikov
+ * - Nicolás Hock Isaza
+ * - Iwakura Taro
+ * - Andrii Ponomarov
+ * - alecrabbit
+ * - vystepanenko
+ * - AlexWalkerson
+ * - Andre Havryliuk (Andrend)
+ * - Max Datsenko (datsenko-md)
+ */
+return [
+    'year' => ':count рік|:count роки|:count років',
+    'y' => ':countр',
+    'a_year' => '{1}рік|:count рік|:count роки|:count років',
+    'month' => ':count місяць|:count місяці|:count місяців',
+    'm' => ':countм',
+    'a_month' => '{1}місяць|:count місяць|:count місяці|:count місяців',
+    'week' => ':count тиждень|:count тижні|:count тижнів',
+    'w' => ':countт',
+    'a_week' => '{1}тиждень|:count тиждень|:count тижні|:count тижнів',
+    'day' => ':count день|:count дні|:count днів',
+    'd' => ':countд',
+    'a_day' => '{1}день|:count день|:count дні|:count днів',
+    'hour' => ':count година|:count години|:count годин',
+    'h' => ':countг',
+    'a_hour' => '{1}година|:count година|:count години|:count годин',
+    'minute' => ':count хвилина|:count хвилини|:count хвилин',
+    'min' => ':countхв',
+    'a_minute' => '{1}хвилина|:count хвилина|:count хвилини|:count хвилин',
+    'second' => ':count секунда|:count секунди|:count секунд',
+    's' => ':countсек',
+    'a_second' => '{1}декілька секунд|:count секунда|:count секунди|:count секунд',
+
+    'hour_ago' => ':count годину|:count години|:count годин',
+    'a_hour_ago' => '{1}годину|:count годину|:count години|:count годин',
+    'minute_ago' => ':count хвилину|:count хвилини|:count хвилин',
+    'a_minute_ago' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
+    'second_ago' => ':count секунду|:count секунди|:count секунд',
+    'a_second_ago' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
+
+    'hour_from_now' => ':count годину|:count години|:count годин',
+    'a_hour_from_now' => '{1}годину|:count годину|:count години|:count годин',
+    'minute_from_now' => ':count хвилину|:count хвилини|:count хвилин',
+    'a_minute_from_now' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
+    'second_from_now' => ':count секунду|:count секунди|:count секунд',
+    'a_second_from_now' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
+
+    'hour_after' => ':count годину|:count години|:count годин',
+    'a_hour_after' => '{1}годину|:count годину|:count години|:count годин',
+    'minute_after' => ':count хвилину|:count хвилини|:count хвилин',
+    'a_minute_after' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
+    'second_after' => ':count секунду|:count секунди|:count секунд',
+    'a_second_after' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
+
+    'hour_before' => ':count годину|:count години|:count годин',
+    'a_hour_before' => '{1}годину|:count годину|:count години|:count годин',
+    'minute_before' => ':count хвилину|:count хвилини|:count хвилин',
+    'a_minute_before' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин',
+    'second_before' => ':count секунду|:count секунди|:count секунд',
+    'a_second_before' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд',
+
+    'ago' => ':time тому',
+    'from_now' => 'за :time',
+    'after' => ':time після',
+    'before' => ':time до',
+    'diff_now' => 'щойно',
+    'diff_today' => 'Сьогодні',
+    'diff_today_regexp' => 'Сьогодні(?:\\s+о)?',
+    'diff_yesterday' => 'вчора',
+    'diff_yesterday_regexp' => 'Вчора(?:\\s+о)?',
+    'diff_tomorrow' => 'завтра',
+    'diff_tomorrow_regexp' => 'Завтра(?:\\s+о)?',
+    'diff_before_yesterday' => 'позавчора',
+    'diff_after_tomorrow' => 'післязавтра',
+    'period_recurrences' => 'один раз|:count рази|:count разів',
+    'period_interval' => 'кожні :interval',
+    'period_start_date' => 'з :date',
+    'period_end_date' => 'до :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY, HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY, HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => function (CarbonInterface $date) use ($processHoursFunction) {
+            return $processHoursFunction($date, '[Сьогодні ');
+        },
+        'nextDay' => function (CarbonInterface $date) use ($processHoursFunction) {
+            return $processHoursFunction($date, '[Завтра ');
+        },
+        'nextWeek' => function (CarbonInterface $date) use ($processHoursFunction) {
+            return $processHoursFunction($date, '[У] dddd [');
+        },
+        'lastDay' => function (CarbonInterface $date) use ($processHoursFunction) {
+            return $processHoursFunction($date, '[Вчора ');
+        },
+        'lastWeek' => function (CarbonInterface $date) use ($processHoursFunction) {
+            switch ($date->dayOfWeek) {
+                case 0:
+                case 3:
+                case 5:
+                case 6:
+                    return $processHoursFunction($date, '[Минулої] dddd [');
+                default:
+                    return $processHoursFunction($date, '[Минулого] dddd [');
+            }
+        },
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'M':
+            case 'd':
+            case 'DDD':
+            case 'w':
+            case 'W':
+                return $number.'-й';
+            case 'D':
+                return $number.'-го';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour) {
+        if ($hour < 4) {
+            return 'ночі';
+        }
+        if ($hour < 12) {
+            return 'ранку';
+        }
+        if ($hour < 17) {
+            return 'дня';
+        }
+
+        return 'вечора';
+    },
+    'months' => ['січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', 'жовтня', 'листопада', 'грудня'],
+    'months_standalone' => ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень'],
+    'months_short' => ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'],
+    'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/',
+    'weekdays' => function (CarbonInterface $date, $format, $index) {
+        static $words = [
+            'nominative' => ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота'],
+            'accusative' => ['неділю', 'понеділок', 'вівторок', 'середу', 'четвер', 'п’ятницю', 'суботу'],
+            'genitive' => ['неділі', 'понеділка', 'вівторка', 'середи', 'четверга', 'п’ятниці', 'суботи'],
+        ];
+
+        $format = $format ?? '';
+        $nounCase = preg_match('/(\[(В|в|У|у)\])\s+dddd/u', $format)
+            ? 'accusative'
+            : (
+                preg_match('/\[?(?:минулої|наступної)?\s*\]\s+dddd/u', $format)
+                    ? 'genitive'
+                    : 'nominative'
+            );
+
+        return $words[$nounCase][$index] ?? null;
+    },
+    'weekdays_short' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+    'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' i '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
new file mode 100644
index 00000000..bd11d86e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/uk.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm.php
new file mode 100644
index 00000000..d3f19f06
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/unm_US.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
new file mode 100644
index 00000000..fa5c374e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['enikwsi', 'chkwali', 'xamokhwite', 'kwetayoxe', 'tainipen', 'kichinipen', 'lainipen', 'winaminke', 'kichitahkok', 'puksit', 'wini', 'muxkotae'],
+    'months_short' => ['eni', 'chk', 'xam', 'kwe', 'tai', 'nip', 'lai', 'win', 'tah', 'puk', 'kun', 'mux'],
+    'weekdays' => ['kentuwei', 'manteke', 'tusteke', 'lelai', 'tasteke', 'pelaiteke', 'sateteke'],
+    'weekdays_short' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'],
+    'weekdays_min' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'],
+    'day_of_first_week_of_year' => 1,
+
+    // Too unreliable
+    /*
+    'year' => ':count kaxtëne',
+    'y' => ':count kaxtëne',
+    'a_year' => ':count kaxtëne',
+
+    'month' => ':count piskewëni kishux', // less reliable
+    'm' => ':count piskewëni kishux', // less reliable
+    'a_month' => ':count piskewëni kishux', // less reliable
+
+    'week' => ':count kishku', // less reliable
+    'w' => ':count kishku', // less reliable
+    'a_week' => ':count kishku', // less reliable
+
+    'day' => ':count kishku',
+    'd' => ':count kishku',
+    'a_day' => ':count kishku',
+
+    'hour' => ':count xkuk', // less reliable
+    'h' => ':count xkuk', // less reliable
+    'a_hour' => ':count xkuk', // less reliable
+
+    'minute' => ':count txituwàk', // less reliable
+    'min' => ':count txituwàk', // less reliable
+    'a_minute' => ':count txituwàk', // less reliable
+
+    'second' => ':count nisha', // less reliable
+    's' => ':count nisha', // less reliable
+    'a_second' => ':count nisha', // less reliable
+    */
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur.php
new file mode 100644
index 00000000..dc16c2c3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur.php
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$months = [
+    'جنوری',
+    'فروری',
+    'مارچ',
+    'اپریل',
+    'مئی',
+    'جون',
+    'جولائی',
+    'اگست',
+    'ستمبر',
+    'اکتوبر',
+    'نومبر',
+    'دسمبر',
+];
+
+$weekdays = [
+    'اتوار',
+    'پیر',
+    'منگل',
+    'بدھ',
+    'جمعرات',
+    'جمعہ',
+    'ہفتہ',
+];
+
+/*
+ * Authors:
+ * - Sawood Alam
+ * - Mehshan
+ * - Philippe Vaucher
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Zaid Akram
+ * - Max Melentiev
+ * - hafezdivandari
+ * - Hossein Jabbari
+ * - nimamo
+ */
+return [
+    'year' => 'ایک سال|:count سال',
+    'month' => 'ایک ماہ|:count ماہ',
+    'week' => ':count ہفتے',
+    'day' => 'ایک دن|:count دن',
+    'hour' => 'ایک گھنٹہ|:count گھنٹے',
+    'minute' => 'ایک منٹ|:count منٹ',
+    'second' => 'چند سیکنڈ|:count سیکنڈ',
+    'ago' => ':time قبل',
+    'from_now' => ':time بعد',
+    'after' => ':time بعد',
+    'before' => ':time پہلے',
+    'diff_now' => 'اب',
+    'diff_today' => 'آج',
+    'diff_today_regexp' => 'آج(?:\\s+بوقت)?',
+    'diff_yesterday' => 'گزشتہ کل',
+    'diff_yesterday_regexp' => 'گذشتہ(?:\\s+روز)?(?:\\s+بوقت)?',
+    'diff_tomorrow' => 'آئندہ کل',
+    'diff_tomorrow_regexp' => 'کل(?:\\s+بوقت)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd، D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[آج بوقت] LT',
+        'nextDay' => '[کل بوقت] LT',
+        'nextWeek' => 'dddd [بوقت] LT',
+        'lastDay' => '[گذشتہ روز بوقت] LT',
+        'lastWeek' => '[گذشتہ] dddd [بوقت] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['صبح', 'شام'],
+    'months' => $months,
+    'months_short' => $months,
+    'weekdays' => $weekdays,
+    'weekdays_short' => $weekdays,
+    'weekdays_min' => $weekdays,
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => ['، ', ' اور '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
new file mode 100644
index 00000000..f81c84d3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Red Hat, Pune    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ur.php', [
+    'formats' => [
+        'L' => 'D/M/YY',
+    ],
+    'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'weekdays' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
+    'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
+    'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
new file mode 100644
index 00000000..8cd593db
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/ur.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ص', 'ش'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
new file mode 100644
index 00000000..61f3b64b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz.php
@@ -0,0 +1,85 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Dmitriy Shabanov
+ * - JD Isaacks
+ * - Inoyatulloh
+ * - Jamshid
+ * - aarkhipov
+ * - Philippe Vaucher
+ * - felixthemagnificent
+ * - Tsutomu Kuroda
+ * - tjku
+ * - Max Melentiev
+ * - Juanito Fatas
+ * - Alisher Ulugbekov
+ * - Ergashev Adizbek
+ */
+return [
+    'year' => ':count йил',
+    'a_year' => '{1}бир йил|:count йил',
+    'y' => ':count й',
+    'month' => ':count ой',
+    'a_month' => '{1}бир ой|:count ой',
+    'm' => ':count о',
+    'week' => ':count ҳафта',
+    'a_week' => '{1}бир ҳафта|:count ҳафта',
+    'w' => ':count Ò³',
+    'day' => ':count кун',
+    'a_day' => '{1}бир кун|:count кун',
+    'd' => ':count к',
+    'hour' => ':count соат',
+    'a_hour' => '{1}бир соат|:count соат',
+    'h' => ':count с',
+    'minute' => ':count дақиқа',
+    'a_minute' => '{1}бир дақиқа|:count дақиқа',
+    'min' => ':count д',
+    'second' => ':count сония',
+    'a_second' => '{1}сония|:count сония',
+    's' => ':count с',
+    'ago' => ':time аввал',
+    'from_now' => 'Якин :time ичида',
+    'after' => ':timeдан кейин',
+    'before' => ':time олдин',
+    'diff_now' => 'ҳозир',
+    'diff_today' => 'Бугун',
+    'diff_today_regexp' => 'Бугун(?:\\s+соат)?',
+    'diff_yesterday' => 'Кеча',
+    'diff_yesterday_regexp' => 'Кеча(?:\\s+соат)?',
+    'diff_tomorrow' => 'Эртага',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'D MMMM YYYY, dddd HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Бугун соат] LT [да]',
+        'nextDay' => '[Эртага] LT [да]',
+        'nextWeek' => 'dddd [куни соат] LT [да]',
+        'lastDay' => '[Кеча соат] LT [да]',
+        'lastWeek' => '[Утган] dddd [куни соат] LT [да]',
+        'sameElse' => 'L',
+    ],
+    'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'],
+    'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'],
+    'weekdays' => ['якшанба', 'душанба', 'сешанба', 'чоршанба', 'пайшанба', 'жума', 'шанба'],
+    'weekdays_short' => ['якш', 'душ', 'сеш', 'чор', 'пай', 'жум', 'шан'],
+    'weekdays_min' => ['як', 'ду', 'се', 'чо', 'па', 'жу', 'ша'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['эрталаб', 'кечаси'],
+    'list' => [', ', ' ва '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
new file mode 100644
index 00000000..ffb51319
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/fa.php', [
+    'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'],
+    'weekdays_short' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'],
+    'weekdays_min' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'],
+    'months' => ['جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
+    'months_short' => ['جنو', 'فبر', 'مار', 'اپر', 'می', 'جون', 'جول', 'اگس', 'سپت', 'اکت', 'نوم', 'دسم'],
+    'first_day_of_week' => 6,
+    'weekend' => [4, 5],
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
new file mode 100644
index 00000000..89e99718
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/uz.php', [
+    'formats' => [
+        'L' => 'DD/MM/yy',
+        'LL' => 'D MMM, YYYY',
+        'LLL' => 'D MMMM, YYYY HH:mm',
+        'LLLL' => 'dddd, DD MMMM, YYYY HH:mm',
+    ],
+    'meridiem' => ['ТО', 'ТК'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
new file mode 100644
index 00000000..ecceeaa3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Josh Soref
+ * - Rasulbek
+ * - Ilyosjon Kamoldinov (ilyosjon09)
+ */
+return [
+    'year' => ':count yil',
+    'a_year' => '{1}bir yil|:count yil',
+    'y' => ':count y',
+    'month' => ':count oy',
+    'a_month' => '{1}bir oy|:count oy',
+    'm' => ':count o',
+    'week' => ':count hafta',
+    'a_week' => '{1}bir hafta|:count hafta',
+    'w' => ':count h',
+    'day' => ':count kun',
+    'a_day' => '{1}bir kun|:count kun',
+    'd' => ':count k',
+    'hour' => ':count soat',
+    'a_hour' => '{1}bir soat|:count soat',
+    'h' => ':count soat',
+    'minute' => ':count daqiqa',
+    'a_minute' => '{1}bir daqiqa|:count daqiqa',
+    'min' => ':count d',
+    'second' => ':count soniya',
+    'a_second' => '{1}soniya|:count soniya',
+    's' => ':count son.',
+    'ago' => ':time avval',
+    'from_now' => 'Yaqin :time ichida',
+    'after' => ':timedan keyin',
+    'before' => ':time oldin',
+    'diff_yesterday' => 'Kecha',
+    'diff_yesterday_regexp' => 'Kecha(?:\\s+soat)?',
+    'diff_today' => 'Bugun',
+    'diff_today_regexp' => 'Bugun(?:\\s+soat)?',
+    'diff_tomorrow' => 'Ertaga',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'D MMMM YYYY, dddd HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Bugun soat] LT [da]',
+        'nextDay' => '[Ertaga] LT [da]',
+        'nextWeek' => 'dddd [kuni soat] LT [da]',
+        'lastDay' => '[Kecha soat] LT [da]',
+        'lastWeek' => '[O\'tgan] dddd [kuni soat] LT [da]',
+        'sameElse' => 'L',
+    ],
+    'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'],
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyun', 'Iyul', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'],
+    'weekdays_short' => ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'],
+    'weekdays_min' => ['Ya', 'Du', 'Se', 'Cho', 'Pa', 'Ju', 'Sha'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' va '],
+    'meridiem' => ['TO', 'TK'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
new file mode 100644
index 00000000..d41bfee2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Bobir Ismailov Bobir Ismailov, Pablo Saratxaga, Mashrab Kuvatov bobir_is@yahoo.com, pablo@mandrakesoft.com, kmashrab@uni-bremen.de
+ */
+return array_replace_recursive(require __DIR__.'/uz_Latn.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'],
+    'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'],
+    'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'],
+    'weekdays_short' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'],
+    'weekdays_min' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
new file mode 100644
index 00000000..2fa967c9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Mashrab Kuvatov Mashrab Kuvatov, Pablo Saratxaga kmashrab@uni-bremen.de, pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/uz.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['Январ', 'Феврал', 'Март', 'Апрел', 'Май', 'Июн', 'Июл', 'Август', 'Сентябр', 'Октябр', 'Ноябр', 'Декабр'],
+    'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],
+    'weekdays' => ['Якшанба', 'Душанба', 'Сешанба', 'Чоршанба', 'Пайшанба', 'Жума', 'Шанба'],
+    'weekdays_short' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'],
+    'weekdays_min' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai.php
new file mode 100644
index 00000000..3c378dfb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai.php
@@ -0,0 +1,35 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
+    'weekdays_short' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
+    'weekdays_min' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'],
+    'months' => ['ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ'],
+    'months_short' => ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm a',
+    ],
+
+    'year' => ':count ê•€', // less reliable
+    'y' => ':count ê•€', // less reliable
+    'a_year' => ':count ê•€', // less reliable
+
+    'second' => ':count ꗱꕞꕯꕊ', // less reliable
+    's' => ':count ꗱꕞꕯꕊ', // less reliable
+    'a_second' => ':count ꗱꕞꕯꕊ', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
new file mode 100644
index 00000000..51e83cc5
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'weekdays' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
+    'weekdays_short' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
+    'weekdays_min' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'],
+    'months' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'],
+    'months_short' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'h:mm a',
+        'LTS' => 'h:mm:ss a',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm a',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm a',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
new file mode 100644
index 00000000..b4bb533f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/vai.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve.php
new file mode 100644
index 00000000..7f10aeb9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/ve_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
new file mode 100644
index 00000000..5eb2b912
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Phando', 'Luhuhi', 'Ṱhafamuhwe', 'Lambamai', 'Shundunthule', 'Fulwi', 'Fulwana', 'Ṱhangule', 'Khubvumedzi', 'Tshimedzi', 'Ḽara', 'Nyendavhusiku'],
+    'months_short' => ['Pha', 'Luh', 'Fam', 'Lam', 'Shu', 'Lwi', 'Lwa', 'Ngu', 'Khu', 'Tsh', 'Ḽar', 'Nye'],
+    'weekdays' => ['Swondaha', 'Musumbuluwo', 'Ḽavhuvhili', 'Ḽavhuraru', 'Ḽavhuṋa', 'Ḽavhuṱanu', 'Mugivhela'],
+    'weekdays_short' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'],
+    'weekdays_min' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'],
+    'day_of_first_week_of_year' => 1,
+
+    // Too unreliable
+    /*
+    'day' => ':count vhege', // less reliable
+    'd' => ':count vhege', // less reliable
+    'a_day' => ':count vhege', // less reliable
+
+    'hour' => ':count watshi', // less reliable
+    'h' => ':count watshi', // less reliable
+    'a_hour' => ':count watshi', // less reliable
+
+    'minute' => ':count watshi', // less reliable
+    'min' => ':count watshi', // less reliable
+    'a_minute' => ':count watshi', // less reliable
+
+    'second' => ':count Mu', // less reliable
+    's' => ':count Mu', // less reliable
+    'a_second' => ':count Mu', // less reliable
+
+    'week' => ':count vhege',
+    'w' => ':count vhege',
+    'a_week' => ':count vhege',
+    */
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
new file mode 100644
index 00000000..73e2852e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi.php
@@ -0,0 +1,76 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Andre Polykanine A.K.A. Menelion Elensúlë
+ * - JD Isaacks
+ */
+return [
+    'year' => ':count năm',
+    'a_year' => '{1}một năm|]1, Inf[:count năm',
+    'y' => ':count năm',
+    'month' => ':count tháng',
+    'a_month' => '{1}một tháng|]1, Inf[:count tháng',
+    'm' => ':count tháng',
+    'week' => ':count tuần',
+    'a_week' => '{1}một tuần|]1, Inf[:count tuần',
+    'w' => ':count tuần',
+    'day' => ':count ngày',
+    'a_day' => '{1}một ngày|]1, Inf[:count ngày',
+    'd' => ':count ngày',
+    'hour' => ':count giờ',
+    'a_hour' => '{1}một giờ|]1, Inf[:count giờ',
+    'h' => ':count giờ',
+    'minute' => ':count phút',
+    'a_minute' => '{1}một phút|]1, Inf[:count phút',
+    'min' => ':count phút',
+    'second' => ':count giây',
+    'a_second' => '{1}vài giây|]1, Inf[:count giây',
+    's' => ':count giây',
+    'ago' => ':time trÆ°á»›c',
+    'from_now' => ':time tá»›i',
+    'after' => ':time sau',
+    'before' => ':time trÆ°á»›c',
+    'diff_now' => 'bây giờ',
+    'diff_today' => 'Hôm',
+    'diff_today_regexp' => 'Hôm(?:\\s+nay)?(?:\\s+lúc)?',
+    'diff_yesterday' => 'Hôm qua',
+    'diff_yesterday_regexp' => 'Hôm(?:\\s+qua)?(?:\\s+lúc)?',
+    'diff_tomorrow' => 'Ngày mai',
+    'diff_tomorrow_regexp' => 'Ngày(?:\\s+mai)?(?:\\s+lúc)?',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM [năm] YYYY',
+        'LLL' => 'D MMMM [năm] YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM [năm] YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[Hôm nay lúc] LT',
+        'nextDay' => '[Ngày mai lúc] LT',
+        'nextWeek' => 'dddd [tuần tới lúc] LT',
+        'lastDay' => '[Hôm qua lúc] LT',
+        'lastWeek' => 'dddd [tuần trước lúc] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['SA', 'CH'],
+    'months' => ['tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12'],
+    'months_short' => ['Th01', 'Th02', 'Th03', 'Th04', 'Th05', 'Th06', 'Th07', 'Th08', 'Th09', 'Th10', 'Th11', 'Th12'],
+    'weekdays' => ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'],
+    'weekdays_short' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+    'weekdays_min' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => [', ', ' và '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
new file mode 100644
index 00000000..18d89876
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/vi.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vo.php
new file mode 100644
index 00000000..e273033f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vo.php
@@ -0,0 +1,52 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY-MM-dd',
+        'LL' => 'YYYY MMM D',
+        'LLL' => 'YYYY MMMM D HH:mm',
+        'LLLL' => 'YYYY MMMM D, dddd HH:mm',
+    ],
+
+    'year' => ':count yel',
+    'y' => ':count yel',
+    'a_year' => ':count yel',
+
+    'month' => ':count mul',
+    'm' => ':count mul',
+    'a_month' => ':count mul',
+
+    'week' => ':count vig',
+    'w' => ':count vig',
+    'a_week' => ':count vig',
+
+    'day' => ':count del',
+    'd' => ':count del',
+    'a_day' => ':count del',
+
+    'hour' => ':count düp',
+    'h' => ':count düp',
+    'a_hour' => ':count düp',
+
+    'minute' => ':count minut',
+    'min' => ':count minut',
+    'a_minute' => ':count minut',
+
+    'second' => ':count sekun',
+    's' => ':count sekun',
+    'a_second' => ':count sekun',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vun.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vun.php
new file mode 100644
index 00000000..ed92e8e7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/vun.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['utuko', 'kyiukonyi'],
+    'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'],
+    'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'],
+    'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa.php
new file mode 100644
index 00000000..f6dc4ccd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/wa_BE.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
new file mode 100644
index 00000000..a76d80d9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Djan SACRE Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['di djanvî', 'di fevrî', 'di måss', 'd’ avri', 'di may', 'di djun', 'di djulete', 'd’ awousse', 'di setimbe', 'd’ octôbe', 'di nôvimbe', 'di decimbe'],
+    'months_short' => ['dja', 'fev', 'mås', 'avr', 'may', 'djn', 'djl', 'awo', 'set', 'oct', 'nôv', 'dec'],
+    'weekdays' => ['dimegne', 'londi', 'mårdi', 'mierkidi', 'djudi', 'vénrdi', 'semdi'],
+    'weekdays_short' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'],
+    'weekdays_min' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'year' => ':count anêye',
+    'y' => ':count anêye',
+    'a_year' => ':count anêye',
+
+    'month' => ':count meûs',
+    'm' => ':count meûs',
+    'a_month' => ':count meûs',
+
+    'week' => ':count samwinne',
+    'w' => ':count samwinne',
+    'a_week' => ':count samwinne',
+
+    'day' => ':count djoû',
+    'd' => ':count djoû',
+    'a_day' => ':count djoû',
+
+    'hour' => ':count eure',
+    'h' => ':count eure',
+    'a_hour' => ':count eure',
+
+    'minute' => ':count munute',
+    'min' => ':count munute',
+    'a_minute' => ':count munute',
+
+    'second' => ':count Sigonde',
+    's' => ':count Sigonde',
+    'a_second' => ':count Sigonde',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae.php
new file mode 100644
index 00000000..bf57f23e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/wae_CH.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
new file mode 100644
index 00000000..2af50b4b
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php
@@ -0,0 +1,31 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Walser Translation Team ml@translate-wae.ch
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+    'months' => ['Jenner', 'Hornig', 'Märze', 'Abrille', 'Meije', 'Bráčet', 'Heiwet', 'Öigšte', 'Herbštmánet', 'Wímánet', 'Wintermánet', 'Chrištmánet'],
+    'months_short' => ['Jen', 'Hor', 'Mär', 'Abr', 'Mei', 'Brá', 'Hei', 'Öig', 'Her', 'Wím', 'Win', 'Chr'],
+    'weekdays' => ['Suntag', 'Mäntag', 'Zischtag', 'Mittwuch', 'Frontag', 'Fritag', 'Samschtag'],
+    'weekdays_short' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'],
+    'weekdays_min' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+
+    'month' => ':count Maano', // less reliable
+    'm' => ':count Maano', // less reliable
+    'a_month' => ':count Maano', // less reliable
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal.php
new file mode 100644
index 00000000..e8ec40ff
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/wal_ET.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
new file mode 100644
index 00000000..a4e619a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Ge'ez Frontier Foundation    locales@geez.org
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'],
+    'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'],
+    'weekdays' => ['ወጋ', 'ሳይኖ', 'ማቆሳኛ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ'],
+    'weekdays_short' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '],
+    'weekdays_min' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '],
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['ማለዶ', 'ቃማ'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo.php
new file mode 100644
index 00000000..74b95df0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/wo_SN.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
new file mode 100644
index 00000000..f8a85b3e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - The Debian Project Christian Perrier bubulle@debian.org
+ */
+return [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD.MM.YYYY',
+        'LL' => 'MMMM DD, YYYY',
+        'LLL' => 'DD MMM HH:mm',
+        'LLLL' => 'MMMM DD, YYYY HH:mm',
+    ],
+    'months' => ['sanwiy\'e', 'feebriy\'e', 'mars', 'awril', 'me', 'suwen', 'sulet', 'uut', 'septaambar', 'oktoobar', 'nowaambar', 'desaambar'],
+    'months_short' => ['san', 'fee', 'mar', 'awr', 'me ', 'suw', 'sul', 'uut', 'sep', 'okt', 'now', 'des'],
+    'weekdays' => ['dib\'eer', 'altine', 'talaata', 'allarba', 'alxames', 'ajjuma', 'gaawu'],
+    'weekdays_short' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'],
+    'weekdays_min' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'year' => ':count at',
+    'month' => ':count wèr',
+    'week' => ':count ayubés',
+    'day' => ':count bés',
+    'hour' => ':count waxtu',
+    'minute' => ':count simili',
+    'second' => ':count saa',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh.php
new file mode 100644
index 00000000..e88c78d9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/xh_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
new file mode 100644
index 00000000..910f8311
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['eyoMqungu', 'eyoMdumba', 'eyoKwindla', 'uTshazimpuzi', 'uCanzibe', 'eyeSilimela', 'eyeKhala', 'eyeThupa', 'eyoMsintsi', 'eyeDwarha', 'eyeNkanga', 'eyoMnga'],
+    'months_short' => ['Mqu', 'Mdu', 'Kwi', 'Tsh', 'Can', 'Sil', 'Kha', 'Thu', 'Msi', 'Dwa', 'Nka', 'Mng'],
+    'weekdays' => ['iCawa', 'uMvulo', 'lwesiBini', 'lwesiThathu', 'ulweSine', 'lwesiHlanu', 'uMgqibelo'],
+    'weekdays_short' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'],
+    'weekdays_min' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count ihlobo', // less reliable
+    'y' => ':count ihlobo', // less reliable
+    'a_year' => ':count ihlobo', // less reliable
+
+    'hour' => ':count iwotshi', // less reliable
+    'h' => ':count iwotshi', // less reliable
+    'a_hour' => ':count iwotshi', // less reliable
+
+    'minute' => ':count ingqalelo', // less reliable
+    'min' => ':count ingqalelo', // less reliable
+    'a_minute' => ':count ingqalelo', // less reliable
+
+    'second' => ':count nceda', // less reliable
+    's' => ':count nceda', // less reliable
+    'a_second' => ':count nceda', // less reliable
+
+    'month' => ':count inyanga',
+    'm' => ':count inyanga',
+    'a_month' => ':count inyanga',
+
+    'week' => ':count veki',
+    'w' => ':count veki',
+    'a_week' => ':count veki',
+
+    'day' => ':count imini',
+    'd' => ':count imini',
+    'a_day' => ':count imini',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xog.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xog.php
new file mode 100644
index 00000000..eb55b4ab
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/xog.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['Munkyo', 'Eigulo'],
+    'weekdays' => ['Sabiiti', 'Balaza', 'Owokubili', 'Owokusatu', 'Olokuna', 'Olokutaanu', 'Olomukaaga'],
+    'weekdays_short' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'],
+    'weekdays_min' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'],
+    'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'],
+    'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yav.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yav.php
new file mode 100644
index 00000000..225a20d8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yav.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'meridiem' => ['kiɛmɛ́ɛm', 'kisɛ́ndɛ'],
+    'weekdays' => ['sɔ́ndiɛ', 'móndie', 'muányáŋmóndie', 'metúkpíápɛ', 'kúpélimetúkpiapɛ', 'feléte', 'séselé'],
+    'weekdays_short' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'],
+    'weekdays_min' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'],
+    'months' => ['pikítíkítie, oólí ú kutúan', 'siɛyɛ́, oóli ú kándíɛ', 'ɔnsúmbɔl, oóli ú kátátúɛ', 'mesiŋ, oóli ú kénie', 'ensil, oóli ú kátánuɛ', 'ɔsɔn', 'efute', 'pisuyú', 'imɛŋ i puɔs', 'imɛŋ i putúk,oóli ú kátíɛ', 'makandikɛ', 'pilɔndɔ́'],
+    'months_short' => ['o.1', 'o.2', 'o.3', 'o.4', 'o.5', 'o.6', 'o.7', 'o.8', 'o.9', 'o.10', 'o.11', 'o.12'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'D/M/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi.php
new file mode 100644
index 00000000..8f320229
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/yi_US.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
new file mode 100644
index 00000000..f764d36f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - http://www.uyip.org/ Pablo Saratxaga pablo@mandrakesoft.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', 'אקטאבער', 'נאוועמבער', 'דעצעמבער'],
+    'months_short' => ['יאַנ', 'פֿעב', 'מאַר', 'אַפּר', 'מײַ ', 'יונ', 'יול', 'אױג', 'סעפּ', 'אָקט', 'נאָװ', 'דעצ'],
+    'weekdays' => ['זונטיק', 'מאָנטיק', 'דינסטיק', 'מיטװאָך', 'דאָנערשטיק', 'פֿרײַטיק', 'שבת'],
+    'weekdays_short' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'],
+    'weekdays_min' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => ':count יאר',
+    'y' => ':count יאר',
+    'a_year' => ':count יאר',
+
+    'month' => ':count חודש',
+    'm' => ':count חודש',
+    'a_month' => ':count חודש',
+
+    'week' => ':count וואָך',
+    'w' => ':count וואָך',
+    'a_week' => ':count וואָך',
+
+    'day' => ':count טאָג',
+    'd' => ':count טאָג',
+    'a_day' => ':count טאָג',
+
+    'hour' => ':count שעה',
+    'h' => ':count שעה',
+    'a_hour' => ':count שעה',
+
+    'minute' => ':count מינוט',
+    'min' => ':count מינוט',
+    'a_minute' => ':count מינוט',
+
+    'second' => ':count סעקונדע',
+    's' => ':count סעקונדע',
+    'a_second' => ':count סעקונדע',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo.php
new file mode 100644
index 00000000..0a829810
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - François B
+ * - Atolagbe Abisoye
+ */
+return [
+    'year' => 'ọdún :count',
+    'a_year' => '{1}ọdún kan|ọdún :count',
+    'month' => 'osù :count',
+    'a_month' => '{1}osù kan|osù :count',
+    'week' => 'ọsẹ :count',
+    'a_week' => '{1}ọsẹ kan|ọsẹ :count',
+    'day' => 'ọjọ́ :count',
+    'a_day' => '{1}ọjọ́ kan|ọjọ́ :count',
+    'hour' => 'wákati :count',
+    'a_hour' => '{1}wákati kan|wákati :count',
+    'minute' => 'ìsẹjú :count',
+    'a_minute' => '{1}ìsẹjú kan|ìsẹjú :count',
+    'second' => 'iaayá :count',
+    'a_second' => '{1}ìsẹjú aayá die|aayá :count',
+    'ago' => ':time kọjá',
+    'from_now' => 'ní :time',
+    'diff_yesterday' => 'AÌ€na',
+    'diff_yesterday_regexp' => 'AÌ€na(?:\\s+ni)?',
+    'diff_today' => 'Ònì',
+    'diff_today_regexp' => 'Ònì(?:\\s+ni)?',
+    'diff_tomorrow' => 'Ọ̀la',
+    'diff_tomorrow_regexp' => 'Ọ̀la(?:\\s+ni)?',
+    'formats' => [
+        'LT' => 'h:mm A',
+        'LTS' => 'h:mm:ss A',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY h:mm A',
+        'LLLL' => 'dddd, D MMMM YYYY h:mm A',
+    ],
+    'calendar' => [
+        'sameDay' => '[Ònì ni] LT',
+        'nextDay' => '[Ọ̀la ni] LT',
+        'nextWeek' => 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
+        'lastDay' => '[AÌ€na ni] LT',
+        'lastWeek' => 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => 'ọjọ́ :number',
+    'months' => ['Sẹ́rẹ́', 'Èrèlè', 'Ẹrẹ̀nà', 'Ìgbé', 'Èbibi', 'Òkùdu', 'Agẹmo', 'Ògún', 'Owewe', 'Ọ̀wàrà', 'Bélú', 'Ọ̀pẹ̀̀'],
+    'months_short' => ['Sẹ́r', 'Èrl', 'Ẹrn', 'Ìgb', 'Èbi', 'Òkù', 'Agẹ', 'Ògú', 'Owe', 'Ọ̀wà', 'Bél', 'Ọ̀pẹ̀̀'],
+    'weekdays' => ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'],
+    'weekdays_short' => ['Àìk', 'Ajé', 'Ìsẹ́', 'Ọjr', 'Ọjb', 'Ẹtì', 'Àbá'],
+    'weekdays_min' => ['Àì', 'Aj', 'Ìs', 'Ọr', 'Ọb', 'Ẹt', 'Àb'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'meridiem' => ['Àárọ̀', 'Ọ̀sán'],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
new file mode 100644
index 00000000..12b9e815
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return array_replace_recursive(require __DIR__.'/yo.php', [
+    'meridiem' => ['Àárɔ̀', 'Ɔ̀sán'],
+    'weekdays' => ['Ɔjɔ́ Àìkú', 'Ɔjɔ́ Ajé', 'Ɔjɔ́ Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɔjɔ́ Ɛtì', 'Ɔjɔ́ Àbámɛ́ta'],
+    'weekdays_short' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'],
+    'weekdays_min' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'],
+    'months' => ['Oshù Shɛ́rɛ́', 'Oshù Èrèlè', 'Oshù Ɛrɛ̀nà', 'Oshù Ìgbé', 'Oshù Ɛ̀bibi', 'Oshù Òkúdu', 'Oshù Agɛmɔ', 'Oshù Ògún', 'Oshù Owewe', 'Oshù Ɔ̀wàrà', 'Oshù Bélú', 'Oshù Ɔ̀pɛ̀'],
+    'months_short' => ['Shɛ́rɛ́', 'Èrèlè', 'Ɛrɛ̀nà', 'Ìgbé', 'Ɛ̀bibi', 'Òkúdu', 'Agɛmɔ', 'Ògún', 'Owewe', 'Ɔ̀wàrà', 'Bélú', 'Ɔ̀pɛ̀'],
+    'first_day_of_week' => 1,
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd, D MMMM YYYY HH:mm',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
new file mode 100644
index 00000000..6860bc1a
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/yo.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue.php
new file mode 100644
index 00000000..ce233a4f
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/yue_HK.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
new file mode 100644
index 00000000..4e7d5c36
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php
@@ -0,0 +1,28 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/zh_HK.php', [
+    'formats' => [
+        'L' => 'YYYY年MM月DD日 dddd',
+    ],
+    'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'first_day_of_week' => 0,
+    'day_of_first_week_of_year' => 1,
+    'meridiem' => ['上午', '下午'],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
new file mode 100644
index 00000000..db913caa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hans.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
new file mode 100644
index 00000000..e2526f13
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
new file mode 100644
index 00000000..8efdc937
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/yuw_PG.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
new file mode 100644
index 00000000..b99ad2e8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Information from native speakers Hannah Sarvasy nungon.localization@gmail.com
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YY',
+    ],
+    'months' => ['jenuari', 'febuari', 'mas', 'epril', 'mei', 'jun', 'julai', 'ögus', 'septemba', 'öktoba', 'nöwemba', 'diksemba'],
+    'months_short' => ['jen', 'feb', 'mas', 'epr', 'mei', 'jun', 'jul', 'ögu', 'sep', 'ökt', 'nöw', 'dis'],
+    'weekdays' => ['sönda', 'mönda', 'sinda', 'mitiwö', 'sogipbono', 'nenggo', 'söndanggie'],
+    'weekdays_short' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'],
+    'weekdays_min' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
new file mode 100644
index 00000000..4d2c3b37
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php
@@ -0,0 +1,80 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - BAKTETE Miloud
+ */
+return [
+    'year' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
+    'a_year' => 'ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
+    'y' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ',
+    'month' => ':count ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ',
+    'a_month' => 'ⵉⴷⵊ ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ',
+    'm' => ':count ⴰⵢⵢⵓⵔⵏ',
+    'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ',
+    'a_week' => 'ⵉⵛⵜ ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ',
+    'w' => ':count ⵉⵎⴰⵍⴰⵙⵙ.',
+    'day' => ':count ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ',
+    'a_day' => 'ⵉⴷⵊ ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ',
+    'd' => ':count ⵓ',
+    'hour' => ':count ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ',
+    'a_hour' => 'ⵉⵛⵜ ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ',
+    'h' => ':count ⵜ',
+    'minute' => ':count ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ',
+    'a_minute' => 'ⵉⵛⵜ ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ',
+    'min' => ':count ⵜⵓⵙ',
+    'second' => ':count ⵜⵙⵉⵏⵜ|:count ⵜⵉⵙⵉⵏⴰ',
+    'a_second' => 'ⴽⵔⴰ ⵜⵉⵙⵉⵏⴰ|:count ⵜⵉⵙⵉⵏⴰ',
+    's' => ':count ⵜ',
+    'ago' => 'ⵣⴳ :time',
+    'from_now' => 'â´·â´³ :time',
+    'after' => ':time ⴰⵡⴰⵔ',
+    'before' => ':time ⴷⴰⵜ',
+    'diff_now' => 'ⴰⴷⵡⴰⵍⵉ',
+    'diff_today' => 'ⴰⵙⵙ',
+    'diff_today_regexp' => 'ⴰⵙⵙ(?:\\s+ⴰ/ⴰⴷ)?(?:\\s+ⴳ)?',
+    'diff_yesterday' => 'ⴰⵙⵙⵏⵏⴰⵟ',
+    'diff_yesterday_regexp' => 'ⴰⵙⵙⵏⵏⴰⵟ(?:\\s+ⴳ)?',
+    'diff_tomorrow' => 'ⴰⵙⴽⴽⴰ',
+    'diff_tomorrow_regexp' => 'ⴰⵙⴽⴽⴰ(?:\\s+ⴳ)?',
+    'diff_before_yesterday' => 'ⴼⵔ ⵉⴹⵏⵏⴰⵟ',
+    'diff_after_tomorrow' => 'ⵏⴰⴼ ⵓⵙⴽⴽⴰ',
+    'period_recurrences' => ':count ⵜⵉⴽⴽⴰⵍ',
+    'period_interval' => 'ⴽⵓ :interval',
+    'period_start_date' => 'â´³ :date',
+    'period_end_date' => 'ⵉ :date',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'DD/MM/YYYY',
+        'LL' => 'D MMMM YYYY',
+        'LLL' => 'D MMMM YYYY HH:mm',
+        'LLLL' => 'dddd D MMMM YYYY HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[ⴰⵙⵙ ⴰ/ⴰⴷ ⴳ] LT',
+        'nextDay' => '[ⴰⵙⴽⴽⴰ ⴳ] LT',
+        'nextWeek' => 'dddd [â´³] LT',
+        'lastDay' => '[ⴰⵙⵙⵏⵏⴰⵟ ⴳ] LT',
+        'lastWeek' => 'dddd [ⴰⵎⴳⴳⴰⵔⵓ ⴳ] LT',
+        'sameElse' => 'L',
+    ],
+    'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'],
+    'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'],
+    'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵟⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'],
+    'weekdays' => ['ⵓⵙⴰⵎⴰⵙ', 'ⵡⴰⵢⵏⴰⵙ', 'ⵓⵙⵉⵏⴰⵙ', 'ⵡⴰⴽⵕⴰⵙ', 'ⵓⴽⵡⴰⵙ', 'ⵓⵙⵉⵎⵡⴰⵙ', 'ⵓⵙⵉⴹⵢⴰⵙ'],
+    'weekdays_short' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'],
+    'weekdays_min' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 1,
+    'list' => [', ', ' â´· '],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
new file mode 100644
index 00000000..1187c3d7
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh.php
@@ -0,0 +1,29 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - xuri
+ * - sycuato
+ * - bokideckonja
+ * - Luo Ning
+ * - William Yang (williamyang233)
+ */
+return array_merge(require __DIR__.'/zh_Hans.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY年M月D日',
+        'LLL' => 'YYYY年M月D日 A h点mm分',
+        'LLLL' => 'YYYY年M月D日dddd A h点mm分',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
new file mode 100644
index 00000000..9c05d5a8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - monkeycon
+ * - François B
+ * - Jason Katz-Brown
+ * - Serhan Apaydın
+ * - Matt Johnson
+ * - JD Isaacks
+ * - Zeno Zeng
+ * - Chris Hemp
+ * - shankesgk2
+ */
+return array_merge(require __DIR__.'/zh.php', [
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY年M月D日',
+        'LLL' => 'YYYY年M月D日Ah点mm分',
+        'LLLL' => 'YYYY年M月D日ddddAh点mm分',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
new file mode 100644
index 00000000..c3ee9fcb
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant_HK.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
new file mode 100644
index 00000000..9b91785e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php
@@ -0,0 +1,109 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - monkeycon
+ * - François B
+ * - Jason Katz-Brown
+ * - Konstantin Konev
+ * - Chris Lam
+ * - Serhan Apaydın
+ * - Gary Lo
+ * - JD Isaacks
+ * - Chris Hemp
+ * - shankesgk2
+ * - Daniel Cheung (danvim)
+ */
+return [
+    'year' => ':count:optional-spaceå¹´',
+    'y' => ':count:optional-spaceå¹´',
+    'month' => ':count:optional-space个月',
+    'm' => ':count:optional-space个月',
+    'week' => ':count:optional-space周',
+    'w' => ':count:optional-space周',
+    'day' => ':count:optional-space天',
+    'd' => ':count:optional-space天',
+    'hour' => ':count:optional-space小时',
+    'h' => ':count:optional-space小时',
+    'minute' => ':count:optional-space分钟',
+    'min' => ':count:optional-space分钟',
+    'second' => ':count:optional-space秒',
+    'a_second' => '{1}几秒|]1,Inf[:count:optional-space秒',
+    's' => ':count:optional-space秒',
+    'ago' => ':time前',
+    'from_now' => ':time后',
+    'after' => ':time后',
+    'before' => ':time前',
+    'diff_now' => '现在',
+    'diff_today' => '今天',
+    'diff_yesterday' => '昨天',
+    'diff_tomorrow' => '明天',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY年M月D日',
+        'LLL' => 'YYYY年M月D日 HH:mm',
+        'LLLL' => 'YYYY年M月D日dddd HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[今天]LT',
+        'nextDay' => '[明天]LT',
+        'nextWeek' => '[下]ddddLT',
+        'lastDay' => '[昨天]LT',
+        'lastWeek' => '[上]ddddLT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'DDD':
+                return $number.'æ—¥';
+            case 'M':
+                return $number.'月';
+            case 'w':
+            case 'W':
+                return $number.'周';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour, $minute) {
+        $time = $hour * 100 + $minute;
+        if ($time < 600) {
+            return '凌晨';
+        }
+        if ($time < 900) {
+            return '早上';
+        }
+        if ($time < 1130) {
+            return '上午';
+        }
+        if ($time < 1230) {
+            return '中午';
+        }
+        if ($time < 1800) {
+            return '下午';
+        }
+
+        return '晚上';
+    },
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    'weekdays_short' => ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => '',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
new file mode 100644
index 00000000..db913caa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hans.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
new file mode 100644
index 00000000..db913caa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hans.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
new file mode 100644
index 00000000..db913caa
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hans.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
new file mode 100644
index 00000000..a27b6109
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php
@@ -0,0 +1,111 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Adam
+ * - monkeycon
+ * - François B
+ * - Jason Katz-Brown
+ * - Chris Lam
+ * - Serhan Apaydın
+ * - Gary Lo
+ * - JD Isaacks
+ * - Chris Hemp
+ * - Eddie
+ * - KID
+ * - shankesgk2
+ * - Daniel Cheung (danvim)
+ */
+return [
+    'year' => ':count:optional-spaceå¹´',
+    'y' => ':count:optional-spaceå¹´',
+    'month' => ':count:optional-space個月',
+    'm' => ':count:optional-space月',
+    'week' => ':count:optional-space週',
+    'w' => ':count:optional-space週',
+    'day' => ':count:optional-space天',
+    'd' => ':count:optional-space天',
+    'hour' => ':count:optional-space小時',
+    'h' => ':count:optional-space小時',
+    'minute' => ':count:optional-space分鐘',
+    'min' => ':count:optional-space分鐘',
+    'second' => ':count:optional-space秒',
+    'a_second' => '{1}幾秒|]1,Inf[:count:optional-space秒',
+    's' => ':count:optional-space秒',
+    'ago' => ':time前',
+    'from_now' => ':time後',
+    'after' => ':time後',
+    'before' => ':time前',
+    'diff_now' => '現在',
+    'diff_today' => '今天',
+    'diff_yesterday' => '昨天',
+    'diff_tomorrow' => '明天',
+    'formats' => [
+        'LT' => 'HH:mm',
+        'LTS' => 'HH:mm:ss',
+        'L' => 'YYYY/MM/DD',
+        'LL' => 'YYYY年M月D日',
+        'LLL' => 'YYYY年M月D日 HH:mm',
+        'LLLL' => 'YYYY年M月D日dddd HH:mm',
+    ],
+    'calendar' => [
+        'sameDay' => '[今天] LT',
+        'nextDay' => '[明天] LT',
+        'nextWeek' => '[下]dddd LT',
+        'lastDay' => '[昨天] LT',
+        'lastWeek' => '[上]dddd LT',
+        'sameElse' => 'L',
+    ],
+    'ordinal' => function ($number, $period) {
+        switch ($period) {
+            case 'd':
+            case 'D':
+            case 'DDD':
+                return $number.'æ—¥';
+            case 'M':
+                return $number.'月';
+            case 'w':
+            case 'W':
+                return $number.'周';
+            default:
+                return $number;
+        }
+    },
+    'meridiem' => function ($hour, $minute) {
+        $time = $hour * 100 + $minute;
+        if ($time < 600) {
+            return '凌晨';
+        }
+        if ($time < 900) {
+            return '早上';
+        }
+        if ($time < 1130) {
+            return '上午';
+        }
+        if ($time < 1230) {
+            return '中午';
+        }
+        if ($time < 1800) {
+            return '下午';
+        }
+
+        return '晚上';
+    },
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
+    'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    'weekdays_short' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'first_day_of_week' => 1,
+    'day_of_first_week_of_year' => 4,
+    'list' => '',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
new file mode 100644
index 00000000..e2526f13
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
new file mode 100644
index 00000000..e2526f13
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
new file mode 100644
index 00000000..e2526f13
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
new file mode 100644
index 00000000..1c86d477
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php
@@ -0,0 +1,21 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - tarunvelli
+ * - Eddie
+ * - KID
+ * - shankesgk2
+ */
+return array_replace_recursive(require __DIR__.'/zh_Hant.php', [
+    'after' => ':time后',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
new file mode 100644
index 00000000..c451a562
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php
@@ -0,0 +1,26 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/zh.php', [
+    'formats' => [
+        'L' => 'YYYY年MM月DD日',
+    ],
+    'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'months_short' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
+    'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'],
+    'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'],
+    'day_of_first_week_of_year' => 1,
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
new file mode 100644
index 00000000..c6789ed2
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php
@@ -0,0 +1,12 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return require __DIR__.'/zh_Hant_TW.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
new file mode 100644
index 00000000..b0d9ba86
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - IBM Globalization Center of Competency, Yamato Software Laboratory    bug-glibc-locales@gnu.org
+ */
+return array_replace_recursive(require __DIR__.'/zh.php', [
+    'formats' => [
+        'L' => 'YYYY-MM-DD',
+    ],
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu.php
new file mode 100644
index 00000000..9a6cce02
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu.php
@@ -0,0 +1,15 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Unknown default region, use the first alphabetically.
+ */
+return require __DIR__.'/zu_ZA.php';
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
new file mode 100644
index 00000000..6bfb72f0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Authors:
+ * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za
+ */
+return array_replace_recursive(require __DIR__.'/en.php', [
+    'formats' => [
+        'L' => 'DD/MM/YYYY',
+    ],
+    'months' => ['Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', 'Okthoba', 'Novemba', 'Disemba'],
+    'months_short' => ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'],
+    'weekdays' => ['iSonto', 'uMsombuluko', 'uLwesibili', 'uLwesithathu', 'uLwesine', 'uLwesihlanu', 'uMgqibelo'],
+    'weekdays_short' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'],
+    'weekdays_min' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'],
+    'day_of_first_week_of_year' => 1,
+
+    'year' => 'kweminyaka engu-:count',
+    'y' => 'kweminyaka engu-:count',
+    'a_year' => 'kweminyaka engu-:count',
+
+    'month' => 'izinyanga ezingu-:count',
+    'm' => 'izinyanga ezingu-:count',
+    'a_month' => 'izinyanga ezingu-:count',
+
+    'week' => 'lwamasonto angu-:count',
+    'w' => 'lwamasonto angu-:count',
+    'a_week' => 'lwamasonto angu-:count',
+
+    'day' => 'ezingaba ngu-:count',
+    'd' => 'ezingaba ngu-:count',
+    'a_day' => 'ezingaba ngu-:count',
+
+    'hour' => 'amahora angu-:count',
+    'h' => 'amahora angu-:count',
+    'a_hour' => 'amahora angu-:count',
+
+    'minute' => 'ngemizuzu engu-:count',
+    'min' => 'ngemizuzu engu-:count',
+    'a_minute' => 'ngemizuzu engu-:count',
+
+    'second' => 'imizuzwana engu-:count',
+    's' => 'imizuzwana engu-:count',
+    'a_second' => 'imizuzwana engu-:count',
+]);
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Language.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Language.php
new file mode 100644
index 00000000..1fb5bafd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Language.php
@@ -0,0 +1,342 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use JsonSerializable;
+use ReturnTypeWillChange;
+
+class Language implements JsonSerializable
+{
+    /**
+     * @var array
+     */
+    protected static $languagesNames;
+
+    /**
+     * @var array
+     */
+    protected static $regionsNames;
+
+    /**
+     * @var string
+     */
+    protected $id;
+
+    /**
+     * @var string
+     */
+    protected $code;
+
+    /**
+     * @var string|null
+     */
+    protected $variant;
+
+    /**
+     * @var string|null
+     */
+    protected $region;
+
+    /**
+     * @var array
+     */
+    protected $names;
+
+    /**
+     * @var string
+     */
+    protected $isoName;
+
+    /**
+     * @var string
+     */
+    protected $nativeName;
+
+    public function __construct(string $id)
+    {
+        $this->id = str_replace('-', '_', $id);
+        $parts = explode('_', $this->id);
+        $this->code = $parts[0];
+
+        if (isset($parts[1])) {
+            if (!preg_match('/^[A-Z]+$/', $parts[1])) {
+                $this->variant = $parts[1];
+                $parts[1] = $parts[2] ?? null;
+            }
+            if ($parts[1]) {
+                $this->region = $parts[1];
+            }
+        }
+    }
+
+    /**
+     * Get the list of the known languages.
+     *
+     * @return array
+     */
+    public static function all()
+    {
+        if (!static::$languagesNames) {
+            static::$languagesNames = require __DIR__.'/List/languages.php';
+        }
+
+        return static::$languagesNames;
+    }
+
+    /**
+     * Get the list of the known regions.
+     *
+     * @return array
+     */
+    public static function regions()
+    {
+        if (!static::$regionsNames) {
+            static::$regionsNames = require __DIR__.'/List/regions.php';
+        }
+
+        return static::$regionsNames;
+    }
+
+    /**
+     * Get both isoName and nativeName as an array.
+     *
+     * @return array
+     */
+    public function getNames(): array
+    {
+        if (!$this->names) {
+            $this->names = static::all()[$this->code] ?? [
+                'isoName' => $this->code,
+                'nativeName' => $this->code,
+            ];
+        }
+
+        return $this->names;
+    }
+
+    /**
+     * Returns the original locale ID.
+     *
+     * @return string
+     */
+    public function getId(): string
+    {
+        return $this->id;
+    }
+
+    /**
+     * Returns the code of the locale "en"/"fr".
+     *
+     * @return string
+     */
+    public function getCode(): string
+    {
+        return $this->code;
+    }
+
+    /**
+     * Returns the variant code such as cyrl/latn.
+     *
+     * @return string|null
+     */
+    public function getVariant(): ?string
+    {
+        return $this->variant;
+    }
+
+    /**
+     * Returns the variant such as Cyrillic/Latin.
+     *
+     * @return string|null
+     */
+    public function getVariantName(): ?string
+    {
+        if ($this->variant === 'Latn') {
+            return 'Latin';
+        }
+
+        if ($this->variant === 'Cyrl') {
+            return 'Cyrillic';
+        }
+
+        return $this->variant;
+    }
+
+    /**
+     * Returns the region part of the locale.
+     *
+     * @return string|null
+     */
+    public function getRegion(): ?string
+    {
+        return $this->region;
+    }
+
+    /**
+     * Returns the region name for the current language.
+     *
+     * @return string|null
+     */
+    public function getRegionName(): ?string
+    {
+        return $this->region ? (static::regions()[$this->region] ?? $this->region) : null;
+    }
+
+    /**
+     * Returns the long ISO language name.
+     *
+     * @return string
+     */
+    public function getFullIsoName(): string
+    {
+        if (!$this->isoName) {
+            $this->isoName = $this->getNames()['isoName'];
+        }
+
+        return $this->isoName;
+    }
+
+    /**
+     * Set the ISO language name.
+     *
+     * @param string $isoName
+     */
+    public function setIsoName(string $isoName): self
+    {
+        $this->isoName = $isoName;
+
+        return $this;
+    }
+
+    /**
+     * Return the full name of the language in this language.
+     *
+     * @return string
+     */
+    public function getFullNativeName(): string
+    {
+        if (!$this->nativeName) {
+            $this->nativeName = $this->getNames()['nativeName'];
+        }
+
+        return $this->nativeName;
+    }
+
+    /**
+     * Set the name of the language in this language.
+     *
+     * @param string $nativeName
+     */
+    public function setNativeName(string $nativeName): self
+    {
+        $this->nativeName = $nativeName;
+
+        return $this;
+    }
+
+    /**
+     * Returns the short ISO language name.
+     *
+     * @return string
+     */
+    public function getIsoName(): string
+    {
+        $name = $this->getFullIsoName();
+
+        return trim(strstr($name, ',', true) ?: $name);
+    }
+
+    /**
+     * Get the short name of the language in this language.
+     *
+     * @return string
+     */
+    public function getNativeName(): string
+    {
+        $name = $this->getFullNativeName();
+
+        return trim(strstr($name, ',', true) ?: $name);
+    }
+
+    /**
+     * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable.
+     *
+     * @return string
+     */
+    public function getIsoDescription()
+    {
+        $region = $this->getRegionName();
+        $variant = $this->getVariantName();
+
+        return $this->getIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
+    }
+
+    /**
+     * Get a string with short native name, region in parentheses if applicable, variant in parentheses if applicable.
+     *
+     * @return string
+     */
+    public function getNativeDescription()
+    {
+        $region = $this->getRegionName();
+        $variant = $this->getVariantName();
+
+        return $this->getNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
+    }
+
+    /**
+     * Get a string with long ISO name, region in parentheses if applicable, variant in parentheses if applicable.
+     *
+     * @return string
+     */
+    public function getFullIsoDescription()
+    {
+        $region = $this->getRegionName();
+        $variant = $this->getVariantName();
+
+        return $this->getFullIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
+    }
+
+    /**
+     * Get a string with long native name, region in parentheses if applicable, variant in parentheses if applicable.
+     *
+     * @return string
+     */
+    public function getFullNativeDescription()
+    {
+        $region = $this->getRegionName();
+        $variant = $this->getVariantName();
+
+        return $this->getFullNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : '');
+    }
+
+    /**
+     * Returns the original locale ID.
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        return $this->getId();
+    }
+
+    /**
+     * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable.
+     *
+     * @return string
+     */
+    #[ReturnTypeWillChange]
+    public function jsonSerialize()
+    {
+        return $this->getIsoDescription();
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
new file mode 100644
index 00000000..84e241e3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php
@@ -0,0 +1,127 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Laravel;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterval;
+use Carbon\CarbonPeriod;
+use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
+use Illuminate\Events\Dispatcher;
+use Illuminate\Events\EventDispatcher;
+use Illuminate\Support\Carbon as IlluminateCarbon;
+use Illuminate\Support\Facades\Date;
+use Throwable;
+
+class ServiceProvider extends \Illuminate\Support\ServiceProvider
+{
+    /** @var callable|null */
+    protected $appGetter = null;
+
+    /** @var callable|null */
+    protected $localeGetter = null;
+
+    public function setAppGetter(?callable $appGetter): void
+    {
+        $this->appGetter = $appGetter;
+    }
+
+    public function setLocaleGetter(?callable $localeGetter): void
+    {
+        $this->localeGetter = $localeGetter;
+    }
+
+    public function boot()
+    {
+        $this->updateLocale();
+
+        if (!$this->app->bound('events')) {
+            return;
+        }
+
+        $service = $this;
+        $events = $this->app['events'];
+
+        if ($this->isEventDispatcher($events)) {
+            $events->listen(class_exists('Illuminate\Foundation\Events\LocaleUpdated') ? 'Illuminate\Foundation\Events\LocaleUpdated' : 'locale.changed', function () use ($service) {
+                $service->updateLocale();
+            });
+        }
+    }
+
+    public function updateLocale()
+    {
+        $locale = $this->getLocale();
+
+        if ($locale === null) {
+            return;
+        }
+
+        Carbon::setLocale($locale);
+        CarbonImmutable::setLocale($locale);
+        CarbonPeriod::setLocale($locale);
+        CarbonInterval::setLocale($locale);
+
+        if (class_exists(IlluminateCarbon::class)) {
+            IlluminateCarbon::setLocale($locale);
+        }
+
+        if (class_exists(Date::class)) {
+            try {
+                $root = Date::getFacadeRoot();
+                $root->setLocale($locale);
+            } catch (Throwable $e) {
+                // Non Carbon class in use in Date facade
+            }
+        }
+    }
+
+    public function register()
+    {
+        // Needed for Laravel < 5.3 compatibility
+    }
+
+    protected function getLocale()
+    {
+        if ($this->localeGetter) {
+            return ($this->localeGetter)();
+        }
+
+        $app = $this->getApp();
+        $app = $app && method_exists($app, 'getLocale')
+            ? $app
+            : $this->getGlobalApp('translator');
+
+        return $app ? $app->getLocale() : null;
+    }
+
+    protected function getApp()
+    {
+        if ($this->appGetter) {
+            return ($this->appGetter)();
+        }
+
+        return $this->app ?? $this->getGlobalApp();
+    }
+
+    protected function getGlobalApp(...$args)
+    {
+        return \function_exists('app') ? \app(...$args) : null;
+    }
+
+    protected function isEventDispatcher($instance)
+    {
+        return $instance instanceof EventDispatcher
+            || $instance instanceof Dispatcher
+            || $instance instanceof DispatcherContract;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/List/languages.php b/htdocs/vendor/nesbot/carbon/src/Carbon/List/languages.php
new file mode 100644
index 00000000..5b5d9a1e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/List/languages.php
@@ -0,0 +1,1239 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+return [
+    /*
+     * ISO 639-2
+     */
+    'ab' => [
+        'isoName' => 'Abkhazian',
+        'nativeName' => 'аҧсуа бызшәа, аҧсшәа',
+    ],
+    'aa' => [
+        'isoName' => 'Afar',
+        'nativeName' => 'Afaraf',
+    ],
+    'af' => [
+        'isoName' => 'Afrikaans',
+        'nativeName' => 'Afrikaans',
+    ],
+    'ak' => [
+        'isoName' => 'Akan',
+        'nativeName' => 'Akan',
+    ],
+    'sq' => [
+        'isoName' => 'Albanian',
+        'nativeName' => 'Shqip',
+    ],
+    'am' => [
+        'isoName' => 'Amharic',
+        'nativeName' => 'አማርኛ',
+    ],
+    'ar' => [
+        'isoName' => 'Arabic',
+        'nativeName' => 'العربية',
+    ],
+    'an' => [
+        'isoName' => 'Aragonese',
+        'nativeName' => 'aragonés',
+    ],
+    'hy' => [
+        'isoName' => 'Armenian',
+        'nativeName' => 'Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶',
+    ],
+    'as' => [
+        'isoName' => 'Assamese',
+        'nativeName' => 'অসমীয়া',
+    ],
+    'av' => [
+        'isoName' => 'Avaric',
+        'nativeName' => 'авар мацӀ, магӀарул мацӀ',
+    ],
+    'ae' => [
+        'isoName' => 'Avestan',
+        'nativeName' => 'avesta',
+    ],
+    'ay' => [
+        'isoName' => 'Aymara',
+        'nativeName' => 'aymar aru',
+    ],
+    'az' => [
+        'isoName' => 'Azerbaijani',
+        'nativeName' => 'azərbaycan dili',
+    ],
+    'bm' => [
+        'isoName' => 'Bambara',
+        'nativeName' => 'bamanankan',
+    ],
+    'ba' => [
+        'isoName' => 'Bashkir',
+        'nativeName' => 'башҡорт теле',
+    ],
+    'eu' => [
+        'isoName' => 'Basque',
+        'nativeName' => 'euskara, euskera',
+    ],
+    'be' => [
+        'isoName' => 'Belarusian',
+        'nativeName' => 'беларуская мова',
+    ],
+    'bn' => [
+        'isoName' => 'Bengali',
+        'nativeName' => 'বাংলা',
+    ],
+    'bh' => [
+        'isoName' => 'Bihari languages',
+        'nativeName' => 'भोजपुरी',
+    ],
+    'bi' => [
+        'isoName' => 'Bislama',
+        'nativeName' => 'Bislama',
+    ],
+    'bs' => [
+        'isoName' => 'Bosnian',
+        'nativeName' => 'bosanski jezik',
+    ],
+    'br' => [
+        'isoName' => 'Breton',
+        'nativeName' => 'brezhoneg',
+    ],
+    'bg' => [
+        'isoName' => 'Bulgarian',
+        'nativeName' => 'български език',
+    ],
+    'my' => [
+        'isoName' => 'Burmese',
+        'nativeName' => 'ဗမာစာ',
+    ],
+    'ca' => [
+        'isoName' => 'Catalan, Valencian',
+        'nativeName' => 'català, valencià',
+    ],
+    'ch' => [
+        'isoName' => 'Chamorro',
+        'nativeName' => 'Chamoru',
+    ],
+    'ce' => [
+        'isoName' => 'Chechen',
+        'nativeName' => 'нохчийн мотт',
+    ],
+    'ny' => [
+        'isoName' => 'Chichewa, Chewa, Nyanja',
+        'nativeName' => 'chiCheŵa, chinyanja',
+    ],
+    'zh' => [
+        'isoName' => 'Chinese',
+        'nativeName' => '中文 (Zhōngwén), 汉语, 漢語',
+    ],
+    'cv' => [
+        'isoName' => 'Chuvash',
+        'nativeName' => 'чӑваш чӗлхи',
+    ],
+    'kw' => [
+        'isoName' => 'Cornish',
+        'nativeName' => 'Kernewek',
+    ],
+    'co' => [
+        'isoName' => 'Corsican',
+        'nativeName' => 'corsu, lingua corsa',
+    ],
+    'cr' => [
+        'isoName' => 'Cree',
+        'nativeName' => 'ᓀᐦᐃᔭᐍᐏᐣ',
+    ],
+    'hr' => [
+        'isoName' => 'Croatian',
+        'nativeName' => 'hrvatski jezik',
+    ],
+    'cs' => [
+        'isoName' => 'Czech',
+        'nativeName' => 'čeština, český jazyk',
+    ],
+    'da' => [
+        'isoName' => 'Danish',
+        'nativeName' => 'dansk',
+    ],
+    'dv' => [
+        'isoName' => 'Divehi, Dhivehi, Maldivian',
+        'nativeName' => 'Þ‹Þ¨ÞˆÞ¬Þ€Þ¨',
+    ],
+    'nl' => [
+        'isoName' => 'Dutch, Flemish',
+        'nativeName' => 'Nederlands, Vlaams',
+    ],
+    'dz' => [
+        'isoName' => 'Dzongkha',
+        'nativeName' => 'རྫོང་ཁ',
+    ],
+    'en' => [
+        'isoName' => 'English',
+        'nativeName' => 'English',
+    ],
+    'eo' => [
+        'isoName' => 'Esperanto',
+        'nativeName' => 'Esperanto',
+    ],
+    'et' => [
+        'isoName' => 'Estonian',
+        'nativeName' => 'eesti, eesti keel',
+    ],
+    'ee' => [
+        'isoName' => 'Ewe',
+        'nativeName' => 'EÊ‹egbe',
+    ],
+    'fo' => [
+        'isoName' => 'Faroese',
+        'nativeName' => 'føroyskt',
+    ],
+    'fj' => [
+        'isoName' => 'Fijian',
+        'nativeName' => 'vosa Vakaviti',
+    ],
+    'fi' => [
+        'isoName' => 'Finnish',
+        'nativeName' => 'suomi, suomen kieli',
+    ],
+    'fr' => [
+        'isoName' => 'French',
+        'nativeName' => 'français',
+    ],
+    'ff' => [
+        'isoName' => 'Fulah',
+        'nativeName' => 'Fulfulde, Pulaar, Pular',
+    ],
+    'gl' => [
+        'isoName' => 'Galician',
+        'nativeName' => 'Galego',
+    ],
+    'ka' => [
+        'isoName' => 'Georgian',
+        'nativeName' => 'ქართული',
+    ],
+    'de' => [
+        'isoName' => 'German',
+        'nativeName' => 'Deutsch',
+    ],
+    'el' => [
+        'isoName' => 'Greek (modern)',
+        'nativeName' => 'ελληνικά',
+    ],
+    'gn' => [
+        'isoName' => 'Guaraní',
+        'nativeName' => 'Avañe\'ẽ',
+    ],
+    'gu' => [
+        'isoName' => 'Gujarati',
+        'nativeName' => 'ગુજરાતી',
+    ],
+    'ht' => [
+        'isoName' => 'Haitian, Haitian Creole',
+        'nativeName' => 'Kreyòl ayisyen',
+    ],
+    'ha' => [
+        'isoName' => 'Hausa',
+        'nativeName' => '(Hausa) هَوُسَ',
+    ],
+    'he' => [
+        'isoName' => 'Hebrew (modern)',
+        'nativeName' => 'עברית',
+    ],
+    'hz' => [
+        'isoName' => 'Herero',
+        'nativeName' => 'Otjiherero',
+    ],
+    'hi' => [
+        'isoName' => 'Hindi',
+        'nativeName' => 'हिन्दी, हिंदी',
+    ],
+    'ho' => [
+        'isoName' => 'Hiri Motu',
+        'nativeName' => 'Hiri Motu',
+    ],
+    'hu' => [
+        'isoName' => 'Hungarian',
+        'nativeName' => 'magyar',
+    ],
+    'ia' => [
+        'isoName' => 'Interlingua',
+        'nativeName' => 'Interlingua',
+    ],
+    'id' => [
+        'isoName' => 'Indonesian',
+        'nativeName' => 'Bahasa Indonesia',
+    ],
+    'ie' => [
+        'isoName' => 'Interlingue',
+        'nativeName' => 'Originally called Occidental; then Interlingue after WWII',
+    ],
+    'ga' => [
+        'isoName' => 'Irish',
+        'nativeName' => 'Gaeilge',
+    ],
+    'ig' => [
+        'isoName' => 'Igbo',
+        'nativeName' => 'Asụsụ Igbo',
+    ],
+    'ik' => [
+        'isoName' => 'Inupiaq',
+        'nativeName' => 'Iñupiaq, Iñupiatun',
+    ],
+    'io' => [
+        'isoName' => 'Ido',
+        'nativeName' => 'Ido',
+    ],
+    'is' => [
+        'isoName' => 'Icelandic',
+        'nativeName' => 'Íslenska',
+    ],
+    'it' => [
+        'isoName' => 'Italian',
+        'nativeName' => 'Italiano',
+    ],
+    'iu' => [
+        'isoName' => 'Inuktitut',
+        'nativeName' => 'ᐃᓄᒃᑎᑐᑦ',
+    ],
+    'ja' => [
+        'isoName' => 'Japanese',
+        'nativeName' => '日本語 (にほんご)',
+    ],
+    'jv' => [
+        'isoName' => 'Javanese',
+        'nativeName' => 'ꦧꦱꦗꦮ, Basa Jawa',
+    ],
+    'kl' => [
+        'isoName' => 'Kalaallisut, Greenlandic',
+        'nativeName' => 'kalaallisut, kalaallit oqaasii',
+    ],
+    'kn' => [
+        'isoName' => 'Kannada',
+        'nativeName' => 'ಕನ್ನಡ',
+    ],
+    'kr' => [
+        'isoName' => 'Kanuri',
+        'nativeName' => 'Kanuri',
+    ],
+    'ks' => [
+        'isoName' => 'Kashmiri',
+        'nativeName' => 'कश्मीरी, كشميري‎',
+    ],
+    'kk' => [
+        'isoName' => 'Kazakh',
+        'nativeName' => 'қазақ тілі',
+    ],
+    'km' => [
+        'isoName' => 'Central Khmer',
+        'nativeName' => 'ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ',
+    ],
+    'ki' => [
+        'isoName' => 'Kikuyu, Gikuyu',
+        'nativeName' => 'Gĩkũyũ',
+    ],
+    'rw' => [
+        'isoName' => 'Kinyarwanda',
+        'nativeName' => 'Ikinyarwanda',
+    ],
+    'ky' => [
+        'isoName' => 'Kirghiz, Kyrgyz',
+        'nativeName' => 'Кыргызча, Кыргыз тили',
+    ],
+    'kv' => [
+        'isoName' => 'Komi',
+        'nativeName' => 'коми кыв',
+    ],
+    'kg' => [
+        'isoName' => 'Kongo',
+        'nativeName' => 'Kikongo',
+    ],
+    'ko' => [
+        'isoName' => 'Korean',
+        'nativeName' => '한국어',
+    ],
+    'ku' => [
+        'isoName' => 'Kurdish',
+        'nativeName' => 'Kurdî, کوردی‎',
+    ],
+    'kj' => [
+        'isoName' => 'Kuanyama, Kwanyama',
+        'nativeName' => 'Kuanyama',
+    ],
+    'la' => [
+        'isoName' => 'Latin',
+        'nativeName' => 'latine, lingua latina',
+    ],
+    'lb' => [
+        'isoName' => 'Luxembourgish, Letzeburgesch',
+        'nativeName' => 'Lëtzebuergesch',
+    ],
+    'lg' => [
+        'isoName' => 'Ganda',
+        'nativeName' => 'Luganda',
+    ],
+    'li' => [
+        'isoName' => 'Limburgan, Limburger, Limburgish',
+        'nativeName' => 'Limburgs',
+    ],
+    'ln' => [
+        'isoName' => 'Lingala',
+        'nativeName' => 'Lingála',
+    ],
+    'lo' => [
+        'isoName' => 'Lao',
+        'nativeName' => 'ພາສາລາວ',
+    ],
+    'lt' => [
+        'isoName' => 'Lithuanian',
+        'nativeName' => 'lietuvių kalba',
+    ],
+    'lu' => [
+        'isoName' => 'Luba-Katanga',
+        'nativeName' => 'Kiluba',
+    ],
+    'lv' => [
+        'isoName' => 'Latvian',
+        'nativeName' => 'latviešu valoda',
+    ],
+    'gv' => [
+        'isoName' => 'Manx',
+        'nativeName' => 'Gaelg, Gailck',
+    ],
+    'mk' => [
+        'isoName' => 'Macedonian',
+        'nativeName' => 'македонски јазик',
+    ],
+    'mg' => [
+        'isoName' => 'Malagasy',
+        'nativeName' => 'fiteny malagasy',
+    ],
+    'ms' => [
+        'isoName' => 'Malay',
+        'nativeName' => 'Bahasa Melayu, بهاس ملايو‎',
+    ],
+    'ml' => [
+        'isoName' => 'Malayalam',
+        'nativeName' => 'മലയാളം',
+    ],
+    'mt' => [
+        'isoName' => 'Maltese',
+        'nativeName' => 'Malti',
+    ],
+    'mi' => [
+        'isoName' => 'Maori',
+        'nativeName' => 'te reo Māori',
+    ],
+    'mr' => [
+        'isoName' => 'Marathi',
+        'nativeName' => 'मराठी',
+    ],
+    'mh' => [
+        'isoName' => 'Marshallese',
+        'nativeName' => 'Kajin M̧ajeļ',
+    ],
+    'mn' => [
+        'isoName' => 'Mongolian',
+        'nativeName' => 'Монгол хэл',
+    ],
+    'na' => [
+        'isoName' => 'Nauru',
+        'nativeName' => 'Dorerin Naoero',
+    ],
+    'nv' => [
+        'isoName' => 'Navajo, Navaho',
+        'nativeName' => 'Diné bizaad',
+    ],
+    'nd' => [
+        'isoName' => 'North Ndebele',
+        'nativeName' => 'isiNdebele',
+    ],
+    'ne' => [
+        'isoName' => 'Nepali',
+        'nativeName' => 'नेपाली',
+    ],
+    'ng' => [
+        'isoName' => 'Ndonga',
+        'nativeName' => 'Owambo',
+    ],
+    'nb' => [
+        'isoName' => 'Norwegian Bokmål',
+        'nativeName' => 'Norsk Bokmål',
+    ],
+    'nn' => [
+        'isoName' => 'Norwegian Nynorsk',
+        'nativeName' => 'Norsk Nynorsk',
+    ],
+    'no' => [
+        'isoName' => 'Norwegian',
+        'nativeName' => 'Norsk',
+    ],
+    'ii' => [
+        'isoName' => 'Sichuan Yi, Nuosu',
+        'nativeName' => 'ꆈꌠ꒿ Nuosuhxop',
+    ],
+    'nr' => [
+        'isoName' => 'South Ndebele',
+        'nativeName' => 'isiNdebele',
+    ],
+    'oc' => [
+        'isoName' => 'Occitan',
+        'nativeName' => 'occitan, lenga d\'òc',
+    ],
+    'oj' => [
+        'isoName' => 'Ojibwa',
+        'nativeName' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ',
+    ],
+    'cu' => [
+        'isoName' => 'Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian',
+        'nativeName' => 'ѩзыкъ словѣньскъ',
+    ],
+    'om' => [
+        'isoName' => 'Oromo',
+        'nativeName' => 'Afaan Oromoo',
+    ],
+    'or' => [
+        'isoName' => 'Oriya',
+        'nativeName' => 'ଓଡ଼ିଆ',
+    ],
+    'os' => [
+        'isoName' => 'Ossetian, Ossetic',
+        'nativeName' => 'ирон æвзаг',
+    ],
+    'pa' => [
+        'isoName' => 'Panjabi, Punjabi',
+        'nativeName' => 'ਪੰਜਾਬੀ',
+    ],
+    'pi' => [
+        'isoName' => 'Pali',
+        'nativeName' => 'पाऴि',
+    ],
+    'fa' => [
+        'isoName' => 'Persian',
+        'nativeName' => 'فارسی',
+    ],
+    'pl' => [
+        'isoName' => 'Polish',
+        'nativeName' => 'język polski, polszczyzna',
+    ],
+    'ps' => [
+        'isoName' => 'Pashto, Pushto',
+        'nativeName' => 'پښتو',
+    ],
+    'pt' => [
+        'isoName' => 'Portuguese',
+        'nativeName' => 'Português',
+    ],
+    'qu' => [
+        'isoName' => 'Quechua',
+        'nativeName' => 'Runa Simi, Kichwa',
+    ],
+    'rm' => [
+        'isoName' => 'Romansh',
+        'nativeName' => 'Rumantsch Grischun',
+    ],
+    'rn' => [
+        'isoName' => 'Rundi',
+        'nativeName' => 'Ikirundi',
+    ],
+    'ro' => [
+        'isoName' => 'Romanian, Moldavian, Moldovan',
+        'nativeName' => 'Română',
+    ],
+    'ru' => [
+        'isoName' => 'Russian',
+        'nativeName' => 'русский',
+    ],
+    'sa' => [
+        'isoName' => 'Sanskrit',
+        'nativeName' => 'संस्कृतम्',
+    ],
+    'sc' => [
+        'isoName' => 'Sardinian',
+        'nativeName' => 'sardu',
+    ],
+    'sd' => [
+        'isoName' => 'Sindhi',
+        'nativeName' => 'सिन्धी, سنڌي، سندھی‎',
+    ],
+    'se' => [
+        'isoName' => 'Northern Sami',
+        'nativeName' => 'Davvisámegiella',
+    ],
+    'sm' => [
+        'isoName' => 'Samoan',
+        'nativeName' => 'gagana fa\'a Samoa',
+    ],
+    'sg' => [
+        'isoName' => 'Sango',
+        'nativeName' => 'yângâ tî sängö',
+    ],
+    'sr' => [
+        'isoName' => 'Serbian',
+        'nativeName' => 'српски језик',
+    ],
+    'gd' => [
+        'isoName' => 'Gaelic, Scottish Gaelic',
+        'nativeName' => 'Gàidhlig',
+    ],
+    'sn' => [
+        'isoName' => 'Shona',
+        'nativeName' => 'chiShona',
+    ],
+    'si' => [
+        'isoName' => 'Sinhala, Sinhalese',
+        'nativeName' => 'සිංහල',
+    ],
+    'sk' => [
+        'isoName' => 'Slovak',
+        'nativeName' => 'Slovenčina, Slovenský Jazyk',
+    ],
+    'sl' => [
+        'isoName' => 'Slovene',
+        'nativeName' => 'Slovenski Jezik, Slovenščina',
+    ],
+    'so' => [
+        'isoName' => 'Somali',
+        'nativeName' => 'Soomaaliga, af Soomaali',
+    ],
+    'st' => [
+        'isoName' => 'Southern Sotho',
+        'nativeName' => 'Sesotho',
+    ],
+    'es' => [
+        'isoName' => 'Spanish, Castilian',
+        'nativeName' => 'Español',
+    ],
+    'su' => [
+        'isoName' => 'Sundanese',
+        'nativeName' => 'Basa Sunda',
+    ],
+    'sw' => [
+        'isoName' => 'Swahili',
+        'nativeName' => 'Kiswahili',
+    ],
+    'ss' => [
+        'isoName' => 'Swati',
+        'nativeName' => 'SiSwati',
+    ],
+    'sv' => [
+        'isoName' => 'Swedish',
+        'nativeName' => 'Svenska',
+    ],
+    'ta' => [
+        'isoName' => 'Tamil',
+        'nativeName' => 'தமிழ்',
+    ],
+    'te' => [
+        'isoName' => 'Telugu',
+        'nativeName' => 'తెలుగు',
+    ],
+    'tg' => [
+        'isoName' => 'Tajik',
+        'nativeName' => 'тоҷикӣ, toçikī, تاجیکی‎',
+    ],
+    'th' => [
+        'isoName' => 'Thai',
+        'nativeName' => 'ไทย',
+    ],
+    'ti' => [
+        'isoName' => 'Tigrinya',
+        'nativeName' => 'ትግርኛ',
+    ],
+    'bo' => [
+        'isoName' => 'Tibetan',
+        'nativeName' => 'བོད་ཡིག',
+    ],
+    'tk' => [
+        'isoName' => 'Turkmen',
+        'nativeName' => 'Türkmen, Түркмен',
+    ],
+    'tl' => [
+        'isoName' => 'Tagalog',
+        'nativeName' => 'Wikang Tagalog',
+    ],
+    'tn' => [
+        'isoName' => 'Tswana',
+        'nativeName' => 'Setswana',
+    ],
+    'to' => [
+        'isoName' => 'Tongan (Tonga Islands)',
+        'nativeName' => 'Faka Tonga',
+    ],
+    'tr' => [
+        'isoName' => 'Turkish',
+        'nativeName' => 'Türkçe',
+    ],
+    'ts' => [
+        'isoName' => 'Tsonga',
+        'nativeName' => 'Xitsonga',
+    ],
+    'tt' => [
+        'isoName' => 'Tatar',
+        'nativeName' => 'татар теле, tatar tele',
+    ],
+    'tw' => [
+        'isoName' => 'Twi',
+        'nativeName' => 'Twi',
+    ],
+    'ty' => [
+        'isoName' => 'Tahitian',
+        'nativeName' => 'Reo Tahiti',
+    ],
+    'ug' => [
+        'isoName' => 'Uighur, Uyghur',
+        'nativeName' => 'Uyƣurqə, ‫ئۇيغۇرچ',
+    ],
+    'uk' => [
+        'isoName' => 'Ukrainian',
+        'nativeName' => 'Українська',
+    ],
+    'ur' => [
+        'isoName' => 'Urdu',
+        'nativeName' => 'اردو',
+    ],
+    'uz' => [
+        'isoName' => 'Uzbek',
+        'nativeName' => 'Oʻzbek, Ўзбек, أۇزبېك‎',
+    ],
+    've' => [
+        'isoName' => 'Venda',
+        'nativeName' => 'Tshivenḓa',
+    ],
+    'vi' => [
+        'isoName' => 'Vietnamese',
+        'nativeName' => 'Tiếng Việt',
+    ],
+    'vo' => [
+        'isoName' => 'Volapük',
+        'nativeName' => 'Volapük',
+    ],
+    'wa' => [
+        'isoName' => 'Walloon',
+        'nativeName' => 'Walon',
+    ],
+    'cy' => [
+        'isoName' => 'Welsh',
+        'nativeName' => 'Cymraeg',
+    ],
+    'wo' => [
+        'isoName' => 'Wolof',
+        'nativeName' => 'Wollof',
+    ],
+    'fy' => [
+        'isoName' => 'Western Frisian',
+        'nativeName' => 'Frysk',
+    ],
+    'xh' => [
+        'isoName' => 'Xhosa',
+        'nativeName' => 'isiXhosa',
+    ],
+    'yi' => [
+        'isoName' => 'Yiddish',
+        'nativeName' => 'ייִדיש',
+    ],
+    'yo' => [
+        'isoName' => 'Yoruba',
+        'nativeName' => 'Yorùbá',
+    ],
+    'za' => [
+        'isoName' => 'Zhuang, Chuang',
+        'nativeName' => 'Saɯ cueŋƅ, Saw cuengh',
+    ],
+    'zu' => [
+        'isoName' => 'Zulu',
+        'nativeName' => 'isiZulu',
+    ],
+    /*
+     * Add ISO 639-3 languages available in Carbon
+     */
+    'agq' => [
+        'isoName' => 'Aghem',
+        'nativeName' => 'Aghem',
+    ],
+    'agr' => [
+        'isoName' => 'Aguaruna',
+        'nativeName' => 'Aguaruna',
+    ],
+    'anp' => [
+        'isoName' => 'Angika',
+        'nativeName' => 'Angika',
+    ],
+    'asa' => [
+        'isoName' => 'Asu',
+        'nativeName' => 'Asu',
+    ],
+    'ast' => [
+        'isoName' => 'Asturian',
+        'nativeName' => 'Asturian',
+    ],
+    'ayc' => [
+        'isoName' => 'Southern Aymara',
+        'nativeName' => 'Southern Aymara',
+    ],
+    'bas' => [
+        'isoName' => 'Basaa',
+        'nativeName' => 'Basaa',
+    ],
+    'bem' => [
+        'isoName' => 'Bemba',
+        'nativeName' => 'Bemba',
+    ],
+    'bez' => [
+        'isoName' => 'Bena',
+        'nativeName' => 'Bena',
+    ],
+    'bhb' => [
+        'isoName' => 'Bhili',
+        'nativeName' => 'Bhili',
+    ],
+    'bho' => [
+        'isoName' => 'Bhojpuri',
+        'nativeName' => 'Bhojpuri',
+    ],
+    'brx' => [
+        'isoName' => 'Bodo',
+        'nativeName' => 'Bodo',
+    ],
+    'byn' => [
+        'isoName' => 'Bilin',
+        'nativeName' => 'Bilin',
+    ],
+    'ccp' => [
+        'isoName' => 'Chakma',
+        'nativeName' => 'Chakma',
+    ],
+    'cgg' => [
+        'isoName' => 'Chiga',
+        'nativeName' => 'Chiga',
+    ],
+    'chr' => [
+        'isoName' => 'Cherokee',
+        'nativeName' => 'Cherokee',
+    ],
+    'cmn' => [
+        'isoName' => 'Chinese',
+        'nativeName' => 'Chinese',
+    ],
+    'crh' => [
+        'isoName' => 'Crimean Turkish',
+        'nativeName' => 'Crimean Turkish',
+    ],
+    'csb' => [
+        'isoName' => 'Kashubian',
+        'nativeName' => 'Kashubian',
+    ],
+    'dav' => [
+        'isoName' => 'Taita',
+        'nativeName' => 'Taita',
+    ],
+    'dje' => [
+        'isoName' => 'Zarma',
+        'nativeName' => 'Zarma',
+    ],
+    'doi' => [
+        'isoName' => 'Dogri (macrolanguage)',
+        'nativeName' => 'Dogri (macrolanguage)',
+    ],
+    'dsb' => [
+        'isoName' => 'Lower Sorbian',
+        'nativeName' => 'Lower Sorbian',
+    ],
+    'dua' => [
+        'isoName' => 'Duala',
+        'nativeName' => 'Duala',
+    ],
+    'dyo' => [
+        'isoName' => 'Jola-Fonyi',
+        'nativeName' => 'Jola-Fonyi',
+    ],
+    'ebu' => [
+        'isoName' => 'Embu',
+        'nativeName' => 'Embu',
+    ],
+    'ewo' => [
+        'isoName' => 'Ewondo',
+        'nativeName' => 'Ewondo',
+    ],
+    'fil' => [
+        'isoName' => 'Filipino',
+        'nativeName' => 'Filipino',
+    ],
+    'fur' => [
+        'isoName' => 'Friulian',
+        'nativeName' => 'Friulian',
+    ],
+    'gez' => [
+        'isoName' => 'Geez',
+        'nativeName' => 'Geez',
+    ],
+    'gom' => [
+        'isoName' => 'Konkani, Goan',
+        'nativeName' => 'ಕೊಂಕಣಿ',
+    ],
+    'gsw' => [
+        'isoName' => 'Swiss German',
+        'nativeName' => 'Swiss German',
+    ],
+    'guz' => [
+        'isoName' => 'Gusii',
+        'nativeName' => 'Gusii',
+    ],
+    'hak' => [
+        'isoName' => 'Hakka Chinese',
+        'nativeName' => 'Hakka Chinese',
+    ],
+    'haw' => [
+        'isoName' => 'Hawaiian',
+        'nativeName' => 'Hawaiian',
+    ],
+    'hif' => [
+        'isoName' => 'Fiji Hindi',
+        'nativeName' => 'Fiji Hindi',
+    ],
+    'hne' => [
+        'isoName' => 'Chhattisgarhi',
+        'nativeName' => 'Chhattisgarhi',
+    ],
+    'hsb' => [
+        'isoName' => 'Upper Sorbian',
+        'nativeName' => 'Upper Sorbian',
+    ],
+    'jgo' => [
+        'isoName' => 'Ngomba',
+        'nativeName' => 'Ngomba',
+    ],
+    'jmc' => [
+        'isoName' => 'Machame',
+        'nativeName' => 'Machame',
+    ],
+    'kab' => [
+        'isoName' => 'Kabyle',
+        'nativeName' => 'Kabyle',
+    ],
+    'kam' => [
+        'isoName' => 'Kamba',
+        'nativeName' => 'Kamba',
+    ],
+    'kde' => [
+        'isoName' => 'Makonde',
+        'nativeName' => 'Makonde',
+    ],
+    'kea' => [
+        'isoName' => 'Kabuverdianu',
+        'nativeName' => 'Kabuverdianu',
+    ],
+    'khq' => [
+        'isoName' => 'Koyra Chiini',
+        'nativeName' => 'Koyra Chiini',
+    ],
+    'kkj' => [
+        'isoName' => 'Kako',
+        'nativeName' => 'Kako',
+    ],
+    'kln' => [
+        'isoName' => 'Kalenjin',
+        'nativeName' => 'Kalenjin',
+    ],
+    'kok' => [
+        'isoName' => 'Konkani',
+        'nativeName' => 'Konkani',
+    ],
+    'ksb' => [
+        'isoName' => 'Shambala',
+        'nativeName' => 'Shambala',
+    ],
+    'ksf' => [
+        'isoName' => 'Bafia',
+        'nativeName' => 'Bafia',
+    ],
+    'ksh' => [
+        'isoName' => 'Colognian',
+        'nativeName' => 'Colognian',
+    ],
+    'lag' => [
+        'isoName' => 'Langi',
+        'nativeName' => 'Langi',
+    ],
+    'lij' => [
+        'isoName' => 'Ligurian',
+        'nativeName' => 'Ligurian',
+    ],
+    'lkt' => [
+        'isoName' => 'Lakota',
+        'nativeName' => 'Lakota',
+    ],
+    'lrc' => [
+        'isoName' => 'Northern Luri',
+        'nativeName' => 'Northern Luri',
+    ],
+    'luo' => [
+        'isoName' => 'Luo',
+        'nativeName' => 'Luo',
+    ],
+    'luy' => [
+        'isoName' => 'Luyia',
+        'nativeName' => 'Luyia',
+    ],
+    'lzh' => [
+        'isoName' => 'Literary Chinese',
+        'nativeName' => 'Literary Chinese',
+    ],
+    'mag' => [
+        'isoName' => 'Magahi',
+        'nativeName' => 'Magahi',
+    ],
+    'mai' => [
+        'isoName' => 'Maithili',
+        'nativeName' => 'Maithili',
+    ],
+    'mas' => [
+        'isoName' => 'Masai',
+        'nativeName' => 'Masai',
+    ],
+    'mer' => [
+        'isoName' => 'Meru',
+        'nativeName' => 'Meru',
+    ],
+    'mfe' => [
+        'isoName' => 'Morisyen',
+        'nativeName' => 'Morisyen',
+    ],
+    'mgh' => [
+        'isoName' => 'Makhuwa-Meetto',
+        'nativeName' => 'Makhuwa-Meetto',
+    ],
+    'mgo' => [
+        'isoName' => 'Metaʼ',
+        'nativeName' => 'Metaʼ',
+    ],
+    'mhr' => [
+        'isoName' => 'Eastern Mari',
+        'nativeName' => 'Eastern Mari',
+    ],
+    'miq' => [
+        'isoName' => 'Mískito',
+        'nativeName' => 'Mískito',
+    ],
+    'mjw' => [
+        'isoName' => 'Karbi',
+        'nativeName' => 'Karbi',
+    ],
+    'mni' => [
+        'isoName' => 'Manipuri',
+        'nativeName' => 'Manipuri',
+    ],
+    'mua' => [
+        'isoName' => 'Mundang',
+        'nativeName' => 'Mundang',
+    ],
+    'mzn' => [
+        'isoName' => 'Mazanderani',
+        'nativeName' => 'Mazanderani',
+    ],
+    'nan' => [
+        'isoName' => 'Min Nan Chinese',
+        'nativeName' => 'Min Nan Chinese',
+    ],
+    'naq' => [
+        'isoName' => 'Nama',
+        'nativeName' => 'Nama',
+    ],
+    'nds' => [
+        'isoName' => 'Low German',
+        'nativeName' => 'Low German',
+    ],
+    'nhn' => [
+        'isoName' => 'Central Nahuatl',
+        'nativeName' => 'Central Nahuatl',
+    ],
+    'niu' => [
+        'isoName' => 'Niuean',
+        'nativeName' => 'Niuean',
+    ],
+    'nmg' => [
+        'isoName' => 'Kwasio',
+        'nativeName' => 'Kwasio',
+    ],
+    'nnh' => [
+        'isoName' => 'Ngiemboon',
+        'nativeName' => 'Ngiemboon',
+    ],
+    'nso' => [
+        'isoName' => 'Northern Sotho',
+        'nativeName' => 'Northern Sotho',
+    ],
+    'nus' => [
+        'isoName' => 'Nuer',
+        'nativeName' => 'Nuer',
+    ],
+    'nyn' => [
+        'isoName' => 'Nyankole',
+        'nativeName' => 'Nyankole',
+    ],
+    'pap' => [
+        'isoName' => 'Papiamento',
+        'nativeName' => 'Papiamento',
+    ],
+    'prg' => [
+        'isoName' => 'Prussian',
+        'nativeName' => 'Prussian',
+    ],
+    'quz' => [
+        'isoName' => 'Cusco Quechua',
+        'nativeName' => 'Cusco Quechua',
+    ],
+    'raj' => [
+        'isoName' => 'Rajasthani',
+        'nativeName' => 'Rajasthani',
+    ],
+    'rof' => [
+        'isoName' => 'Rombo',
+        'nativeName' => 'Rombo',
+    ],
+    'rwk' => [
+        'isoName' => 'Rwa',
+        'nativeName' => 'Rwa',
+    ],
+    'sah' => [
+        'isoName' => 'Sakha',
+        'nativeName' => 'Sakha',
+    ],
+    'saq' => [
+        'isoName' => 'Samburu',
+        'nativeName' => 'Samburu',
+    ],
+    'sat' => [
+        'isoName' => 'Santali',
+        'nativeName' => 'Santali',
+    ],
+    'sbp' => [
+        'isoName' => 'Sangu',
+        'nativeName' => 'Sangu',
+    ],
+    'scr' => [
+        'isoName' => 'Serbo Croatian',
+        'nativeName' => 'Serbo Croatian',
+    ],
+    'seh' => [
+        'isoName' => 'Sena',
+        'nativeName' => 'Sena',
+    ],
+    'ses' => [
+        'isoName' => 'Koyraboro Senni',
+        'nativeName' => 'Koyraboro Senni',
+    ],
+    'sgs' => [
+        'isoName' => 'Samogitian',
+        'nativeName' => 'Samogitian',
+    ],
+    'shi' => [
+        'isoName' => 'Tachelhit',
+        'nativeName' => 'Tachelhit',
+    ],
+    'shn' => [
+        'isoName' => 'Shan',
+        'nativeName' => 'Shan',
+    ],
+    'shs' => [
+        'isoName' => 'Shuswap',
+        'nativeName' => 'Shuswap',
+    ],
+    'sid' => [
+        'isoName' => 'Sidamo',
+        'nativeName' => 'Sidamo',
+    ],
+    'smn' => [
+        'isoName' => 'Inari Sami',
+        'nativeName' => 'Inari Sami',
+    ],
+    'szl' => [
+        'isoName' => 'Silesian',
+        'nativeName' => 'Silesian',
+    ],
+    'tcy' => [
+        'isoName' => 'Tulu',
+        'nativeName' => 'Tulu',
+    ],
+    'teo' => [
+        'isoName' => 'Teso',
+        'nativeName' => 'Teso',
+    ],
+    'tet' => [
+        'isoName' => 'Tetum',
+        'nativeName' => 'Tetum',
+    ],
+    'the' => [
+        'isoName' => 'Chitwania Tharu',
+        'nativeName' => 'Chitwania Tharu',
+    ],
+    'tig' => [
+        'isoName' => 'Tigre',
+        'nativeName' => 'Tigre',
+    ],
+    'tlh' => [
+        'isoName' => 'Klingon',
+        'nativeName' => 'tlhIngan Hol',
+    ],
+    'tpi' => [
+        'isoName' => 'Tok Pisin',
+        'nativeName' => 'Tok Pisin',
+    ],
+    'twq' => [
+        'isoName' => 'Tasawaq',
+        'nativeName' => 'Tasawaq',
+    ],
+    'tzl' => [
+        'isoName' => 'Talossan',
+        'nativeName' => 'Talossan',
+    ],
+    'tzm' => [
+        'isoName' => 'Tamazight, Central Atlas',
+        'nativeName' => 'ⵜⵎⴰⵣⵉⵖⵜ',
+    ],
+    'unm' => [
+        'isoName' => 'Unami',
+        'nativeName' => 'Unami',
+    ],
+    'vai' => [
+        'isoName' => 'Vai',
+        'nativeName' => 'Vai',
+    ],
+    'vun' => [
+        'isoName' => 'Vunjo',
+        'nativeName' => 'Vunjo',
+    ],
+    'wae' => [
+        'isoName' => 'Walser',
+        'nativeName' => 'Walser',
+    ],
+    'wal' => [
+        'isoName' => 'Wolaytta',
+        'nativeName' => 'Wolaytta',
+    ],
+    'xog' => [
+        'isoName' => 'Soga',
+        'nativeName' => 'Soga',
+    ],
+    'yav' => [
+        'isoName' => 'Yangben',
+        'nativeName' => 'Yangben',
+    ],
+    'yue' => [
+        'isoName' => 'Cantonese',
+        'nativeName' => 'Cantonese',
+    ],
+    'yuw' => [
+        'isoName' => 'Yau (Morobe Province)',
+        'nativeName' => 'Yau (Morobe Province)',
+    ],
+    'zgh' => [
+        'isoName' => 'Standard Moroccan Tamazight',
+        'nativeName' => 'Standard Moroccan Tamazight',
+    ],
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/List/regions.php b/htdocs/vendor/nesbot/carbon/src/Carbon/List/regions.php
new file mode 100644
index 00000000..8ab8a9e3
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/List/regions.php
@@ -0,0 +1,265 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * ISO 3166-2
+ */
+return [
+    'AD' => 'Andorra',
+    'AE' => 'United Arab Emirates',
+    'AF' => 'Afghanistan',
+    'AG' => 'Antigua and Barbuda',
+    'AI' => 'Anguilla',
+    'AL' => 'Albania',
+    'AM' => 'Armenia',
+    'AO' => 'Angola',
+    'AQ' => 'Antarctica',
+    'AR' => 'Argentina',
+    'AS' => 'American Samoa',
+    'AT' => 'Austria',
+    'AU' => 'Australia',
+    'AW' => 'Aruba',
+    'AX' => 'Ã…land Islands',
+    'AZ' => 'Azerbaijan',
+    'BA' => 'Bosnia and Herzegovina',
+    'BB' => 'Barbados',
+    'BD' => 'Bangladesh',
+    'BE' => 'Belgium',
+    'BF' => 'Burkina Faso',
+    'BG' => 'Bulgaria',
+    'BH' => 'Bahrain',
+    'BI' => 'Burundi',
+    'BJ' => 'Benin',
+    'BL' => 'Saint Barthélemy',
+    'BM' => 'Bermuda',
+    'BN' => 'Brunei Darussalam',
+    'BO' => 'Bolivia (Plurinational State of)',
+    'BQ' => 'Bonaire, Sint Eustatius and Saba',
+    'BR' => 'Brazil',
+    'BS' => 'Bahamas',
+    'BT' => 'Bhutan',
+    'BV' => 'Bouvet Island',
+    'BW' => 'Botswana',
+    'BY' => 'Belarus',
+    'BZ' => 'Belize',
+    'CA' => 'Canada',
+    'CC' => 'Cocos (Keeling) Islands',
+    'CD' => 'Congo, Democratic Republic of the',
+    'CF' => 'Central African Republic',
+    'CG' => 'Congo',
+    'CH' => 'Switzerland',
+    'CI' => 'Côte d\'Ivoire',
+    'CK' => 'Cook Islands',
+    'CL' => 'Chile',
+    'CM' => 'Cameroon',
+    'CN' => 'China',
+    'CO' => 'Colombia',
+    'CR' => 'Costa Rica',
+    'CU' => 'Cuba',
+    'CV' => 'Cabo Verde',
+    'CW' => 'Curaçao',
+    'CX' => 'Christmas Island',
+    'CY' => 'Cyprus',
+    'CZ' => 'Czechia',
+    'DE' => 'Germany',
+    'DJ' => 'Djibouti',
+    'DK' => 'Denmark',
+    'DM' => 'Dominica',
+    'DO' => 'Dominican Republic',
+    'DZ' => 'Algeria',
+    'EC' => 'Ecuador',
+    'EE' => 'Estonia',
+    'EG' => 'Egypt',
+    'EH' => 'Western Sahara',
+    'ER' => 'Eritrea',
+    'ES' => 'Spain',
+    'ET' => 'Ethiopia',
+    'FI' => 'Finland',
+    'FJ' => 'Fiji',
+    'FK' => 'Falkland Islands (Malvinas)',
+    'FM' => 'Micronesia (Federated States of)',
+    'FO' => 'Faroe Islands',
+    'FR' => 'France',
+    'GA' => 'Gabon',
+    'GB' => 'United Kingdom of Great Britain and Northern Ireland',
+    'GD' => 'Grenada',
+    'GE' => 'Georgia',
+    'GF' => 'French Guiana',
+    'GG' => 'Guernsey',
+    'GH' => 'Ghana',
+    'GI' => 'Gibraltar',
+    'GL' => 'Greenland',
+    'GM' => 'Gambia',
+    'GN' => 'Guinea',
+    'GP' => 'Guadeloupe',
+    'GQ' => 'Equatorial Guinea',
+    'GR' => 'Greece',
+    'GS' => 'South Georgia and the South Sandwich Islands',
+    'GT' => 'Guatemala',
+    'GU' => 'Guam',
+    'GW' => 'Guinea-Bissau',
+    'GY' => 'Guyana',
+    'HK' => 'Hong Kong',
+    'HM' => 'Heard Island and McDonald Islands',
+    'HN' => 'Honduras',
+    'HR' => 'Croatia',
+    'HT' => 'Haiti',
+    'HU' => 'Hungary',
+    'ID' => 'Indonesia',
+    'IE' => 'Ireland',
+    'IL' => 'Israel',
+    'IM' => 'Isle of Man',
+    'IN' => 'India',
+    'IO' => 'British Indian Ocean Territory',
+    'IQ' => 'Iraq',
+    'IR' => 'Iran (Islamic Republic of)',
+    'IS' => 'Iceland',
+    'IT' => 'Italy',
+    'JE' => 'Jersey',
+    'JM' => 'Jamaica',
+    'JO' => 'Jordan',
+    'JP' => 'Japan',
+    'KE' => 'Kenya',
+    'KG' => 'Kyrgyzstan',
+    'KH' => 'Cambodia',
+    'KI' => 'Kiribati',
+    'KM' => 'Comoros',
+    'KN' => 'Saint Kitts and Nevis',
+    'KP' => 'Korea (Democratic People\'s Republic of)',
+    'KR' => 'Korea, Republic of',
+    'KW' => 'Kuwait',
+    'KY' => 'Cayman Islands',
+    'KZ' => 'Kazakhstan',
+    'LA' => 'Lao People\'s Democratic Republic',
+    'LB' => 'Lebanon',
+    'LC' => 'Saint Lucia',
+    'LI' => 'Liechtenstein',
+    'LK' => 'Sri Lanka',
+    'LR' => 'Liberia',
+    'LS' => 'Lesotho',
+    'LT' => 'Lithuania',
+    'LU' => 'Luxembourg',
+    'LV' => 'Latvia',
+    'LY' => 'Libya',
+    'MA' => 'Morocco',
+    'MC' => 'Monaco',
+    'MD' => 'Moldova, Republic of',
+    'ME' => 'Montenegro',
+    'MF' => 'Saint Martin (French part)',
+    'MG' => 'Madagascar',
+    'MH' => 'Marshall Islands',
+    'MK' => 'Macedonia, the former Yugoslav Republic of',
+    'ML' => 'Mali',
+    'MM' => 'Myanmar',
+    'MN' => 'Mongolia',
+    'MO' => 'Macao',
+    'MP' => 'Northern Mariana Islands',
+    'MQ' => 'Martinique',
+    'MR' => 'Mauritania',
+    'MS' => 'Montserrat',
+    'MT' => 'Malta',
+    'MU' => 'Mauritius',
+    'MV' => 'Maldives',
+    'MW' => 'Malawi',
+    'MX' => 'Mexico',
+    'MY' => 'Malaysia',
+    'MZ' => 'Mozambique',
+    'NA' => 'Namibia',
+    'NC' => 'New Caledonia',
+    'NE' => 'Niger',
+    'NF' => 'Norfolk Island',
+    'NG' => 'Nigeria',
+    'NI' => 'Nicaragua',
+    'NL' => 'Netherlands',
+    'NO' => 'Norway',
+    'NP' => 'Nepal',
+    'NR' => 'Nauru',
+    'NU' => 'Niue',
+    'NZ' => 'New Zealand',
+    'OM' => 'Oman',
+    'PA' => 'Panama',
+    'PE' => 'Peru',
+    'PF' => 'French Polynesia',
+    'PG' => 'Papua New Guinea',
+    'PH' => 'Philippines',
+    'PK' => 'Pakistan',
+    'PL' => 'Poland',
+    'PM' => 'Saint Pierre and Miquelon',
+    'PN' => 'Pitcairn',
+    'PR' => 'Puerto Rico',
+    'PS' => 'Palestine, State of',
+    'PT' => 'Portugal',
+    'PW' => 'Palau',
+    'PY' => 'Paraguay',
+    'QA' => 'Qatar',
+    'RE' => 'Réunion',
+    'RO' => 'Romania',
+    'RS' => 'Serbia',
+    'RU' => 'Russian Federation',
+    'RW' => 'Rwanda',
+    'SA' => 'Saudi Arabia',
+    'SB' => 'Solomon Islands',
+    'SC' => 'Seychelles',
+    'SD' => 'Sudan',
+    'SE' => 'Sweden',
+    'SG' => 'Singapore',
+    'SH' => 'Saint Helena, Ascension and Tristan da Cunha',
+    'SI' => 'Slovenia',
+    'SJ' => 'Svalbard and Jan Mayen',
+    'SK' => 'Slovakia',
+    'SL' => 'Sierra Leone',
+    'SM' => 'San Marino',
+    'SN' => 'Senegal',
+    'SO' => 'Somalia',
+    'SR' => 'Suriname',
+    'SS' => 'South Sudan',
+    'ST' => 'Sao Tome and Principe',
+    'SV' => 'El Salvador',
+    'SX' => 'Sint Maarten (Dutch part)',
+    'SY' => 'Syrian Arab Republic',
+    'SZ' => 'Eswatini',
+    'TC' => 'Turks and Caicos Islands',
+    'TD' => 'Chad',
+    'TF' => 'French Southern Territories',
+    'TG' => 'Togo',
+    'TH' => 'Thailand',
+    'TJ' => 'Tajikistan',
+    'TK' => 'Tokelau',
+    'TL' => 'Timor-Leste',
+    'TM' => 'Turkmenistan',
+    'TN' => 'Tunisia',
+    'TO' => 'Tonga',
+    'TR' => 'Turkey',
+    'TT' => 'Trinidad and Tobago',
+    'TV' => 'Tuvalu',
+    'TW' => 'Taiwan, Province of China',
+    'TZ' => 'Tanzania, United Republic of',
+    'UA' => 'Ukraine',
+    'UG' => 'Uganda',
+    'UM' => 'United States Minor Outlying Islands',
+    'US' => 'United States of America',
+    'UY' => 'Uruguay',
+    'UZ' => 'Uzbekistan',
+    'VA' => 'Holy See',
+    'VC' => 'Saint Vincent and the Grenadines',
+    'VE' => 'Venezuela (Bolivarian Republic of)',
+    'VG' => 'Virgin Islands (British)',
+    'VI' => 'Virgin Islands (U.S.)',
+    'VN' => 'Viet Nam',
+    'VU' => 'Vanuatu',
+    'WF' => 'Wallis and Futuna',
+    'WS' => 'Samoa',
+    'YE' => 'Yemen',
+    'YT' => 'Mayotte',
+    'ZA' => 'South Africa',
+    'ZM' => 'Zambia',
+    'ZW' => 'Zimbabwe',
+];
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php
new file mode 100644
index 00000000..dd6dfdf4
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php
@@ -0,0 +1,283 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use Closure;
+use InvalidArgumentException;
+use PHPStan\BetterReflection\Reflection\Adapter\ReflectionParameter as AdapterReflectionParameter;
+use PHPStan\BetterReflection\Reflection\Adapter\ReflectionType as AdapterReflectionType;
+use PHPStan\BetterReflection\Reflection\ReflectionClass as BetterReflectionClass;
+use PHPStan\BetterReflection\Reflection\ReflectionFunction as BetterReflectionFunction;
+use PHPStan\BetterReflection\Reflection\ReflectionParameter as BetterReflectionParameter;
+use PHPStan\Reflection\Php\BuiltinMethodReflection;
+use PHPStan\TrinaryLogic;
+use ReflectionClass;
+use ReflectionFunction;
+use ReflectionMethod;
+use ReflectionParameter;
+use ReflectionType;
+use stdClass;
+use Throwable;
+
+abstract class AbstractMacro implements BuiltinMethodReflection
+{
+    /**
+     * The reflection function/method.
+     *
+     * @var ReflectionFunction|ReflectionMethod
+     */
+    protected $reflectionFunction;
+
+    /**
+     * The class name.
+     *
+     * @var class-string
+     */
+    private $className;
+
+    /**
+     * The method name.
+     *
+     * @var string
+     */
+    private $methodName;
+
+    /**
+     * The parameters.
+     *
+     * @var ReflectionParameter[]
+     */
+    private $parameters;
+
+    /**
+     * The is static.
+     *
+     * @var bool
+     */
+    private $static = false;
+
+    /**
+     * Macro constructor.
+     *
+     * @param string $className
+     * @phpstan-param class-string $className
+     *
+     * @param string   $methodName
+     * @param callable $macro
+     */
+    public function __construct(string $className, string $methodName, $macro)
+    {
+        $this->className = $className;
+        $this->methodName = $methodName;
+        $rawReflectionFunction = \is_array($macro)
+            ? new ReflectionMethod($macro[0], $macro[1])
+            : new ReflectionFunction($macro);
+        $this->reflectionFunction = self::hasModernParser()
+            ? $this->getReflectionFunction($macro)
+            : $rawReflectionFunction; // @codeCoverageIgnore
+        $this->parameters = array_map(
+            function ($parameter) {
+                if ($parameter instanceof BetterReflectionParameter) {
+                    return new AdapterReflectionParameter($parameter);
+                }
+
+                return $parameter; // @codeCoverageIgnore
+            },
+            $this->reflectionFunction->getParameters()
+        );
+
+        if ($rawReflectionFunction->isClosure()) {
+            try {
+                $closure = $rawReflectionFunction->getClosure();
+                $boundClosure = Closure::bind($closure, new stdClass());
+                $this->static = (!$boundClosure || (new ReflectionFunction($boundClosure))->getClosureThis() === null);
+            } catch (Throwable $e) {
+                $this->static = true;
+            }
+        }
+    }
+
+    private function getReflectionFunction($spec)
+    {
+        if (\is_array($spec) && \count($spec) === 2 && \is_string($spec[1])) {
+            \assert($spec[1] !== '');
+
+            if (\is_object($spec[0])) {
+                return BetterReflectionClass::createFromInstance($spec[0])
+                    ->getMethod($spec[1]);
+            }
+
+            return BetterReflectionClass::createFromName($spec[0])
+                ->getMethod($spec[1]);
+        }
+
+        if (\is_string($spec)) {
+            return BetterReflectionFunction::createFromName($spec);
+        }
+
+        if ($spec instanceof Closure) {
+            return BetterReflectionFunction::createFromClosure($spec);
+        }
+
+        throw new InvalidArgumentException('Could not create reflection from the spec given'); // @codeCoverageIgnore
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDeclaringClass(): ReflectionClass
+    {
+        return new ReflectionClass($this->className);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isPrivate(): bool
+    {
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isPublic(): bool
+    {
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isFinal(): bool
+    {
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isInternal(): bool
+    {
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isAbstract(): bool
+    {
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isStatic(): bool
+    {
+        return $this->static;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDocComment(): ?string
+    {
+        return $this->reflectionFunction->getDocComment() ?: null;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getName(): string
+    {
+        return $this->methodName;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getParameters(): array
+    {
+        return $this->parameters;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getReturnType(): ?ReflectionType
+    {
+        $type = $this->reflectionFunction->getReturnType();
+
+        if ($type instanceof ReflectionType) {
+            return $type; // @codeCoverageIgnore
+        }
+
+        return self::adaptType($type);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isDeprecated(): TrinaryLogic
+    {
+        return TrinaryLogic::createFromBoolean(
+            $this->reflectionFunction->isDeprecated() ||
+            preg_match('/@deprecated/i', $this->getDocComment() ?: '')
+        );
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function isVariadic(): bool
+    {
+        return $this->reflectionFunction->isVariadic();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getPrototype(): BuiltinMethodReflection
+    {
+        return $this;
+    }
+
+    public function getTentativeReturnType(): ?ReflectionType
+    {
+        return null;
+    }
+
+    private static function adaptType($type)
+    {
+        $method = method_exists(AdapterReflectionType::class, 'fromTypeOrNull')
+            ? 'fromTypeOrNull'
+            : 'fromReturnTypeOrNull'; // @codeCoverageIgnore
+
+        return AdapterReflectionType::$method($type);
+    }
+
+    private static function hasModernParser(): bool
+    {
+        static $modernParser = null;
+
+        if ($modernParser !== null) {
+            return $modernParser;
+        }
+
+        $modernParser = method_exists(AdapterReflectionType::class, 'fromTypeOrNull');
+
+        return $modernParser;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php
new file mode 100644
index 00000000..de3e51f6
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php
@@ -0,0 +1,34 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use PHPStan\BetterReflection\Reflection\Adapter;
+use PHPStan\Reflection\Php\BuiltinMethodReflection;
+use ReflectionMethod;
+
+$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getReflection');
+
+require $method->hasReturnType() && $method->getReturnType()->getName() === Adapter\ReflectionMethod::class
+    ? __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroStatic.php'
+    : __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroBuiltin.php';
+
+$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getFileName');
+
+require $method->hasReturnType()
+    ? __DIR__.'/../../../lazy/Carbon/PHPStan/MacroStrongType.php'
+    : __DIR__.'/../../../lazy/Carbon/PHPStan/MacroWeakType.php';
+
+final class Macro extends LazyMacro
+{
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
new file mode 100644
index 00000000..8e2524c0
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use PHPStan\Reflection\ClassReflection;
+use PHPStan\Reflection\MethodReflection;
+use PHPStan\Reflection\MethodsClassReflectionExtension;
+use PHPStan\Reflection\Php\PhpMethodReflectionFactory;
+use PHPStan\Type\TypehintHelper;
+
+/**
+ * Class MacroExtension.
+ *
+ * @codeCoverageIgnore Pure PHPStan wrapper.
+ */
+final class MacroExtension implements MethodsClassReflectionExtension
+{
+    /**
+     * @var PhpMethodReflectionFactory
+     */
+    protected $methodReflectionFactory;
+
+    /**
+     * @var MacroScanner
+     */
+    protected $scanner;
+
+    /**
+     * Extension constructor.
+     *
+     * @param PhpMethodReflectionFactory $methodReflectionFactory
+     */
+    public function __construct(PhpMethodReflectionFactory $methodReflectionFactory)
+    {
+        $this->scanner = new MacroScanner();
+        $this->methodReflectionFactory = $methodReflectionFactory;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function hasMethod(ClassReflection $classReflection, string $methodName): bool
+    {
+        return $this->scanner->hasMethod($classReflection->getName(), $methodName);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getMethod(ClassReflection $classReflection, string $methodName): MethodReflection
+    {
+        $builtinMacro = $this->scanner->getMethod($classReflection->getName(), $methodName);
+
+        return $this->methodReflectionFactory->create(
+            $classReflection,
+            null,
+            $builtinMacro,
+            $classReflection->getActiveTemplateTypeMap(),
+            [],
+            TypehintHelper::decideTypeFromReflection($builtinMacro->getReturnType()),
+            null,
+            null,
+            $builtinMacro->isDeprecated()->yes(),
+            $builtinMacro->isInternal(),
+            $builtinMacro->isFinal(),
+            $builtinMacro->getDocComment()
+        );
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php
new file mode 100644
index 00000000..d169939d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php
@@ -0,0 +1,63 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\PHPStan;
+
+use Carbon\CarbonInterface;
+use ReflectionClass;
+use ReflectionException;
+
+final class MacroScanner
+{
+    /**
+     * Return true if the given pair class-method is a Carbon macro.
+     *
+     * @param string $className
+     * @phpstan-param class-string $className
+     *
+     * @param string $methodName
+     *
+     * @return bool
+     */
+    public function hasMethod(string $className, string $methodName): bool
+    {
+        return is_a($className, CarbonInterface::class, true) &&
+            \is_callable([$className, 'hasMacro']) &&
+            $className::hasMacro($methodName);
+    }
+
+    /**
+     * Return the Macro for a given pair class-method.
+     *
+     * @param string $className
+     * @phpstan-param class-string $className
+     *
+     * @param string $methodName
+     *
+     * @throws ReflectionException
+     *
+     * @return Macro
+     */
+    public function getMethod(string $className, string $methodName): Macro
+    {
+        $reflectionClass = new ReflectionClass($className);
+        $property = $reflectionClass->getProperty('globalMacros');
+
+        $property->setAccessible(true);
+        $macro = $property->getValue()[$methodName];
+
+        return new Macro(
+            $className,
+            $methodName,
+            $macro
+        );
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
new file mode 100644
index 00000000..71bbb723
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
@@ -0,0 +1,443 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Exceptions\UnknownUnitException;
+
+/**
+ * Trait Boundaries.
+ *
+ * startOf, endOf and derived method for each unit.
+ *
+ * Depends on the following properties:
+ *
+ * @property int $year
+ * @property int $month
+ * @property int $daysInMonth
+ * @property int $quarter
+ *
+ * Depends on the following methods:
+ *
+ * @method $this setTime(int $hour, int $minute, int $second = 0, int $microseconds = 0)
+ * @method $this setDate(int $year, int $month, int $day)
+ * @method $this addMonths(int $value = 1)
+ */
+trait Boundaries
+{
+    /**
+     * Resets the time to 00:00:00 start of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDay()
+    {
+        return $this->setTime(0, 0, 0, 0);
+    }
+
+    /**
+     * Resets the time to 23:59:59.999999 end of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDay()
+    {
+        return $this->setTime(static::HOURS_PER_DAY - 1, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Resets the date to the first day of the month and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMonth()
+    {
+        return $this->setDate($this->year, $this->month, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the month and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMonth()
+    {
+        return $this->setDate($this->year, $this->month, $this->daysInMonth)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the quarter and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfQuarter()
+    {
+        $month = ($this->quarter - 1) * static::MONTHS_PER_QUARTER + 1;
+
+        return $this->setDate($this->year, $month, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the quarter and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfQuarter()
+    {
+        return $this->startOfQuarter()->addMonths(static::MONTHS_PER_QUARTER - 1)->endOfMonth();
+    }
+
+    /**
+     * Resets the date to the first day of the year and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfYear()
+    {
+        return $this->setDate($this->year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the year and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfYear()
+    {
+        return $this->setDate($this->year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the decade and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDecade()
+    {
+        $year = $this->year - $this->year % static::YEARS_PER_DECADE;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the decade and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDecade()
+    {
+        $year = $this->year - $this->year % static::YEARS_PER_DECADE + static::YEARS_PER_DECADE - 1;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the century and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfCentury()
+    {
+        $year = $this->year - ($this->year - 1) % static::YEARS_PER_CENTURY;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the century and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfCentury()
+    {
+        $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_CENTURY + static::YEARS_PER_CENTURY;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the millennium and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMillennium()
+    {
+        $year = $this->year - ($this->year - 1) % static::YEARS_PER_MILLENNIUM;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the millennium and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMillennium()
+    {
+        $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_MILLENNIUM + static::YEARS_PER_MILLENNIUM;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n";
+     * ```
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return static
+     */
+    public function startOfWeek($weekStartsAt = null)
+    {
+        return $this->subDays((7 + $this->dayOfWeek - ($weekStartsAt ?? $this->firstWeekDay)) % 7)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n";
+     * ```
+     *
+     * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week
+     *
+     * @return static
+     */
+    public function endOfWeek($weekEndsAt = null)
+    {
+        return $this->addDays((7 - $this->dayOfWeek + ($weekEndsAt ?? $this->lastWeekDay)) % 7)->endOfDay();
+    }
+
+    /**
+     * Modify to start of current hour, minutes and seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfHour()
+    {
+        return $this->setTime($this->hour, 0, 0, 0);
+    }
+
+    /**
+     * Modify to end of current hour, minutes and seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfHour()
+    {
+        return $this->setTime($this->hour, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current minute, seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMinute()
+    {
+        return $this->setTime($this->hour, $this->minute, 0, 0);
+    }
+
+    /**
+     * Modify to end of current minute, seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMinute()
+    {
+        return $this->setTime($this->hour, $this->minute, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current second, microseconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function startOfSecond()
+    {
+        return $this->setTime($this->hour, $this->minute, $this->second, 0);
+    }
+
+    /**
+     * Modify to end of current second, microseconds become 999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->endOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function endOfSecond()
+    {
+        return $this->setTime($this->hour, $this->minute, $this->second, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function startOf($unit, ...$params)
+    {
+        $ucfUnit = ucfirst(static::singularUnit($unit));
+        $method = "startOf$ucfUnit";
+        if (!method_exists($this, $method)) {
+            throw new UnknownUnitException($unit);
+        }
+
+        return $this->$method(...$params);
+    }
+
+    /**
+     * Modify to end of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function endOf($unit, ...$params)
+    {
+        $ucfUnit = ucfirst(static::singularUnit($unit));
+        $method = "endOf$ucfUnit";
+        if (!method_exists($this, $method)) {
+            throw new UnknownUnitException($unit);
+        }
+
+        return $this->$method(...$params);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
new file mode 100644
index 00000000..5f7c7c01
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Exceptions\InvalidCastException;
+use DateTimeInterface;
+
+/**
+ * Trait Cast.
+ *
+ * Utils to cast into an other class.
+ */
+trait Cast
+{
+    /**
+     * Cast the current instance into the given class.
+     *
+     * @param string $className The $className::instance() method will be called to cast the current object.
+     *
+     * @return DateTimeInterface
+     */
+    public function cast(string $className)
+    {
+        if (!method_exists($className, 'instance')) {
+            if (is_a($className, DateTimeInterface::class, true)) {
+                return new $className($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
+            }
+
+            throw new InvalidCastException("$className has not the instance() method needed to cast the date.");
+        }
+
+        return $className::instance($this);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
new file mode 100644
index 00000000..d4c2d8c8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php
@@ -0,0 +1,1099 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use BadMethodCallException;
+use Carbon\CarbonInterface;
+use Carbon\Exceptions\BadComparisonUnitException;
+use InvalidArgumentException;
+
+/**
+ * Trait Comparison.
+ *
+ * Comparison utils and testers. All the following methods return booleans.
+ * nowWithSameTz
+ *
+ * Depends on the following methods:
+ *
+ * @method static        resolveCarbon($date)
+ * @method static        copy()
+ * @method static        nowWithSameTz()
+ * @method static static yesterday($timezone = null)
+ * @method static static tomorrow($timezone = null)
+ */
+trait Comparison
+{
+    /** @var bool */
+    protected $endOfTime = false;
+
+    /** @var bool */
+    protected $startOfTime = false;
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true
+     * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see equalTo()
+     *
+     * @return bool
+     */
+    public function eq($date): bool
+    {
+        return $this->equalTo($date);
+    }
+
+    /**
+     * Determines if the instance is equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true
+     * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function equalTo($date): bool
+    {
+        $this->discourageNull($date);
+        $this->discourageBoolean($date);
+
+        return $this == $this->resolveCarbon($date);
+    }
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false
+     * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see notEqualTo()
+     *
+     * @return bool
+     */
+    public function ne($date): bool
+    {
+        return $this->notEqualTo($date);
+    }
+
+    /**
+     * Determines if the instance is not equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false
+     * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function notEqualTo($date): bool
+    {
+        return !$this->equalTo($date);
+    }
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThan()
+     *
+     * @return bool
+     */
+    public function gt($date): bool
+    {
+        return $this->greaterThan($date);
+    }
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function greaterThan($date): bool
+    {
+        $this->discourageNull($date);
+        $this->discourageBoolean($date);
+
+        return $this > $this->resolveCarbon($date);
+    }
+
+    /**
+     * Determines if the instance is greater (after) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThan()
+     *
+     * @return bool
+     */
+    public function isAfter($date): bool
+    {
+        return $this->greaterThan($date);
+    }
+
+    /**
+     * Determines if the instance is greater (after) than or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see greaterThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function gte($date): bool
+    {
+        return $this->greaterThanOrEqualTo($date);
+    }
+
+    /**
+     * Determines if the instance is greater (after) than or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function greaterThanOrEqualTo($date): bool
+    {
+        $this->discourageNull($date);
+        $this->discourageBoolean($date);
+
+        return $this >= $this->resolveCarbon($date);
+    }
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThan()
+     *
+     * @return bool
+     */
+    public function lt($date): bool
+    {
+        return $this->lessThan($date);
+    }
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function lessThan($date): bool
+    {
+        $this->discourageNull($date);
+        $this->discourageBoolean($date);
+
+        return $this < $this->resolveCarbon($date);
+    }
+
+    /**
+     * Determines if the instance is less (before) than another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThan()
+     *
+     * @return bool
+     */
+    public function isBefore($date): bool
+    {
+        return $this->lessThan($date);
+    }
+
+    /**
+     * Determines if the instance is less (before) or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see lessThanOrEqualTo()
+     *
+     * @return bool
+     */
+    public function lte($date): bool
+    {
+        return $this->lessThanOrEqualTo($date);
+    }
+
+    /**
+     * Determines if the instance is less (before) or equal to another
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true
+     * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return bool
+     */
+    public function lessThanOrEqualTo($date): bool
+    {
+        $this->discourageNull($date);
+        $this->discourageBoolean($date);
+
+        return $this <= $this->resolveCarbon($date);
+    }
+
+    /**
+     * Determines if the instance is between two others.
+     *
+     * The third argument allow you to specify if bounds are included or not (true by default)
+     * but for when you including/excluding bounds may produce different results in your application,
+     * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     * @param bool                                    $equal Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function between($date1, $date2, $equal = true): bool
+    {
+        $date1 = $this->resolveCarbon($date1);
+        $date2 = $this->resolveCarbon($date2);
+
+        if ($date1->greaterThan($date2)) {
+            [$date1, $date2] = [$date2, $date1];
+        }
+
+        if ($equal) {
+            return $this >= $date1 && $this <= $date2;
+        }
+
+        return $this > $date1 && $this < $date2;
+    }
+
+    /**
+     * Determines if the instance is between two others, bounds included.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return bool
+     */
+    public function betweenIncluded($date1, $date2): bool
+    {
+        return $this->between($date1, $date2, true);
+    }
+
+    /**
+     * Determines if the instance is between two others, bounds excluded.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return bool
+     */
+    public function betweenExcluded($date1, $date2): bool
+    {
+        return $this->between($date1, $date2, false);
+    }
+
+    /**
+     * Determines if the instance is between two others
+     *
+     * @example
+     * ```
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true
+     * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     * @param bool                                    $equal Indicates if an equal to comparison should be done
+     *
+     * @return bool
+     */
+    public function isBetween($date1, $date2, $equal = true): bool
+    {
+        return $this->between($date1, $date2, $equal);
+    }
+
+    /**
+     * Determines if the instance is a weekday.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-14')->isWeekday(); // false
+     * Carbon::parse('2019-07-15')->isWeekday(); // true
+     * ```
+     *
+     * @return bool
+     */
+    public function isWeekday()
+    {
+        return !$this->isWeekend();
+    }
+
+    /**
+     * Determines if the instance is a weekend day.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-14')->isWeekend(); // true
+     * Carbon::parse('2019-07-15')->isWeekend(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isWeekend()
+    {
+        return \in_array($this->dayOfWeek, static::$weekendDays, true);
+    }
+
+    /**
+     * Determines if the instance is yesterday.
+     *
+     * @example
+     * ```
+     * Carbon::yesterday()->isYesterday(); // true
+     * Carbon::tomorrow()->isYesterday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isYesterday()
+    {
+        return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString();
+    }
+
+    /**
+     * Determines if the instance is today.
+     *
+     * @example
+     * ```
+     * Carbon::today()->isToday(); // true
+     * Carbon::tomorrow()->isToday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isToday()
+    {
+        return $this->toDateString() === $this->nowWithSameTz()->toDateString();
+    }
+
+    /**
+     * Determines if the instance is tomorrow.
+     *
+     * @example
+     * ```
+     * Carbon::tomorrow()->isTomorrow(); // true
+     * Carbon::yesterday()->isTomorrow(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isTomorrow()
+    {
+        return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString();
+    }
+
+    /**
+     * Determines if the instance is in the future, ie. greater (after) than now.
+     *
+     * @example
+     * ```
+     * Carbon::now()->addHours(5)->isFuture(); // true
+     * Carbon::now()->subHours(5)->isFuture(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isFuture()
+    {
+        return $this->greaterThan($this->nowWithSameTz());
+    }
+
+    /**
+     * Determines if the instance is in the past, ie. less (before) than now.
+     *
+     * @example
+     * ```
+     * Carbon::now()->subHours(5)->isPast(); // true
+     * Carbon::now()->addHours(5)->isPast(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isPast()
+    {
+        return $this->lessThan($this->nowWithSameTz());
+    }
+
+    /**
+     * Determines if the instance is a leap year.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2020-01-01')->isLeapYear(); // true
+     * Carbon::parse('2019-01-01')->isLeapYear(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isLeapYear()
+    {
+        return $this->rawFormat('L') === '1';
+    }
+
+    /**
+     * Determines if the instance is a long year
+     *
+     * @example
+     * ```
+     * Carbon::parse('2015-01-01')->isLongYear(); // true
+     * Carbon::parse('2016-01-01')->isLongYear(); // false
+     * ```
+     *
+     * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates
+     *
+     * @return bool
+     */
+    public function isLongYear()
+    {
+        return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53;
+    }
+
+    /**
+     * Compares the formatted values of the two dates.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true
+     * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false
+     * ```
+     *
+     * @param string                                        $format date formats to compare.
+     * @param \Carbon\Carbon|\DateTimeInterface|string|null $date   instance to compare with or null to use current day.
+     *
+     * @return bool
+     */
+    public function isSameAs($format, $date = null)
+    {
+        return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format);
+    }
+
+    /**
+     * Determines if the instance is in the current unit given.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true
+     * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false
+     * ```
+     *
+     * @param string                                 $unit singular unit string
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day.
+     *
+     * @throws BadComparisonUnitException
+     *
+     * @return bool
+     */
+    public function isSameUnit($unit, $date = null)
+    {
+        $units = [
+            // @call isSameUnit
+            'year' => 'Y',
+            // @call isSameUnit
+            'week' => 'o-W',
+            // @call isSameUnit
+            'day' => 'Y-m-d',
+            // @call isSameUnit
+            'hour' => 'Y-m-d H',
+            // @call isSameUnit
+            'minute' => 'Y-m-d H:i',
+            // @call isSameUnit
+            'second' => 'Y-m-d H:i:s',
+            // @call isSameUnit
+            'micro' => 'Y-m-d H:i:s.u',
+            // @call isSameUnit
+            'microsecond' => 'Y-m-d H:i:s.u',
+        ];
+
+        if (isset($units[$unit])) {
+            return $this->isSameAs($units[$unit], $date);
+        }
+
+        if (isset($this->$unit)) {
+            return $this->resolveCarbon($date)->$unit === $this->$unit;
+        }
+
+        if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
+            throw new BadComparisonUnitException($unit);
+        }
+
+        return false;
+    }
+
+    /**
+     * Determines if the instance is in the current unit given.
+     *
+     * @example
+     * ```
+     * Carbon::now()->isCurrentUnit('hour'); // true
+     * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false
+     * ```
+     *
+     * @param string $unit The unit to test.
+     *
+     * @throws BadMethodCallException
+     *
+     * @return bool
+     */
+    public function isCurrentUnit($unit)
+    {
+        return $this->{'isSame'.ucfirst($unit)}();
+    }
+
+    /**
+     * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed).
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false
+     * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|string|null $date       The instance to compare with or null to use current day.
+     * @param bool                                          $ofSameYear Check if it is the same month in the same year.
+     *
+     * @return bool
+     */
+    public function isSameQuarter($date = null, $ofSameYear = true)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date));
+    }
+
+    /**
+     * Checks if the passed in date is in the same month as the instance´s month.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false
+     * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date       The instance to compare with or null to use the current date.
+     * @param bool                                   $ofSameYear Check if it is the same month in the same year.
+     *
+     * @return bool
+     */
+    public function isSameMonth($date = null, $ofSameYear = true)
+    {
+        return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date);
+    }
+
+    /**
+     * Checks if this day is a specific day of the week.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true
+     * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false
+     * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true
+     * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false
+     * ```
+     *
+     * @param int $dayOfWeek
+     *
+     * @return bool
+     */
+    public function isDayOfWeek($dayOfWeek)
+    {
+        if (\is_string($dayOfWeek) && \defined($constant = static::class.'::'.strtoupper($dayOfWeek))) {
+            $dayOfWeek = \constant($constant);
+        }
+
+        return $this->dayOfWeek === $dayOfWeek;
+    }
+
+    /**
+     * Check if its the birthday. Compares the date/month values of the two dates.
+     *
+     * @example
+     * ```
+     * Carbon::now()->subYears(5)->isBirthday(); // true
+     * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false
+     * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true
+     * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false
+     * ```
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day.
+     *
+     * @return bool
+     */
+    public function isBirthday($date = null)
+    {
+        return $this->isSameAs('md', $date);
+    }
+
+    /**
+     * Check if today is the last day of the Month
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28')->isLastOfMonth(); // true
+     * Carbon::parse('2019-03-28')->isLastOfMonth(); // false
+     * Carbon::parse('2019-03-30')->isLastOfMonth(); // false
+     * Carbon::parse('2019-03-31')->isLastOfMonth(); // true
+     * Carbon::parse('2019-04-30')->isLastOfMonth(); // true
+     * ```
+     *
+     * @return bool
+     */
+    public function isLastOfMonth()
+    {
+        return $this->day === $this->daysInMonth;
+    }
+
+    /**
+     * Check if the instance is start of day / midnight.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true
+     * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true
+     * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false
+     * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true
+     * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false
+     * ```
+     *
+     * @param bool $checkMicroseconds check time at microseconds precision
+     *
+     * @return bool
+     */
+    public function isStartOfDay($checkMicroseconds = false)
+    {
+        /* @var CarbonInterface $this */
+        return $checkMicroseconds
+            ? $this->rawFormat('H:i:s.u') === '00:00:00.000000'
+            : $this->rawFormat('H:i:s') === '00:00:00';
+    }
+
+    /**
+     * Check if the instance is end of day.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true
+     * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false
+     * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true
+     * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false
+     * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false
+     * ```
+     *
+     * @param bool $checkMicroseconds check time at microseconds precision
+     *
+     * @return bool
+     */
+    public function isEndOfDay($checkMicroseconds = false)
+    {
+        /* @var CarbonInterface $this */
+        return $checkMicroseconds
+            ? $this->rawFormat('H:i:s.u') === '23:59:59.999999'
+            : $this->rawFormat('H:i:s') === '23:59:59';
+    }
+
+    /**
+     * Check if the instance is start of day / midnight.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true
+     * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true
+     * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isMidnight()
+    {
+        return $this->isStartOfDay();
+    }
+
+    /**
+     * Check if the instance is midday.
+     *
+     * @example
+     * ```
+     * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false
+     * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true
+     * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true
+     * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false
+     * ```
+     *
+     * @return bool
+     */
+    public function isMidday()
+    {
+        /* @var CarbonInterface $this */
+        return $this->rawFormat('G:i:s') === static::$midDayAt.':00:00';
+    }
+
+    /**
+     * Checks if the (date)time string is in a given format.
+     *
+     * @example
+     * ```
+     * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
+     * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function hasFormat($date, $format)
+    {
+        // createFromFormat() is known to handle edge cases silently.
+        // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format.
+        // To ensure we're really testing against our desired format, perform an additional regex validation.
+
+        return self::matchFormatPattern((string) $date, preg_quote((string) $format, '/'), static::$regexFormats);
+    }
+
+    /**
+     * Checks if the (date)time string is in a given format.
+     *
+     * @example
+     * ```
+     * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true
+     * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function hasFormatWithModifiers($date, $format): bool
+    {
+        return self::matchFormatPattern((string) $date, (string) $format, array_merge(static::$regexFormats, static::$regexFormatModifiers));
+    }
+
+    /**
+     * Checks if the (date)time string is in a given format and valid to create a
+     * new instance.
+     *
+     * @example
+     * ```
+     * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true
+     * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     *
+     * @return bool
+     */
+    public static function canBeCreatedFromFormat($date, $format)
+    {
+        try {
+            // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string
+            // doesn't match the format in any way.
+            if (!static::rawCreateFromFormat($format, $date)) {
+                return false;
+            }
+        } catch (InvalidArgumentException $e) {
+            return false;
+        }
+
+        return static::hasFormatWithModifiers($date, $format);
+    }
+
+    /**
+     * Returns true if the current date matches the given string.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false
+     * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true
+     * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true
+     * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false
+     * ```
+     *
+     * @param string $tester day name, month name, hour, date, etc. as string
+     *
+     * @return bool
+     */
+    public function is(string $tester)
+    {
+        $tester = trim($tester);
+
+        if (preg_match('/^\d+$/', $tester)) {
+            return $this->year === (int) $tester;
+        }
+
+        if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) {
+            return $this->isSameMonth(static::parse($tester));
+        }
+
+        if (preg_match('/^\d{1,2}-\d{1,2}$/', $tester)) {
+            return $this->isSameDay(static::parse($this->year.'-'.$tester));
+        }
+
+        $modifier = preg_replace('/(\d)h$/i', '$1:00', $tester);
+
+        /* @var CarbonInterface $max */
+        $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier);
+        $current = $this->avoidMutation();
+        /* @var CarbonInterface $other */
+        $other = $this->avoidMutation()->modify($modifier);
+
+        if ($current->eq($other)) {
+            return true;
+        }
+
+        if (preg_match('/\d:\d{1,2}:\d{1,2}$/', $tester)) {
+            return $current->startOfSecond()->eq($other);
+        }
+
+        if (preg_match('/\d:\d{1,2}$/', $tester)) {
+            return $current->startOfMinute()->eq($other);
+        }
+
+        if (preg_match('/\d(h|am|pm)$/', $tester)) {
+            return $current->startOfHour()->eq($other);
+        }
+
+        if (preg_match(
+            '/^(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+$/i',
+            $tester
+        )) {
+            return $current->startOfMonth()->eq($other->startOfMonth());
+        }
+
+        $units = [
+            'month' => [1, 'year'],
+            'day' => [1, 'month'],
+            'hour' => [0, 'day'],
+            'minute' => [0, 'hour'],
+            'second' => [0, 'minute'],
+            'microsecond' => [0, 'second'],
+        ];
+
+        foreach ($units as $unit => [$minimum, $startUnit]) {
+            if ($minimum === $median->$unit) {
+                $current = $current->startOf($startUnit);
+
+                break;
+            }
+        }
+
+        return $current->eq($other);
+    }
+
+    /**
+     * Checks if the (date)time string is in a given format with
+     * given list of pattern replacements.
+     *
+     * @example
+     * ```
+     * Carbon::hasFormat('11:12:45', 'h:i:s'); // true
+     * Carbon::hasFormat('13:12:45', 'h:i:s'); // false
+     * ```
+     *
+     * @param string $date
+     * @param string $format
+     * @param array  $replacements
+     *
+     * @return bool
+     */
+    private static function matchFormatPattern(string $date, string $format, array $replacements): bool
+    {
+        // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string.
+        $regex = str_replace('\\\\', '\\', $format);
+        // Replace not-escaped letters
+        $regex = preg_replace_callback(
+            '/(?<!\\\\)((?:\\\\{2})*)(['.implode('', array_keys($replacements)).'])/',
+            function ($match) use ($replacements) {
+                return $match[1].strtr($match[2], $replacements);
+            },
+            $regex
+        );
+        // Replace escaped letters by the letter itself
+        $regex = preg_replace('/(?<!\\\\)((?:\\\\{2})*)\\\\(\w)/', '$1$2', $regex);
+        // Escape not escaped slashes
+        $regex = preg_replace('#(?<!\\\\)((?:\\\\{2})*)/#', '$1\\/', $regex);
+
+        return (bool) @preg_match('/^'.$regex.'$/', $date);
+    }
+
+    /**
+     * Returns true if the date was created using CarbonImmutable::startOfTime()
+     *
+     * @return bool
+     */
+    public function isStartOfTime(): bool
+    {
+        return $this->startOfTime ?? false;
+    }
+
+    /**
+     * Returns true if the date was created using CarbonImmutable::endOfTime()
+     *
+     * @return bool
+     */
+    public function isEndOfTime(): bool
+    {
+        return $this->endOfTime ?? false;
+    }
+
+    private function discourageNull($value): void
+    {
+        if ($value === null) {
+            @trigger_error("Since 2.61.0, it's deprecated to compare a date to null, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate null values.", \E_USER_DEPRECATED);
+        }
+    }
+
+    private function discourageBoolean($value): void
+    {
+        if (\is_bool($value)) {
+            @trigger_error("Since 2.61.0, it's deprecated to compare a date to true or false, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate boolean values.", \E_USER_DEPRECATED);
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
new file mode 100644
index 00000000..05598d57
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php
@@ -0,0 +1,636 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterface;
+use Carbon\CarbonInterval;
+use Carbon\CarbonPeriod;
+use Carbon\Exceptions\UnitException;
+use Closure;
+use DateTime;
+use DateTimeImmutable;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Converter.
+ *
+ * Change date into different string formats and types and
+ * handle the string cast.
+ *
+ * Depends on the following methods:
+ *
+ * @method static copy()
+ */
+trait Converter
+{
+    use ToStringFormat;
+
+    /**
+     * Returns the formatted date string on success or FALSE on failure.
+     *
+     * @see https://php.net/manual/en/datetime.format.php
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    #[ReturnTypeWillChange]
+    public function format($format)
+    {
+        $function = $this->localFormatFunction ?: static::$formatFunction;
+
+        if (!$function) {
+            return $this->rawFormat($format);
+        }
+
+        if (\is_string($function) && method_exists($this, $function)) {
+            $function = [$this, $function];
+        }
+
+        return $function(...\func_get_args());
+    }
+
+    /**
+     * @see https://php.net/manual/en/datetime.format.php
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function rawFormat($format)
+    {
+        return parent::format($format);
+    }
+
+    /**
+     * Format the instance as a string using the set format
+     *
+     * @example
+     * ```
+     * echo Carbon::now(); // Carbon instances can be cast to string
+     * ```
+     *
+     * @return string
+     */
+    public function __toString()
+    {
+        $format = $this->localToStringFormat ?? static::$toStringFormat;
+
+        return $format instanceof Closure
+            ? $format($this)
+            : $this->rawFormat($format ?: (
+                \defined('static::DEFAULT_TO_STRING_FORMAT')
+                    ? static::DEFAULT_TO_STRING_FORMAT
+                    : CarbonInterface::DEFAULT_TO_STRING_FORMAT
+            ));
+    }
+
+    /**
+     * Format the instance as date
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateString();
+     * ```
+     *
+     * @return string
+     */
+    public function toDateString()
+    {
+        return $this->rawFormat('Y-m-d');
+    }
+
+    /**
+     * Format the instance as a readable date
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toFormattedDateString();
+     * ```
+     *
+     * @return string
+     */
+    public function toFormattedDateString()
+    {
+        return $this->rawFormat('M j, Y');
+    }
+
+    /**
+     * Format the instance with the day, and a readable date
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toFormattedDayDateString();
+     * ```
+     *
+     * @return string
+     */
+    public function toFormattedDayDateString(): string
+    {
+        return $this->rawFormat('D, M j, Y');
+    }
+
+    /**
+     * Format the instance as time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toTimeString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toTimeString($unitPrecision = 'second')
+    {
+        return $this->rawFormat(static::getTimeFormatByPrecision($unitPrecision));
+    }
+
+    /**
+     * Format the instance as date and time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateTimeString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toDateTimeString($unitPrecision = 'second')
+    {
+        return $this->rawFormat('Y-m-d '.static::getTimeFormatByPrecision($unitPrecision));
+    }
+
+    /**
+     * Return a format from H:i to H:i:s.u according to given unit precision.
+     *
+     * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond"
+     *
+     * @return string
+     */
+    public static function getTimeFormatByPrecision($unitPrecision)
+    {
+        switch (static::singularUnit($unitPrecision)) {
+            case 'minute':
+                return 'H:i';
+            case 'second':
+                return 'H:i:s';
+            case 'm':
+            case 'millisecond':
+                return 'H:i:s.v';
+            case 'µ':
+            case 'microsecond':
+                return 'H:i:s.u';
+        }
+
+        throw new UnitException('Precision unit expected among: minute, second, millisecond and microsecond.');
+    }
+
+    /**
+     * Format the instance as date and time T-separated with no timezone
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDateTimeLocalString();
+     * echo "\n";
+     * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toDateTimeLocalString($unitPrecision = 'second')
+    {
+        return $this->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision));
+    }
+
+    /**
+     * Format the instance with day, date and time
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toDayDateTimeString();
+     * ```
+     *
+     * @return string
+     */
+    public function toDayDateTimeString()
+    {
+        return $this->rawFormat('D, M j, Y g:i A');
+    }
+
+    /**
+     * Format the instance as ATOM
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toAtomString();
+     * ```
+     *
+     * @return string
+     */
+    public function toAtomString()
+    {
+        return $this->rawFormat(DateTime::ATOM);
+    }
+
+    /**
+     * Format the instance as COOKIE
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toCookieString();
+     * ```
+     *
+     * @return string
+     */
+    public function toCookieString()
+    {
+        return $this->rawFormat(DateTime::COOKIE);
+    }
+
+    /**
+     * Format the instance as ISO8601
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toIso8601String();
+     * ```
+     *
+     * @return string
+     */
+    public function toIso8601String()
+    {
+        return $this->toAtomString();
+    }
+
+    /**
+     * Format the instance as RFC822
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc822String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc822String()
+    {
+        return $this->rawFormat(DateTime::RFC822);
+    }
+
+    /**
+     * Convert the instance to UTC and return as Zulu ISO8601
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toIso8601ZuluString();
+     * ```
+     *
+     * @param string $unitPrecision
+     *
+     * @return string
+     */
+    public function toIso8601ZuluString($unitPrecision = 'second')
+    {
+        return $this->avoidMutation()
+            ->utc()
+            ->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision).'\Z');
+    }
+
+    /**
+     * Format the instance as RFC850
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc850String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc850String()
+    {
+        return $this->rawFormat(DateTime::RFC850);
+    }
+
+    /**
+     * Format the instance as RFC1036
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc1036String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc1036String()
+    {
+        return $this->rawFormat(DateTime::RFC1036);
+    }
+
+    /**
+     * Format the instance as RFC1123
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc1123String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc1123String()
+    {
+        return $this->rawFormat(DateTime::RFC1123);
+    }
+
+    /**
+     * Format the instance as RFC2822
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc2822String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc2822String()
+    {
+        return $this->rawFormat(DateTime::RFC2822);
+    }
+
+    /**
+     * Format the instance as RFC3339
+     *
+     * @param bool $extended
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc3339String() . "\n";
+     * echo Carbon::now()->toRfc3339String(true) . "\n";
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc3339String($extended = false)
+    {
+        $format = DateTime::RFC3339;
+        if ($extended) {
+            $format = DateTime::RFC3339_EXTENDED;
+        }
+
+        return $this->rawFormat($format);
+    }
+
+    /**
+     * Format the instance as RSS
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRssString();
+     * ```
+     *
+     * @return string
+     */
+    public function toRssString()
+    {
+        return $this->rawFormat(DateTime::RSS);
+    }
+
+    /**
+     * Format the instance as W3C
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toW3cString();
+     * ```
+     *
+     * @return string
+     */
+    public function toW3cString()
+    {
+        return $this->rawFormat(DateTime::W3C);
+    }
+
+    /**
+     * Format the instance as RFC7231
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toRfc7231String();
+     * ```
+     *
+     * @return string
+     */
+    public function toRfc7231String()
+    {
+        return $this->avoidMutation()
+            ->setTimezone('GMT')
+            ->rawFormat(\defined('static::RFC7231_FORMAT') ? static::RFC7231_FORMAT : CarbonInterface::RFC7231_FORMAT);
+    }
+
+    /**
+     * Get default array representation.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toArray());
+     * ```
+     *
+     * @return array
+     */
+    public function toArray()
+    {
+        return [
+            'year' => $this->year,
+            'month' => $this->month,
+            'day' => $this->day,
+            'dayOfWeek' => $this->dayOfWeek,
+            'dayOfYear' => $this->dayOfYear,
+            'hour' => $this->hour,
+            'minute' => $this->minute,
+            'second' => $this->second,
+            'micro' => $this->micro,
+            'timestamp' => $this->timestamp,
+            'formatted' => $this->rawFormat(\defined('static::DEFAULT_TO_STRING_FORMAT') ? static::DEFAULT_TO_STRING_FORMAT : CarbonInterface::DEFAULT_TO_STRING_FORMAT),
+            'timezone' => $this->timezone,
+        ];
+    }
+
+    /**
+     * Get default object representation.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toObject());
+     * ```
+     *
+     * @return object
+     */
+    public function toObject()
+    {
+        return (object) $this->toArray();
+    }
+
+    /**
+     * Returns english human readable complete date string.
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->toString();
+     * ```
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return $this->avoidMutation()->locale('en')->isoFormat('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
+    }
+
+    /**
+     * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept:
+     * 1977-04-22T01:00:00-05:00).
+     *
+     * @example
+     * ```
+     * echo Carbon::now('America/Toronto')->toISOString() . "\n";
+     * echo Carbon::now('America/Toronto')->toISOString(true) . "\n";
+     * ```
+     *
+     * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC.
+     *
+     * @return null|string
+     */
+    public function toISOString($keepOffset = false)
+    {
+        if (!$this->isValid()) {
+            return null;
+        }
+
+        $yearFormat = $this->year < 0 || $this->year > 9999 ? 'YYYYYY' : 'YYYY';
+        $tzFormat = $keepOffset ? 'Z' : '[Z]';
+        $date = $keepOffset ? $this : $this->avoidMutation()->utc();
+
+        return $date->isoFormat("$yearFormat-MM-DD[T]HH:mm:ss.SSSSSS$tzFormat");
+    }
+
+    /**
+     * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone.
+     *
+     * @example
+     * ```
+     * echo Carbon::now('America/Toronto')->toJSON();
+     * ```
+     *
+     * @return null|string
+     */
+    public function toJSON()
+    {
+        return $this->toISOString();
+    }
+
+    /**
+     * Return native DateTime PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDateTime());
+     * ```
+     *
+     * @return DateTime
+     */
+    public function toDateTime()
+    {
+        return new DateTime($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
+    }
+
+    /**
+     * Return native toDateTimeImmutable PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDateTimeImmutable());
+     * ```
+     *
+     * @return DateTimeImmutable
+     */
+    public function toDateTimeImmutable()
+    {
+        return new DateTimeImmutable($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone());
+    }
+
+    /**
+     * @alias toDateTime
+     *
+     * Return native DateTime PHP object matching the current instance.
+     *
+     * @example
+     * ```
+     * var_dump(Carbon::now()->toDate());
+     * ```
+     *
+     * @return DateTime
+     */
+    public function toDate()
+    {
+        return $this->toDateTime();
+    }
+
+    /**
+     * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+     *
+     * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end      period end date or recurrences count if int
+     * @param int|\DateInterval|string|null                      $interval period default interval or number of the given $unit
+     * @param string|null                                        $unit     if specified, $interval must be an integer
+     *
+     * @return CarbonPeriod
+     */
+    public function toPeriod($end = null, $interval = null, $unit = null)
+    {
+        if ($unit) {
+            $interval = CarbonInterval::make("$interval ".static::pluralUnit($unit));
+        }
+
+        $period = (new CarbonPeriod())->setDateClass(static::class)->setStartDate($this);
+
+        if ($interval) {
+            $period->setDateInterval($interval);
+        }
+
+        if (\is_int($end) || (\is_string($end) && ctype_digit($end))) {
+            $period->setRecurrences($end);
+        } elseif ($end) {
+            $period->setEndDate($end);
+        }
+
+        return $period;
+    }
+
+    /**
+     * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval).
+     *
+     * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end      period end date
+     * @param int|\DateInterval|string|null                  $interval period default interval or number of the given $unit
+     * @param string|null                                    $unit     if specified, $interval must be an integer
+     *
+     * @return CarbonPeriod
+     */
+    public function range($end = null, $interval = null, $unit = null)
+    {
+        return $this->toPeriod($end, $interval, $unit);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
new file mode 100644
index 00000000..be2c0f7c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php
@@ -0,0 +1,950 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterface;
+use Carbon\Exceptions\InvalidDateException;
+use Carbon\Exceptions\InvalidFormatException;
+use Carbon\Exceptions\OutOfRangeException;
+use Carbon\Translator;
+use Closure;
+use DateTimeInterface;
+use DateTimeZone;
+use Exception;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Creator.
+ *
+ * Static creators.
+ *
+ * Depends on the following methods:
+ *
+ * @method static Carbon|CarbonImmutable getTestNow()
+ */
+trait Creator
+{
+    use ObjectInitialisation;
+
+    /**
+     * The errors that can occur.
+     *
+     * @var array
+     */
+    protected static $lastErrors;
+
+    /**
+     * Create a new Carbon instance.
+     *
+     * Please see the testing aids section (specifically static::setTestNow())
+     * for more on the possibility of this constructor returning a test instance.
+     *
+     * @param DateTimeInterface|string|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     */
+    public function __construct($time = null, $tz = null)
+    {
+        if ($time instanceof DateTimeInterface) {
+            $time = $this->constructTimezoneFromDateTime($time, $tz)->format('Y-m-d H:i:s.u');
+        }
+
+        if (is_numeric($time) && (!\is_string($time) || !preg_match('/^\d{1,14}$/', $time))) {
+            $time = static::createFromTimestampUTC($time)->format('Y-m-d\TH:i:s.uP');
+        }
+
+        // If the class has a test now set and we are trying to create a now()
+        // instance then override as required
+        $isNow = empty($time) || $time === 'now';
+
+        if (method_exists(static::class, 'hasTestNow') &&
+            method_exists(static::class, 'getTestNow') &&
+            static::hasTestNow() &&
+            ($isNow || static::hasRelativeKeywords($time))
+        ) {
+            static::mockConstructorParameters($time, $tz);
+        }
+
+        // Work-around for PHP bug https://bugs.php.net/bug.php?id=67127
+        if (!str_contains((string) .1, '.')) {
+            $locale = setlocale(LC_NUMERIC, '0'); // @codeCoverageIgnore
+            setlocale(LC_NUMERIC, 'C'); // @codeCoverageIgnore
+        }
+
+        try {
+            parent::__construct($time ?: 'now', static::safeCreateDateTimeZone($tz) ?: null);
+        } catch (Exception $exception) {
+            throw new InvalidFormatException($exception->getMessage(), 0, $exception);
+        }
+
+        $this->constructedObjectId = spl_object_hash($this);
+
+        if (isset($locale)) {
+            setlocale(LC_NUMERIC, $locale); // @codeCoverageIgnore
+        }
+
+        self::setLastErrors(parent::getLastErrors());
+    }
+
+    /**
+     * Get timezone from a datetime instance.
+     *
+     * @param DateTimeInterface        $date
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return DateTimeInterface
+     */
+    private function constructTimezoneFromDateTime(DateTimeInterface $date, &$tz)
+    {
+        if ($tz !== null) {
+            $safeTz = static::safeCreateDateTimeZone($tz);
+
+            if ($safeTz) {
+                return $date->setTimezone($safeTz);
+            }
+
+            return $date;
+        }
+
+        $tz = $date->getTimezone();
+
+        return $date;
+    }
+
+    /**
+     * Update constructedObjectId on cloned.
+     */
+    public function __clone()
+    {
+        $this->constructedObjectId = spl_object_hash($this);
+    }
+
+    /**
+     * Create a Carbon instance from a DateTime one.
+     *
+     * @param DateTimeInterface $date
+     *
+     * @return static
+     */
+    public static function instance($date)
+    {
+        if ($date instanceof static) {
+            return clone $date;
+        }
+
+        static::expectDateTime($date);
+
+        $instance = new static($date->format('Y-m-d H:i:s.u'), $date->getTimezone());
+
+        if ($date instanceof CarbonInterface) {
+            $settings = $date->getSettings();
+
+            if (!$date->hasLocalTranslator()) {
+                unset($settings['locale']);
+            }
+
+            $instance->settings($settings);
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Create a carbon instance from a string.
+     *
+     * This is an alias for the constructor that allows better fluent syntax
+     * as it allows you to do Carbon::parse('Monday next week')->fn() rather
+     * than (new Carbon('Monday next week'))->fn().
+     *
+     * @param string|DateTimeInterface|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function rawParse($time = null, $tz = null)
+    {
+        if ($time instanceof DateTimeInterface) {
+            return static::instance($time);
+        }
+
+        try {
+            return new static($time, $tz);
+        } catch (Exception $exception) {
+            $date = @static::now($tz)->change($time);
+
+            if (!$date) {
+                throw new InvalidFormatException("Could not parse '$time': ".$exception->getMessage(), 0, $exception);
+            }
+
+            return $date;
+        }
+    }
+
+    /**
+     * Create a carbon instance from a string.
+     *
+     * This is an alias for the constructor that allows better fluent syntax
+     * as it allows you to do Carbon::parse('Monday next week')->fn() rather
+     * than (new Carbon('Monday next week'))->fn().
+     *
+     * @param string|DateTimeInterface|null $time
+     * @param DateTimeZone|string|null      $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function parse($time = null, $tz = null)
+    {
+        $function = static::$parseFunction;
+
+        if (!$function) {
+            return static::rawParse($time, $tz);
+        }
+
+        if (\is_string($function) && method_exists(static::class, $function)) {
+            $function = [static::class, $function];
+        }
+
+        return $function(...\func_get_args());
+    }
+
+    /**
+     * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.).
+     *
+     * @param string                   $time   date/time string in the given language (may also contain English).
+     * @param string|null              $locale if locale is null or not specified, current global locale will be
+     *                                         used instead.
+     * @param DateTimeZone|string|null $tz     optional timezone for the new instance.
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function parseFromLocale($time, $locale = null, $tz = null)
+    {
+        return static::rawParse(static::translateTimeString($time, $locale, 'en'), $tz);
+    }
+
+    /**
+     * Get a Carbon instance for the current date and time.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function now($tz = null)
+    {
+        return new static(null, $tz);
+    }
+
+    /**
+     * Create a Carbon instance for today.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function today($tz = null)
+    {
+        return static::rawParse('today', $tz);
+    }
+
+    /**
+     * Create a Carbon instance for tomorrow.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function tomorrow($tz = null)
+    {
+        return static::rawParse('tomorrow', $tz);
+    }
+
+    /**
+     * Create a Carbon instance for yesterday.
+     *
+     * @param DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function yesterday($tz = null)
+    {
+        return static::rawParse('yesterday', $tz);
+    }
+
+    /**
+     * Create a Carbon instance for the greatest supported date.
+     *
+     * @return static
+     */
+    public static function maxValue()
+    {
+        if (self::$PHPIntSize === 4) {
+            // 32 bit
+            return static::createFromTimestamp(PHP_INT_MAX); // @codeCoverageIgnore
+        }
+
+        // 64 bit
+        return static::create(9999, 12, 31, 23, 59, 59);
+    }
+
+    /**
+     * Create a Carbon instance for the lowest supported date.
+     *
+     * @return static
+     */
+    public static function minValue()
+    {
+        if (self::$PHPIntSize === 4) {
+            // 32 bit
+            return static::createFromTimestamp(~PHP_INT_MAX); // @codeCoverageIgnore
+        }
+
+        // 64 bit
+        return static::create(1, 1, 1, 0, 0, 0);
+    }
+
+    private static function assertBetween($unit, $value, $min, $max)
+    {
+        if (static::isStrictModeEnabled() && ($value < $min || $value > $max)) {
+            throw new OutOfRangeException($unit, $min, $max, $value);
+        }
+    }
+
+    private static function createNowInstance($tz)
+    {
+        if (!static::hasTestNow()) {
+            return static::now($tz);
+        }
+
+        $now = static::getTestNow();
+
+        if ($now instanceof Closure) {
+            return $now(static::now($tz));
+        }
+
+        return $now->avoidMutation()->tz($tz);
+    }
+
+    /**
+     * Create a new Carbon instance from a specific date and time.
+     *
+     * If any of $year, $month or $day are set to null their now() values will
+     * be used.
+     *
+     * If $hour is null it will be set to its now() value and the default
+     * values for $minute and $second will be their now() values.
+     *
+     * If $hour is not null then the default values for $minute and $second
+     * will be 0.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null)
+    {
+        if ((\is_string($year) && !is_numeric($year)) || $year instanceof DateTimeInterface) {
+            return static::parse($year, $tz ?: (\is_string($month) || $month instanceof DateTimeZone ? $month : null));
+        }
+
+        $defaults = null;
+        $getDefault = function ($unit) use ($tz, &$defaults) {
+            if ($defaults === null) {
+                $now = self::createNowInstance($tz);
+
+                $defaults = array_combine([
+                    'year',
+                    'month',
+                    'day',
+                    'hour',
+                    'minute',
+                    'second',
+                ], explode('-', $now->rawFormat('Y-n-j-G-i-s.u')));
+            }
+
+            return $defaults[$unit];
+        };
+
+        $year = $year ?? $getDefault('year');
+        $month = $month ?? $getDefault('month');
+        $day = $day ?? $getDefault('day');
+        $hour = $hour ?? $getDefault('hour');
+        $minute = $minute ?? $getDefault('minute');
+        $second = (float) ($second ?? $getDefault('second'));
+
+        self::assertBetween('month', $month, 0, 99);
+        self::assertBetween('day', $day, 0, 99);
+        self::assertBetween('hour', $hour, 0, 99);
+        self::assertBetween('minute', $minute, 0, 99);
+        self::assertBetween('second', $second, 0, 99);
+
+        $fixYear = null;
+
+        if ($year < 0) {
+            $fixYear = $year;
+            $year = 0;
+        } elseif ($year > 9999) {
+            $fixYear = $year - 9999;
+            $year = 9999;
+        }
+
+        $second = ($second < 10 ? '0' : '').number_format($second, 6);
+        $instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz);
+
+        if ($fixYear !== null) {
+            $instance = $instance->addYears($fixYear);
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Create a new safe Carbon instance from a specific date and time.
+     *
+     * If any of $year, $month or $day are set to null their now() values will
+     * be used.
+     *
+     * If $hour is null it will be set to its now() value and the default
+     * values for $minute and $second will be their now() values.
+     *
+     * If $hour is not null then the default values for $minute and $second
+     * will be 0.
+     *
+     * If one of the set values is not valid, an InvalidDateException
+     * will be thrown.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidDateException
+     *
+     * @return static|false
+     */
+    public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null)
+    {
+        $fields = static::getRangesByUnit();
+
+        foreach ($fields as $field => $range) {
+            if ($$field !== null && (!\is_int($$field) || $$field < $range[0] || $$field > $range[1])) {
+                if (static::isStrictModeEnabled()) {
+                    throw new InvalidDateException($field, $$field);
+                }
+
+                return false;
+            }
+        }
+
+        $instance = static::create($year, $month, $day, $hour, $minute, $second, $tz);
+
+        foreach (array_reverse($fields) as $field => $range) {
+            if ($$field !== null && (!\is_int($$field) || $$field !== $instance->$field)) {
+                if (static::isStrictModeEnabled()) {
+                    throw new InvalidDateException($field, $$field);
+                }
+
+                return false;
+            }
+        }
+
+        return $instance;
+    }
+
+    /**
+     * Create a new Carbon instance from a specific date and time using strict validation.
+     *
+     * @see create()
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null): self
+    {
+        $initialStrictMode = static::isStrictModeEnabled();
+        static::useStrictMode(true);
+
+        try {
+            $date = static::create($year, $month, $day, $hour, $minute, $second, $tz);
+        } finally {
+            static::useStrictMode($initialStrictMode);
+        }
+
+        return $date;
+    }
+
+    /**
+     * Create a Carbon instance from just a date. The time portion is set to now.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromDate($year = null, $month = null, $day = null, $tz = null)
+    {
+        return static::create($year, $month, $day, null, null, null, $tz);
+    }
+
+    /**
+     * Create a Carbon instance from just a date. The time portion is set to midnight.
+     *
+     * @param int|null                 $year
+     * @param int|null                 $month
+     * @param int|null                 $day
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null)
+    {
+        return static::create($year, $month, $day, 0, 0, 0, $tz);
+    }
+
+    /**
+     * Create a Carbon instance from just a time. The date portion is set to today.
+     *
+     * @param int|null                 $hour
+     * @param int|null                 $minute
+     * @param int|null                 $second
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null)
+    {
+        return static::create(null, null, null, $hour, $minute, $second, $tz);
+    }
+
+    /**
+     * Create a Carbon instance from a time string. The date portion is set to today.
+     *
+     * @param string                   $time
+     * @param DateTimeZone|string|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function createFromTimeString($time, $tz = null)
+    {
+        return static::today($tz)->setTimeFromTimeString($time);
+    }
+
+    /**
+     * @param string                         $format     Datetime format
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $originalTz
+     *
+     * @return DateTimeInterface|false
+     */
+    private static function createFromFormatAndTimezone($format, $time, $originalTz)
+    {
+        // Work-around for https://bugs.php.net/bug.php?id=75577
+        // @codeCoverageIgnoreStart
+        if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) {
+            $format = str_replace('.v', '.u', $format);
+        }
+        // @codeCoverageIgnoreEnd
+
+        if ($originalTz === null) {
+            return parent::createFromFormat($format, (string) $time);
+        }
+
+        $tz = \is_int($originalTz)
+            ? @timezone_name_from_abbr('', (int) ($originalTz * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE), 1)
+            : $originalTz;
+
+        $tz = static::safeCreateDateTimeZone($tz, $originalTz);
+
+        if ($tz === false) {
+            return false;
+        }
+
+        return parent::createFromFormat($format, (string) $time, $tz);
+    }
+
+    /**
+     * Create a Carbon instance from a specific format.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function rawCreateFromFormat($format, $time, $tz = null)
+    {
+        // Work-around for https://bugs.php.net/bug.php?id=80141
+        $format = preg_replace('/(?<!\\\\)((?:\\\\{2})*)c/', '$1Y-m-d\TH:i:sP', $format);
+
+        if (preg_match('/(?<!\\\\)(?:\\\\{2})*(a|A)/', $format, $aMatches, PREG_OFFSET_CAPTURE) &&
+            preg_match('/(?<!\\\\)(?:\\\\{2})*(h|g|H|G)/', $format, $hMatches, PREG_OFFSET_CAPTURE) &&
+            $aMatches[1][1] < $hMatches[1][1] &&
+            preg_match('/(am|pm|AM|PM)/', $time)
+        ) {
+            $format = preg_replace('/^(.*)(?<!\\\\)((?:\\\\{2})*)(a|A)(.*)$/U', '$1$2$4 $3', $format);
+            $time = preg_replace('/^(.*)(am|pm|AM|PM)(.*)$/U', '$1$3 $2', $time);
+        }
+
+        // First attempt to create an instance, so that error messages are based on the unmodified format.
+        $date = self::createFromFormatAndTimezone($format, $time, $tz);
+        $lastErrors = parent::getLastErrors();
+        /** @var \Carbon\CarbonImmutable|\Carbon\Carbon|null $mock */
+        $mock = static::getMockedTestNow($tz);
+
+        if ($mock && $date instanceof DateTimeInterface) {
+            // Set timezone from mock if custom timezone was neither given directly nor as a part of format.
+            // First let's skip the part that will be ignored by the parser.
+            $nonEscaped = '(?<!\\\\)(\\\\{2})*';
+
+            $nonIgnored = preg_replace("/^.*{$nonEscaped}!/s", '', $format);
+
+            if ($tz === null && !preg_match("/{$nonEscaped}[eOPT]/", $nonIgnored)) {
+                $tz = clone $mock->getTimezone();
+            }
+
+            // Set microseconds to zero to match behavior of DateTime::createFromFormat()
+            // See https://bugs.php.net/bug.php?id=74332
+            $mock = $mock->copy()->microsecond(0);
+
+            // Prepend mock datetime only if the format does not contain non escaped unix epoch reset flag.
+            if (!preg_match("/{$nonEscaped}[!|]/", $format)) {
+                $format = static::MOCK_DATETIME_FORMAT.' '.$format;
+                $time = ($mock instanceof self ? $mock->rawFormat(static::MOCK_DATETIME_FORMAT) : $mock->format(static::MOCK_DATETIME_FORMAT)).' '.$time;
+            }
+
+            // Regenerate date from the modified format to base result on the mocked instance instead of now.
+            $date = self::createFromFormatAndTimezone($format, $time, $tz);
+        }
+
+        if ($date instanceof DateTimeInterface) {
+            $instance = static::instance($date);
+            $instance::setLastErrors($lastErrors);
+
+            return $instance;
+        }
+
+        if (static::isStrictModeEnabled()) {
+            throw new InvalidFormatException(implode(PHP_EOL, $lastErrors['errors']));
+        }
+
+        return false;
+    }
+
+    /**
+     * Create a Carbon instance from a specific format.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    #[ReturnTypeWillChange]
+    public static function createFromFormat($format, $time, $tz = null)
+    {
+        $function = static::$createFromFormatFunction;
+
+        if (!$function) {
+            return static::rawCreateFromFormat($format, $time, $tz);
+        }
+
+        if (\is_string($function) && method_exists(static::class, $function)) {
+            $function = [static::class, $function];
+        }
+
+        return $function(...\func_get_args());
+    }
+
+    /**
+     * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()).
+     *
+     * @param string                                             $format     Datetime format
+     * @param string                                             $time
+     * @param DateTimeZone|string|false|null                     $tz         optional timezone
+     * @param string|null                                        $locale     locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use)
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null)
+    {
+        $format = preg_replace_callback('/(?<!\\\\)(\\\\{2})*(LTS|LT|[Ll]{1,4})/', function ($match) use ($locale, $translator) {
+            [$code] = $match;
+
+            static $formats = null;
+
+            if ($formats === null) {
+                $translator = $translator ?: Translator::get($locale);
+
+                $formats = [
+                    'LT' => static::getTranslationMessageWith($translator, 'formats.LT', $locale, 'h:mm A'),
+                    'LTS' => static::getTranslationMessageWith($translator, 'formats.LTS', $locale, 'h:mm:ss A'),
+                    'L' => static::getTranslationMessageWith($translator, 'formats.L', $locale, 'MM/DD/YYYY'),
+                    'LL' => static::getTranslationMessageWith($translator, 'formats.LL', $locale, 'MMMM D, YYYY'),
+                    'LLL' => static::getTranslationMessageWith($translator, 'formats.LLL', $locale, 'MMMM D, YYYY h:mm A'),
+                    'LLLL' => static::getTranslationMessageWith($translator, 'formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'),
+                ];
+            }
+
+            return $formats[$code] ?? preg_replace_callback(
+                '/MMMM|MM|DD|dddd/',
+                function ($code) {
+                    return mb_substr($code[0], 1);
+                },
+                $formats[strtoupper($code)] ?? ''
+            );
+        }, $format);
+
+        $format = preg_replace_callback('/(?<!\\\\)(\\\\{2})*('.CarbonInterface::ISO_FORMAT_REGEXP.'|[A-Za-z])/', function ($match) {
+            [$code] = $match;
+
+            static $replacements = null;
+
+            if ($replacements === null) {
+                $replacements = [
+                    'OD' => 'd',
+                    'OM' => 'M',
+                    'OY' => 'Y',
+                    'OH' => 'G',
+                    'Oh' => 'g',
+                    'Om' => 'i',
+                    'Os' => 's',
+                    'D' => 'd',
+                    'DD' => 'd',
+                    'Do' => 'd',
+                    'd' => '!',
+                    'dd' => '!',
+                    'ddd' => 'D',
+                    'dddd' => 'D',
+                    'DDD' => 'z',
+                    'DDDD' => 'z',
+                    'DDDo' => 'z',
+                    'e' => '!',
+                    'E' => '!',
+                    'H' => 'G',
+                    'HH' => 'H',
+                    'h' => 'g',
+                    'hh' => 'h',
+                    'k' => 'G',
+                    'kk' => 'G',
+                    'hmm' => 'gi',
+                    'hmmss' => 'gis',
+                    'Hmm' => 'Gi',
+                    'Hmmss' => 'Gis',
+                    'm' => 'i',
+                    'mm' => 'i',
+                    'a' => 'a',
+                    'A' => 'a',
+                    's' => 's',
+                    'ss' => 's',
+                    'S' => '*',
+                    'SS' => '*',
+                    'SSS' => '*',
+                    'SSSS' => '*',
+                    'SSSSS' => '*',
+                    'SSSSSS' => 'u',
+                    'SSSSSSS' => 'u*',
+                    'SSSSSSSS' => 'u*',
+                    'SSSSSSSSS' => 'u*',
+                    'M' => 'm',
+                    'MM' => 'm',
+                    'MMM' => 'M',
+                    'MMMM' => 'M',
+                    'Mo' => 'm',
+                    'Q' => '!',
+                    'Qo' => '!',
+                    'G' => '!',
+                    'GG' => '!',
+                    'GGG' => '!',
+                    'GGGG' => '!',
+                    'GGGGG' => '!',
+                    'g' => '!',
+                    'gg' => '!',
+                    'ggg' => '!',
+                    'gggg' => '!',
+                    'ggggg' => '!',
+                    'W' => '!',
+                    'WW' => '!',
+                    'Wo' => '!',
+                    'w' => '!',
+                    'ww' => '!',
+                    'wo' => '!',
+                    'x' => 'U???',
+                    'X' => 'U',
+                    'Y' => 'Y',
+                    'YY' => 'y',
+                    'YYYY' => 'Y',
+                    'YYYYY' => 'Y',
+                    'YYYYYY' => 'Y',
+                    'z' => 'e',
+                    'zz' => 'e',
+                    'Z' => 'e',
+                    'ZZ' => 'e',
+                ];
+            }
+
+            $format = $replacements[$code] ?? '?';
+
+            if ($format === '!') {
+                throw new InvalidFormatException("Format $code not supported for creation.");
+            }
+
+            return $format;
+        }, $format);
+
+        return static::rawCreateFromFormat($format, $time, $tz);
+    }
+
+    /**
+     * Create a Carbon instance from a specific format and a string in a given language.
+     *
+     * @param string                         $format Datetime format
+     * @param string                         $locale
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromLocaleFormat($format, $locale, $time, $tz = null)
+    {
+        return static::rawCreateFromFormat($format, static::translateTimeString($time, $locale, 'en'), $tz);
+    }
+
+    /**
+     * Create a Carbon instance from a specific ISO format and a string in a given language.
+     *
+     * @param string                         $format Datetime ISO format
+     * @param string                         $locale
+     * @param string                         $time
+     * @param DateTimeZone|string|false|null $tz
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|false
+     */
+    public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null)
+    {
+        $time = static::translateTimeString($time, $locale, 'en', CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS | CarbonInterface::TRANSLATE_MERIDIEM);
+
+        return static::createFromIsoFormat($format, $time, $tz, $locale);
+    }
+
+    /**
+     * Make a Carbon instance from given variable if possible.
+     *
+     * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals
+     * and recurrences). Throw an exception for invalid format, but otherwise return null.
+     *
+     * @param mixed $var
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static|null
+     */
+    public static function make($var)
+    {
+        if ($var instanceof DateTimeInterface) {
+            return static::instance($var);
+        }
+
+        $date = null;
+
+        if (\is_string($var)) {
+            $var = trim($var);
+
+            if (!preg_match('/^P[\dT]/', $var) &&
+                !preg_match('/^R\d/', $var) &&
+                preg_match('/[a-z\d]/i', $var)
+            ) {
+                $date = static::parse($var);
+            }
+        }
+
+        return $date;
+    }
+
+    /**
+     * Set last errors.
+     *
+     * @param array|bool $lastErrors
+     *
+     * @return void
+     */
+    private static function setLastErrors($lastErrors)
+    {
+        if (\is_array($lastErrors) || $lastErrors === false) {
+            static::$lastErrors = \is_array($lastErrors) ? $lastErrors : [
+                'warning_count' => 0,
+                'warnings' => [],
+                'error_count' => 0,
+                'errors' => [],
+            ];
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return array
+     */
+    #[ReturnTypeWillChange]
+    public static function getLastErrors()
+    {
+        return static::$lastErrors;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Date.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
new file mode 100644
index 00000000..0d9536c1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Date.php
@@ -0,0 +1,2706 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use BadMethodCallException;
+use Carbon\Carbon;
+use Carbon\CarbonInterface;
+use Carbon\CarbonPeriod;
+use Carbon\CarbonTimeZone;
+use Carbon\Exceptions\BadComparisonUnitException;
+use Carbon\Exceptions\ImmutableException;
+use Carbon\Exceptions\InvalidTimeZoneException;
+use Carbon\Exceptions\InvalidTypeException;
+use Carbon\Exceptions\UnknownGetterException;
+use Carbon\Exceptions\UnknownMethodException;
+use Carbon\Exceptions\UnknownSetterException;
+use Carbon\Exceptions\UnknownUnitException;
+use Closure;
+use DateInterval;
+use DatePeriod;
+use DateTime;
+use DateTimeImmutable;
+use DateTimeInterface;
+use DateTimeZone;
+use InvalidArgumentException;
+use ReflectionException;
+use ReturnTypeWillChange;
+use Throwable;
+
+/**
+ * A simple API extension for DateTime.
+ *
+ * @mixin DeprecatedProperties
+ *
+ * <autodoc generated by `composer phpdoc`>
+ *
+ * @property      int              $year
+ * @property      int              $yearIso
+ * @property      int              $month
+ * @property      int              $day
+ * @property      int              $hour
+ * @property      int              $minute
+ * @property      int              $second
+ * @property      int              $micro
+ * @property      int              $microsecond
+ * @property      int|float|string $timestamp                                                                         seconds since the Unix Epoch
+ * @property      string           $englishDayOfWeek                                                                  the day of week in English
+ * @property      string           $shortEnglishDayOfWeek                                                             the abbreviated day of week in English
+ * @property      string           $englishMonth                                                                      the month in English
+ * @property      string           $shortEnglishMonth                                                                 the abbreviated month in English
+ * @property      int              $milliseconds
+ * @property      int              $millisecond
+ * @property      int              $milli
+ * @property      int              $week                                                                              1 through 53
+ * @property      int              $isoWeek                                                                           1 through 53
+ * @property      int              $weekYear                                                                          year according to week format
+ * @property      int              $isoWeekYear                                                                       year according to ISO week format
+ * @property      int              $dayOfYear                                                                         1 through 366
+ * @property      int              $age                                                                               does a diffInYears() with default parameters
+ * @property      int              $offset                                                                            the timezone offset in seconds from UTC
+ * @property      int              $offsetMinutes                                                                     the timezone offset in minutes from UTC
+ * @property      int              $offsetHours                                                                       the timezone offset in hours from UTC
+ * @property      CarbonTimeZone   $timezone                                                                          the current timezone
+ * @property      CarbonTimeZone   $tz                                                                                alias of $timezone
+ * @property-read int              $dayOfWeek                                                                         0 (for Sunday) through 6 (for Saturday)
+ * @property-read int              $dayOfWeekIso                                                                      1 (for Monday) through 7 (for Sunday)
+ * @property-read int              $weekOfYear                                                                        ISO-8601 week number of year, weeks starting on Monday
+ * @property-read int              $daysInMonth                                                                       number of days in the given month
+ * @property-read string           $latinMeridiem                                                                     "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
+ * @property-read string           $latinUpperMeridiem                                                                "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
+ * @property-read string           $timezoneAbbreviatedName                                                           the current timezone abbreviated name
+ * @property-read string           $tzAbbrName                                                                        alias of $timezoneAbbreviatedName
+ * @property-read string           $dayName                                                                           long name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $shortDayName                                                                      short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $minDayName                                                                        very short name of weekday translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $monthName                                                                         long name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $shortMonthName                                                                    short name of month translated according to Carbon locale, in english if no translation available for current language
+ * @property-read string           $meridiem                                                                          lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read string           $upperMeridiem                                                                     uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+ * @property-read int              $noZeroHour                                                                        current hour from 1 to 24
+ * @property-read int              $weeksInYear                                                                       51 through 53
+ * @property-read int              $isoWeeksInYear                                                                    51 through 53
+ * @property-read int              $weekOfMonth                                                                       1 through 5
+ * @property-read int              $weekNumberInMonth                                                                 1 through 5
+ * @property-read int              $firstWeekDay                                                                      0 through 6
+ * @property-read int              $lastWeekDay                                                                       0 through 6
+ * @property-read int              $daysInYear                                                                        365 or 366
+ * @property-read int              $quarter                                                                           the quarter of this instance, 1 - 4
+ * @property-read int              $decade                                                                            the decade of this instance
+ * @property-read int              $century                                                                           the century of this instance
+ * @property-read int              $millennium                                                                        the millennium of this instance
+ * @property-read bool             $dst                                                                               daylight savings time indicator, true if DST, false otherwise
+ * @property-read bool             $local                                                                             checks if the timezone is local, true if local, false otherwise
+ * @property-read bool             $utc                                                                               checks if the timezone is UTC, true if UTC, false otherwise
+ * @property-read string           $timezoneName                                                                      the current timezone name
+ * @property-read string           $tzName                                                                            alias of $timezoneName
+ * @property-read string           $locale                                                                            locale of the current instance
+ *
+ * @method        bool             isUtc()                                                                            Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
+ * @method        bool             isLocal()                                                                          Check if the current instance has non-UTC timezone.
+ * @method        bool             isValid()                                                                          Check if the current instance is a valid date.
+ * @method        bool             isDST()                                                                            Check if the current instance is in a daylight saving time.
+ * @method        bool             isSunday()                                                                         Checks if the instance day is sunday.
+ * @method        bool             isMonday()                                                                         Checks if the instance day is monday.
+ * @method        bool             isTuesday()                                                                        Checks if the instance day is tuesday.
+ * @method        bool             isWednesday()                                                                      Checks if the instance day is wednesday.
+ * @method        bool             isThursday()                                                                       Checks if the instance day is thursday.
+ * @method        bool             isFriday()                                                                         Checks if the instance day is friday.
+ * @method        bool             isSaturday()                                                                       Checks if the instance day is saturday.
+ * @method        bool             isSameYear(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentYear()                                                                    Checks if the instance is in the same year as the current moment.
+ * @method        bool             isNextYear()                                                                       Checks if the instance is in the same year as the current moment next year.
+ * @method        bool             isLastYear()                                                                       Checks if the instance is in the same year as the current moment last year.
+ * @method        bool             isSameWeek(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentWeek()                                                                    Checks if the instance is in the same week as the current moment.
+ * @method        bool             isNextWeek()                                                                       Checks if the instance is in the same week as the current moment next week.
+ * @method        bool             isLastWeek()                                                                       Checks if the instance is in the same week as the current moment last week.
+ * @method        bool             isSameDay(Carbon|DateTimeInterface|string|null $date = null)                       Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentDay()                                                                     Checks if the instance is in the same day as the current moment.
+ * @method        bool             isNextDay()                                                                        Checks if the instance is in the same day as the current moment next day.
+ * @method        bool             isLastDay()                                                                        Checks if the instance is in the same day as the current moment last day.
+ * @method        bool             isSameHour(Carbon|DateTimeInterface|string|null $date = null)                      Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentHour()                                                                    Checks if the instance is in the same hour as the current moment.
+ * @method        bool             isNextHour()                                                                       Checks if the instance is in the same hour as the current moment next hour.
+ * @method        bool             isLastHour()                                                                       Checks if the instance is in the same hour as the current moment last hour.
+ * @method        bool             isSameMinute(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMinute()                                                                  Checks if the instance is in the same minute as the current moment.
+ * @method        bool             isNextMinute()                                                                     Checks if the instance is in the same minute as the current moment next minute.
+ * @method        bool             isLastMinute()                                                                     Checks if the instance is in the same minute as the current moment last minute.
+ * @method        bool             isSameSecond(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentSecond()                                                                  Checks if the instance is in the same second as the current moment.
+ * @method        bool             isNextSecond()                                                                     Checks if the instance is in the same second as the current moment next second.
+ * @method        bool             isLastSecond()                                                                     Checks if the instance is in the same second as the current moment last second.
+ * @method        bool             isSameMicro(Carbon|DateTimeInterface|string|null $date = null)                     Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMicro()                                                                   Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool             isNextMicro()                                                                      Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool             isLastMicro()                                                                      Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool             isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null)               Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMicrosecond()                                                             Checks if the instance is in the same microsecond as the current moment.
+ * @method        bool             isNextMicrosecond()                                                                Checks if the instance is in the same microsecond as the current moment next microsecond.
+ * @method        bool             isLastMicrosecond()                                                                Checks if the instance is in the same microsecond as the current moment last microsecond.
+ * @method        bool             isCurrentMonth()                                                                   Checks if the instance is in the same month as the current moment.
+ * @method        bool             isNextMonth()                                                                      Checks if the instance is in the same month as the current moment next month.
+ * @method        bool             isLastMonth()                                                                      Checks if the instance is in the same month as the current moment last month.
+ * @method        bool             isCurrentQuarter()                                                                 Checks if the instance is in the same quarter as the current moment.
+ * @method        bool             isNextQuarter()                                                                    Checks if the instance is in the same quarter as the current moment next quarter.
+ * @method        bool             isLastQuarter()                                                                    Checks if the instance is in the same quarter as the current moment last quarter.
+ * @method        bool             isSameDecade(Carbon|DateTimeInterface|string|null $date = null)                    Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentDecade()                                                                  Checks if the instance is in the same decade as the current moment.
+ * @method        bool             isNextDecade()                                                                     Checks if the instance is in the same decade as the current moment next decade.
+ * @method        bool             isLastDecade()                                                                     Checks if the instance is in the same decade as the current moment last decade.
+ * @method        bool             isSameCentury(Carbon|DateTimeInterface|string|null $date = null)                   Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentCentury()                                                                 Checks if the instance is in the same century as the current moment.
+ * @method        bool             isNextCentury()                                                                    Checks if the instance is in the same century as the current moment next century.
+ * @method        bool             isLastCentury()                                                                    Checks if the instance is in the same century as the current moment last century.
+ * @method        bool             isSameMillennium(Carbon|DateTimeInterface|string|null $date = null)                Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone).
+ * @method        bool             isCurrentMillennium()                                                              Checks if the instance is in the same millennium as the current moment.
+ * @method        bool             isNextMillennium()                                                                 Checks if the instance is in the same millennium as the current moment next millennium.
+ * @method        bool             isLastMillennium()                                                                 Checks if the instance is in the same millennium as the current moment last millennium.
+ * @method        CarbonInterface  years(int $value)                                                                  Set current instance year to the given value.
+ * @method        CarbonInterface  year(int $value)                                                                   Set current instance year to the given value.
+ * @method        CarbonInterface  setYears(int $value)                                                               Set current instance year to the given value.
+ * @method        CarbonInterface  setYear(int $value)                                                                Set current instance year to the given value.
+ * @method        CarbonInterface  months(int $value)                                                                 Set current instance month to the given value.
+ * @method        CarbonInterface  month(int $value)                                                                  Set current instance month to the given value.
+ * @method        CarbonInterface  setMonths(int $value)                                                              Set current instance month to the given value.
+ * @method        CarbonInterface  setMonth(int $value)                                                               Set current instance month to the given value.
+ * @method        CarbonInterface  days(int $value)                                                                   Set current instance day to the given value.
+ * @method        CarbonInterface  day(int $value)                                                                    Set current instance day to the given value.
+ * @method        CarbonInterface  setDays(int $value)                                                                Set current instance day to the given value.
+ * @method        CarbonInterface  setDay(int $value)                                                                 Set current instance day to the given value.
+ * @method        CarbonInterface  hours(int $value)                                                                  Set current instance hour to the given value.
+ * @method        CarbonInterface  hour(int $value)                                                                   Set current instance hour to the given value.
+ * @method        CarbonInterface  setHours(int $value)                                                               Set current instance hour to the given value.
+ * @method        CarbonInterface  setHour(int $value)                                                                Set current instance hour to the given value.
+ * @method        CarbonInterface  minutes(int $value)                                                                Set current instance minute to the given value.
+ * @method        CarbonInterface  minute(int $value)                                                                 Set current instance minute to the given value.
+ * @method        CarbonInterface  setMinutes(int $value)                                                             Set current instance minute to the given value.
+ * @method        CarbonInterface  setMinute(int $value)                                                              Set current instance minute to the given value.
+ * @method        CarbonInterface  seconds(int $value)                                                                Set current instance second to the given value.
+ * @method        CarbonInterface  second(int $value)                                                                 Set current instance second to the given value.
+ * @method        CarbonInterface  setSeconds(int $value)                                                             Set current instance second to the given value.
+ * @method        CarbonInterface  setSecond(int $value)                                                              Set current instance second to the given value.
+ * @method        CarbonInterface  millis(int $value)                                                                 Set current instance millisecond to the given value.
+ * @method        CarbonInterface  milli(int $value)                                                                  Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMillis(int $value)                                                              Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMilli(int $value)                                                               Set current instance millisecond to the given value.
+ * @method        CarbonInterface  milliseconds(int $value)                                                           Set current instance millisecond to the given value.
+ * @method        CarbonInterface  millisecond(int $value)                                                            Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMilliseconds(int $value)                                                        Set current instance millisecond to the given value.
+ * @method        CarbonInterface  setMillisecond(int $value)                                                         Set current instance millisecond to the given value.
+ * @method        CarbonInterface  micros(int $value)                                                                 Set current instance microsecond to the given value.
+ * @method        CarbonInterface  micro(int $value)                                                                  Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicros(int $value)                                                              Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicro(int $value)                                                               Set current instance microsecond to the given value.
+ * @method        CarbonInterface  microseconds(int $value)                                                           Set current instance microsecond to the given value.
+ * @method        CarbonInterface  microsecond(int $value)                                                            Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicroseconds(int $value)                                                        Set current instance microsecond to the given value.
+ * @method        CarbonInterface  setMicrosecond(int $value)                                                         Set current instance microsecond to the given value.
+ * @method        CarbonInterface  addYears(int $value = 1)                                                           Add years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addYear()                                                                          Add one year to the instance (using date interval).
+ * @method        CarbonInterface  subYears(int $value = 1)                                                           Sub years (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subYear()                                                                          Sub one year to the instance (using date interval).
+ * @method        CarbonInterface  addYearsWithOverflow(int $value = 1)                                               Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addYearWithOverflow()                                                              Add one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subYearsWithOverflow(int $value = 1)                                               Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subYearWithOverflow()                                                              Sub one year to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addYearsWithoutOverflow(int $value = 1)                                            Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearWithoutOverflow()                                                           Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsWithoutOverflow(int $value = 1)                                            Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearWithoutOverflow()                                                           Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearsWithNoOverflow(int $value = 1)                                             Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearWithNoOverflow()                                                            Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsWithNoOverflow(int $value = 1)                                             Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearWithNoOverflow()                                                            Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearsNoOverflow(int $value = 1)                                                 Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addYearNoOverflow()                                                                Add one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearsNoOverflow(int $value = 1)                                                 Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subYearNoOverflow()                                                                Sub one year to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonths(int $value = 1)                                                          Add months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMonth()                                                                         Add one month to the instance (using date interval).
+ * @method        CarbonInterface  subMonths(int $value = 1)                                                          Sub months (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMonth()                                                                         Sub one month to the instance (using date interval).
+ * @method        CarbonInterface  addMonthsWithOverflow(int $value = 1)                                              Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMonthWithOverflow()                                                             Add one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMonthsWithOverflow(int $value = 1)                                              Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMonthWithOverflow()                                                             Sub one month to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMonthsWithoutOverflow(int $value = 1)                                           Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthWithoutOverflow()                                                          Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsWithoutOverflow(int $value = 1)                                           Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthWithoutOverflow()                                                          Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthsWithNoOverflow(int $value = 1)                                            Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthWithNoOverflow()                                                           Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsWithNoOverflow(int $value = 1)                                            Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthWithNoOverflow()                                                           Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthsNoOverflow(int $value = 1)                                                Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMonthNoOverflow()                                                               Add one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthsNoOverflow(int $value = 1)                                                Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMonthNoOverflow()                                                               Sub one month to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDays(int $value = 1)                                                            Add days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addDay()                                                                           Add one day to the instance (using date interval).
+ * @method        CarbonInterface  subDays(int $value = 1)                                                            Sub days (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subDay()                                                                           Sub one day to the instance (using date interval).
+ * @method        CarbonInterface  addHours(int $value = 1)                                                           Add hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addHour()                                                                          Add one hour to the instance (using date interval).
+ * @method        CarbonInterface  subHours(int $value = 1)                                                           Sub hours (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subHour()                                                                          Sub one hour to the instance (using date interval).
+ * @method        CarbonInterface  addMinutes(int $value = 1)                                                         Add minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMinute()                                                                        Add one minute to the instance (using date interval).
+ * @method        CarbonInterface  subMinutes(int $value = 1)                                                         Sub minutes (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMinute()                                                                        Sub one minute to the instance (using date interval).
+ * @method        CarbonInterface  addSeconds(int $value = 1)                                                         Add seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addSecond()                                                                        Add one second to the instance (using date interval).
+ * @method        CarbonInterface  subSeconds(int $value = 1)                                                         Sub seconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subSecond()                                                                        Sub one second to the instance (using date interval).
+ * @method        CarbonInterface  addMillis(int $value = 1)                                                          Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMilli()                                                                         Add one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  subMillis(int $value = 1)                                                          Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMilli()                                                                         Sub one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  addMilliseconds(int $value = 1)                                                    Add milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMillisecond()                                                                   Add one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  subMilliseconds(int $value = 1)                                                    Sub milliseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMillisecond()                                                                   Sub one millisecond to the instance (using date interval).
+ * @method        CarbonInterface  addMicros(int $value = 1)                                                          Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMicro()                                                                         Add one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  subMicros(int $value = 1)                                                          Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMicro()                                                                         Sub one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  addMicroseconds(int $value = 1)                                                    Add microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMicrosecond()                                                                   Add one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  subMicroseconds(int $value = 1)                                                    Sub microseconds (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMicrosecond()                                                                   Sub one microsecond to the instance (using date interval).
+ * @method        CarbonInterface  addMillennia(int $value = 1)                                                       Add millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addMillennium()                                                                    Add one millennium to the instance (using date interval).
+ * @method        CarbonInterface  subMillennia(int $value = 1)                                                       Sub millennia (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subMillennium()                                                                    Sub one millennium to the instance (using date interval).
+ * @method        CarbonInterface  addMillenniaWithOverflow(int $value = 1)                                           Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMillenniumWithOverflow()                                                        Add one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMillenniaWithOverflow(int $value = 1)                                           Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subMillenniumWithOverflow()                                                        Sub one millennium to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addMillenniaWithoutOverflow(int $value = 1)                                        Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumWithoutOverflow()                                                     Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaWithoutOverflow(int $value = 1)                                        Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumWithoutOverflow()                                                     Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniaWithNoOverflow(int $value = 1)                                         Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumWithNoOverflow()                                                      Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaWithNoOverflow(int $value = 1)                                         Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumWithNoOverflow()                                                      Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniaNoOverflow(int $value = 1)                                             Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addMillenniumNoOverflow()                                                          Add one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniaNoOverflow(int $value = 1)                                             Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subMillenniumNoOverflow()                                                          Sub one millennium to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturies(int $value = 1)                                                       Add centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addCentury()                                                                       Add one century to the instance (using date interval).
+ * @method        CarbonInterface  subCenturies(int $value = 1)                                                       Sub centuries (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subCentury()                                                                       Sub one century to the instance (using date interval).
+ * @method        CarbonInterface  addCenturiesWithOverflow(int $value = 1)                                           Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addCenturyWithOverflow()                                                           Add one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subCenturiesWithOverflow(int $value = 1)                                           Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subCenturyWithOverflow()                                                           Sub one century to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addCenturiesWithoutOverflow(int $value = 1)                                        Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyWithoutOverflow()                                                        Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesWithoutOverflow(int $value = 1)                                        Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyWithoutOverflow()                                                        Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturiesWithNoOverflow(int $value = 1)                                         Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyWithNoOverflow()                                                         Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesWithNoOverflow(int $value = 1)                                         Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyWithNoOverflow()                                                         Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturiesNoOverflow(int $value = 1)                                             Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addCenturyNoOverflow()                                                             Add one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturiesNoOverflow(int $value = 1)                                             Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subCenturyNoOverflow()                                                             Sub one century to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecades(int $value = 1)                                                         Add decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addDecade()                                                                        Add one decade to the instance (using date interval).
+ * @method        CarbonInterface  subDecades(int $value = 1)                                                         Sub decades (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subDecade()                                                                        Sub one decade to the instance (using date interval).
+ * @method        CarbonInterface  addDecadesWithOverflow(int $value = 1)                                             Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addDecadeWithOverflow()                                                            Add one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subDecadesWithOverflow(int $value = 1)                                             Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subDecadeWithOverflow()                                                            Sub one decade to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addDecadesWithoutOverflow(int $value = 1)                                          Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeWithoutOverflow()                                                         Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesWithoutOverflow(int $value = 1)                                          Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeWithoutOverflow()                                                         Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadesWithNoOverflow(int $value = 1)                                           Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeWithNoOverflow()                                                          Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesWithNoOverflow(int $value = 1)                                           Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeWithNoOverflow()                                                          Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadesNoOverflow(int $value = 1)                                               Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addDecadeNoOverflow()                                                              Add one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadesNoOverflow(int $value = 1)                                               Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subDecadeNoOverflow()                                                              Sub one decade to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarters(int $value = 1)                                                        Add quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addQuarter()                                                                       Add one quarter to the instance (using date interval).
+ * @method        CarbonInterface  subQuarters(int $value = 1)                                                        Sub quarters (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subQuarter()                                                                       Sub one quarter to the instance (using date interval).
+ * @method        CarbonInterface  addQuartersWithOverflow(int $value = 1)                                            Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addQuarterWithOverflow()                                                           Add one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subQuartersWithOverflow(int $value = 1)                                            Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  subQuarterWithOverflow()                                                           Sub one quarter to the instance (using date interval) with overflow explicitly allowed.
+ * @method        CarbonInterface  addQuartersWithoutOverflow(int $value = 1)                                         Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterWithoutOverflow()                                                        Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersWithoutOverflow(int $value = 1)                                         Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterWithoutOverflow()                                                        Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuartersWithNoOverflow(int $value = 1)                                          Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterWithNoOverflow()                                                         Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersWithNoOverflow(int $value = 1)                                          Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterWithNoOverflow()                                                         Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuartersNoOverflow(int $value = 1)                                              Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addQuarterNoOverflow()                                                             Add one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuartersNoOverflow(int $value = 1)                                              Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  subQuarterNoOverflow()                                                             Sub one quarter to the instance (using date interval) with overflow explicitly forbidden.
+ * @method        CarbonInterface  addWeeks(int $value = 1)                                                           Add weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addWeek()                                                                          Add one week to the instance (using date interval).
+ * @method        CarbonInterface  subWeeks(int $value = 1)                                                           Sub weeks (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subWeek()                                                                          Sub one week to the instance (using date interval).
+ * @method        CarbonInterface  addWeekdays(int $value = 1)                                                        Add weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  addWeekday()                                                                       Add one weekday to the instance (using date interval).
+ * @method        CarbonInterface  subWeekdays(int $value = 1)                                                        Sub weekdays (the $value count passed in) to the instance (using date interval).
+ * @method        CarbonInterface  subWeekday()                                                                       Sub one weekday to the instance (using date interval).
+ * @method        CarbonInterface  addRealMicros(int $value = 1)                                                      Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMicro()                                                                     Add one microsecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicros(int $value = 1)                                                      Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicro()                                                                     Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod     microsUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonInterface  addRealMicroseconds(int $value = 1)                                                Add microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMicrosecond()                                                               Add one microsecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicroseconds(int $value = 1)                                                Sub microseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMicrosecond()                                                               Sub one microsecond to the instance (using timestamp).
+ * @method        CarbonPeriod     microsecondsUntil($endDate = null, int $factor = 1)                                Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given.
+ * @method        CarbonInterface  addRealMillis(int $value = 1)                                                      Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMilli()                                                                     Add one millisecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillis(int $value = 1)                                                      Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMilli()                                                                     Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod     millisUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonInterface  addRealMilliseconds(int $value = 1)                                                Add milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMillisecond()                                                               Add one millisecond to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMilliseconds(int $value = 1)                                                Sub milliseconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillisecond()                                                               Sub one millisecond to the instance (using timestamp).
+ * @method        CarbonPeriod     millisecondsUntil($endDate = null, int $factor = 1)                                Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given.
+ * @method        CarbonInterface  addRealSeconds(int $value = 1)                                                     Add seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealSecond()                                                                    Add one second to the instance (using timestamp).
+ * @method        CarbonInterface  subRealSeconds(int $value = 1)                                                     Sub seconds (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealSecond()                                                                    Sub one second to the instance (using timestamp).
+ * @method        CarbonPeriod     secondsUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given.
+ * @method        CarbonInterface  addRealMinutes(int $value = 1)                                                     Add minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMinute()                                                                    Add one minute to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMinutes(int $value = 1)                                                     Sub minutes (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMinute()                                                                    Sub one minute to the instance (using timestamp).
+ * @method        CarbonPeriod     minutesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given.
+ * @method        CarbonInterface  addRealHours(int $value = 1)                                                       Add hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealHour()                                                                      Add one hour to the instance (using timestamp).
+ * @method        CarbonInterface  subRealHours(int $value = 1)                                                       Sub hours (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealHour()                                                                      Sub one hour to the instance (using timestamp).
+ * @method        CarbonPeriod     hoursUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given.
+ * @method        CarbonInterface  addRealDays(int $value = 1)                                                        Add days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealDay()                                                                       Add one day to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDays(int $value = 1)                                                        Sub days (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDay()                                                                       Sub one day to the instance (using timestamp).
+ * @method        CarbonPeriod     daysUntil($endDate = null, int $factor = 1)                                        Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given.
+ * @method        CarbonInterface  addRealWeeks(int $value = 1)                                                       Add weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealWeek()                                                                      Add one week to the instance (using timestamp).
+ * @method        CarbonInterface  subRealWeeks(int $value = 1)                                                       Sub weeks (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealWeek()                                                                      Sub one week to the instance (using timestamp).
+ * @method        CarbonPeriod     weeksUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given.
+ * @method        CarbonInterface  addRealMonths(int $value = 1)                                                      Add months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMonth()                                                                     Add one month to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMonths(int $value = 1)                                                      Sub months (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMonth()                                                                     Sub one month to the instance (using timestamp).
+ * @method        CarbonPeriod     monthsUntil($endDate = null, int $factor = 1)                                      Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given.
+ * @method        CarbonInterface  addRealQuarters(int $value = 1)                                                    Add quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealQuarter()                                                                   Add one quarter to the instance (using timestamp).
+ * @method        CarbonInterface  subRealQuarters(int $value = 1)                                                    Sub quarters (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealQuarter()                                                                   Sub one quarter to the instance (using timestamp).
+ * @method        CarbonPeriod     quartersUntil($endDate = null, int $factor = 1)                                    Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given.
+ * @method        CarbonInterface  addRealYears(int $value = 1)                                                       Add years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealYear()                                                                      Add one year to the instance (using timestamp).
+ * @method        CarbonInterface  subRealYears(int $value = 1)                                                       Sub years (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealYear()                                                                      Sub one year to the instance (using timestamp).
+ * @method        CarbonPeriod     yearsUntil($endDate = null, int $factor = 1)                                       Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given.
+ * @method        CarbonInterface  addRealDecades(int $value = 1)                                                     Add decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealDecade()                                                                    Add one decade to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDecades(int $value = 1)                                                     Sub decades (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealDecade()                                                                    Sub one decade to the instance (using timestamp).
+ * @method        CarbonPeriod     decadesUntil($endDate = null, int $factor = 1)                                     Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given.
+ * @method        CarbonInterface  addRealCenturies(int $value = 1)                                                   Add centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealCentury()                                                                   Add one century to the instance (using timestamp).
+ * @method        CarbonInterface  subRealCenturies(int $value = 1)                                                   Sub centuries (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealCentury()                                                                   Sub one century to the instance (using timestamp).
+ * @method        CarbonPeriod     centuriesUntil($endDate = null, int $factor = 1)                                   Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given.
+ * @method        CarbonInterface  addRealMillennia(int $value = 1)                                                   Add millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  addRealMillennium()                                                                Add one millennium to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillennia(int $value = 1)                                                   Sub millennia (the $value count passed in) to the instance (using timestamp).
+ * @method        CarbonInterface  subRealMillennium()                                                                Sub one millennium to the instance (using timestamp).
+ * @method        CarbonPeriod     millenniaUntil($endDate = null, int $factor = 1)                                   Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given.
+ * @method        CarbonInterface  roundYear(float $precision = 1, string $function = "round")                        Round the current instance year with given precision using the given function.
+ * @method        CarbonInterface  roundYears(float $precision = 1, string $function = "round")                       Round the current instance year with given precision using the given function.
+ * @method        CarbonInterface  floorYear(float $precision = 1)                                                    Truncate the current instance year with given precision.
+ * @method        CarbonInterface  floorYears(float $precision = 1)                                                   Truncate the current instance year with given precision.
+ * @method        CarbonInterface  ceilYear(float $precision = 1)                                                     Ceil the current instance year with given precision.
+ * @method        CarbonInterface  ceilYears(float $precision = 1)                                                    Ceil the current instance year with given precision.
+ * @method        CarbonInterface  roundMonth(float $precision = 1, string $function = "round")                       Round the current instance month with given precision using the given function.
+ * @method        CarbonInterface  roundMonths(float $precision = 1, string $function = "round")                      Round the current instance month with given precision using the given function.
+ * @method        CarbonInterface  floorMonth(float $precision = 1)                                                   Truncate the current instance month with given precision.
+ * @method        CarbonInterface  floorMonths(float $precision = 1)                                                  Truncate the current instance month with given precision.
+ * @method        CarbonInterface  ceilMonth(float $precision = 1)                                                    Ceil the current instance month with given precision.
+ * @method        CarbonInterface  ceilMonths(float $precision = 1)                                                   Ceil the current instance month with given precision.
+ * @method        CarbonInterface  roundDay(float $precision = 1, string $function = "round")                         Round the current instance day with given precision using the given function.
+ * @method        CarbonInterface  roundDays(float $precision = 1, string $function = "round")                        Round the current instance day with given precision using the given function.
+ * @method        CarbonInterface  floorDay(float $precision = 1)                                                     Truncate the current instance day with given precision.
+ * @method        CarbonInterface  floorDays(float $precision = 1)                                                    Truncate the current instance day with given precision.
+ * @method        CarbonInterface  ceilDay(float $precision = 1)                                                      Ceil the current instance day with given precision.
+ * @method        CarbonInterface  ceilDays(float $precision = 1)                                                     Ceil the current instance day with given precision.
+ * @method        CarbonInterface  roundHour(float $precision = 1, string $function = "round")                        Round the current instance hour with given precision using the given function.
+ * @method        CarbonInterface  roundHours(float $precision = 1, string $function = "round")                       Round the current instance hour with given precision using the given function.
+ * @method        CarbonInterface  floorHour(float $precision = 1)                                                    Truncate the current instance hour with given precision.
+ * @method        CarbonInterface  floorHours(float $precision = 1)                                                   Truncate the current instance hour with given precision.
+ * @method        CarbonInterface  ceilHour(float $precision = 1)                                                     Ceil the current instance hour with given precision.
+ * @method        CarbonInterface  ceilHours(float $precision = 1)                                                    Ceil the current instance hour with given precision.
+ * @method        CarbonInterface  roundMinute(float $precision = 1, string $function = "round")                      Round the current instance minute with given precision using the given function.
+ * @method        CarbonInterface  roundMinutes(float $precision = 1, string $function = "round")                     Round the current instance minute with given precision using the given function.
+ * @method        CarbonInterface  floorMinute(float $precision = 1)                                                  Truncate the current instance minute with given precision.
+ * @method        CarbonInterface  floorMinutes(float $precision = 1)                                                 Truncate the current instance minute with given precision.
+ * @method        CarbonInterface  ceilMinute(float $precision = 1)                                                   Ceil the current instance minute with given precision.
+ * @method        CarbonInterface  ceilMinutes(float $precision = 1)                                                  Ceil the current instance minute with given precision.
+ * @method        CarbonInterface  roundSecond(float $precision = 1, string $function = "round")                      Round the current instance second with given precision using the given function.
+ * @method        CarbonInterface  roundSeconds(float $precision = 1, string $function = "round")                     Round the current instance second with given precision using the given function.
+ * @method        CarbonInterface  floorSecond(float $precision = 1)                                                  Truncate the current instance second with given precision.
+ * @method        CarbonInterface  floorSeconds(float $precision = 1)                                                 Truncate the current instance second with given precision.
+ * @method        CarbonInterface  ceilSecond(float $precision = 1)                                                   Ceil the current instance second with given precision.
+ * @method        CarbonInterface  ceilSeconds(float $precision = 1)                                                  Ceil the current instance second with given precision.
+ * @method        CarbonInterface  roundMillennium(float $precision = 1, string $function = "round")                  Round the current instance millennium with given precision using the given function.
+ * @method        CarbonInterface  roundMillennia(float $precision = 1, string $function = "round")                   Round the current instance millennium with given precision using the given function.
+ * @method        CarbonInterface  floorMillennium(float $precision = 1)                                              Truncate the current instance millennium with given precision.
+ * @method        CarbonInterface  floorMillennia(float $precision = 1)                                               Truncate the current instance millennium with given precision.
+ * @method        CarbonInterface  ceilMillennium(float $precision = 1)                                               Ceil the current instance millennium with given precision.
+ * @method        CarbonInterface  ceilMillennia(float $precision = 1)                                                Ceil the current instance millennium with given precision.
+ * @method        CarbonInterface  roundCentury(float $precision = 1, string $function = "round")                     Round the current instance century with given precision using the given function.
+ * @method        CarbonInterface  roundCenturies(float $precision = 1, string $function = "round")                   Round the current instance century with given precision using the given function.
+ * @method        CarbonInterface  floorCentury(float $precision = 1)                                                 Truncate the current instance century with given precision.
+ * @method        CarbonInterface  floorCenturies(float $precision = 1)                                               Truncate the current instance century with given precision.
+ * @method        CarbonInterface  ceilCentury(float $precision = 1)                                                  Ceil the current instance century with given precision.
+ * @method        CarbonInterface  ceilCenturies(float $precision = 1)                                                Ceil the current instance century with given precision.
+ * @method        CarbonInterface  roundDecade(float $precision = 1, string $function = "round")                      Round the current instance decade with given precision using the given function.
+ * @method        CarbonInterface  roundDecades(float $precision = 1, string $function = "round")                     Round the current instance decade with given precision using the given function.
+ * @method        CarbonInterface  floorDecade(float $precision = 1)                                                  Truncate the current instance decade with given precision.
+ * @method        CarbonInterface  floorDecades(float $precision = 1)                                                 Truncate the current instance decade with given precision.
+ * @method        CarbonInterface  ceilDecade(float $precision = 1)                                                   Ceil the current instance decade with given precision.
+ * @method        CarbonInterface  ceilDecades(float $precision = 1)                                                  Ceil the current instance decade with given precision.
+ * @method        CarbonInterface  roundQuarter(float $precision = 1, string $function = "round")                     Round the current instance quarter with given precision using the given function.
+ * @method        CarbonInterface  roundQuarters(float $precision = 1, string $function = "round")                    Round the current instance quarter with given precision using the given function.
+ * @method        CarbonInterface  floorQuarter(float $precision = 1)                                                 Truncate the current instance quarter with given precision.
+ * @method        CarbonInterface  floorQuarters(float $precision = 1)                                                Truncate the current instance quarter with given precision.
+ * @method        CarbonInterface  ceilQuarter(float $precision = 1)                                                  Ceil the current instance quarter with given precision.
+ * @method        CarbonInterface  ceilQuarters(float $precision = 1)                                                 Ceil the current instance quarter with given precision.
+ * @method        CarbonInterface  roundMillisecond(float $precision = 1, string $function = "round")                 Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonInterface  roundMilliseconds(float $precision = 1, string $function = "round")                Round the current instance millisecond with given precision using the given function.
+ * @method        CarbonInterface  floorMillisecond(float $precision = 1)                                             Truncate the current instance millisecond with given precision.
+ * @method        CarbonInterface  floorMilliseconds(float $precision = 1)                                            Truncate the current instance millisecond with given precision.
+ * @method        CarbonInterface  ceilMillisecond(float $precision = 1)                                              Ceil the current instance millisecond with given precision.
+ * @method        CarbonInterface  ceilMilliseconds(float $precision = 1)                                             Ceil the current instance millisecond with given precision.
+ * @method        CarbonInterface  roundMicrosecond(float $precision = 1, string $function = "round")                 Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonInterface  roundMicroseconds(float $precision = 1, string $function = "round")                Round the current instance microsecond with given precision using the given function.
+ * @method        CarbonInterface  floorMicrosecond(float $precision = 1)                                             Truncate the current instance microsecond with given precision.
+ * @method        CarbonInterface  floorMicroseconds(float $precision = 1)                                            Truncate the current instance microsecond with given precision.
+ * @method        CarbonInterface  ceilMicrosecond(float $precision = 1)                                              Ceil the current instance microsecond with given precision.
+ * @method        CarbonInterface  ceilMicroseconds(float $precision = 1)                                             Ceil the current instance microsecond with given precision.
+ * @method        string           shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)        Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1)         Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)        Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1)         Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)   Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1)    Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ * @method        string           longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1)  Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.)
+ *
+ * </autodoc>
+ */
+trait Date
+{
+    use Boundaries;
+    use Comparison;
+    use Converter;
+    use Creator;
+    use Difference;
+    use Macro;
+    use Modifiers;
+    use Mutability;
+    use ObjectInitialisation;
+    use Options;
+    use Rounding;
+    use Serialization;
+    use Test;
+    use Timestamp;
+    use Units;
+    use Week;
+
+    /**
+     * Names of days of the week.
+     *
+     * @var array
+     */
+    protected static $days = [
+        // @call isDayOfWeek
+        CarbonInterface::SUNDAY => 'Sunday',
+        // @call isDayOfWeek
+        CarbonInterface::MONDAY => 'Monday',
+        // @call isDayOfWeek
+        CarbonInterface::TUESDAY => 'Tuesday',
+        // @call isDayOfWeek
+        CarbonInterface::WEDNESDAY => 'Wednesday',
+        // @call isDayOfWeek
+        CarbonInterface::THURSDAY => 'Thursday',
+        // @call isDayOfWeek
+        CarbonInterface::FRIDAY => 'Friday',
+        // @call isDayOfWeek
+        CarbonInterface::SATURDAY => 'Saturday',
+    ];
+
+    /**
+     * Will UTF8 encoding be used to print localized date/time ?
+     *
+     * @var bool
+     */
+    protected static $utf8 = false;
+
+    /**
+     * List of unit and magic methods associated as doc-comments.
+     *
+     * @var array
+     */
+    protected static $units = [
+        // @call setUnit
+        // @call addUnit
+        'year',
+        // @call setUnit
+        // @call addUnit
+        'month',
+        // @call setUnit
+        // @call addUnit
+        'day',
+        // @call setUnit
+        // @call addUnit
+        'hour',
+        // @call setUnit
+        // @call addUnit
+        'minute',
+        // @call setUnit
+        // @call addUnit
+        'second',
+        // @call setUnit
+        // @call addUnit
+        'milli',
+        // @call setUnit
+        // @call addUnit
+        'millisecond',
+        // @call setUnit
+        // @call addUnit
+        'micro',
+        // @call setUnit
+        // @call addUnit
+        'microsecond',
+    ];
+
+    /**
+     * Creates a DateTimeZone from a string, DateTimeZone or integer offset.
+     *
+     * @param DateTimeZone|string|int|null $object     original value to get CarbonTimeZone from it.
+     * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages.
+     *
+     * @throws InvalidTimeZoneException
+     *
+     * @return CarbonTimeZone|false
+     */
+    protected static function safeCreateDateTimeZone($object, $objectDump = null)
+    {
+        return CarbonTimeZone::instance($object, $objectDump);
+    }
+
+    /**
+     * Get the TimeZone associated with the Carbon instance (as CarbonTimeZone).
+     *
+     * @return CarbonTimeZone
+     *
+     * @link https://php.net/manual/en/datetime.gettimezone.php
+     */
+    #[ReturnTypeWillChange]
+    public function getTimezone()
+    {
+        return CarbonTimeZone::instance(parent::getTimezone());
+    }
+
+    /**
+     * List of minimum and maximums for each unit.
+     *
+     * @return array
+     */
+    protected static function getRangesByUnit(int $daysInMonth = 31): array
+    {
+        return [
+            // @call roundUnit
+            'year' => [1, 9999],
+            // @call roundUnit
+            'month' => [1, static::MONTHS_PER_YEAR],
+            // @call roundUnit
+            'day' => [1, $daysInMonth],
+            // @call roundUnit
+            'hour' => [0, static::HOURS_PER_DAY - 1],
+            // @call roundUnit
+            'minute' => [0, static::MINUTES_PER_HOUR - 1],
+            // @call roundUnit
+            'second' => [0, static::SECONDS_PER_MINUTE - 1],
+        ];
+    }
+
+    /**
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function copy()
+    {
+        return clone $this;
+    }
+
+    /**
+     * @alias copy
+     *
+     * Get a copy of the instance.
+     *
+     * @return static
+     */
+    public function clone()
+    {
+        return clone $this;
+    }
+
+    /**
+     * Clone the current instance if it's mutable.
+     *
+     * This method is convenient to ensure you don't mutate the initial object
+     * but avoid to make a useless copy of it if it's already immutable.
+     *
+     * @return static
+     */
+    public function avoidMutation(): self
+    {
+        if ($this instanceof DateTimeImmutable) {
+            return $this;
+        }
+
+        return clone $this;
+    }
+
+    /**
+     * Returns a present instance in the same timezone.
+     *
+     * @return static
+     */
+    public function nowWithSameTz()
+    {
+        return static::now($this->getTimezone());
+    }
+
+    /**
+     * Throws an exception if the given object is not a DateTime and does not implement DateTimeInterface.
+     *
+     * @param mixed        $date
+     * @param string|array $other
+     *
+     * @throws InvalidTypeException
+     */
+    protected static function expectDateTime($date, $other = [])
+    {
+        $message = 'Expected ';
+        foreach ((array) $other as $expect) {
+            $message .= "$expect, ";
+        }
+
+        if (!$date instanceof DateTime && !$date instanceof DateTimeInterface) {
+            throw new InvalidTypeException(
+                $message.'DateTime or DateTimeInterface, '.
+                (\is_object($date) ? \get_class($date) : \gettype($date)).' given'
+            );
+        }
+    }
+
+    /**
+     * Return the Carbon instance passed through, a now instance in the same timezone
+     * if null given or parse the input if string given.
+     *
+     * @param Carbon|DateTimeInterface|string|null $date
+     *
+     * @return static
+     */
+    protected function resolveCarbon($date = null)
+    {
+        if (!$date) {
+            return $this->nowWithSameTz();
+        }
+
+        if (\is_string($date)) {
+            return static::parse($date, $this->getTimezone());
+        }
+
+        static::expectDateTime($date, ['null', 'string']);
+
+        return $date instanceof self ? $date : static::instance($date);
+    }
+
+    /**
+     * Return the Carbon instance passed through, a now instance in UTC
+     * if null given or parse the input if string given (using current timezone
+     * then switching to UTC).
+     *
+     * @param Carbon|DateTimeInterface|string|null $date
+     *
+     * @return static
+     */
+    protected function resolveUTC($date = null): self
+    {
+        if (!$date) {
+            return static::now('UTC');
+        }
+
+        if (\is_string($date)) {
+            return static::parse($date, $this->getTimezone())->utc();
+        }
+
+        static::expectDateTime($date, ['null', 'string']);
+
+        return $date instanceof self ? $date : static::instance($date)->utc();
+    }
+
+    /**
+     * Return the Carbon instance passed through, a now instance in the same timezone
+     * if null given or parse the input if string given.
+     *
+     * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date
+     *
+     * @return static
+     */
+    public function carbonize($date = null)
+    {
+        if ($date instanceof DateInterval) {
+            return $this->avoidMutation()->add($date);
+        }
+
+        if ($date instanceof DatePeriod || $date instanceof CarbonPeriod) {
+            $date = $date->getStartDate();
+        }
+
+        return $this->resolveCarbon($date);
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    ///////////////////////// GETTERS AND SETTERS /////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    /**
+     * Get a part of the Carbon object
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return string|int|bool|DateTimeZone|null
+     */
+    public function __get($name)
+    {
+        return $this->get($name);
+    }
+
+    /**
+     * Get a part of the Carbon object
+     *
+     * @param string $name
+     *
+     * @throws UnknownGetterException
+     *
+     * @return string|int|bool|DateTimeZone|null
+     */
+    public function get($name)
+    {
+        static $formats = [
+            // @property int
+            'year' => 'Y',
+            // @property int
+            'yearIso' => 'o',
+            // @property int
+            // @call isSameUnit
+            'month' => 'n',
+            // @property int
+            'day' => 'j',
+            // @property int
+            'hour' => 'G',
+            // @property int
+            'minute' => 'i',
+            // @property int
+            'second' => 's',
+            // @property int
+            'micro' => 'u',
+            // @property int
+            'microsecond' => 'u',
+            // @property-read int 0 (for Sunday) through 6 (for Saturday)
+            'dayOfWeek' => 'w',
+            // @property-read int 1 (for Monday) through 7 (for Sunday)
+            'dayOfWeekIso' => 'N',
+            // @property-read int ISO-8601 week number of year, weeks starting on Monday
+            'weekOfYear' => 'W',
+            // @property-read int number of days in the given month
+            'daysInMonth' => 't',
+            // @property int|float|string seconds since the Unix Epoch
+            'timestamp' => 'U',
+            // @property-read string "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark)
+            'latinMeridiem' => 'a',
+            // @property-read string "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark)
+            'latinUpperMeridiem' => 'A',
+            // @property string the day of week in English
+            'englishDayOfWeek' => 'l',
+            // @property string the abbreviated day of week in English
+            'shortEnglishDayOfWeek' => 'D',
+            // @property string the month in English
+            'englishMonth' => 'F',
+            // @property string the abbreviated month in English
+            'shortEnglishMonth' => 'M',
+            // @property string the day of week in current locale LC_TIME
+            // @deprecated
+            //   reason: It uses OS language package and strftime() which is deprecated since PHP 8.1.
+            //   replacement: Use ->isoFormat('MMM') instead.
+            //   since: 2.55.0
+            'localeDayOfWeek' => '%A',
+            // @property string the abbreviated day of week in current locale LC_TIME
+            // @deprecated
+            //   reason: It uses OS language package and strftime() which is deprecated since PHP 8.1.
+            //   replacement: Use ->isoFormat('dddd') instead.
+            //   since: 2.55.0
+            'shortLocaleDayOfWeek' => '%a',
+            // @property string the month in current locale LC_TIME
+            // @deprecated
+            //   reason: It uses OS language package and strftime() which is deprecated since PHP 8.1.
+            //   replacement: Use ->isoFormat('ddd') instead.
+            //   since: 2.55.0
+            'localeMonth' => '%B',
+            // @property string the abbreviated month in current locale LC_TIME
+            // @deprecated
+            //   reason: It uses OS language package and strftime() which is deprecated since PHP 8.1.
+            //   replacement: Use ->isoFormat('MMMM') instead.
+            //   since: 2.55.0
+            'shortLocaleMonth' => '%b',
+            // @property-read string $timezoneAbbreviatedName the current timezone abbreviated name
+            'timezoneAbbreviatedName' => 'T',
+            // @property-read string $tzAbbrName alias of $timezoneAbbreviatedName
+            'tzAbbrName' => 'T',
+        ];
+
+        switch (true) {
+            case isset($formats[$name]):
+                $format = $formats[$name];
+                $method = str_starts_with($format, '%') ? 'formatLocalized' : 'rawFormat';
+                $value = $this->$method($format);
+
+                return is_numeric($value) ? (int) $value : $value;
+
+            // @property-read string long name of weekday translated according to Carbon locale, in english if no translation available for current language
+            case $name === 'dayName':
+                return $this->getTranslatedDayName();
+            // @property-read string short name of weekday translated according to Carbon locale, in english if no translation available for current language
+            case $name === 'shortDayName':
+                return $this->getTranslatedShortDayName();
+            // @property-read string very short name of weekday translated according to Carbon locale, in english if no translation available for current language
+            case $name === 'minDayName':
+                return $this->getTranslatedMinDayName();
+            // @property-read string long name of month translated according to Carbon locale, in english if no translation available for current language
+            case $name === 'monthName':
+                return $this->getTranslatedMonthName();
+            // @property-read string short name of month translated according to Carbon locale, in english if no translation available for current language
+            case $name === 'shortMonthName':
+                return $this->getTranslatedShortMonthName();
+            // @property-read string lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+            case $name === 'meridiem':
+                return $this->meridiem(true);
+            // @property-read string uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language
+            case $name === 'upperMeridiem':
+                return $this->meridiem();
+            // @property-read int current hour from 1 to 24
+            case $name === 'noZeroHour':
+                return $this->hour ?: 24;
+            // @property int
+            case $name === 'milliseconds':
+                // @property int
+            case $name === 'millisecond':
+            // @property int
+            case $name === 'milli':
+                return (int) floor(((int) $this->rawFormat('u')) / 1000);
+
+            // @property int 1 through 53
+            case $name === 'week':
+                return (int) $this->week();
+
+            // @property int 1 through 53
+            case $name === 'isoWeek':
+                return (int) $this->isoWeek();
+
+            // @property int year according to week format
+            case $name === 'weekYear':
+                return (int) $this->weekYear();
+
+            // @property int year according to ISO week format
+            case $name === 'isoWeekYear':
+                return (int) $this->isoWeekYear();
+
+            // @property-read int 51 through 53
+            case $name === 'weeksInYear':
+                return $this->weeksInYear();
+
+            // @property-read int 51 through 53
+            case $name === 'isoWeeksInYear':
+                return $this->isoWeeksInYear();
+
+            // @property-read int 1 through 5
+            case $name === 'weekOfMonth':
+                return (int) ceil($this->day / static::DAYS_PER_WEEK);
+
+            // @property-read int 1 through 5
+            case $name === 'weekNumberInMonth':
+                return (int) ceil(($this->day + $this->avoidMutation()->startOfMonth()->dayOfWeekIso - 1) / static::DAYS_PER_WEEK);
+
+            // @property-read int 0 through 6
+            case $name === 'firstWeekDay':
+                return $this->localTranslator ? ($this->getTranslationMessage('first_day_of_week') ?? 0) : static::getWeekStartsAt();
+
+            // @property-read int 0 through 6
+            case $name === 'lastWeekDay':
+                return $this->localTranslator ? (($this->getTranslationMessage('first_day_of_week') ?? 0) + static::DAYS_PER_WEEK - 1) % static::DAYS_PER_WEEK : static::getWeekEndsAt();
+
+            // @property int 1 through 366
+            case $name === 'dayOfYear':
+                return 1 + (int) ($this->rawFormat('z'));
+
+            // @property-read int 365 or 366
+            case $name === 'daysInYear':
+                return $this->isLeapYear() ? 366 : 365;
+
+            // @property int does a diffInYears() with default parameters
+            case $name === 'age':
+                return $this->diffInYears();
+
+            // @property-read int the quarter of this instance, 1 - 4
+            // @call isSameUnit
+            case $name === 'quarter':
+                return (int) ceil($this->month / static::MONTHS_PER_QUARTER);
+
+            // @property-read int the decade of this instance
+            // @call isSameUnit
+            case $name === 'decade':
+                return (int) ceil($this->year / static::YEARS_PER_DECADE);
+
+            // @property-read int the century of this instance
+            // @call isSameUnit
+            case $name === 'century':
+                $factor = 1;
+                $year = $this->year;
+                if ($year < 0) {
+                    $year = -$year;
+                    $factor = -1;
+                }
+
+                return (int) ($factor * ceil($year / static::YEARS_PER_CENTURY));
+
+            // @property-read int the millennium of this instance
+            // @call isSameUnit
+            case $name === 'millennium':
+                $factor = 1;
+                $year = $this->year;
+                if ($year < 0) {
+                    $year = -$year;
+                    $factor = -1;
+                }
+
+                return (int) ($factor * ceil($year / static::YEARS_PER_MILLENNIUM));
+
+            // @property int the timezone offset in seconds from UTC
+            case $name === 'offset':
+                return $this->getOffset();
+
+            // @property int the timezone offset in minutes from UTC
+            case $name === 'offsetMinutes':
+                return $this->getOffset() / static::SECONDS_PER_MINUTE;
+
+            // @property int the timezone offset in hours from UTC
+            case $name === 'offsetHours':
+                return $this->getOffset() / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR;
+
+            // @property-read bool daylight savings time indicator, true if DST, false otherwise
+            case $name === 'dst':
+                return $this->rawFormat('I') === '1';
+
+            // @property-read bool checks if the timezone is local, true if local, false otherwise
+            case $name === 'local':
+                return $this->getOffset() === $this->avoidMutation()->setTimezone(date_default_timezone_get())->getOffset();
+
+            // @property-read bool checks if the timezone is UTC, true if UTC, false otherwise
+            case $name === 'utc':
+                return $this->getOffset() === 0;
+
+            // @property CarbonTimeZone $timezone the current timezone
+            // @property CarbonTimeZone $tz alias of $timezone
+            case $name === 'timezone' || $name === 'tz':
+                return CarbonTimeZone::instance($this->getTimezone());
+
+            // @property-read string $timezoneName the current timezone name
+            // @property-read string $tzName alias of $timezoneName
+            case $name === 'timezoneName' || $name === 'tzName':
+                return $this->getTimezone()->getName();
+
+            // @property-read string locale of the current instance
+            case $name === 'locale':
+                return $this->getTranslatorLocale();
+
+            default:
+                $macro = $this->getLocalMacro('get'.ucfirst($name));
+
+                if ($macro) {
+                    return $this->executeCallableWithContext($macro);
+                }
+
+                throw new UnknownGetterException($name);
+        }
+    }
+
+    /**
+     * Check if an attribute exists on the object
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function __isset($name)
+    {
+        try {
+            $this->__get($name);
+        } catch (UnknownGetterException | ReflectionException $e) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Set a part of the Carbon object
+     *
+     * @param string                  $name
+     * @param string|int|DateTimeZone $value
+     *
+     * @throws UnknownSetterException|ReflectionException
+     *
+     * @return void
+     */
+    public function __set($name, $value)
+    {
+        if ($this->constructedObjectId === spl_object_hash($this)) {
+            $this->set($name, $value);
+
+            return;
+        }
+
+        $this->$name = $value;
+    }
+
+    /**
+     * Set a part of the Carbon object
+     *
+     * @param string|array            $name
+     * @param string|int|DateTimeZone $value
+     *
+     * @throws ImmutableException|UnknownSetterException
+     *
+     * @return $this
+     */
+    public function set($name, $value = null)
+    {
+        if ($this->isImmutable()) {
+            throw new ImmutableException(sprintf('%s class', static::class));
+        }
+
+        if (\is_array($name)) {
+            foreach ($name as $key => $value) {
+                $this->set($key, $value);
+            }
+
+            return $this;
+        }
+
+        switch ($name) {
+            case 'milliseconds':
+            case 'millisecond':
+            case 'milli':
+            case 'microseconds':
+            case 'microsecond':
+            case 'micro':
+                if (str_starts_with($name, 'milli')) {
+                    $value *= 1000;
+                }
+
+                while ($value < 0) {
+                    $this->subSecond();
+                    $value += static::MICROSECONDS_PER_SECOND;
+                }
+
+                while ($value >= static::MICROSECONDS_PER_SECOND) {
+                    $this->addSecond();
+                    $value -= static::MICROSECONDS_PER_SECOND;
+                }
+
+                $this->modify($this->rawFormat('H:i:s.').str_pad((string) round($value), 6, '0', STR_PAD_LEFT));
+
+                break;
+
+            case 'year':
+            case 'month':
+            case 'day':
+            case 'hour':
+            case 'minute':
+            case 'second':
+                [$year, $month, $day, $hour, $minute, $second] = array_map('intval', explode('-', $this->rawFormat('Y-n-j-G-i-s')));
+                $$name = $value;
+                $this->setDateTime($year, $month, $day, $hour, $minute, $second);
+
+                break;
+
+            case 'week':
+                $this->week($value);
+
+                break;
+
+            case 'isoWeek':
+                $this->isoWeek($value);
+
+                break;
+
+            case 'weekYear':
+                $this->weekYear($value);
+
+                break;
+
+            case 'isoWeekYear':
+                $this->isoWeekYear($value);
+
+                break;
+
+            case 'dayOfYear':
+                $this->addDays($value - $this->dayOfYear);
+
+                break;
+
+            case 'timestamp':
+                $this->setTimestamp($value);
+
+                break;
+
+            case 'offset':
+                $this->setTimezone(static::safeCreateDateTimeZone($value / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR));
+
+                break;
+
+            case 'offsetMinutes':
+                $this->setTimezone(static::safeCreateDateTimeZone($value / static::MINUTES_PER_HOUR));
+
+                break;
+
+            case 'offsetHours':
+                $this->setTimezone(static::safeCreateDateTimeZone($value));
+
+                break;
+
+            case 'timezone':
+            case 'tz':
+                $this->setTimezone($value);
+
+                break;
+
+            default:
+                $macro = $this->getLocalMacro('set'.ucfirst($name));
+
+                if ($macro) {
+                    $this->executeCallableWithContext($macro, $value);
+
+                    break;
+                }
+
+                if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
+                    throw new UnknownSetterException($name);
+                }
+
+                $this->$name = $value;
+        }
+
+        return $this;
+    }
+
+    protected function getTranslatedFormByRegExp($baseKey, $keySuffix, $context, $subKey, $defaultValue)
+    {
+        $key = $baseKey.$keySuffix;
+        $standaloneKey = "{$key}_standalone";
+        $baseTranslation = $this->getTranslationMessage($key);
+
+        if ($baseTranslation instanceof Closure) {
+            return $baseTranslation($this, $context, $subKey) ?: $defaultValue;
+        }
+
+        if (
+            $this->getTranslationMessage("$standaloneKey.$subKey") &&
+            (!$context || (($regExp = $this->getTranslationMessage("{$baseKey}_regexp")) && !preg_match($regExp, $context)))
+        ) {
+            $key = $standaloneKey;
+        }
+
+        return $this->getTranslationMessage("$key.$subKey", null, $defaultValue);
+    }
+
+    /**
+     * Get the translation of the current week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context      whole format string
+     * @param string      $keySuffix    "", "_short" or "_min"
+     * @param string|null $defaultValue default value if translation missing
+     *
+     * @return string
+     */
+    public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null)
+    {
+        return $this->getTranslatedFormByRegExp('weekdays', $keySuffix, $context, $this->dayOfWeek, $defaultValue ?: $this->englishDayOfWeek);
+    }
+
+    /**
+     * Get the translation of the current short week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedShortDayName($context = null)
+    {
+        return $this->getTranslatedDayName($context, '_short', $this->shortEnglishDayOfWeek);
+    }
+
+    /**
+     * Get the translation of the current abbreviated week day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedMinDayName($context = null)
+    {
+        return $this->getTranslatedDayName($context, '_min', $this->shortEnglishDayOfWeek);
+    }
+
+    /**
+     * Get the translation of the current month day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context      whole format string
+     * @param string      $keySuffix    "" or "_short"
+     * @param string|null $defaultValue default value if translation missing
+     *
+     * @return string
+     */
+    public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null)
+    {
+        return $this->getTranslatedFormByRegExp('months', $keySuffix, $context, $this->month - 1, $defaultValue ?: $this->englishMonth);
+    }
+
+    /**
+     * Get the translation of the current short month day name (with context for languages with multiple forms).
+     *
+     * @param string|null $context whole format string
+     *
+     * @return string
+     */
+    public function getTranslatedShortMonthName($context = null)
+    {
+        return $this->getTranslatedMonthName($context, '_short', $this->shortEnglishMonth);
+    }
+
+    /**
+     * Get/set the day of year.
+     *
+     * @param int|null $value new value for day of year if using as setter.
+     *
+     * @return static|int
+     */
+    public function dayOfYear($value = null)
+    {
+        $dayOfYear = $this->dayOfYear;
+
+        return $value === null ? $dayOfYear : $this->addDays($value - $dayOfYear);
+    }
+
+    /**
+     * Get/set the weekday from 0 (Sunday) to 6 (Saturday).
+     *
+     * @param int|null $value new value for weekday if using as setter.
+     *
+     * @return static|int
+     */
+    public function weekday($value = null)
+    {
+        if ($value === null) {
+            return $this->dayOfWeek;
+        }
+
+        $firstDay = (int) ($this->getTranslationMessage('first_day_of_week') ?? 0);
+        $dayOfWeek = ($this->dayOfWeek + 7 - $firstDay) % 7;
+
+        return $this->addDays((($value + 7 - $firstDay) % 7) - $dayOfWeek);
+    }
+
+    /**
+     * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday).
+     *
+     * @param int|null $value new value for weekday if using as setter.
+     *
+     * @return static|int
+     */
+    public function isoWeekday($value = null)
+    {
+        $dayOfWeekIso = $this->dayOfWeekIso;
+
+        return $value === null ? $dayOfWeekIso : $this->addDays($value - $dayOfWeekIso);
+    }
+
+    /**
+     * Set any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        new value for the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function setUnitNoOverflow($valueUnit, $value, $overflowUnit)
+    {
+        try {
+            $original = $this->avoidMutation();
+            /** @var static $date */
+            $date = $this->$valueUnit($value);
+            $end = $original->avoidMutation()->endOf($overflowUnit);
+            $start = $original->avoidMutation()->startOf($overflowUnit);
+            if ($date < $start) {
+                $date = $date->setDateTimeFrom($start);
+            } elseif ($date > $end) {
+                $date = $date->setDateTimeFrom($end);
+            }
+
+            return $date;
+        } catch (BadMethodCallException | ReflectionException $exception) {
+            throw new UnknownUnitException($valueUnit, 0, $exception);
+        }
+    }
+
+    /**
+     * Add any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        amount to add to the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function addUnitNoOverflow($valueUnit, $value, $overflowUnit)
+    {
+        return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit + $value, $overflowUnit);
+    }
+
+    /**
+     * Subtract any unit to a new value without overflowing current other unit given.
+     *
+     * @param string $valueUnit    unit name to modify
+     * @param int    $value        amount to subtract to the input unit
+     * @param string $overflowUnit unit name to not overflow
+     *
+     * @return static
+     */
+    public function subUnitNoOverflow($valueUnit, $value, $overflowUnit)
+    {
+        return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit - $value, $overflowUnit);
+    }
+
+    /**
+     * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed.
+     *
+     * @param int|null $minuteOffset
+     *
+     * @return int|static
+     */
+    public function utcOffset(int $minuteOffset = null)
+    {
+        if (\func_num_args() < 1) {
+            return $this->offsetMinutes;
+        }
+
+        return $this->setTimezone(CarbonTimeZone::createFromMinuteOffset($minuteOffset));
+    }
+
+    /**
+     * Set the date with gregorian year, month and day numbers.
+     *
+     * @see https://php.net/manual/en/datetime.setdate.php
+     *
+     * @param int $year
+     * @param int $month
+     * @param int $day
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setDate($year, $month, $day)
+    {
+        return parent::setDate((int) $year, (int) $month, (int) $day);
+    }
+
+    /**
+     * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates.
+     *
+     * @see https://php.net/manual/en/datetime.setisodate.php
+     *
+     * @param int $year
+     * @param int $week
+     * @param int $day
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setISODate($year, $week, $day = 1)
+    {
+        return parent::setISODate((int) $year, (int) $week, (int) $day);
+    }
+
+    /**
+     * Set the date and time all together.
+     *
+     * @param int $year
+     * @param int $month
+     * @param int $day
+     * @param int $hour
+     * @param int $minute
+     * @param int $second
+     * @param int $microseconds
+     *
+     * @return static
+     */
+    public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0)
+    {
+        return $this->setDate($year, $month, $day)->setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds);
+    }
+
+    /**
+     * Resets the current time of the DateTime object to a different time.
+     *
+     * @see https://php.net/manual/en/datetime.settime.php
+     *
+     * @param int $hour
+     * @param int $minute
+     * @param int $second
+     * @param int $microseconds
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTime($hour, $minute, $second = 0, $microseconds = 0)
+    {
+        return parent::setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds);
+    }
+
+    /**
+     * Set the instance's timestamp.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $unixTimestamp
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTimestamp($unixTimestamp)
+    {
+        [$timestamp, $microseconds] = self::getIntegerAndDecimalParts($unixTimestamp);
+
+        return parent::setTimestamp((int) $timestamp)->setMicroseconds((int) $microseconds);
+    }
+
+    /**
+     * Set the time by time string.
+     *
+     * @param string $time
+     *
+     * @return static
+     */
+    public function setTimeFromTimeString($time)
+    {
+        if (!str_contains($time, ':')) {
+            $time .= ':0';
+        }
+
+        return $this->modify($time);
+    }
+
+    /**
+     * @alias setTimezone
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    public function timezone($value)
+    {
+        return $this->setTimezone($value);
+    }
+
+    /**
+     * Set the timezone or returns the timezone name if no arguments passed.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static|string
+     */
+    public function tz($value = null)
+    {
+        if (\func_num_args() < 1) {
+            return $this->tzName;
+        }
+
+        return $this->setTimezone($value);
+    }
+
+    /**
+     * Set the instance's timezone from a string or object.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function setTimezone($value)
+    {
+        $tz = static::safeCreateDateTimeZone($value);
+
+        if ($tz === false && !self::isStrictModeEnabled()) {
+            $tz = new CarbonTimeZone();
+        }
+
+        return parent::setTimezone($tz);
+    }
+
+    /**
+     * Set the instance's timezone from a string or object and add/subtract the offset difference.
+     *
+     * @param DateTimeZone|string $value
+     *
+     * @return static
+     */
+    public function shiftTimezone($value)
+    {
+        $dateTimeString = $this->format('Y-m-d H:i:s.u');
+
+        return $this
+            ->setTimezone($value)
+            ->modify($dateTimeString);
+    }
+
+    /**
+     * Set the instance's timezone to UTC.
+     *
+     * @return static
+     */
+    public function utc()
+    {
+        return $this->setTimezone('UTC');
+    }
+
+    /**
+     * Set the year, month, and date for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date now if null
+     *
+     * @return static
+     */
+    public function setDateFrom($date = null)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->setDate($date->year, $date->month, $date->day);
+    }
+
+    /**
+     * Set the hour, minute, second and microseconds for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date now if null
+     *
+     * @return static
+     */
+    public function setTimeFrom($date = null)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->setTime($date->hour, $date->minute, $date->second, $date->microsecond);
+    }
+
+    /**
+     * Set the date and time for this instance to that of the passed instance.
+     *
+     * @param Carbon|DateTimeInterface $date
+     *
+     * @return static
+     */
+    public function setDateTimeFrom($date = null)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->modify($date->rawFormat('Y-m-d H:i:s.u'));
+    }
+
+    /**
+     * Get the days of the week
+     *
+     * @return array
+     */
+    public static function getDays()
+    {
+        return static::$days;
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    /////////////////////// WEEK SPECIAL DAYS /////////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    private static function getFirstDayOfWeek(): int
+    {
+        return (int) static::getTranslationMessageWith(
+            static::getTranslator(),
+            'first_day_of_week'
+        );
+    }
+
+    /**
+     * Get the first day of week
+     *
+     * @return int
+     */
+    public static function getWeekStartsAt()
+    {
+        if (static::$weekStartsAt === static::WEEK_DAY_AUTO) {
+            return self::getFirstDayOfWeek();
+        }
+
+        return static::$weekStartsAt;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the
+     *             'first_day_of_week' locale setting to change the start of week according to current locale
+     *             selected and implicitly the end of week.
+     *
+     * Set the first day of week
+     *
+     * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture).
+     *
+     * @return void
+     */
+    public static function setWeekStartsAt($day)
+    {
+        static::$weekStartsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7);
+    }
+
+    /**
+     * Get the last day of week
+     *
+     * @return int
+     */
+    public static function getWeekEndsAt()
+    {
+        if (static::$weekStartsAt === static::WEEK_DAY_AUTO) {
+            return (int) (static::DAYS_PER_WEEK - 1 + self::getFirstDayOfWeek()) % static::DAYS_PER_WEEK;
+        }
+
+        return static::$weekEndsAt;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek
+     *             or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the
+     *             start of week according to current locale selected and implicitly the end of week.
+     *
+     * Set the last day of week
+     *
+     * @param int|string $day week end day (or 'auto' to get the day before the first day of week
+     *                        from Carbon::getLocale() culture).
+     *
+     * @return void
+     */
+    public static function setWeekEndsAt($day)
+    {
+        static::$weekEndsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7);
+    }
+
+    /**
+     * Get weekend days
+     *
+     * @return array
+     */
+    public static function getWeekendDays()
+    {
+        return static::$weekendDays;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather consider week-end is always saturday and sunday, and if you have some custom
+     *             week-end days to handle, give to those days an other name and create a macro for them:
+     *
+     *             ```
+     *             Carbon::macro('isDayOff', function ($date) {
+     *                 return $date->isSunday() || $date->isMonday();
+     *             });
+     *             Carbon::macro('isNotDayOff', function ($date) {
+     *                 return !$date->isDayOff();
+     *             });
+     *             if ($someDate->isDayOff()) ...
+     *             if ($someDate->isNotDayOff()) ...
+     *             // Add 5 not-off days
+     *             $count = 5;
+     *             while ($someDate->isDayOff() || ($count-- > 0)) {
+     *                 $someDate->addDay();
+     *             }
+     *             ```
+     *
+     * Set weekend days
+     *
+     * @param array $days
+     *
+     * @return void
+     */
+    public static function setWeekendDays($days)
+    {
+        static::$weekendDays = $days;
+    }
+
+    /**
+     * Determine if a time string will produce a relative date.
+     *
+     * @param string $time
+     *
+     * @return bool true if time match a relative date, false if absolute or invalid time string
+     */
+    public static function hasRelativeKeywords($time)
+    {
+        if (!$time || strtotime($time) === false) {
+            return false;
+        }
+
+        $date1 = new DateTime('2000-01-01T00:00:00Z');
+        $date1->modify($time);
+        $date2 = new DateTime('2001-12-25T00:00:00Z');
+        $date2->modify($time);
+
+        return $date1 != $date2;
+    }
+
+    ///////////////////////////////////////////////////////////////////
+    /////////////////////// STRING FORMATTING /////////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use UTF-8 language packages on every machine.
+     *
+     * Set if UTF8 will be used for localized date/time.
+     *
+     * @param bool $utf8
+     */
+    public static function setUtf8($utf8)
+    {
+        static::$utf8 = $utf8;
+    }
+
+    /**
+     * Format the instance with the current locale.  You can set the current
+     * locale using setlocale() https://php.net/setlocale.
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat() instead.
+     *             Deprecated since 2.55.0
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function formatLocalized($format)
+    {
+        // Check for Windows to find and replace the %e modifier correctly.
+        if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+            $format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format); // @codeCoverageIgnore
+        }
+
+        $time = strtotime($this->toDateTimeString());
+        $formatted = ($this->localStrictModeEnabled ?? static::isStrictModeEnabled())
+            ? strftime($format, $time)
+            : @strftime($format, $time);
+
+        return static::$utf8
+            ? (
+                \function_exists('mb_convert_encoding')
+                ? mb_convert_encoding($formatted, 'UTF-8', mb_list_encodings())
+                : utf8_encode($formatted)
+            )
+            : $formatted;
+    }
+
+    /**
+     * Returns list of locale formats for ISO formatting.
+     *
+     * @param string|null $locale current locale used if null
+     *
+     * @return array
+     */
+    public function getIsoFormats($locale = null)
+    {
+        return [
+            'LT' => $this->getTranslationMessage('formats.LT', $locale, 'h:mm A'),
+            'LTS' => $this->getTranslationMessage('formats.LTS', $locale, 'h:mm:ss A'),
+            'L' => $this->getTranslationMessage('formats.L', $locale, 'MM/DD/YYYY'),
+            'LL' => $this->getTranslationMessage('formats.LL', $locale, 'MMMM D, YYYY'),
+            'LLL' => $this->getTranslationMessage('formats.LLL', $locale, 'MMMM D, YYYY h:mm A'),
+            'LLLL' => $this->getTranslationMessage('formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'),
+            'l' => $this->getTranslationMessage('formats.l', $locale),
+            'll' => $this->getTranslationMessage('formats.ll', $locale),
+            'lll' => $this->getTranslationMessage('formats.lll', $locale),
+            'llll' => $this->getTranslationMessage('formats.llll', $locale),
+        ];
+    }
+
+    /**
+     * Returns list of calendar formats for ISO formatting.
+     *
+     * @param string|null $locale current locale used if null
+     *
+     * @return array
+     */
+    public function getCalendarFormats($locale = null)
+    {
+        return [
+            'sameDay' => $this->getTranslationMessage('calendar.sameDay', $locale, '[Today at] LT'),
+            'nextDay' => $this->getTranslationMessage('calendar.nextDay', $locale, '[Tomorrow at] LT'),
+            'nextWeek' => $this->getTranslationMessage('calendar.nextWeek', $locale, 'dddd [at] LT'),
+            'lastDay' => $this->getTranslationMessage('calendar.lastDay', $locale, '[Yesterday at] LT'),
+            'lastWeek' => $this->getTranslationMessage('calendar.lastWeek', $locale, '[Last] dddd [at] LT'),
+            'sameElse' => $this->getTranslationMessage('calendar.sameElse', $locale, 'L'),
+        ];
+    }
+
+    /**
+     * Returns list of locale units for ISO formatting.
+     *
+     * @return array
+     */
+    public static function getIsoUnits()
+    {
+        static $units = null;
+
+        if ($units === null) {
+            $units = [
+                'OD' => ['getAltNumber', ['day']],
+                'OM' => ['getAltNumber', ['month']],
+                'OY' => ['getAltNumber', ['year']],
+                'OH' => ['getAltNumber', ['hour']],
+                'Oh' => ['getAltNumber', ['h']],
+                'Om' => ['getAltNumber', ['minute']],
+                'Os' => ['getAltNumber', ['second']],
+                'D' => 'day',
+                'DD' => ['rawFormat', ['d']],
+                'Do' => ['ordinal', ['day', 'D']],
+                'd' => 'dayOfWeek',
+                'dd' => function (CarbonInterface $date, $originalFormat = null) {
+                    return $date->getTranslatedMinDayName($originalFormat);
+                },
+                'ddd' => function (CarbonInterface $date, $originalFormat = null) {
+                    return $date->getTranslatedShortDayName($originalFormat);
+                },
+                'dddd' => function (CarbonInterface $date, $originalFormat = null) {
+                    return $date->getTranslatedDayName($originalFormat);
+                },
+                'DDD' => 'dayOfYear',
+                'DDDD' => ['getPaddedUnit', ['dayOfYear', 3]],
+                'DDDo' => ['ordinal', ['dayOfYear', 'DDD']],
+                'e' => ['weekday', []],
+                'E' => 'dayOfWeekIso',
+                'H' => ['rawFormat', ['G']],
+                'HH' => ['rawFormat', ['H']],
+                'h' => ['rawFormat', ['g']],
+                'hh' => ['rawFormat', ['h']],
+                'k' => 'noZeroHour',
+                'kk' => ['getPaddedUnit', ['noZeroHour']],
+                'hmm' => ['rawFormat', ['gi']],
+                'hmmss' => ['rawFormat', ['gis']],
+                'Hmm' => ['rawFormat', ['Gi']],
+                'Hmmss' => ['rawFormat', ['Gis']],
+                'm' => 'minute',
+                'mm' => ['rawFormat', ['i']],
+                'a' => 'meridiem',
+                'A' => 'upperMeridiem',
+                's' => 'second',
+                'ss' => ['getPaddedUnit', ['second']],
+                'S' => function (CarbonInterface $date) {
+                    return (string) floor($date->micro / 100000);
+                },
+                'SS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro / 10000), 2, '0', STR_PAD_LEFT);
+                },
+                'SSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro / 1000), 3, '0', STR_PAD_LEFT);
+                },
+                'SSSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro / 100), 4, '0', STR_PAD_LEFT);
+                },
+                'SSSSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro / 10), 5, '0', STR_PAD_LEFT);
+                },
+                'SSSSSS' => ['getPaddedUnit', ['micro', 6]],
+                'SSSSSSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro * 10), 7, '0', STR_PAD_LEFT);
+                },
+                'SSSSSSSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro * 100), 8, '0', STR_PAD_LEFT);
+                },
+                'SSSSSSSSS' => function (CarbonInterface $date) {
+                    return str_pad((string) floor($date->micro * 1000), 9, '0', STR_PAD_LEFT);
+                },
+                'M' => 'month',
+                'MM' => ['rawFormat', ['m']],
+                'MMM' => function (CarbonInterface $date, $originalFormat = null) {
+                    $month = $date->getTranslatedShortMonthName($originalFormat);
+                    $suffix = $date->getTranslationMessage('mmm_suffix');
+                    if ($suffix && $month !== $date->monthName) {
+                        $month .= $suffix;
+                    }
+
+                    return $month;
+                },
+                'MMMM' => function (CarbonInterface $date, $originalFormat = null) {
+                    return $date->getTranslatedMonthName($originalFormat);
+                },
+                'Mo' => ['ordinal', ['month', 'M']],
+                'Q' => 'quarter',
+                'Qo' => ['ordinal', ['quarter', 'M']],
+                'G' => 'isoWeekYear',
+                'GG' => ['getPaddedUnit', ['isoWeekYear']],
+                'GGG' => ['getPaddedUnit', ['isoWeekYear', 3]],
+                'GGGG' => ['getPaddedUnit', ['isoWeekYear', 4]],
+                'GGGGG' => ['getPaddedUnit', ['isoWeekYear', 5]],
+                'g' => 'weekYear',
+                'gg' => ['getPaddedUnit', ['weekYear']],
+                'ggg' => ['getPaddedUnit', ['weekYear', 3]],
+                'gggg' => ['getPaddedUnit', ['weekYear', 4]],
+                'ggggg' => ['getPaddedUnit', ['weekYear', 5]],
+                'W' => 'isoWeek',
+                'WW' => ['getPaddedUnit', ['isoWeek']],
+                'Wo' => ['ordinal', ['isoWeek', 'W']],
+                'w' => 'week',
+                'ww' => ['getPaddedUnit', ['week']],
+                'wo' => ['ordinal', ['week', 'w']],
+                'x' => ['valueOf', []],
+                'X' => 'timestamp',
+                'Y' => 'year',
+                'YY' => ['rawFormat', ['y']],
+                'YYYY' => ['getPaddedUnit', ['year', 4]],
+                'YYYYY' => ['getPaddedUnit', ['year', 5]],
+                'YYYYYY' => function (CarbonInterface $date) {
+                    return ($date->year < 0 ? '' : '+').$date->getPaddedUnit('year', 6);
+                },
+                'z' => ['rawFormat', ['T']],
+                'zz' => 'tzName',
+                'Z' => ['getOffsetString', []],
+                'ZZ' => ['getOffsetString', ['']],
+            ];
+        }
+
+        return $units;
+    }
+
+    /**
+     * Returns a unit of the instance padded with 0 by default or any other string if specified.
+     *
+     * @param string $unit      Carbon unit name
+     * @param int    $length    Length of the output (2 by default)
+     * @param string $padString String to use for padding ("0" by default)
+     * @param int    $padType   Side(s) to pad (STR_PAD_LEFT by default)
+     *
+     * @return string
+     */
+    public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = STR_PAD_LEFT)
+    {
+        return ($this->$unit < 0 ? '-' : '').str_pad((string) abs($this->$unit), $length, $padString, $padType);
+    }
+
+    /**
+     * Return a property with its ordinal.
+     *
+     * @param string      $key
+     * @param string|null $period
+     *
+     * @return string
+     */
+    public function ordinal(string $key, ?string $period = null): string
+    {
+        $number = $this->$key;
+        $result = $this->translate('ordinal', [
+            ':number' => $number,
+            ':period' => (string) $period,
+        ]);
+
+        return (string) ($result === 'ordinal' ? $number : $result);
+    }
+
+    /**
+     * Return the meridiem of the current time in the current locale.
+     *
+     * @param bool $isLower if true, returns lowercase variant if available in the current locale.
+     *
+     * @return string
+     */
+    public function meridiem(bool $isLower = false): string
+    {
+        $hour = $this->hour;
+        $index = $hour < 12 ? 0 : 1;
+
+        if ($isLower) {
+            $key = 'meridiem.'.($index + 2);
+            $result = $this->translate($key);
+
+            if ($result !== $key) {
+                return $result;
+            }
+        }
+
+        $key = "meridiem.$index";
+        $result = $this->translate($key);
+        if ($result === $key) {
+            $result = $this->translate('meridiem', [
+                ':hour' => $this->hour,
+                ':minute' => $this->minute,
+                ':isLower' => $isLower,
+            ]);
+
+            if ($result === 'meridiem') {
+                return $isLower ? $this->latinMeridiem : $this->latinUpperMeridiem;
+            }
+        } elseif ($isLower) {
+            $result = mb_strtolower($result);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Returns the alternative number for a given date property if available in the current locale.
+     *
+     * @param string $key date property
+     *
+     * @return string
+     */
+    public function getAltNumber(string $key): string
+    {
+        return $this->translateNumber(\strlen($key) > 1 ? $this->$key : $this->rawFormat('h'));
+    }
+
+    /**
+     * Format in the current language using ISO replacement patterns.
+     *
+     * @param string      $format
+     * @param string|null $originalFormat provide context if a chunk has been passed alone
+     *
+     * @return string
+     */
+    public function isoFormat(string $format, ?string $originalFormat = null): string
+    {
+        $result = '';
+        $length = mb_strlen($format);
+        $originalFormat = $originalFormat ?: $format;
+        $inEscaped = false;
+        $formats = null;
+        $units = null;
+
+        for ($i = 0; $i < $length; $i++) {
+            $char = mb_substr($format, $i, 1);
+
+            if ($char === '\\') {
+                $result .= mb_substr($format, ++$i, 1);
+
+                continue;
+            }
+
+            if ($char === '[' && !$inEscaped) {
+                $inEscaped = true;
+
+                continue;
+            }
+
+            if ($char === ']' && $inEscaped) {
+                $inEscaped = false;
+
+                continue;
+            }
+
+            if ($inEscaped) {
+                $result .= $char;
+
+                continue;
+            }
+
+            $input = mb_substr($format, $i);
+
+            if (preg_match('/^(LTS|LT|l{1,4}|L{1,4})/', $input, $match)) {
+                if ($formats === null) {
+                    $formats = $this->getIsoFormats();
+                }
+
+                $code = $match[0];
+                $sequence = $formats[$code] ?? preg_replace_callback(
+                    '/MMMM|MM|DD|dddd/',
+                    function ($code) {
+                        return mb_substr($code[0], 1);
+                    },
+                    $formats[strtoupper($code)] ?? ''
+                );
+                $rest = mb_substr($format, $i + mb_strlen($code));
+                $format = mb_substr($format, 0, $i).$sequence.$rest;
+                $length = mb_strlen($format);
+                $input = $sequence.$rest;
+            }
+
+            if (preg_match('/^'.CarbonInterface::ISO_FORMAT_REGEXP.'/', $input, $match)) {
+                $code = $match[0];
+
+                if ($units === null) {
+                    $units = static::getIsoUnits();
+                }
+
+                $sequence = $units[$code] ?? '';
+
+                if ($sequence instanceof Closure) {
+                    $sequence = $sequence($this, $originalFormat);
+                } elseif (\is_array($sequence)) {
+                    try {
+                        $sequence = $this->{$sequence[0]}(...$sequence[1]);
+                    } catch (ReflectionException | InvalidArgumentException | BadMethodCallException $e) {
+                        $sequence = '';
+                    }
+                } elseif (\is_string($sequence)) {
+                    $sequence = $this->$sequence ?? $code;
+                }
+
+                $format = mb_substr($format, 0, $i).$sequence.mb_substr($format, $i + mb_strlen($code));
+                $i += mb_strlen((string) $sequence) - 1;
+                $length = mb_strlen($format);
+                $char = $sequence;
+            }
+
+            $result .= $char;
+        }
+
+        return $result;
+    }
+
+    /**
+     * List of replacements from date() format to isoFormat().
+     *
+     * @return array
+     */
+    public static function getFormatsToIsoReplacements()
+    {
+        static $replacements = null;
+
+        if ($replacements === null) {
+            $replacements = [
+                'd' => true,
+                'D' => 'ddd',
+                'j' => true,
+                'l' => 'dddd',
+                'N' => true,
+                'S' => function ($date) {
+                    $day = $date->rawFormat('j');
+
+                    return str_replace((string) $day, '', $date->isoFormat('Do'));
+                },
+                'w' => true,
+                'z' => true,
+                'W' => true,
+                'F' => 'MMMM',
+                'm' => true,
+                'M' => 'MMM',
+                'n' => true,
+                't' => true,
+                'L' => true,
+                'o' => true,
+                'Y' => true,
+                'y' => true,
+                'a' => 'a',
+                'A' => 'A',
+                'B' => true,
+                'g' => true,
+                'G' => true,
+                'h' => true,
+                'H' => true,
+                'i' => true,
+                's' => true,
+                'u' => true,
+                'v' => true,
+                'E' => true,
+                'I' => true,
+                'O' => true,
+                'P' => true,
+                'Z' => true,
+                'c' => true,
+                'r' => true,
+                'U' => true,
+            ];
+        }
+
+        return $replacements;
+    }
+
+    /**
+     * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php)
+     * but translate words whenever possible (months, day names, etc.) using the current locale.
+     *
+     * @param string $format
+     *
+     * @return string
+     */
+    public function translatedFormat(string $format): string
+    {
+        $replacements = static::getFormatsToIsoReplacements();
+        $context = '';
+        $isoFormat = '';
+        $length = mb_strlen($format);
+
+        for ($i = 0; $i < $length; $i++) {
+            $char = mb_substr($format, $i, 1);
+
+            if ($char === '\\') {
+                $replacement = mb_substr($format, $i, 2);
+                $isoFormat .= $replacement;
+                $i++;
+
+                continue;
+            }
+
+            if (!isset($replacements[$char])) {
+                $replacement = preg_match('/^[A-Za-z]$/', $char) ? "\\$char" : $char;
+                $isoFormat .= $replacement;
+                $context .= $replacement;
+
+                continue;
+            }
+
+            $replacement = $replacements[$char];
+
+            if ($replacement === true) {
+                static $contextReplacements = null;
+
+                if ($contextReplacements === null) {
+                    $contextReplacements = [
+                        'm' => 'MM',
+                        'd' => 'DD',
+                        't' => 'D',
+                        'j' => 'D',
+                        'N' => 'e',
+                        'w' => 'e',
+                        'n' => 'M',
+                        'o' => 'YYYY',
+                        'Y' => 'YYYY',
+                        'y' => 'YY',
+                        'g' => 'h',
+                        'G' => 'H',
+                        'h' => 'hh',
+                        'H' => 'HH',
+                        'i' => 'mm',
+                        's' => 'ss',
+                    ];
+                }
+
+                $isoFormat .= '['.$this->rawFormat($char).']';
+                $context .= $contextReplacements[$char] ?? ' ';
+
+                continue;
+            }
+
+            if ($replacement instanceof Closure) {
+                $replacement = '['.$replacement($this).']';
+                $isoFormat .= $replacement;
+                $context .= $replacement;
+
+                continue;
+            }
+
+            $isoFormat .= $replacement;
+            $context .= $replacement;
+        }
+
+        return $this->isoFormat($isoFormat, $context);
+    }
+
+    /**
+     * Returns the offset hour and minute formatted with +/- and a given separator (":" by default).
+     * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first
+     * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something
+     * like "-12:00".
+     *
+     * @param string $separator string to place between hours and minutes (":" by default)
+     *
+     * @return string
+     */
+    public function getOffsetString($separator = ':')
+    {
+        $second = $this->getOffset();
+        $symbol = $second < 0 ? '-' : '+';
+        $minute = abs($second) / static::SECONDS_PER_MINUTE;
+        $hour = str_pad((string) floor($minute / static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT);
+        $minute = str_pad((string) (((int) $minute) % static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT);
+
+        return "$symbol$hour$separator$minute";
+    }
+
+    protected static function executeStaticCallable($macro, ...$parameters)
+    {
+        return static::bindMacroContext(null, function () use (&$macro, &$parameters) {
+            if ($macro instanceof Closure) {
+                $boundMacro = @Closure::bind($macro, null, static::class);
+
+                return ($boundMacro ?: $macro)(...$parameters);
+            }
+
+            return $macro(...$parameters);
+        });
+    }
+
+    /**
+     * Dynamically handle calls to the class.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @throws BadMethodCallException
+     *
+     * @return mixed
+     */
+    public static function __callStatic($method, $parameters)
+    {
+        if (!static::hasMacro($method)) {
+            foreach (static::getGenericMacros() as $callback) {
+                try {
+                    return static::executeStaticCallable($callback, $method, ...$parameters);
+                } catch (BadMethodCallException $exception) {
+                    continue;
+                }
+            }
+            if (static::isStrictModeEnabled()) {
+                throw new UnknownMethodException(sprintf('%s::%s', static::class, $method));
+            }
+
+            return null;
+        }
+
+        return static::executeStaticCallable(static::$globalMacros[$method], ...$parameters);
+    }
+
+    /**
+     * Set specified unit to new given value.
+     *
+     * @param string $unit  year, month, day, hour, minute, second or microsecond
+     * @param int    $value new value for given unit
+     *
+     * @return static
+     */
+    public function setUnit($unit, $value = null)
+    {
+        $unit = static::singularUnit($unit);
+        $dateUnits = ['year', 'month', 'day'];
+        if (\in_array($unit, $dateUnits)) {
+            return $this->setDate(...array_map(function ($name) use ($unit, $value) {
+                return (int) ($name === $unit ? $value : $this->$name);
+            }, $dateUnits));
+        }
+
+        $units = ['hour', 'minute', 'second', 'micro'];
+        if ($unit === 'millisecond' || $unit === 'milli') {
+            $value *= 1000;
+            $unit = 'micro';
+        } elseif ($unit === 'microsecond') {
+            $unit = 'micro';
+        }
+
+        return $this->setTime(...array_map(function ($name) use ($unit, $value) {
+            return (int) ($name === $unit ? $value : $this->$name);
+        }, $units));
+    }
+
+    /**
+     * Returns standardized singular of a given singular/plural unit name (in English).
+     *
+     * @param string $unit
+     *
+     * @return string
+     */
+    public static function singularUnit(string $unit): string
+    {
+        $unit = rtrim(mb_strtolower($unit), 's');
+
+        if ($unit === 'centurie') {
+            return 'century';
+        }
+
+        if ($unit === 'millennia') {
+            return 'millennium';
+        }
+
+        return $unit;
+    }
+
+    /**
+     * Returns standardized plural of a given singular/plural unit name (in English).
+     *
+     * @param string $unit
+     *
+     * @return string
+     */
+    public static function pluralUnit(string $unit): string
+    {
+        $unit = rtrim(strtolower($unit), 's');
+
+        if ($unit === 'century') {
+            return 'centuries';
+        }
+
+        if ($unit === 'millennium' || $unit === 'millennia') {
+            return 'millennia';
+        }
+
+        return "{$unit}s";
+    }
+
+    protected function executeCallable($macro, ...$parameters)
+    {
+        if ($macro instanceof Closure) {
+            $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class);
+
+            return ($boundMacro ?: $macro)(...$parameters);
+        }
+
+        return $macro(...$parameters);
+    }
+
+    protected function executeCallableWithContext($macro, ...$parameters)
+    {
+        return static::bindMacroContext($this, function () use (&$macro, &$parameters) {
+            return $this->executeCallable($macro, ...$parameters);
+        });
+    }
+
+    protected static function getGenericMacros()
+    {
+        foreach (static::$globalGenericMacros as $list) {
+            foreach ($list as $macro) {
+                yield $macro;
+            }
+        }
+    }
+
+    /**
+     * Dynamically handle calls to the class.
+     *
+     * @param string $method     magic method name called
+     * @param array  $parameters parameters list
+     *
+     * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable
+     *
+     * @return mixed
+     */
+    public function __call($method, $parameters)
+    {
+        $diffSizes = [
+            // @mode diffForHumans
+            'short' => true,
+            // @mode diffForHumans
+            'long' => false,
+        ];
+        $diffSyntaxModes = [
+            // @call diffForHumans
+            'Absolute' => CarbonInterface::DIFF_ABSOLUTE,
+            // @call diffForHumans
+            'Relative' => CarbonInterface::DIFF_RELATIVE_AUTO,
+            // @call diffForHumans
+            'RelativeToNow' => CarbonInterface::DIFF_RELATIVE_TO_NOW,
+            // @call diffForHumans
+            'RelativeToOther' => CarbonInterface::DIFF_RELATIVE_TO_OTHER,
+        ];
+        $sizePattern = implode('|', array_keys($diffSizes));
+        $syntaxPattern = implode('|', array_keys($diffSyntaxModes));
+
+        if (preg_match("/^(?<size>$sizePattern)(?<syntax>$syntaxPattern)DiffForHumans$/", $method, $match)) {
+            $dates = array_filter($parameters, function ($parameter) {
+                return $parameter instanceof DateTimeInterface;
+            });
+            $other = null;
+
+            if (\count($dates)) {
+                $key = key($dates);
+                $other = current($dates);
+                array_splice($parameters, $key, 1);
+            }
+
+            return $this->diffForHumans($other, $diffSyntaxModes[$match['syntax']], $diffSizes[$match['size']], ...$parameters);
+        }
+
+        $roundedValue = $this->callRoundMethod($method, $parameters);
+
+        if ($roundedValue !== null) {
+            return $roundedValue;
+        }
+
+        $unit = rtrim($method, 's');
+
+        if (str_starts_with($unit, 'is')) {
+            $word = substr($unit, 2);
+
+            if (\in_array($word, static::$days, true)) {
+                return $this->isDayOfWeek($word);
+            }
+
+            switch ($word) {
+                // @call is Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.)
+                case 'Utc':
+                case 'UTC':
+                    return $this->utc;
+                // @call is Check if the current instance has non-UTC timezone.
+                case 'Local':
+                    return $this->local;
+                // @call is Check if the current instance is a valid date.
+                case 'Valid':
+                    return $this->year !== 0;
+                // @call is Check if the current instance is in a daylight saving time.
+                case 'DST':
+                    return $this->dst;
+            }
+        }
+
+        $action = substr($unit, 0, 3);
+        $overflow = null;
+
+        if ($action === 'set') {
+            $unit = strtolower(substr($unit, 3));
+        }
+
+        if (\in_array($unit, static::$units, true)) {
+            return $this->setUnit($unit, ...$parameters);
+        }
+
+        if ($action === 'add' || $action === 'sub') {
+            $unit = substr($unit, 3);
+
+            if (str_starts_with($unit, 'Real')) {
+                $unit = static::singularUnit(substr($unit, 4));
+
+                return $this->{"{$action}RealUnit"}($unit, ...$parameters);
+            }
+
+            if (preg_match('/^(Month|Quarter|Year|Decade|Century|Centurie|Millennium|Millennia)s?(No|With|Without|WithNo)Overflow$/', $unit, $match)) {
+                $unit = $match[1];
+                $overflow = $match[2] === 'With';
+            }
+
+            $unit = static::singularUnit($unit);
+        }
+
+        if (static::isModifiableUnit($unit)) {
+            return $this->{"{$action}Unit"}($unit, $parameters[0] ?? 1, $overflow);
+        }
+
+        $sixFirstLetters = substr($unit, 0, 6);
+        $factor = -1;
+
+        if ($sixFirstLetters === 'isLast') {
+            $sixFirstLetters = 'isNext';
+            $factor = 1;
+        }
+
+        if ($sixFirstLetters === 'isNext') {
+            $lowerUnit = strtolower(substr($unit, 6));
+
+            if (static::isModifiableUnit($lowerUnit)) {
+                return $this->copy()->addUnit($lowerUnit, $factor, false)->isSameUnit($lowerUnit, ...$parameters);
+            }
+        }
+
+        if ($sixFirstLetters === 'isSame') {
+            try {
+                return $this->isSameUnit(strtolower(substr($unit, 6)), ...$parameters);
+            } catch (BadComparisonUnitException $exception) {
+                // Try next
+            }
+        }
+
+        if (str_starts_with($unit, 'isCurrent')) {
+            try {
+                return $this->isCurrentUnit(strtolower(substr($unit, 9)));
+            } catch (BadComparisonUnitException | BadMethodCallException $exception) {
+                // Try next
+            }
+        }
+
+        if (str_ends_with($method, 'Until')) {
+            try {
+                $unit = static::singularUnit(substr($method, 0, -5));
+
+                return $this->range($parameters[0] ?? $this, $parameters[1] ?? 1, $unit);
+            } catch (InvalidArgumentException $exception) {
+                // Try macros
+            }
+        }
+
+        return static::bindMacroContext($this, function () use (&$method, &$parameters) {
+            $macro = $this->getLocalMacro($method);
+
+            if (!$macro) {
+                foreach ([$this->localGenericMacros ?: [], static::getGenericMacros()] as $list) {
+                    foreach ($list as $callback) {
+                        try {
+                            return $this->executeCallable($callback, $method, ...$parameters);
+                        } catch (BadMethodCallException $exception) {
+                            continue;
+                        }
+                    }
+                }
+
+                if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
+                    throw new UnknownMethodException($method);
+                }
+
+                return null;
+            }
+
+            return $this->executeCallable($macro, ...$parameters);
+        });
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php
new file mode 100644
index 00000000..5acc6f5c
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php
@@ -0,0 +1,61 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+trait DeprecatedProperties
+{
+    /**
+     * the day of week in current locale LC_TIME
+     *
+     * @var string
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat('MMM') instead.
+     *             Deprecated since 2.55.0
+     */
+    public $localeDayOfWeek;
+
+    /**
+     * the abbreviated day of week in current locale LC_TIME
+     *
+     * @var string
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat('dddd') instead.
+     *             Deprecated since 2.55.0
+     */
+    public $shortLocaleDayOfWeek;
+
+    /**
+     * the month in current locale LC_TIME
+     *
+     * @var string
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat('ddd') instead.
+     *             Deprecated since 2.55.0
+     */
+    public $localeMonth;
+
+    /**
+     * the abbreviated month in current locale LC_TIME
+     *
+     * @var string
+     *
+     * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1.
+     *             Use ->isoFormat('MMMM') instead.
+     *             Deprecated since 2.55.0
+     */
+    public $shortLocaleMonth;
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
new file mode 100644
index 00000000..e7045dc8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php
@@ -0,0 +1,1169 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterface;
+use Carbon\CarbonInterval;
+use Carbon\CarbonPeriod;
+use Carbon\Translator;
+use Closure;
+use DateInterval;
+use DateTimeInterface;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Difference.
+ *
+ * Depends on the following methods:
+ *
+ * @method bool lessThan($date)
+ * @method static copy()
+ * @method static resolveCarbon($date = null)
+ * @method static Translator translator()
+ */
+trait Difference
+{
+    /**
+     * @codeCoverageIgnore
+     *
+     * @param CarbonInterval $diff
+     */
+    protected static function fixNegativeMicroseconds(CarbonInterval $diff)
+    {
+        if ($diff->s !== 0 || $diff->i !== 0 || $diff->h !== 0 || $diff->d !== 0 || $diff->m !== 0 || $diff->y !== 0) {
+            $diff->f = (round($diff->f * 1000000) + 1000000) / 1000000;
+            $diff->s--;
+
+            if ($diff->s < 0) {
+                $diff->s += 60;
+                $diff->i--;
+
+                if ($diff->i < 0) {
+                    $diff->i += 60;
+                    $diff->h--;
+
+                    if ($diff->h < 0) {
+                        $diff->h += 24;
+                        $diff->d--;
+
+                        if ($diff->d < 0) {
+                            $diff->d += 30;
+                            $diff->m--;
+
+                            if ($diff->m < 0) {
+                                $diff->m += 12;
+                                $diff->y--;
+                            }
+                        }
+                    }
+                }
+            }
+
+            return;
+        }
+
+        $diff->f *= -1;
+        $diff->invert();
+    }
+
+    /**
+     * @param DateInterval $diff
+     * @param bool         $absolute
+     *
+     * @return CarbonInterval
+     */
+    protected static function fixDiffInterval(DateInterval $diff, $absolute)
+    {
+        $diff = CarbonInterval::instance($diff);
+
+        // Work-around for https://bugs.php.net/bug.php?id=77145
+        // @codeCoverageIgnoreStart
+        if ($diff->f > 0 && $diff->y === -1 && $diff->m === 11 && $diff->d >= 27 && $diff->h === 23 && $diff->i === 59 && $diff->s === 59) {
+            $diff->y = 0;
+            $diff->m = 0;
+            $diff->d = 0;
+            $diff->h = 0;
+            $diff->i = 0;
+            $diff->s = 0;
+            $diff->f = (1000000 - round($diff->f * 1000000)) / 1000000;
+            $diff->invert();
+        } elseif ($diff->f < 0) {
+            static::fixNegativeMicroseconds($diff);
+        }
+        // @codeCoverageIgnoreEnd
+
+        if ($absolute && $diff->invert) {
+            $diff->invert();
+        }
+
+        return $diff;
+    }
+
+    /**
+     * Get the difference as a DateInterval instance.
+     * Return relative interval (negative if $absolute flag is not set to true and the given date is before
+     * current one).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return DateInterval
+     */
+    #[ReturnTypeWillChange]
+    public function diff($date = null, $absolute = false)
+    {
+        $other = $this->resolveCarbon($date);
+
+        // Work-around for https://bugs.php.net/bug.php?id=81458
+        // It was initially introduced for https://bugs.php.net/bug.php?id=80998
+        // The very specific case of 80998 was fixed in PHP 8.1beta3, but it introduced 81458
+        // So we still need to keep this for now
+        // @codeCoverageIgnoreStart
+        if (version_compare(PHP_VERSION, '8.1.0-dev', '>=') && $other->tz !== $this->tz) {
+            $other = $other->avoidMutation()->tz($this->tz);
+        }
+        // @codeCoverageIgnoreEnd
+
+        return parent::diff($other, (bool) $absolute);
+    }
+
+    /**
+     * Get the difference as a CarbonInterval instance.
+     * Return relative interval (negative if $absolute flag is not set to true and the given date is before
+     * current one).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return CarbonInterval
+     */
+    public function diffAsCarbonInterval($date = null, $absolute = true)
+    {
+        return static::fixDiffInterval($this->diff($this->resolveCarbon($date), $absolute), $absolute);
+    }
+
+    /**
+     * Get the difference in years
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInYears($date = null, $absolute = true)
+    {
+        return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%y');
+    }
+
+    /**
+     * Get the difference in quarters rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInQuarters($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInMonths($date, $absolute) / static::MONTHS_PER_QUARTER);
+    }
+
+    /**
+     * Get the difference in months rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMonths($date = null, $absolute = true)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->diffInYears($date, $absolute) * static::MONTHS_PER_YEAR + (int) $this->diff($date, $absolute)->format('%r%m');
+    }
+
+    /**
+     * Get the difference in weeks rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeeks($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInDays($date, $absolute) / static::DAYS_PER_WEEK);
+    }
+
+    /**
+     * Get the difference in days rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInDays($date = null, $absolute = true)
+    {
+        return $this->getIntervalDayDiff($this->diff($this->resolveCarbon($date), $absolute));
+    }
+
+    /**
+     * Get the difference in days using a filter closure rounded down.
+     *
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true)
+    {
+        return $this->diffFiltered(CarbonInterval::day(), $callback, $date, $absolute);
+    }
+
+    /**
+     * Get the difference in hours using a filter closure rounded down.
+     *
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true)
+    {
+        return $this->diffFiltered(CarbonInterval::hour(), $callback, $date, $absolute);
+    }
+
+    /**
+     * Get the difference by the given interval using a filter closure.
+     *
+     * @param CarbonInterval                                         $ci       An interval to traverse by
+     * @param Closure                                                $callback
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true)
+    {
+        $start = $this;
+        $end = $this->resolveCarbon($date);
+        $inverse = false;
+
+        if ($end < $start) {
+            $start = $end;
+            $end = $this;
+            $inverse = true;
+        }
+
+        $options = CarbonPeriod::EXCLUDE_END_DATE | ($this->isMutable() ? 0 : CarbonPeriod::IMMUTABLE);
+        $diff = $ci->toPeriod($start, $end, $options)->filter($callback)->count();
+
+        return $inverse && !$absolute ? -$diff : $diff;
+    }
+
+    /**
+     * Get the difference in weekdays rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeekdays($date = null, $absolute = true)
+    {
+        return $this->diffInDaysFiltered(function (CarbonInterface $date) {
+            return $date->isWeekday();
+        }, $date, $absolute);
+    }
+
+    /**
+     * Get the difference in weekend days using a filter rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInWeekendDays($date = null, $absolute = true)
+    {
+        return $this->diffInDaysFiltered(function (CarbonInterface $date) {
+            return $date->isWeekend();
+        }, $date, $absolute);
+    }
+
+    /**
+     * Get the difference in hours rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInHours($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR);
+    }
+
+    /**
+     * Get the difference in hours rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealHours($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR);
+    }
+
+    /**
+     * Get the difference in minutes rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMinutes($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE);
+    }
+
+    /**
+     * Get the difference in minutes rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMinutes($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE);
+    }
+
+    /**
+     * Get the difference in seconds rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInSeconds($date = null, $absolute = true)
+    {
+        $diff = $this->diff($date);
+
+        if ($diff->days === 0) {
+            $diff = static::fixDiffInterval($diff, $absolute);
+        }
+
+        $value = (((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) +
+            $diff->h) * static::MINUTES_PER_HOUR +
+            $diff->i) * static::SECONDS_PER_MINUTE +
+            $diff->s;
+
+        return $absolute || !$diff->invert ? $value : -$value;
+    }
+
+    /**
+     * Get the difference in microseconds.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMicroseconds($date = null, $absolute = true)
+    {
+        $diff = $this->diff($date);
+        $value = (int) round(((((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) +
+            $diff->h) * static::MINUTES_PER_HOUR +
+            $diff->i) * static::SECONDS_PER_MINUTE +
+            ($diff->f + $diff->s)) * static::MICROSECONDS_PER_SECOND);
+
+        return $absolute || !$diff->invert ? $value : -$value;
+    }
+
+    /**
+     * Get the difference in milliseconds rounded down.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInMilliseconds($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND);
+    }
+
+    /**
+     * Get the difference in seconds using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealSeconds($date = null, $absolute = true)
+    {
+        /** @var CarbonInterface $date */
+        $date = $this->resolveCarbon($date);
+        $value = $date->getTimestamp() - $this->getTimestamp();
+
+        return $absolute ? abs($value) : $value;
+    }
+
+    /**
+     * Get the difference in microseconds using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMicroseconds($date = null, $absolute = true)
+    {
+        /** @var CarbonInterface $date */
+        $date = $this->resolveCarbon($date);
+        $value = ($date->timestamp - $this->timestamp) * static::MICROSECONDS_PER_SECOND +
+            $date->micro - $this->micro;
+
+        return $absolute ? abs($value) : $value;
+    }
+
+    /**
+     * Get the difference in milliseconds rounded down using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return int
+     */
+    public function diffInRealMilliseconds($date = null, $absolute = true)
+    {
+        return (int) ($this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND);
+    }
+
+    /**
+     * Get the difference in seconds as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInSeconds($date = null, $absolute = true)
+    {
+        return (float) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND);
+    }
+
+    /**
+     * Get the difference in minutes as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInMinutes($date = null, $absolute = true)
+    {
+        return $this->floatDiffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE;
+    }
+
+    /**
+     * Get the difference in hours as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInHours($date = null, $absolute = true)
+    {
+        return $this->floatDiffInMinutes($date, $absolute) / static::MINUTES_PER_HOUR;
+    }
+
+    /**
+     * Get the difference in days as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInDays($date = null, $absolute = true)
+    {
+        $hoursDiff = $this->floatDiffInHours($date, $absolute);
+        $interval = $this->diff($date, $absolute);
+
+        if ($interval->y === 0 && $interval->m === 0 && $interval->d === 0) {
+            return $hoursDiff / static::HOURS_PER_DAY;
+        }
+
+        $daysDiff = $this->getIntervalDayDiff($interval);
+
+        return $daysDiff + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY;
+    }
+
+    /**
+     * Get the difference in weeks as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInWeeks($date = null, $absolute = true)
+    {
+        return $this->floatDiffInDays($date, $absolute) / static::DAYS_PER_WEEK;
+    }
+
+    /**
+     * Get the difference in months as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInMonths($date = null, $absolute = true)
+    {
+        $start = $this;
+        $end = $this->resolveCarbon($date);
+        $ascending = ($start <= $end);
+        $sign = $absolute || $ascending ? 1 : -1;
+        if (!$ascending) {
+            [$start, $end] = [$end, $start];
+        }
+        $monthsDiff = $start->diffInMonths($end);
+        /** @var Carbon|CarbonImmutable $floorEnd */
+        $floorEnd = $start->avoidMutation()->addMonths($monthsDiff);
+
+        if ($floorEnd >= $end) {
+            return $sign * $monthsDiff;
+        }
+
+        /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */
+        $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth();
+
+        if ($startOfMonthAfterFloorEnd > $end) {
+            return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInMonth);
+        }
+
+        return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInDays($end) / $end->daysInMonth);
+    }
+
+    /**
+     * Get the difference in year as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInYears($date = null, $absolute = true)
+    {
+        $start = $this;
+        $end = $this->resolveCarbon($date);
+        $ascending = ($start <= $end);
+        $sign = $absolute || $ascending ? 1 : -1;
+        if (!$ascending) {
+            [$start, $end] = [$end, $start];
+        }
+        $yearsDiff = $start->diffInYears($end);
+        /** @var Carbon|CarbonImmutable $floorEnd */
+        $floorEnd = $start->avoidMutation()->addYears($yearsDiff);
+
+        if ($floorEnd >= $end) {
+            return $sign * $yearsDiff;
+        }
+
+        /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */
+        $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear();
+
+        if ($startOfYearAfterFloorEnd > $end) {
+            return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInYear);
+        }
+
+        return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInDays($end) / $end->daysInYear);
+    }
+
+    /**
+     * Get the difference in seconds as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealSeconds($date = null, $absolute = true)
+    {
+        return $this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND;
+    }
+
+    /**
+     * Get the difference in minutes as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealMinutes($date = null, $absolute = true)
+    {
+        return $this->floatDiffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE;
+    }
+
+    /**
+     * Get the difference in hours as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealHours($date = null, $absolute = true)
+    {
+        return $this->floatDiffInRealMinutes($date, $absolute) / static::MINUTES_PER_HOUR;
+    }
+
+    /**
+     * Get the difference in days as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealDays($date = null, $absolute = true)
+    {
+        $date = $this->resolveUTC($date);
+        $utc = $this->avoidMutation()->utc();
+        $hoursDiff = $utc->floatDiffInRealHours($date, $absolute);
+
+        return ($hoursDiff < 0 ? -1 : 1) * $utc->diffInDays($date) + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY;
+    }
+
+    /**
+     * Get the difference in weeks as float (microsecond-precision).
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealWeeks($date = null, $absolute = true)
+    {
+        return $this->floatDiffInRealDays($date, $absolute) / static::DAYS_PER_WEEK;
+    }
+
+    /**
+     * Get the difference in months as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealMonths($date = null, $absolute = true)
+    {
+        $start = $this;
+        $end = $this->resolveCarbon($date);
+        $ascending = ($start <= $end);
+        $sign = $absolute || $ascending ? 1 : -1;
+        if (!$ascending) {
+            [$start, $end] = [$end, $start];
+        }
+        $monthsDiff = $start->diffInMonths($end);
+        /** @var Carbon|CarbonImmutable $floorEnd */
+        $floorEnd = $start->avoidMutation()->addMonths($monthsDiff);
+
+        if ($floorEnd >= $end) {
+            return $sign * $monthsDiff;
+        }
+
+        /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */
+        $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth();
+
+        if ($startOfMonthAfterFloorEnd > $end) {
+            return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInMonth);
+        }
+
+        return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInMonth);
+    }
+
+    /**
+     * Get the difference in year as float (microsecond-precision) using timestamps.
+     *
+     * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date
+     * @param bool                                                   $absolute Get the absolute of the difference
+     *
+     * @return float
+     */
+    public function floatDiffInRealYears($date = null, $absolute = true)
+    {
+        $start = $this;
+        $end = $this->resolveCarbon($date);
+        $ascending = ($start <= $end);
+        $sign = $absolute || $ascending ? 1 : -1;
+        if (!$ascending) {
+            [$start, $end] = [$end, $start];
+        }
+        $yearsDiff = $start->diffInYears($end);
+        /** @var Carbon|CarbonImmutable $floorEnd */
+        $floorEnd = $start->avoidMutation()->addYears($yearsDiff);
+
+        if ($floorEnd >= $end) {
+            return $sign * $yearsDiff;
+        }
+
+        /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */
+        $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear();
+
+        if ($startOfYearAfterFloorEnd > $end) {
+            return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInYear);
+        }
+
+        return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInYear);
+    }
+
+    /**
+     * The number of seconds since midnight.
+     *
+     * @return int
+     */
+    public function secondsSinceMidnight()
+    {
+        return $this->diffInSeconds($this->avoidMutation()->startOfDay());
+    }
+
+    /**
+     * The number of seconds until 23:59:59.
+     *
+     * @return int
+     */
+    public function secondsUntilEndOfDay()
+    {
+        return $this->diffInSeconds($this->avoidMutation()->endOfDay());
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @example
+     * ```
+     * echo Carbon::tomorrow()->diffForHumans() . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n";
+     * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n";
+     * ```
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'skip' entry, list of units to skip (array of strings or a single string,
+     *                                                             ` it can be the unit name (singular or plural) or its shortcut
+     *                                                             ` (y, m, w, d, h, min, s, ms, µs).
+     *                                                             - 'aUnit' entry, prefer "an hour" over "1 hour" if true
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             - 'minimumUnit' entry determines the smallest unit of time to display can be long or
+     *                                                             `  short form of the units, e.g. 'hour' or 'h' (default value: s)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        /* @var CarbonInterface $this */
+        if (\is_array($other)) {
+            $other['syntax'] = \array_key_exists('syntax', $other) ? $other['syntax'] : $syntax;
+            $syntax = $other;
+            $other = $syntax['other'] ?? null;
+        }
+
+        $intSyntax = &$syntax;
+        if (\is_array($syntax)) {
+            $syntax['syntax'] = $syntax['syntax'] ?? null;
+            $intSyntax = &$syntax['syntax'];
+        }
+        $intSyntax = (int) ($intSyntax ?? static::DIFF_RELATIVE_AUTO);
+        $intSyntax = $intSyntax === static::DIFF_RELATIVE_AUTO && $other === null ? static::DIFF_RELATIVE_TO_NOW : $intSyntax;
+
+        $parts = min(7, max(1, (int) $parts));
+
+        return $this->diffAsCarbonInterval($other, false)
+            ->setLocalTranslator($this->getLocalTranslator())
+            ->forHumans($syntax, (bool) $short, $parts, $options ?? $this->localHumanDiffOptions ?? static::getHumanDiffOptions());
+    }
+
+    /**
+     * @alias diffForHumans
+     *
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        return $this->diffForHumans($other, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * @alias diffForHumans
+     *
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     */
+    public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        return $this->diffForHumans($other, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given (or now if null given) to current instance.
+     *
+     * When comparing a value in the past to default now:
+     * 1 hour from now
+     * 5 months from now
+     *
+     * When comparing a value in the future to default now:
+     * 1 hour ago
+     * 5 months ago
+     *
+     * When comparing a value in the past to another value:
+     * 1 hour after
+     * 5 months after
+     *
+     * When comparing a value in the future to another value:
+     * 1 hour before
+     * 5 months before
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        if (!$syntax && !$other) {
+            $syntax = CarbonInterface::DIFF_RELATIVE_TO_NOW;
+        }
+
+        return $this->resolveCarbon($other)->diffForHumans($this, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * @alias to
+     *
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given (or now if null given) to current instance.
+     *
+     * @param Carbon|\DateTimeInterface|string|array|null $other   if array passed, will be used as parameters array, see $syntax below;
+     *                                                             if null passed, now will be used as comparison reference;
+     *                                                             if any other type, it will be converted to date and used as reference.
+     * @param int|array                                   $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                                                             - 'syntax' entry (see below)
+     *                                                             - 'short' entry (see below)
+     *                                                             - 'parts' entry (see below)
+     *                                                             - 'options' entry (see below)
+     *                                                             - 'join' entry determines how to join multiple parts of the string
+     *                                                             `  - if $join is a string, it's used as a joiner glue
+     *                                                             `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                                                             `  - if $join is an array, the first item will be the default glue, and the second item
+     *                                                             `    will be used instead of the glue for the last item
+     *                                                             `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                                                             `  - if $join is missing, a space will be used as glue
+     *                                                             - 'other' entry (see above)
+     *                                                             if int passed, it add modifiers:
+     *                                                             Possible values:
+     *                                                             - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                                                             - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                                                             Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool                                        $short   displays short format of time units
+     * @param int                                         $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int                                         $options human diff options
+     *
+     * @return string
+     */
+    public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        return $this->to($other, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from current
+     * instance to now.
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single unit)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function fromNow($syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        $other = null;
+
+        if ($syntax instanceof DateTimeInterface) {
+            [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null);
+        }
+
+        return $this->from($other, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given to now
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single part)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function toNow($syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        return $this->to(null, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from an other
+     * instance given to now
+     *
+     * @param int|array $syntax  if array passed, parameters will be extracted from it, the array may contains:
+     *                           - 'syntax' entry (see below)
+     *                           - 'short' entry (see below)
+     *                           - 'parts' entry (see below)
+     *                           - 'options' entry (see below)
+     *                           - 'join' entry determines how to join multiple parts of the string
+     *                           `  - if $join is a string, it's used as a joiner glue
+     *                           `  - if $join is a callable/closure, it get the list of string and should return a string
+     *                           `  - if $join is an array, the first item will be the default glue, and the second item
+     *                           `    will be used instead of the glue for the last item
+     *                           `  - if $join is true, it will be guessed from the locale ('list' translation file entry)
+     *                           `  - if $join is missing, a space will be used as glue
+     *                           if int passed, it add modifiers:
+     *                           Possible values:
+     *                           - CarbonInterface::DIFF_ABSOLUTE          no modifiers
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_NOW   add ago/from now modifier
+     *                           - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier
+     *                           Default value: CarbonInterface::DIFF_ABSOLUTE
+     * @param bool      $short   displays short format of time units
+     * @param int       $parts   maximum number of parts to display (default value: 1: single part)
+     * @param int       $options human diff options
+     *
+     * @return string
+     */
+    public function ago($syntax = null, $short = false, $parts = 1, $options = null)
+    {
+        $other = null;
+
+        if ($syntax instanceof DateTimeInterface) {
+            [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null);
+        }
+
+        return $this->from($other, $syntax, $short, $parts, $options);
+    }
+
+    /**
+     * Get the difference in a human readable format in the current locale from current instance to an other
+     * instance given (or now if null given).
+     *
+     * @return string
+     */
+    public function timespan($other = null, $timezone = null)
+    {
+        if (!$other instanceof DateTimeInterface) {
+            $other = static::parse($other, $timezone);
+        }
+
+        return $this->diffForHumans($other, [
+            'join' => ', ',
+            'syntax' => CarbonInterface::DIFF_ABSOLUTE,
+            'options' => CarbonInterface::NO_ZERO_DIFF,
+            'parts' => -1,
+        ]);
+    }
+
+    /**
+     * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days,
+     * or a calendar date (e.g. "10/29/2017") otherwise.
+     *
+     * Language, date and time formats will change according to the current locale.
+     *
+     * @param Carbon|\DateTimeInterface|string|null $referenceTime
+     * @param array                                 $formats
+     *
+     * @return string
+     */
+    public function calendar($referenceTime = null, array $formats = [])
+    {
+        /** @var CarbonInterface $current */
+        $current = $this->avoidMutation()->startOfDay();
+        /** @var CarbonInterface $other */
+        $other = $this->resolveCarbon($referenceTime)->avoidMutation()->setTimezone($this->getTimezone())->startOfDay();
+        $diff = $other->diffInDays($current, false);
+        $format = $diff < -6 ? 'sameElse' : (
+            $diff < -1 ? 'lastWeek' : (
+                $diff < 0 ? 'lastDay' : (
+                    $diff < 1 ? 'sameDay' : (
+                        $diff < 2 ? 'nextDay' : (
+                            $diff < 7 ? 'nextWeek' : 'sameElse'
+                        )
+                    )
+                )
+            )
+        );
+        $format = array_merge($this->getCalendarFormats(), $formats)[$format];
+        if ($format instanceof Closure) {
+            $format = $format($current, $other) ?? '';
+        }
+
+        return $this->isoFormat((string) $format);
+    }
+
+    private function getIntervalDayDiff(DateInterval $interval): int
+    {
+        $daysDiff = (int) $interval->format('%a');
+        $sign = $interval->format('%r') === '-' ? -1 : 1;
+
+        if (\is_int($interval->days) &&
+            $interval->y === 0 &&
+            $interval->m === 0 &&
+            version_compare(PHP_VERSION, '8.1.0-dev', '<') &&
+            abs($interval->d - $daysDiff) === 1
+        ) {
+            $daysDiff = abs($interval->d); // @codeCoverageIgnore
+        }
+
+        return $daysDiff * $sign;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
new file mode 100644
index 00000000..4cd66b67
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterval;
+use Carbon\Exceptions\InvalidIntervalException;
+use DateInterval;
+
+/**
+ * Trait to call rounding methods to interval or the interval of a period.
+ */
+trait IntervalRounding
+{
+    protected function callRoundMethod(string $method, array $parameters)
+    {
+        $action = substr($method, 0, 4);
+
+        if ($action !== 'ceil') {
+            $action = substr($method, 0, 5);
+        }
+
+        if (\in_array($action, ['round', 'floor', 'ceil'])) {
+            return $this->{$action.'Unit'}(substr($method, \strlen($action)), ...$parameters);
+        }
+
+        return null;
+    }
+
+    protected function roundWith($precision, $function)
+    {
+        $unit = 'second';
+
+        if ($precision instanceof DateInterval) {
+            $precision = (string) CarbonInterval::instance($precision);
+        }
+
+        if (\is_string($precision) && preg_match('/^\s*(?<precision>\d+)?\s*(?<unit>\w+)(?<other>\W.*)?$/', $precision, $match)) {
+            if (trim($match['other'] ?? '') !== '') {
+                throw new InvalidIntervalException('Rounding is only possible with single unit intervals.');
+            }
+
+            $precision = (int) ($match['precision'] ?: 1);
+            $unit = $match['unit'];
+        }
+
+        return $this->roundUnit($unit, $precision, $function);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
new file mode 100644
index 00000000..82d7c326
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+use Carbon\CarbonInterface;
+use Closure;
+use DateTimeImmutable;
+use DateTimeInterface;
+
+trait IntervalStep
+{
+    /**
+     * Step to apply instead of a fixed interval to get the new date.
+     *
+     * @var Closure|null
+     */
+    protected $step;
+
+    /**
+     * Get the dynamic step in use.
+     *
+     * @return Closure
+     */
+    public function getStep(): ?Closure
+    {
+        return $this->step;
+    }
+
+    /**
+     * Set a step to apply instead of a fixed interval to get the new date.
+     *
+     * Or pass null to switch to fixed interval.
+     *
+     * @param Closure|null $step
+     */
+    public function setStep(?Closure $step): void
+    {
+        $this->step = $step;
+    }
+
+    /**
+     * Take a date and apply either the step if set, or the current interval else.
+     *
+     * The interval/step is applied negatively (typically subtraction instead of addition) if $negated is true.
+     *
+     * @param DateTimeInterface $dateTime
+     * @param bool              $negated
+     *
+     * @return CarbonInterface
+     */
+    public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface
+    {
+        /** @var CarbonInterface $carbonDate */
+        $carbonDate = $dateTime instanceof CarbonInterface ? $dateTime : $this->resolveCarbon($dateTime);
+
+        if ($this->step) {
+            return $carbonDate->setDateTimeFrom(($this->step)($carbonDate->avoidMutation(), $negated));
+        }
+
+        if ($negated) {
+            return $carbonDate->rawSub($this);
+        }
+
+        return $carbonDate->rawAdd($this);
+    }
+
+    /**
+     * Convert DateTimeImmutable instance to CarbonImmutable instance and DateTime instance to Carbon instance.
+     *
+     * @param DateTimeInterface $dateTime
+     *
+     * @return Carbon|CarbonImmutable
+     */
+    private function resolveCarbon(DateTimeInterface $dateTime)
+    {
+        if ($dateTime instanceof DateTimeImmutable) {
+            return CarbonImmutable::instance($dateTime);
+        }
+
+        return Carbon::instance($dateTime);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
new file mode 100644
index 00000000..ff249566
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php
@@ -0,0 +1,838 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterface;
+use Carbon\Exceptions\InvalidTypeException;
+use Carbon\Exceptions\NotLocaleAwareException;
+use Carbon\Language;
+use Carbon\Translator;
+use Carbon\TranslatorStrongTypeInterface;
+use Closure;
+use Symfony\Component\Translation\TranslatorBagInterface;
+use Symfony\Component\Translation\TranslatorInterface;
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+use Symfony\Contracts\Translation\TranslatorInterface as ContractsTranslatorInterface;
+
+if (interface_exists('Symfony\\Contracts\\Translation\\TranslatorInterface') &&
+    !interface_exists('Symfony\\Component\\Translation\\TranslatorInterface')
+) {
+    class_alias(
+        'Symfony\\Contracts\\Translation\\TranslatorInterface',
+        'Symfony\\Component\\Translation\\TranslatorInterface'
+    );
+}
+
+/**
+ * Trait Localization.
+ *
+ * Embed default and locale translators and translation base methods.
+ */
+trait Localization
+{
+    /**
+     * Default translator.
+     *
+     * @var \Symfony\Component\Translation\TranslatorInterface
+     */
+    protected static $translator;
+
+    /**
+     * Specific translator of the current instance.
+     *
+     * @var \Symfony\Component\Translation\TranslatorInterface
+     */
+    protected $localTranslator;
+
+    /**
+     * Options for diffForHumans().
+     *
+     * @var int
+     */
+    protected static $humanDiffOptions = CarbonInterface::NO_ZERO_DIFF;
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOptions
+     */
+    public static function setHumanDiffOptions($humanDiffOptions)
+    {
+        static::$humanDiffOptions = $humanDiffOptions;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOption
+     */
+    public static function enableHumanDiffOption($humanDiffOption)
+    {
+        static::$humanDiffOptions = static::getHumanDiffOptions() | $humanDiffOption;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * @param int $humanDiffOption
+     */
+    public static function disableHumanDiffOption($humanDiffOption)
+    {
+        static::$humanDiffOptions = static::getHumanDiffOptions() & ~$humanDiffOption;
+    }
+
+    /**
+     * Return default humanDiff() options (merged flags as integer).
+     *
+     * @return int
+     */
+    public static function getHumanDiffOptions()
+    {
+        return static::$humanDiffOptions;
+    }
+
+    /**
+     * Get the default translator instance in use.
+     *
+     * @return \Symfony\Component\Translation\TranslatorInterface
+     */
+    public static function getTranslator()
+    {
+        return static::translator();
+    }
+
+    /**
+     * Set the default translator instance to use.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     *
+     * @return void
+     */
+    public static function setTranslator(TranslatorInterface $translator)
+    {
+        static::$translator = $translator;
+    }
+
+    /**
+     * Return true if the current instance has its own translator.
+     *
+     * @return bool
+     */
+    public function hasLocalTranslator()
+    {
+        return isset($this->localTranslator);
+    }
+
+    /**
+     * Get the translator of the current instance or the default if none set.
+     *
+     * @return \Symfony\Component\Translation\TranslatorInterface
+     */
+    public function getLocalTranslator()
+    {
+        return $this->localTranslator ?: static::translator();
+    }
+
+    /**
+     * Set the translator for the current instance.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     *
+     * @return $this
+     */
+    public function setLocalTranslator(TranslatorInterface $translator)
+    {
+        $this->localTranslator = $translator;
+
+        return $this;
+    }
+
+    /**
+     * Returns raw translation message for a given key.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use
+     * @param string                                             $key        key to find
+     * @param string|null                                        $locale     current locale used if null
+     * @param string|null                                        $default    default value if translation returns the key
+     *
+     * @return string
+     */
+    public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null)
+    {
+        if (!($translator instanceof TranslatorBagInterface && $translator instanceof TranslatorInterface)) {
+            throw new InvalidTypeException(
+                'Translator does not implement '.TranslatorInterface::class.' and '.TranslatorBagInterface::class.'. '.
+                (\is_object($translator) ? \get_class($translator) : \gettype($translator)).' has been given.'
+            );
+        }
+
+        if (!$locale && $translator instanceof LocaleAwareInterface) {
+            $locale = $translator->getLocale();
+        }
+
+        $result = self::getFromCatalogue($translator, $translator->getCatalogue($locale), $key);
+
+        return $result === $key ? $default : $result;
+    }
+
+    /**
+     * Returns raw translation message for a given key.
+     *
+     * @param string                                             $key        key to find
+     * @param string|null                                        $locale     current locale used if null
+     * @param string|null                                        $default    default value if translation returns the key
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use
+     *
+     * @return string
+     */
+    public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null)
+    {
+        return static::getTranslationMessageWith($translator ?: $this->getLocalTranslator(), $key, $locale, $default);
+    }
+
+    /**
+     * Translate using translation string or callback available.
+     *
+     * @param \Symfony\Component\Translation\TranslatorInterface $translator
+     * @param string                                             $key
+     * @param array                                              $parameters
+     * @param null                                               $number
+     *
+     * @return string
+     */
+    public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string
+    {
+        $message = static::getTranslationMessageWith($translator, $key, null, $key);
+        if ($message instanceof Closure) {
+            return (string) $message(...array_values($parameters));
+        }
+
+        if ($number !== null) {
+            $parameters['%count%'] = $number;
+        }
+        if (isset($parameters['%count%'])) {
+            $parameters[':count'] = $parameters['%count%'];
+        }
+
+        // @codeCoverageIgnoreStart
+        $choice = $translator instanceof ContractsTranslatorInterface
+            ? $translator->trans($key, $parameters)
+            : $translator->transChoice($key, $number, $parameters);
+        // @codeCoverageIgnoreEnd
+
+        return (string) $choice;
+    }
+
+    /**
+     * Translate using translation string or callback available.
+     *
+     * @param string                                                  $key
+     * @param array                                                   $parameters
+     * @param string|int|float|null                                   $number
+     * @param \Symfony\Component\Translation\TranslatorInterface|null $translator
+     * @param bool                                                    $altNumbers
+     *
+     * @return string
+     */
+    public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string
+    {
+        $translation = static::translateWith($translator ?: $this->getLocalTranslator(), $key, $parameters, $number);
+
+        if ($number !== null && $altNumbers) {
+            return str_replace($number, $this->translateNumber($number), $translation);
+        }
+
+        return $translation;
+    }
+
+    /**
+     * Returns the alternative number for a given integer if available in the current locale.
+     *
+     * @param int $number
+     *
+     * @return string
+     */
+    public function translateNumber(int $number): string
+    {
+        $translateKey = "alt_numbers.$number";
+        $symbol = $this->translate($translateKey);
+
+        if ($symbol !== $translateKey) {
+            return $symbol;
+        }
+
+        if ($number > 99 && $this->translate('alt_numbers.99') !== 'alt_numbers.99') {
+            $start = '';
+            foreach ([10000, 1000, 100] as $exp) {
+                $key = "alt_numbers_pow.$exp";
+                if ($number >= $exp && $number < $exp * 10 && ($pow = $this->translate($key)) !== $key) {
+                    $unit = floor($number / $exp);
+                    $number -= $unit * $exp;
+                    $start .= ($unit > 1 ? $this->translate("alt_numbers.$unit") : '').$pow;
+                }
+            }
+            $result = '';
+            while ($number) {
+                $chunk = $number % 100;
+                $result = $this->translate("alt_numbers.$chunk").$result;
+                $number = floor($number / 100);
+            }
+
+            return "$start$result";
+        }
+
+        if ($number > 9 && $this->translate('alt_numbers.9') !== 'alt_numbers.9') {
+            $result = '';
+            while ($number) {
+                $chunk = $number % 10;
+                $result = $this->translate("alt_numbers.$chunk").$result;
+                $number = floor($number / 10);
+            }
+
+            return $result;
+        }
+
+        return (string) $number;
+    }
+
+    /**
+     * Translate a time string from a locale to an other.
+     *
+     * @param string      $timeString date/time/duration string to translate (may also contain English)
+     * @param string|null $from       input locale of the $timeString parameter (`Carbon::getLocale()` by default)
+     * @param string|null $to         output locale of the result returned (`"en"` by default)
+     * @param int         $mode       specify what to translate with options:
+     *                                - CarbonInterface::TRANSLATE_ALL (default)
+     *                                - CarbonInterface::TRANSLATE_MONTHS
+     *                                - CarbonInterface::TRANSLATE_DAYS
+     *                                - CarbonInterface::TRANSLATE_UNITS
+     *                                - CarbonInterface::TRANSLATE_MERIDIEM
+     *                                You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS
+     *
+     * @return string
+     */
+    public static function translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL)
+    {
+        // Fallback source and destination locales
+        $from = $from ?: static::getLocale();
+        $to = $to ?: 'en';
+
+        if ($from === $to) {
+            return $timeString;
+        }
+
+        // Standardize apostrophe
+        $timeString = strtr($timeString, ['’' => "'"]);
+
+        $fromTranslations = [];
+        $toTranslations = [];
+
+        foreach (['from', 'to'] as $key) {
+            $language = $$key;
+            $translator = Translator::get($language);
+            $translations = $translator->getMessages();
+
+            if (!isset($translations[$language])) {
+                return $timeString;
+            }
+
+            $translationKey = $key.'Translations';
+            $messages = $translations[$language];
+            $months = $messages['months'] ?? [];
+            $weekdays = $messages['weekdays'] ?? [];
+            $meridiem = $messages['meridiem'] ?? ['AM', 'PM'];
+
+            if (isset($messages['ordinal_words'])) {
+                $timeString = self::replaceOrdinalWords(
+                    $timeString,
+                    $key === 'from' ? array_flip($messages['ordinal_words']) : $messages['ordinal_words']
+                );
+            }
+
+            if ($key === 'from') {
+                foreach (['months', 'weekdays'] as $variable) {
+                    $list = $messages[$variable.'_standalone'] ?? null;
+
+                    if ($list) {
+                        foreach ($$variable as $index => &$name) {
+                            $name .= '|'.$messages[$variable.'_standalone'][$index];
+                        }
+                    }
+                }
+            }
+
+            $$translationKey = array_merge(
+                $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($months, 12, $timeString) : [],
+                $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($messages['months_short'] ?? [], 12, $timeString) : [],
+                $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($weekdays, 7, $timeString) : [],
+                $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($messages['weekdays_short'] ?? [], 7, $timeString) : [],
+                $mode & CarbonInterface::TRANSLATE_DIFF ? static::translateWordsByKeys([
+                    'diff_now',
+                    'diff_today',
+                    'diff_yesterday',
+                    'diff_tomorrow',
+                    'diff_before_yesterday',
+                    'diff_after_tomorrow',
+                ], $messages, $key) : [],
+                $mode & CarbonInterface::TRANSLATE_UNITS ? static::translateWordsByKeys([
+                    'year',
+                    'month',
+                    'week',
+                    'day',
+                    'hour',
+                    'minute',
+                    'second',
+                ], $messages, $key) : [],
+                $mode & CarbonInterface::TRANSLATE_MERIDIEM ? array_map(function ($hour) use ($meridiem) {
+                    if (\is_array($meridiem)) {
+                        return $meridiem[$hour < 12 ? 0 : 1];
+                    }
+
+                    return $meridiem($hour, 0, false);
+                }, range(0, 23)) : []
+            );
+        }
+
+        return substr(preg_replace_callback('/(?<=[\d\s+.\/,_-])('.implode('|', $fromTranslations).')(?=[\d\s+.\/,_-])/iu', function ($match) use ($fromTranslations, $toTranslations) {
+            [$chunk] = $match;
+
+            foreach ($fromTranslations as $index => $word) {
+                if (preg_match("/^$word\$/iu", $chunk)) {
+                    return $toTranslations[$index] ?? '';
+                }
+            }
+
+            return $chunk; // @codeCoverageIgnore
+        }, " $timeString "), 1, -1);
+    }
+
+    /**
+     * Translate a time string from the current locale (`$date->locale()`) to an other.
+     *
+     * @param string      $timeString time string to translate
+     * @param string|null $to         output locale of the result returned ("en" by default)
+     *
+     * @return string
+     */
+    public function translateTimeStringTo($timeString, $to = null)
+    {
+        return static::translateTimeString($timeString, $this->getTranslatorLocale(), $to);
+    }
+
+    /**
+     * Get/set the locale for the current instance.
+     *
+     * @param string|null $locale
+     * @param string      ...$fallbackLocales
+     *
+     * @return $this|string
+     */
+    public function locale(string $locale = null, ...$fallbackLocales)
+    {
+        if ($locale === null) {
+            return $this->getTranslatorLocale();
+        }
+
+        if (!$this->localTranslator || $this->getTranslatorLocale($this->localTranslator) !== $locale) {
+            $translator = Translator::get($locale);
+
+            if (!empty($fallbackLocales)) {
+                $translator->setFallbackLocales($fallbackLocales);
+
+                foreach ($fallbackLocales as $fallbackLocale) {
+                    $messages = Translator::get($fallbackLocale)->getMessages();
+
+                    if (isset($messages[$fallbackLocale])) {
+                        $translator->setMessages($fallbackLocale, $messages[$fallbackLocale]);
+                    }
+                }
+            }
+
+            $this->localTranslator = $translator;
+        }
+
+        return $this;
+    }
+
+    /**
+     * Get the current translator locale.
+     *
+     * @return string
+     */
+    public static function getLocale()
+    {
+        return static::getLocaleAwareTranslator()->getLocale();
+    }
+
+    /**
+     * Set the current translator locale and indicate if the source locale file exists.
+     * Pass 'auto' as locale to use closest language from the current LC_TIME locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function setLocale($locale)
+    {
+        return static::getLocaleAwareTranslator()->setLocale($locale) !== false;
+    }
+
+    /**
+     * Set the fallback locale.
+     *
+     * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
+     *
+     * @param string $locale
+     */
+    public static function setFallbackLocale($locale)
+    {
+        $translator = static::getTranslator();
+
+        if (method_exists($translator, 'setFallbackLocales')) {
+            $translator->setFallbackLocales([$locale]);
+
+            if ($translator instanceof Translator) {
+                $preferredLocale = $translator->getLocale();
+                $translator->setMessages($preferredLocale, array_replace_recursive(
+                    $translator->getMessages()[$locale] ?? [],
+                    Translator::get($locale)->getMessages()[$locale] ?? [],
+                    $translator->getMessages($preferredLocale)
+                ));
+            }
+        }
+    }
+
+    /**
+     * Get the fallback locale.
+     *
+     * @see https://symfony.com/doc/current/components/translation.html#fallback-locales
+     *
+     * @return string|null
+     */
+    public static function getFallbackLocale()
+    {
+        $translator = static::getTranslator();
+
+        if (method_exists($translator, 'getFallbackLocales')) {
+            return $translator->getFallbackLocales()[0] ?? null;
+        }
+
+        return null;
+    }
+
+    /**
+     * Set the current locale to the given, execute the passed function, reset the locale to previous one,
+     * then return the result of the closure (or null if the closure was void).
+     *
+     * @param string   $locale locale ex. en
+     * @param callable $func
+     *
+     * @return mixed
+     */
+    public static function executeWithLocale($locale, $func)
+    {
+        $currentLocale = static::getLocale();
+        $result = $func(static::setLocale($locale) ? static::getLocale() : false, static::translator());
+        static::setLocale($currentLocale);
+
+        return $result;
+    }
+
+    /**
+     * Returns true if the given locale is internally supported and has short-units support.
+     * Support is considered enabled if either year, day or hour has a short variant translated.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasShortUnits($locale)
+    {
+        return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
+            return ($newLocale && (($y = static::translateWith($translator, 'y')) !== 'y' && $y !== static::translateWith($translator, 'year'))) || (
+                ($y = static::translateWith($translator, 'd')) !== 'd' &&
+                    $y !== static::translateWith($translator, 'day')
+            ) || (
+                ($y = static::translateWith($translator, 'h')) !== 'h' &&
+                    $y !== static::translateWith($translator, 'hour')
+            );
+        });
+    }
+
+    /**
+     * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after).
+     * Support is considered enabled if the 4 sentences are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffSyntax($locale)
+    {
+        return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
+            if (!$newLocale) {
+                return false;
+            }
+
+            foreach (['ago', 'from_now', 'before', 'after'] as $key) {
+                if ($translator instanceof TranslatorBagInterface &&
+                    self::getFromCatalogue($translator, $translator->getCatalogue($newLocale), $key) instanceof Closure
+                ) {
+                    continue;
+                }
+
+                if ($translator->trans($key) === $key) {
+                    return false;
+                }
+            }
+
+            return true;
+        });
+    }
+
+    /**
+     * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow).
+     * Support is considered enabled if the 3 words are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffOneDayWords($locale)
+    {
+        return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
+            return $newLocale &&
+                $translator->trans('diff_now') !== 'diff_now' &&
+                $translator->trans('diff_yesterday') !== 'diff_yesterday' &&
+                $translator->trans('diff_tomorrow') !== 'diff_tomorrow';
+        });
+    }
+
+    /**
+     * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow).
+     * Support is considered enabled if the 2 words are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasDiffTwoDayWords($locale)
+    {
+        return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
+            return $newLocale &&
+                $translator->trans('diff_before_yesterday') !== 'diff_before_yesterday' &&
+                $translator->trans('diff_after_tomorrow') !== 'diff_after_tomorrow';
+        });
+    }
+
+    /**
+     * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X).
+     * Support is considered enabled if the 4 sentences are translated in the given locale.
+     *
+     * @param string $locale locale ex. en
+     *
+     * @return bool
+     */
+    public static function localeHasPeriodSyntax($locale)
+    {
+        return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) {
+            return $newLocale &&
+                $translator->trans('period_recurrences') !== 'period_recurrences' &&
+                $translator->trans('period_interval') !== 'period_interval' &&
+                $translator->trans('period_start_date') !== 'period_start_date' &&
+                $translator->trans('period_end_date') !== 'period_end_date';
+        });
+    }
+
+    /**
+     * Returns the list of internally available locales and already loaded custom locales.
+     * (It will ignore custom translator dynamic loading.)
+     *
+     * @return array
+     */
+    public static function getAvailableLocales()
+    {
+        $translator = static::getLocaleAwareTranslator();
+
+        return $translator instanceof Translator
+            ? $translator->getAvailableLocales()
+            : [$translator->getLocale()];
+    }
+
+    /**
+     * Returns list of Language object for each available locale. This object allow you to get the ISO name, native
+     * name, region and variant of the locale.
+     *
+     * @return Language[]
+     */
+    public static function getAvailableLocalesInfo()
+    {
+        $languages = [];
+        foreach (static::getAvailableLocales() as $id) {
+            $languages[$id] = new Language($id);
+        }
+
+        return $languages;
+    }
+
+    /**
+     * Initialize the default translator instance if necessary.
+     *
+     * @return \Symfony\Component\Translation\TranslatorInterface
+     */
+    protected static function translator()
+    {
+        if (static::$translator === null) {
+            static::$translator = Translator::get();
+        }
+
+        return static::$translator;
+    }
+
+    /**
+     * Get the locale of a given translator.
+     *
+     * If null or omitted, current local translator is used.
+     * If no local translator is in use, current global translator is used.
+     *
+     * @param null $translator
+     *
+     * @return string|null
+     */
+    protected function getTranslatorLocale($translator = null): ?string
+    {
+        if (\func_num_args() === 0) {
+            $translator = $this->getLocalTranslator();
+        }
+
+        $translator = static::getLocaleAwareTranslator($translator);
+
+        return $translator ? $translator->getLocale() : null;
+    }
+
+    /**
+     * Throw an error if passed object is not LocaleAwareInterface.
+     *
+     * @param LocaleAwareInterface|null $translator
+     *
+     * @return LocaleAwareInterface|null
+     */
+    protected static function getLocaleAwareTranslator($translator = null)
+    {
+        if (\func_num_args() === 0) {
+            $translator = static::translator();
+        }
+
+        if ($translator && !($translator instanceof LocaleAwareInterface || method_exists($translator, 'getLocale'))) {
+            throw new NotLocaleAwareException($translator); // @codeCoverageIgnore
+        }
+
+        return $translator;
+    }
+
+    /**
+     * @param mixed                                                    $translator
+     * @param \Symfony\Component\Translation\MessageCatalogueInterface $catalogue
+     *
+     * @return mixed
+     */
+    private static function getFromCatalogue($translator, $catalogue, string $id, string $domain = 'messages')
+    {
+        return $translator instanceof TranslatorStrongTypeInterface
+            ? $translator->getFromCatalogue($catalogue, $id, $domain) // @codeCoverageIgnore
+            : $catalogue->get($id, $domain);
+    }
+
+    /**
+     * Return the word cleaned from its translation codes.
+     *
+     * @param string $word
+     *
+     * @return string
+     */
+    private static function cleanWordFromTranslationString($word)
+    {
+        $word = str_replace([':count', '%count', ':time'], '', $word);
+        $word = strtr($word, ['’' => "'"]);
+        $word = preg_replace('/({\d+(,(\d+|Inf))?}|[\[\]]\d+(,(\d+|Inf))?[\[\]])/', '', $word);
+
+        return trim($word);
+    }
+
+    /**
+     * Translate a list of words.
+     *
+     * @param string[] $keys     keys to translate.
+     * @param string[] $messages messages bag handling translations.
+     * @param string   $key      'to' (to get the translation) or 'from' (to get the detection RegExp pattern).
+     *
+     * @return string[]
+     */
+    private static function translateWordsByKeys($keys, $messages, $key): array
+    {
+        return array_map(function ($wordKey) use ($messages, $key) {
+            $message = $key === 'from' && isset($messages[$wordKey.'_regexp'])
+                ? $messages[$wordKey.'_regexp']
+                : ($messages[$wordKey] ?? null);
+
+            if (!$message) {
+                return '>>DO NOT REPLACE<<';
+            }
+
+            $parts = explode('|', $message);
+
+            return $key === 'to'
+                ? self::cleanWordFromTranslationString(end($parts))
+                : '(?:'.implode('|', array_map([static::class, 'cleanWordFromTranslationString'], $parts)).')';
+        }, $keys);
+    }
+
+    /**
+     * Get an array of translations based on the current date.
+     *
+     * @param callable $translation
+     * @param int      $length
+     * @param string   $timeString
+     *
+     * @return string[]
+     */
+    private static function getTranslationArray($translation, $length, $timeString): array
+    {
+        $filler = '>>DO NOT REPLACE<<';
+
+        if (\is_array($translation)) {
+            return array_pad($translation, $length, $filler);
+        }
+
+        $list = [];
+        $date = static::now();
+
+        for ($i = 0; $i < $length; $i++) {
+            $list[] = $translation($date, $timeString, $i) ?? $filler;
+        }
+
+        return $list;
+    }
+
+    private static function replaceOrdinalWords(string $timeString, array $ordinalWords): string
+    {
+        return preg_replace_callback('/(?<![a-z])[a-z]+(?![a-z])/i', function (array $match) use ($ordinalWords) {
+            return $ordinalWords[mb_strtolower($match[0])] ?? $match[0];
+        }, $timeString);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
new file mode 100644
index 00000000..92b6c9d8
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+/**
+ * Trait Macros.
+ *
+ * Allows users to register macros within the Carbon class.
+ */
+trait Macro
+{
+    use Mixin;
+
+    /**
+     * The registered macros.
+     *
+     * @var array
+     */
+    protected static $globalMacros = [];
+
+    /**
+     * The registered generic macros.
+     *
+     * @var array
+     */
+    protected static $globalGenericMacros = [];
+
+    /**
+     * Register a custom macro.
+     *
+     * @example
+     * ```
+     * $userSettings = [
+     *   'locale' => 'pt',
+     *   'timezone' => 'America/Sao_Paulo',
+     * ];
+     * Carbon::macro('userFormat', function () use ($userSettings) {
+     *   return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar();
+     * });
+     * echo Carbon::yesterday()->hours(11)->userFormat();
+     * ```
+     *
+     * @param string          $name
+     * @param object|callable $macro
+     *
+     * @return void
+     */
+    public static function macro($name, $macro)
+    {
+        static::$globalMacros[$name] = $macro;
+    }
+
+    /**
+     * Remove all macros and generic macros.
+     */
+    public static function resetMacros()
+    {
+        static::$globalMacros = [];
+        static::$globalGenericMacros = [];
+    }
+
+    /**
+     * Register a custom macro.
+     *
+     * @param object|callable $macro
+     * @param int             $priority marco with higher priority is tried first
+     *
+     * @return void
+     */
+    public static function genericMacro($macro, $priority = 0)
+    {
+        if (!isset(static::$globalGenericMacros[$priority])) {
+            static::$globalGenericMacros[$priority] = [];
+            krsort(static::$globalGenericMacros, SORT_NUMERIC);
+        }
+
+        static::$globalGenericMacros[$priority][] = $macro;
+    }
+
+    /**
+     * Checks if macro is registered globally.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public static function hasMacro($name)
+    {
+        return isset(static::$globalMacros[$name]);
+    }
+
+    /**
+     * Get the raw callable macro registered globally for a given name.
+     *
+     * @param string $name
+     *
+     * @return callable|null
+     */
+    public static function getMacro($name)
+    {
+        return static::$globalMacros[$name] ?? null;
+    }
+
+    /**
+     * Checks if macro is registered globally or locally.
+     *
+     * @param string $name
+     *
+     * @return bool
+     */
+    public function hasLocalMacro($name)
+    {
+        return ($this->localMacros && isset($this->localMacros[$name])) || static::hasMacro($name);
+    }
+
+    /**
+     * Get the raw callable macro registered globally or locally for a given name.
+     *
+     * @param string $name
+     *
+     * @return callable|null
+     */
+    public function getLocalMacro($name)
+    {
+        return ($this->localMacros ?? [])[$name] ?? static::getMacro($name);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
new file mode 100644
index 00000000..88b251df
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php
@@ -0,0 +1,191 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Closure;
+use Generator;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionMethod;
+use Throwable;
+
+/**
+ * Trait Mixin.
+ *
+ * Allows mixing in entire classes with multiple macros.
+ */
+trait Mixin
+{
+    /**
+     * Stack of macro instance contexts.
+     *
+     * @var array
+     */
+    protected static $macroContextStack = [];
+
+    /**
+     * Mix another object into the class.
+     *
+     * @example
+     * ```
+     * Carbon::mixin(new class {
+     *   public function addMoon() {
+     *     return function () {
+     *       return $this->addDays(30);
+     *     };
+     *   }
+     *   public function subMoon() {
+     *     return function () {
+     *       return $this->subDays(30);
+     *     };
+     *   }
+     * });
+     * $fullMoon = Carbon::create('2018-12-22');
+     * $nextFullMoon = $fullMoon->addMoon();
+     * $blackMoon = Carbon::create('2019-01-06');
+     * $previousBlackMoon = $blackMoon->subMoon();
+     * echo "$nextFullMoon\n";
+     * echo "$previousBlackMoon\n";
+     * ```
+     *
+     * @param object|string $mixin
+     *
+     * @throws ReflectionException
+     *
+     * @return void
+     */
+    public static function mixin($mixin)
+    {
+        \is_string($mixin) && trait_exists($mixin)
+            ? self::loadMixinTrait($mixin)
+            : self::loadMixinClass($mixin);
+    }
+
+    /**
+     * @param object|string $mixin
+     *
+     * @throws ReflectionException
+     */
+    private static function loadMixinClass($mixin)
+    {
+        $methods = (new ReflectionClass($mixin))->getMethods(
+            ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED
+        );
+
+        foreach ($methods as $method) {
+            if ($method->isConstructor() || $method->isDestructor()) {
+                continue;
+            }
+
+            $method->setAccessible(true);
+
+            static::macro($method->name, $method->invoke($mixin));
+        }
+    }
+
+    /**
+     * @param string $trait
+     */
+    private static function loadMixinTrait($trait)
+    {
+        $context = eval(self::getAnonymousClassCodeForTrait($trait));
+        $className = \get_class($context);
+
+        foreach (self::getMixableMethods($context) as $name) {
+            $closureBase = Closure::fromCallable([$context, $name]);
+
+            static::macro($name, function () use ($closureBase, $className) {
+                /** @phpstan-ignore-next-line */
+                $context = isset($this) ? $this->cast($className) : new $className();
+
+                try {
+                    // @ is required to handle error if not converted into exceptions
+                    $closure = @$closureBase->bindTo($context);
+                } catch (Throwable $throwable) { // @codeCoverageIgnore
+                    $closure = $closureBase; // @codeCoverageIgnore
+                }
+
+                // in case of errors not converted into exceptions
+                $closure = $closure ?: $closureBase;
+
+                return $closure(...\func_get_args());
+            });
+        }
+    }
+
+    private static function getAnonymousClassCodeForTrait(string $trait)
+    {
+        return 'return new class() extends '.static::class.' {use '.$trait.';};';
+    }
+
+    private static function getMixableMethods(self $context): Generator
+    {
+        foreach (get_class_methods($context) as $name) {
+            if (method_exists(static::class, $name)) {
+                continue;
+            }
+
+            yield $name;
+        }
+    }
+
+    /**
+     * Stack a Carbon context from inside calls of self::this() and execute a given action.
+     *
+     * @param static|null $context
+     * @param callable    $callable
+     *
+     * @throws Throwable
+     *
+     * @return mixed
+     */
+    protected static function bindMacroContext($context, callable $callable)
+    {
+        static::$macroContextStack[] = $context;
+        $exception = null;
+        $result = null;
+
+        try {
+            $result = $callable();
+        } catch (Throwable $throwable) {
+            $exception = $throwable;
+        }
+
+        array_pop(static::$macroContextStack);
+
+        if ($exception) {
+            throw $exception;
+        }
+
+        return $result;
+    }
+
+    /**
+     * Return the current context from inside a macro callee or a null if static.
+     *
+     * @return static|null
+     */
+    protected static function context()
+    {
+        return end(static::$macroContextStack) ?: null;
+    }
+
+    /**
+     * Return the current context from inside a macro callee or a new one if static.
+     *
+     * @return static
+     */
+    protected static function this()
+    {
+        return end(static::$macroContextStack) ?: new static();
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
new file mode 100644
index 00000000..164dbbd1
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php
@@ -0,0 +1,472 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterface;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Modifiers.
+ *
+ * Returns dates relative to current date using modifier short-hand.
+ */
+trait Modifiers
+{
+    /**
+     * Midday/noon hour.
+     *
+     * @var int
+     */
+    protected static $midDayAt = 12;
+
+    /**
+     * get midday/noon hour
+     *
+     * @return int
+     */
+    public static function getMidDayAt()
+    {
+        return static::$midDayAt;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather consider mid-day is always 12pm, then if you need to test if it's an other
+     *             hour, test it explicitly:
+     *                 $date->format('G') == 13
+     *             or to set explicitly to a given hour:
+     *                 $date->setTime(13, 0, 0, 0)
+     *
+     * Set midday/noon hour
+     *
+     * @param int $hour midday hour
+     *
+     * @return void
+     */
+    public static function setMidDayAt($hour)
+    {
+        static::$midDayAt = $hour;
+    }
+
+    /**
+     * Modify to midday, default to self::$midDayAt
+     *
+     * @return static
+     */
+    public function midDay()
+    {
+        return $this->setTime(static::$midDayAt, 0, 0, 0);
+    }
+
+    /**
+     * Modify to the next occurrence of a given modifier such as a day of
+     * the week. If no modifier is provided, modify to the next occurrence
+     * of the current day of the week. Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param string|int|null $modifier
+     *
+     * @return static
+     */
+    public function next($modifier = null)
+    {
+        if ($modifier === null) {
+            $modifier = $this->dayOfWeek;
+        }
+
+        return $this->change(
+            'next '.(\is_string($modifier) ? $modifier : static::$days[$modifier])
+        );
+    }
+
+    /**
+     * Go forward or backward to the next week- or weekend-day.
+     *
+     * @param bool $weekday
+     * @param bool $forward
+     *
+     * @return static
+     */
+    private function nextOrPreviousDay($weekday = true, $forward = true)
+    {
+        /** @var CarbonInterface $date */
+        $date = $this;
+        $step = $forward ? 1 : -1;
+
+        do {
+            $date = $date->addDays($step);
+        } while ($weekday ? $date->isWeekend() : $date->isWeekday());
+
+        return $date;
+    }
+
+    /**
+     * Go forward to the next weekday.
+     *
+     * @return static
+     */
+    public function nextWeekday()
+    {
+        return $this->nextOrPreviousDay();
+    }
+
+    /**
+     * Go backward to the previous weekday.
+     *
+     * @return static
+     */
+    public function previousWeekday()
+    {
+        return $this->nextOrPreviousDay(true, false);
+    }
+
+    /**
+     * Go forward to the next weekend day.
+     *
+     * @return static
+     */
+    public function nextWeekendDay()
+    {
+        return $this->nextOrPreviousDay(false);
+    }
+
+    /**
+     * Go backward to the previous weekend day.
+     *
+     * @return static
+     */
+    public function previousWeekendDay()
+    {
+        return $this->nextOrPreviousDay(false, false);
+    }
+
+    /**
+     * Modify to the previous occurrence of a given modifier such as a day of
+     * the week. If no dayOfWeek is provided, modify to the previous occurrence
+     * of the current day of the week. Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param string|int|null $modifier
+     *
+     * @return static
+     */
+    public function previous($modifier = null)
+    {
+        if ($modifier === null) {
+            $modifier = $this->dayOfWeek;
+        }
+
+        return $this->change(
+            'last '.(\is_string($modifier) ? $modifier : static::$days[$modifier])
+        );
+    }
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current month. If no dayOfWeek is provided, modify to the
+     * first day of the current month.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek
+     *
+     * @return static
+     */
+    public function firstOfMonth($dayOfWeek = null)
+    {
+        $date = $this->startOfDay();
+
+        if ($dayOfWeek === null) {
+            return $date->day(1);
+        }
+
+        return $date->modify('first '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year);
+    }
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current month. If no dayOfWeek is provided, modify to the
+     * last day of the current month.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek
+     *
+     * @return static
+     */
+    public function lastOfMonth($dayOfWeek = null)
+    {
+        $date = $this->startOfDay();
+
+        if ($dayOfWeek === null) {
+            return $date->day($date->daysInMonth);
+        }
+
+        return $date->modify('last '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year);
+    }
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current month. If the calculated occurrence is outside the scope
+     * of the current month, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfMonth($nth, $dayOfWeek)
+    {
+        $date = $this->avoidMutation()->firstOfMonth();
+        $check = $date->rawFormat('Y-m');
+        $date = $date->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
+
+        return $date->rawFormat('Y-m') === $check ? $this->modify((string) $date) : false;
+    }
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current quarter. If no dayOfWeek is provided, modify to the
+     * first day of the current quarter.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function firstOfQuarter($dayOfWeek = null)
+    {
+        return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER - 2, 1)->firstOfMonth($dayOfWeek);
+    }
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current quarter. If no dayOfWeek is provided, modify to the
+     * last day of the current quarter.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function lastOfQuarter($dayOfWeek = null)
+    {
+        return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER, 1)->lastOfMonth($dayOfWeek);
+    }
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current quarter. If the calculated occurrence is outside the scope
+     * of the current quarter, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfQuarter($nth, $dayOfWeek)
+    {
+        $date = $this->avoidMutation()->day(1)->month($this->quarter * static::MONTHS_PER_QUARTER);
+        $lastMonth = $date->month;
+        $year = $date->year;
+        $date = $date->firstOfQuarter()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
+
+        return ($lastMonth < $date->month || $year !== $date->year) ? false : $this->modify((string) $date);
+    }
+
+    /**
+     * Modify to the first occurrence of a given day of the week
+     * in the current year. If no dayOfWeek is provided, modify to the
+     * first day of the current year.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function firstOfYear($dayOfWeek = null)
+    {
+        return $this->month(1)->firstOfMonth($dayOfWeek);
+    }
+
+    /**
+     * Modify to the last occurrence of a given day of the week
+     * in the current year. If no dayOfWeek is provided, modify to the
+     * last day of the current year.  Use the supplied constants
+     * to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int|null $dayOfWeek day of the week default null
+     *
+     * @return static
+     */
+    public function lastOfYear($dayOfWeek = null)
+    {
+        return $this->month(static::MONTHS_PER_YEAR)->lastOfMonth($dayOfWeek);
+    }
+
+    /**
+     * Modify to the given occurrence of a given day of the week
+     * in the current year. If the calculated occurrence is outside the scope
+     * of the current year, then return false and no modifications are made.
+     * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY.
+     *
+     * @param int $nth
+     * @param int $dayOfWeek
+     *
+     * @return mixed
+     */
+    public function nthOfYear($nth, $dayOfWeek)
+    {
+        $date = $this->avoidMutation()->firstOfYear()->modify('+'.$nth.' '.static::$days[$dayOfWeek]);
+
+        return $this->year === $date->year ? $this->modify((string) $date) : false;
+    }
+
+    /**
+     * Modify the current instance to the average of a given instance (default now) and the current instance
+     * (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|null $date
+     *
+     * @return static
+     */
+    public function average($date = null)
+    {
+        return $this->addRealMicroseconds((int) ($this->diffInRealMicroseconds($this->resolveCarbon($date), false) / 2));
+    }
+
+    /**
+     * Get the closest date from the instance (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return static
+     */
+    public function closest($date1, $date2)
+    {
+        return $this->diffInRealMicroseconds($date1) < $this->diffInRealMicroseconds($date2) ? $date1 : $date2;
+    }
+
+    /**
+     * Get the farthest date from the instance (second-precision).
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2
+     *
+     * @return static
+     */
+    public function farthest($date1, $date2)
+    {
+        return $this->diffInRealMicroseconds($date1) > $this->diffInRealMicroseconds($date2) ? $date1 : $date2;
+    }
+
+    /**
+     * Get the minimum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return static
+     */
+    public function min($date = null)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->lt($date) ? $this : $date;
+    }
+
+    /**
+     * Get the minimum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see min()
+     *
+     * @return static
+     */
+    public function minimum($date = null)
+    {
+        return $this->min($date);
+    }
+
+    /**
+     * Get the maximum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @return static
+     */
+    public function max($date = null)
+    {
+        $date = $this->resolveCarbon($date);
+
+        return $this->gt($date) ? $this : $date;
+    }
+
+    /**
+     * Get the maximum instance between a given instance (default now) and the current instance.
+     *
+     * @param \Carbon\Carbon|\DateTimeInterface|mixed $date
+     *
+     * @see max()
+     *
+     * @return static
+     */
+    public function maximum($date = null)
+    {
+        return $this->max($date);
+    }
+
+    /**
+     * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else.
+     *
+     * @see https://php.net/manual/en/datetime.modify.php
+     *
+     * @return static|false
+     */
+    #[ReturnTypeWillChange]
+    public function modify($modify)
+    {
+        return parent::modify((string) $modify);
+    }
+
+    /**
+     * Similar to native modify() method of DateTime but can handle more grammars.
+     *
+     * @example
+     * ```
+     * echo Carbon::now()->change('next 2pm');
+     * ```
+     *
+     * @link https://php.net/manual/en/datetime.modify.php
+     *
+     * @param string $modifier
+     *
+     * @return static
+     */
+    public function change($modifier)
+    {
+        return $this->modify(preg_replace_callback('/^(next|previous|last)\s+(\d{1,2}(h|am|pm|:\d{1,2}(:\d{1,2})?))$/i', function ($match) {
+            $match[2] = str_replace('h', ':00', $match[2]);
+            $test = $this->avoidMutation()->modify($match[2]);
+            $method = $match[1] === 'next' ? 'lt' : 'gt';
+            $match[1] = $test->$method($this) ? $match[1].' day' : 'today';
+
+            return $match[1].' '.$match[2];
+        }, strtr(trim($modifier), [
+            ' at ' => ' ',
+            'just now' => 'now',
+            'after tomorrow' => 'tomorrow +1 day',
+            'before yesterday' => 'yesterday -1 day',
+        ])));
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
new file mode 100644
index 00000000..561c867d
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Carbon;
+use Carbon\CarbonImmutable;
+
+/**
+ * Trait Mutability.
+ *
+ * Utils to know if the current object is mutable or immutable and convert it.
+ */
+trait Mutability
+{
+    use Cast;
+
+    /**
+     * Returns true if the current class/instance is mutable.
+     *
+     * @return bool
+     */
+    public static function isMutable()
+    {
+        return false;
+    }
+
+    /**
+     * Returns true if the current class/instance is immutable.
+     *
+     * @return bool
+     */
+    public static function isImmutable()
+    {
+        return !static::isMutable();
+    }
+
+    /**
+     * Return a mutable copy of the instance.
+     *
+     * @return Carbon
+     */
+    public function toMutable()
+    {
+        /** @var Carbon $date */
+        $date = $this->cast(Carbon::class);
+
+        return $date;
+    }
+
+    /**
+     * Return a immutable copy of the instance.
+     *
+     * @return CarbonImmutable
+     */
+    public function toImmutable()
+    {
+        /** @var CarbonImmutable $date */
+        $date = $this->cast(CarbonImmutable::class);
+
+        return $date;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
new file mode 100644
index 00000000..c77a1024
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+trait ObjectInitialisation
+{
+    /**
+     * True when parent::__construct has been called.
+     *
+     * @var string
+     */
+    protected $constructedObjectId;
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
new file mode 100644
index 00000000..0ddee8dd
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Options.php
@@ -0,0 +1,471 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterface;
+use DateTimeInterface;
+use Throwable;
+
+/**
+ * Trait Options.
+ *
+ * Embed base methods to change settings of Carbon classes.
+ *
+ * Depends on the following methods:
+ *
+ * @method \Carbon\Carbon|\Carbon\CarbonImmutable shiftTimezone($timezone) Set the timezone
+ */
+trait Options
+{
+    use Localization;
+
+    /**
+     * Customizable PHP_INT_SIZE override.
+     *
+     * @var int
+     */
+    public static $PHPIntSize = PHP_INT_SIZE;
+
+    /**
+     * First day of week.
+     *
+     * @var int|string
+     */
+    protected static $weekStartsAt = CarbonInterface::MONDAY;
+
+    /**
+     * Last day of week.
+     *
+     * @var int|string
+     */
+    protected static $weekEndsAt = CarbonInterface::SUNDAY;
+
+    /**
+     * Days of weekend.
+     *
+     * @var array
+     */
+    protected static $weekendDays = [
+        CarbonInterface::SATURDAY,
+        CarbonInterface::SUNDAY,
+    ];
+
+    /**
+     * Format regex patterns.
+     *
+     * @var array<string, string>
+     */
+    protected static $regexFormats = [
+        'd' => '(3[01]|[12][0-9]|0[1-9])',
+        'D' => '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)',
+        'j' => '([123][0-9]|[1-9])',
+        'l' => '([a-zA-Z]{2,})',
+        'N' => '([1-7])',
+        'S' => '(st|nd|rd|th)',
+        'w' => '([0-6])',
+        'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])',
+        'W' => '(5[012]|[1-4][0-9]|0?[1-9])',
+        'F' => '([a-zA-Z]{2,})',
+        'm' => '(1[012]|0[1-9])',
+        'M' => '([a-zA-Z]{3})',
+        'n' => '(1[012]|[1-9])',
+        't' => '(2[89]|3[01])',
+        'L' => '(0|1)',
+        'o' => '([1-9][0-9]{0,4})',
+        'Y' => '([1-9]?[0-9]{4})',
+        'y' => '([0-9]{2})',
+        'a' => '(am|pm)',
+        'A' => '(AM|PM)',
+        'B' => '([0-9]{3})',
+        'g' => '(1[012]|[1-9])',
+        'G' => '(2[0-3]|1?[0-9])',
+        'h' => '(1[012]|0[1-9])',
+        'H' => '(2[0-3]|[01][0-9])',
+        'i' => '([0-5][0-9])',
+        's' => '([0-5][0-9])',
+        'u' => '([0-9]{1,6})',
+        'v' => '([0-9]{1,3})',
+        'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)',
+        'I' => '(0|1)',
+        'O' => '([+-](1[012]|0[0-9])[0134][05])',
+        'P' => '([+-](1[012]|0[0-9]):[0134][05])',
+        'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])',
+        'T' => '([a-zA-Z]{1,5})',
+        'Z' => '(-?[1-5]?[0-9]{1,4})',
+        'U' => '([0-9]*)',
+
+        // The formats below are combinations of the above formats.
+        'c' => '(([1-9]?[0-9]{4})-(1[012]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[+-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP
+        'r' => '(([a-zA-Z]{3}), ([123][0-9]|0[1-9]) ([a-zA-Z]{3}) ([1-9]?[0-9]{4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [+-](1[012]|0[0-9])([0134][05]))', // D, d M Y H:i:s O
+    ];
+
+    /**
+     * Format modifiers (such as available in createFromFormat) regex patterns.
+     *
+     * @var array
+     */
+    protected static $regexFormatModifiers = [
+        '*' => '.+',
+        ' ' => '[   ]',
+        '#' => '[;:\\/.,()-]',
+        '?' => '([^a]|[a])',
+        '!' => '',
+        '|' => '',
+        '+' => '',
+    ];
+
+    /**
+     * Indicates if months should be calculated with overflow.
+     * Global setting.
+     *
+     * @var bool
+     */
+    protected static $monthsOverflow = true;
+
+    /**
+     * Indicates if years should be calculated with overflow.
+     * Global setting.
+     *
+     * @var bool
+     */
+    protected static $yearsOverflow = true;
+
+    /**
+     * Indicates if the strict mode is in use.
+     * Global setting.
+     *
+     * @var bool
+     */
+    protected static $strictModeEnabled = true;
+
+    /**
+     * Function to call instead of format.
+     *
+     * @var string|callable|null
+     */
+    protected static $formatFunction;
+
+    /**
+     * Function to call instead of createFromFormat.
+     *
+     * @var string|callable|null
+     */
+    protected static $createFromFormatFunction;
+
+    /**
+     * Function to call instead of parse.
+     *
+     * @var string|callable|null
+     */
+    protected static $parseFunction;
+
+    /**
+     * Indicates if months should be calculated with overflow.
+     * Specific setting.
+     *
+     * @var bool|null
+     */
+    protected $localMonthsOverflow;
+
+    /**
+     * Indicates if years should be calculated with overflow.
+     * Specific setting.
+     *
+     * @var bool|null
+     */
+    protected $localYearsOverflow;
+
+    /**
+     * Indicates if the strict mode is in use.
+     * Specific setting.
+     *
+     * @var bool|null
+     */
+    protected $localStrictModeEnabled;
+
+    /**
+     * Options for diffForHumans and forHumans methods.
+     *
+     * @var bool|null
+     */
+    protected $localHumanDiffOptions;
+
+    /**
+     * Format to use on string cast.
+     *
+     * @var string|null
+     */
+    protected $localToStringFormat;
+
+    /**
+     * Format to use on JSON serialization.
+     *
+     * @var string|null
+     */
+    protected $localSerializer;
+
+    /**
+     * Instance-specific macros.
+     *
+     * @var array|null
+     */
+    protected $localMacros;
+
+    /**
+     * Instance-specific generic macros.
+     *
+     * @var array|null
+     */
+    protected $localGenericMacros;
+
+    /**
+     * Function to call instead of format.
+     *
+     * @var string|callable|null
+     */
+    protected $localFormatFunction;
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     * @see settings
+     *
+     * Enable the strict mode (or disable with passing false).
+     *
+     * @param bool $strictModeEnabled
+     */
+    public static function useStrictMode($strictModeEnabled = true)
+    {
+        static::$strictModeEnabled = $strictModeEnabled;
+    }
+
+    /**
+     * Returns true if the strict mode is globally in use, false else.
+     * (It can be overridden in specific instances.)
+     *
+     * @return bool
+     */
+    public static function isStrictModeEnabled()
+    {
+        return static::$strictModeEnabled;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Indicates if months should be calculated with overflow.
+     *
+     * @param bool $monthsOverflow
+     *
+     * @return void
+     */
+    public static function useMonthsOverflow($monthsOverflow = true)
+    {
+        static::$monthsOverflow = $monthsOverflow;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Reset the month overflow behavior.
+     *
+     * @return void
+     */
+    public static function resetMonthsOverflow()
+    {
+        static::$monthsOverflow = true;
+    }
+
+    /**
+     * Get the month overflow global behavior (can be overridden in specific instances).
+     *
+     * @return bool
+     */
+    public static function shouldOverflowMonths()
+    {
+        return static::$monthsOverflow;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Indicates if years should be calculated with overflow.
+     *
+     * @param bool $yearsOverflow
+     *
+     * @return void
+     */
+    public static function useYearsOverflow($yearsOverflow = true)
+    {
+        static::$yearsOverflow = $yearsOverflow;
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather use the ->settings() method.
+     *             Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants
+     *             are available for quarters, years, decade, centuries, millennia (singular and plural forms).
+     * @see settings
+     *
+     * Reset the month overflow behavior.
+     *
+     * @return void
+     */
+    public static function resetYearsOverflow()
+    {
+        static::$yearsOverflow = true;
+    }
+
+    /**
+     * Get the month overflow global behavior (can be overridden in specific instances).
+     *
+     * @return bool
+     */
+    public static function shouldOverflowYears()
+    {
+        return static::$yearsOverflow;
+    }
+
+    /**
+     * Set specific options.
+     *  - strictMode: true|false|null
+     *  - monthOverflow: true|false|null
+     *  - yearOverflow: true|false|null
+     *  - humanDiffOptions: int|null
+     *  - toStringFormat: string|Closure|null
+     *  - toJsonFormat: string|Closure|null
+     *  - locale: string|null
+     *  - timezone: \DateTimeZone|string|int|null
+     *  - macros: array|null
+     *  - genericMacros: array|null
+     *
+     * @param array $settings
+     *
+     * @return $this|static
+     */
+    public function settings(array $settings)
+    {
+        $this->localStrictModeEnabled = $settings['strictMode'] ?? null;
+        $this->localMonthsOverflow = $settings['monthOverflow'] ?? null;
+        $this->localYearsOverflow = $settings['yearOverflow'] ?? null;
+        $this->localHumanDiffOptions = $settings['humanDiffOptions'] ?? null;
+        $this->localToStringFormat = $settings['toStringFormat'] ?? null;
+        $this->localSerializer = $settings['toJsonFormat'] ?? null;
+        $this->localMacros = $settings['macros'] ?? null;
+        $this->localGenericMacros = $settings['genericMacros'] ?? null;
+        $this->localFormatFunction = $settings['formatFunction'] ?? null;
+
+        if (isset($settings['locale'])) {
+            $locales = $settings['locale'];
+
+            if (!\is_array($locales)) {
+                $locales = [$locales];
+            }
+
+            $this->locale(...$locales);
+        }
+
+        if (isset($settings['innerTimezone'])) {
+            return $this->setTimezone($settings['innerTimezone']);
+        }
+
+        if (isset($settings['timezone'])) {
+            return $this->shiftTimezone($settings['timezone']);
+        }
+
+        return $this;
+    }
+
+    /**
+     * Returns current local settings.
+     *
+     * @return array
+     */
+    public function getSettings()
+    {
+        $settings = [];
+        $map = [
+            'localStrictModeEnabled' => 'strictMode',
+            'localMonthsOverflow' => 'monthOverflow',
+            'localYearsOverflow' => 'yearOverflow',
+            'localHumanDiffOptions' => 'humanDiffOptions',
+            'localToStringFormat' => 'toStringFormat',
+            'localSerializer' => 'toJsonFormat',
+            'localMacros' => 'macros',
+            'localGenericMacros' => 'genericMacros',
+            'locale' => 'locale',
+            'tzName' => 'timezone',
+            'localFormatFunction' => 'formatFunction',
+        ];
+
+        foreach ($map as $property => $key) {
+            $value = $this->$property ?? null;
+
+            if ($value !== null) {
+                $settings[$key] = $value;
+            }
+        }
+
+        return $settings;
+    }
+
+    /**
+     * Show truthy properties on var_dump().
+     *
+     * @return array
+     */
+    public function __debugInfo()
+    {
+        $infos = array_filter(get_object_vars($this), function ($var) {
+            return $var;
+        });
+
+        foreach (['dumpProperties', 'constructedObjectId'] as $property) {
+            if (isset($infos[$property])) {
+                unset($infos[$property]);
+            }
+        }
+
+        $this->addExtraDebugInfos($infos);
+
+        return $infos;
+    }
+
+    protected function addExtraDebugInfos(&$infos): void
+    {
+        if ($this instanceof DateTimeInterface) {
+            try {
+                if (!isset($infos['date'])) {
+                    $infos['date'] = $this->format(CarbonInterface::MOCK_DATETIME_FORMAT);
+                }
+
+                if (!isset($infos['timezone'])) {
+                    $infos['timezone'] = $this->tzName;
+                }
+            } catch (Throwable $exception) {
+                // noop
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
new file mode 100644
index 00000000..f98c2a32
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php
@@ -0,0 +1,258 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterface;
+use Carbon\Exceptions\UnknownUnitException;
+
+/**
+ * Trait Rounding.
+ *
+ * Round, ceil, floor units.
+ *
+ * Depends on the following methods:
+ *
+ * @method static copy()
+ * @method static startOfWeek(int $weekStartsAt = null)
+ */
+trait Rounding
+{
+    use IntervalRounding;
+
+    /**
+     * Round the current instance at the given unit with given precision if specified and the given function.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     * @param string    $function
+     *
+     * @return CarbonInterface
+     */
+    public function roundUnit($unit, $precision = 1, $function = 'round')
+    {
+        $metaUnits = [
+            // @call roundUnit
+            'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'],
+            // @call roundUnit
+            'century' => [static::YEARS_PER_CENTURY, 'year'],
+            // @call roundUnit
+            'decade' => [static::YEARS_PER_DECADE, 'year'],
+            // @call roundUnit
+            'quarter' => [static::MONTHS_PER_QUARTER, 'month'],
+            // @call roundUnit
+            'millisecond' => [1000, 'microsecond'],
+        ];
+        $normalizedUnit = static::singularUnit($unit);
+        $ranges = array_merge(static::getRangesByUnit($this->daysInMonth), [
+            // @call roundUnit
+            'microsecond' => [0, 999999],
+        ]);
+        $factor = 1;
+        $initialMonth = $this->month;
+
+        if ($normalizedUnit === 'week') {
+            $normalizedUnit = 'day';
+            $precision *= static::DAYS_PER_WEEK;
+        }
+
+        if (isset($metaUnits[$normalizedUnit])) {
+            [$factor, $normalizedUnit] = $metaUnits[$normalizedUnit];
+        }
+
+        $precision *= $factor;
+
+        if (!isset($ranges[$normalizedUnit])) {
+            throw new UnknownUnitException($unit);
+        }
+
+        $found = false;
+        $fraction = 0;
+        $arguments = null;
+        $initialValue = null;
+        $factor = $this->year < 0 ? -1 : 1;
+        $changes = [];
+        $minimumInc = null;
+
+        foreach ($ranges as $unit => [$minimum, $maximum]) {
+            if ($normalizedUnit === $unit) {
+                $arguments = [$this->$unit, $minimum];
+                $initialValue = $this->$unit;
+                $fraction = $precision - floor($precision);
+                $found = true;
+
+                continue;
+            }
+
+            if ($found) {
+                $delta = $maximum + 1 - $minimum;
+                $factor /= $delta;
+                $fraction *= $delta;
+                $inc = ($this->$unit - $minimum) * $factor;
+
+                if ($inc !== 0.0) {
+                    $minimumInc = $minimumInc ?? ($arguments[0] / pow(2, 52));
+
+                    // If value is still the same when adding a non-zero increment/decrement,
+                    // it means precision got lost in the addition
+                    if (abs($inc) < $minimumInc) {
+                        $inc = $minimumInc * ($inc < 0 ? -1 : 1);
+                    }
+
+                    // If greater than $precision, assume precision loss caused an overflow
+                    if ($function !== 'floor' || abs($arguments[0] + $inc - $initialValue) >= $precision) {
+                        $arguments[0] += $inc;
+                    }
+                }
+
+                $changes[$unit] = round(
+                    $minimum + ($fraction ? $fraction * $function(($this->$unit - $minimum) / $fraction) : 0)
+                );
+
+                // Cannot use modulo as it lose double precision
+                while ($changes[$unit] >= $delta) {
+                    $changes[$unit] -= $delta;
+                }
+
+                $fraction -= floor($fraction);
+            }
+        }
+
+        [$value, $minimum] = $arguments;
+        $normalizedValue = floor($function(($value - $minimum) / $precision) * $precision + $minimum);
+
+        /** @var CarbonInterface $result */
+        $result = $this->$normalizedUnit($normalizedValue);
+
+        foreach ($changes as $unit => $value) {
+            $result = $result->$unit($value);
+        }
+
+        return $normalizedUnit === 'month' && $precision <= 1 && abs($result->month - $initialMonth) === 2
+            // Re-run the change in case an overflow occurred
+            ? $result->$normalizedUnit($normalizedValue)
+            : $result;
+    }
+
+    /**
+     * Truncate the current instance at the given unit with given precision if specified.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     *
+     * @return CarbonInterface
+     */
+    public function floorUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance at the given unit with given precision if specified.
+     *
+     * @param string    $unit
+     * @param float|int $precision
+     *
+     * @return CarbonInterface
+     */
+    public function ceilUnit($unit, $precision = 1)
+    {
+        return $this->roundUnit($unit, $precision, 'ceil');
+    }
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     * @param string                              $function
+     *
+     * @return CarbonInterface
+     */
+    public function round($precision = 1, $function = 'round')
+    {
+        return $this->roundWith($precision, $function);
+    }
+
+    /**
+     * Round the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return CarbonInterface
+     */
+    public function floor($precision = 1)
+    {
+        return $this->round($precision, 'floor');
+    }
+
+    /**
+     * Ceil the current instance second with given precision if specified.
+     *
+     * @param float|int|string|\DateInterval|null $precision
+     *
+     * @return CarbonInterface
+     */
+    public function ceil($precision = 1)
+    {
+        return $this->round($precision, 'ceil');
+    }
+
+    /**
+     * Round the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function roundWeek($weekStartsAt = null)
+    {
+        return $this->closest(
+            $this->avoidMutation()->floorWeek($weekStartsAt),
+            $this->avoidMutation()->ceilWeek($weekStartsAt)
+        );
+    }
+
+    /**
+     * Truncate the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function floorWeek($weekStartsAt = null)
+    {
+        return $this->startOfWeek($weekStartsAt);
+    }
+
+    /**
+     * Ceil the current instance week.
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return CarbonInterface
+     */
+    public function ceilWeek($weekStartsAt = null)
+    {
+        if ($this->isMutable()) {
+            $startOfWeek = $this->avoidMutation()->startOfWeek($weekStartsAt);
+
+            return $startOfWeek != $this ?
+                $this->startOfWeek($weekStartsAt)->addWeek() :
+                $this;
+        }
+
+        $startOfWeek = $this->startOfWeek($weekStartsAt);
+
+        return $startOfWeek != $this ?
+            $startOfWeek->addWeek() :
+            $this->avoidMutation();
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
new file mode 100644
index 00000000..9e86bd3e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php
@@ -0,0 +1,304 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\Exceptions\InvalidFormatException;
+use ReturnTypeWillChange;
+use Throwable;
+
+/**
+ * Trait Serialization.
+ *
+ * Serialization and JSON stuff.
+ *
+ * Depends on the following properties:
+ *
+ * @property int $year
+ * @property int $month
+ * @property int $daysInMonth
+ * @property int $quarter
+ *
+ * Depends on the following methods:
+ *
+ * @method string|static locale(string $locale = null, string ...$fallbackLocales)
+ * @method string        toJSON()
+ */
+trait Serialization
+{
+    use ObjectInitialisation;
+
+    /**
+     * The custom Carbon JSON serializer.
+     *
+     * @var callable|null
+     */
+    protected static $serializer;
+
+    /**
+     * List of key to use for dump/serialization.
+     *
+     * @var string[]
+     */
+    protected $dumpProperties = ['date', 'timezone_type', 'timezone'];
+
+    /**
+     * Locale to dump comes here before serialization.
+     *
+     * @var string|null
+     */
+    protected $dumpLocale;
+
+    /**
+     * Embed date properties to dump in a dedicated variables so it won't overlap native
+     * DateTime ones.
+     *
+     * @var array|null
+     */
+    protected $dumpDateProperties;
+
+    /**
+     * Return a serialized string of the instance.
+     *
+     * @return string
+     */
+    public function serialize()
+    {
+        return serialize($this);
+    }
+
+    /**
+     * Create an instance from a serialized string.
+     *
+     * @param string $value
+     *
+     * @throws InvalidFormatException
+     *
+     * @return static
+     */
+    public static function fromSerialized($value)
+    {
+        $instance = @unserialize((string) $value);
+
+        if (!$instance instanceof static) {
+            throw new InvalidFormatException("Invalid serialized value: $value");
+        }
+
+        return $instance;
+    }
+
+    /**
+     * The __set_state handler.
+     *
+     * @param string|array $dump
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public static function __set_state($dump)
+    {
+        if (\is_string($dump)) {
+            return static::parse($dump);
+        }
+
+        /** @var \DateTimeInterface $date */
+        $date = get_parent_class(static::class) && method_exists(parent::class, '__set_state')
+            ? parent::__set_state((array) $dump)
+            : (object) $dump;
+
+        return static::instance($date);
+    }
+
+    /**
+     * Returns the list of properties to dump on serialize() called on.
+     *
+     * @return array
+     */
+    public function __sleep()
+    {
+        $properties = $this->getSleepProperties();
+
+        if ($this->localTranslator ?? null) {
+            $properties[] = 'dumpLocale';
+            $this->dumpLocale = $this->locale ?? null;
+        }
+
+        return $properties;
+    }
+
+    public function __serialize(): array
+    {
+        if (isset($this->timezone_type)) {
+            return [
+                'date' => $this->date ?? null,
+                'timezone_type' => $this->timezone_type,
+                'timezone' => $this->timezone ?? null,
+            ];
+        }
+
+        $timezone = $this->getTimezone();
+        $export = [
+            'date' => $this->format('Y-m-d H:i:s.u'),
+            'timezone_type' => $timezone->getType(),
+            'timezone' => $timezone->getName(),
+        ];
+
+        // @codeCoverageIgnoreStart
+        if (\extension_loaded('msgpack') && isset($this->constructedObjectId)) {
+            $export['dumpDateProperties'] = [
+                'date' => $this->format('Y-m-d H:i:s.u'),
+                'timezone' => serialize($this->timezone ?? null),
+            ];
+        }
+        // @codeCoverageIgnoreEnd
+
+        if ($this->localTranslator ?? null) {
+            $export['dumpLocale'] = $this->locale ?? null;
+        }
+
+        return $export;
+    }
+
+    /**
+     * Set locale if specified on unserialize() called.
+     *
+     * @return void
+     */
+    #[ReturnTypeWillChange]
+    public function __wakeup()
+    {
+        if (parent::class && method_exists(parent::class, '__wakeup')) {
+            // @codeCoverageIgnoreStart
+            try {
+                parent::__wakeup();
+            } catch (Throwable $exception) {
+                try {
+                    // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later.
+                    ['date' => $date, 'timezone' => $timezone] = $this->dumpDateProperties;
+                    parent::__construct($date, unserialize($timezone));
+                } catch (Throwable $ignoredException) {
+                    throw $exception;
+                }
+            }
+            // @codeCoverageIgnoreEnd
+        }
+
+        $this->constructedObjectId = spl_object_hash($this);
+
+        if (isset($this->dumpLocale)) {
+            $this->locale($this->dumpLocale);
+            $this->dumpLocale = null;
+        }
+
+        $this->cleanupDumpProperties();
+    }
+
+    public function __unserialize(array $data): void
+    {
+        // @codeCoverageIgnoreStart
+        try {
+            $this->__construct($data['date'] ?? null, $data['timezone'] ?? null);
+        } catch (Throwable $exception) {
+            if (!isset($data['dumpDateProperties']['date'], $data['dumpDateProperties']['timezone'])) {
+                throw $exception;
+            }
+
+            try {
+                // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later.
+                ['date' => $date, 'timezone' => $timezone] = $data['dumpDateProperties'];
+                $this->__construct($date, unserialize($timezone));
+            } catch (Throwable $ignoredException) {
+                throw $exception;
+            }
+        }
+        // @codeCoverageIgnoreEnd
+
+        if (isset($data['dumpLocale'])) {
+            $this->locale($data['dumpLocale']);
+        }
+    }
+
+    /**
+     * Prepare the object for JSON serialization.
+     *
+     * @return array|string
+     */
+    #[ReturnTypeWillChange]
+    public function jsonSerialize()
+    {
+        $serializer = $this->localSerializer ?? static::$serializer;
+
+        if ($serializer) {
+            return \is_string($serializer)
+                ? $this->rawFormat($serializer)
+                : $serializer($this);
+        }
+
+        return $this->toJSON();
+    }
+
+    /**
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather transform Carbon object before the serialization.
+     *
+     * JSON serialize all Carbon instances using the given callback.
+     *
+     * @param callable $callback
+     *
+     * @return void
+     */
+    public static function serializeUsing($callback)
+    {
+        static::$serializer = $callback;
+    }
+
+    /**
+     * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested.
+     * foreach ($date as $_) {}
+     * serializer($date)
+     * var_export($date)
+     * get_object_vars($date)
+     */
+    public function cleanupDumpProperties()
+    {
+        if (PHP_VERSION < 8.2) {
+            foreach ($this->dumpProperties as $property) {
+                if (isset($this->$property)) {
+                    unset($this->$property);
+                }
+            }
+        }
+
+        return $this;
+    }
+
+    private function getSleepProperties(): array
+    {
+        $properties = $this->dumpProperties;
+
+        // @codeCoverageIgnoreStart
+        if (!\extension_loaded('msgpack')) {
+            return $properties;
+        }
+
+        if (isset($this->constructedObjectId)) {
+            $this->dumpDateProperties = [
+                'date' => $this->format('Y-m-d H:i:s.u'),
+                'timezone' => serialize($this->timezone ?? null),
+            ];
+
+            $properties[] = 'dumpDateProperties';
+        }
+
+        return $properties;
+        // @codeCoverageIgnoreEnd
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Test.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
new file mode 100644
index 00000000..e0c9e806
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Test.php
@@ -0,0 +1,226 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonInterface;
+use Carbon\CarbonTimeZone;
+use Closure;
+use DateTimeImmutable;
+use DateTimeInterface;
+use InvalidArgumentException;
+use Throwable;
+
+trait Test
+{
+    ///////////////////////////////////////////////////////////////////
+    ///////////////////////// TESTING AIDS ////////////////////////////
+    ///////////////////////////////////////////////////////////////////
+
+    /**
+     * A test Carbon instance to be returned when now instances are created.
+     *
+     * @var Closure|static|null
+     */
+    protected static $testNow;
+
+    /**
+     * The timezone to resto to when clearing the time mock.
+     *
+     * @var string|null
+     */
+    protected static $testDefaultTimezone;
+
+    /**
+     * Set a Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.  The provided instance will be returned
+     * specifically under the following conditions:
+     *   - A call to the static now() method, ex. Carbon::now()
+     *   - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+     *   - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+     *   - When a string containing the desired time is passed to Carbon::parse().
+     *
+     * Note the timezone parameter was left out of the examples above and
+     * has no affect as the mock value will be returned regardless of its value.
+     *
+     * Only the moment is mocked with setTestNow(), the timezone will still be the one passed
+     * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()).
+     *
+     * To clear the test instance call this method using the default
+     * parameter of null.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance
+     */
+    public static function setTestNow($testNow = null)
+    {
+        static::$testNow = $testNow instanceof self || $testNow instanceof Closure
+            ? $testNow
+            : static::make($testNow);
+    }
+
+    /**
+     * Set a Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.  The provided instance will be returned
+     * specifically under the following conditions:
+     *   - A call to the static now() method, ex. Carbon::now()
+     *   - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null)
+     *   - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now')
+     *   - When a string containing the desired time is passed to Carbon::parse().
+     *
+     * It will also align default timezone (e.g. call date_default_timezone_set()) with
+     * the second argument or if null, with the timezone of the given date object.
+     *
+     * To clear the test instance call this method using the default
+     * parameter of null.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance
+     */
+    public static function setTestNowAndTimezone($testNow = null, $tz = null)
+    {
+        if ($testNow) {
+            self::$testDefaultTimezone = self::$testDefaultTimezone ?? date_default_timezone_get();
+        }
+
+        $useDateInstanceTimezone = $testNow instanceof DateTimeInterface;
+
+        if ($useDateInstanceTimezone) {
+            self::setDefaultTimezone($testNow->getTimezone()->getName(), $testNow);
+        }
+
+        static::setTestNow($testNow);
+
+        if (!$useDateInstanceTimezone) {
+            $now = static::getMockedTestNow(\func_num_args() === 1 ? null : $tz);
+            $tzName = $now ? $now->tzName : null;
+            self::setDefaultTimezone($tzName ?? self::$testDefaultTimezone ?? 'UTC', $now);
+        }
+
+        if (!$testNow) {
+            self::$testDefaultTimezone = null;
+        }
+    }
+
+    /**
+     * Temporarily sets a static date to be used within the callback.
+     * Using setTestNow to set the date, executing the callback, then
+     * clearing the test instance.
+     *
+     * /!\ Use this method for unit tests only.
+     *
+     * @param DateTimeInterface|Closure|static|string|false|null $testNow  real or mock Carbon instance
+     * @param Closure|null                                       $callback
+     *
+     * @return mixed
+     */
+    public static function withTestNow($testNow = null, $callback = null)
+    {
+        static::setTestNow($testNow);
+
+        try {
+            $result = $callback();
+        } finally {
+            static::setTestNow();
+        }
+
+        return $result;
+    }
+
+    /**
+     * Get the Carbon instance (real or mock) to be returned when a "now"
+     * instance is created.
+     *
+     * @return Closure|static the current instance used for testing
+     */
+    public static function getTestNow()
+    {
+        return static::$testNow;
+    }
+
+    /**
+     * Determine if there is a valid test instance set. A valid test instance
+     * is anything that is not null.
+     *
+     * @return bool true if there is a test instance, otherwise false
+     */
+    public static function hasTestNow()
+    {
+        return static::getTestNow() !== null;
+    }
+
+    /**
+     * Get the mocked date passed in setTestNow() and if it's a Closure, execute it.
+     *
+     * @param string|\DateTimeZone $tz
+     *
+     * @return \Carbon\CarbonImmutable|\Carbon\Carbon|null
+     */
+    protected static function getMockedTestNow($tz)
+    {
+        $testNow = static::getTestNow();
+
+        if ($testNow instanceof Closure) {
+            $realNow = new DateTimeImmutable('now');
+            $testNow = $testNow(static::parse(
+                $realNow->format('Y-m-d H:i:s.u'),
+                $tz ?: $realNow->getTimezone()
+            ));
+        }
+        /* @var \Carbon\CarbonImmutable|\Carbon\Carbon|null $testNow */
+
+        return $testNow instanceof CarbonInterface
+            ? $testNow->avoidMutation()->tz($tz)
+            : $testNow;
+    }
+
+    protected static function mockConstructorParameters(&$time, $tz)
+    {
+        /** @var \Carbon\CarbonImmutable|\Carbon\Carbon $testInstance */
+        $testInstance = clone static::getMockedTestNow($tz);
+
+        if (static::hasRelativeKeywords($time)) {
+            $testInstance = $testInstance->modify($time);
+        }
+
+        $time = $testInstance instanceof self
+            ? $testInstance->rawFormat(static::MOCK_DATETIME_FORMAT)
+            : $testInstance->format(static::MOCK_DATETIME_FORMAT);
+    }
+
+    private static function setDefaultTimezone($timezone, DateTimeInterface $date = null)
+    {
+        $previous = null;
+        $success = false;
+
+        try {
+            $success = date_default_timezone_set($timezone);
+        } catch (Throwable $exception) {
+            $previous = $exception;
+        }
+
+        if (!$success) {
+            $suggestion = @CarbonTimeZone::create($timezone)->toRegionName($date);
+
+            throw new InvalidArgumentException(
+                "Timezone ID '$timezone' is invalid".
+                ($suggestion && $suggestion !== $timezone ? ", did you mean '$suggestion'?" : '.')."\n".
+                "It must be one of the IDs from DateTimeZone::listIdentifiers(),\n".
+                'For the record, hours/minutes offset are relevant only for a particular moment, '.
+                'but not as a default timezone.',
+                0,
+                $previous
+            );
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
new file mode 100644
index 00000000..88a465c9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php
@@ -0,0 +1,198 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+/**
+ * Trait Timestamp.
+ */
+trait Timestamp
+{
+    /**
+     * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified).
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string          $timestamp
+     * @param \DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function createFromTimestamp($timestamp, $tz = null)
+    {
+        return static::createFromTimestampUTC($timestamp)->setTimezone($tz);
+    }
+
+    /**
+     * Create a Carbon instance from an timestamp keeping the timezone to UTC.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $timestamp
+     *
+     * @return static
+     */
+    public static function createFromTimestampUTC($timestamp)
+    {
+        [$integer, $decimal] = self::getIntegerAndDecimalParts($timestamp);
+        $delta = floor($decimal / static::MICROSECONDS_PER_SECOND);
+        $integer += $delta;
+        $decimal -= $delta * static::MICROSECONDS_PER_SECOND;
+        $decimal = str_pad((string) $decimal, 6, '0', STR_PAD_LEFT);
+
+        return static::rawCreateFromFormat('U u', "$integer $decimal");
+    }
+
+    /**
+     * Create a Carbon instance from a timestamp in milliseconds.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $timestamp
+     *
+     * @return static
+     */
+    public static function createFromTimestampMsUTC($timestamp)
+    {
+        [$milliseconds, $microseconds] = self::getIntegerAndDecimalParts($timestamp, 3);
+        $sign = $milliseconds < 0 || ($milliseconds === 0.0 && $microseconds < 0) ? -1 : 1;
+        $milliseconds = abs($milliseconds);
+        $microseconds = $sign * abs($microseconds) + static::MICROSECONDS_PER_MILLISECOND * ($milliseconds % static::MILLISECONDS_PER_SECOND);
+        $seconds = $sign * floor($milliseconds / static::MILLISECONDS_PER_SECOND);
+        $delta = floor($microseconds / static::MICROSECONDS_PER_SECOND);
+        $seconds += $delta;
+        $microseconds -= $delta * static::MICROSECONDS_PER_SECOND;
+        $microseconds = str_pad($microseconds, 6, '0', STR_PAD_LEFT);
+
+        return static::rawCreateFromFormat('U u', "$seconds $microseconds");
+    }
+
+    /**
+     * Create a Carbon instance from a timestamp in milliseconds.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string          $timestamp
+     * @param \DateTimeZone|string|null $tz
+     *
+     * @return static
+     */
+    public static function createFromTimestampMs($timestamp, $tz = null)
+    {
+        return static::createFromTimestampMsUTC($timestamp)
+            ->setTimezone($tz);
+    }
+
+    /**
+     * Set the instance's timestamp.
+     *
+     * Timestamp input can be given as int, float or a string containing one or more numbers.
+     *
+     * @param float|int|string $unixTimestamp
+     *
+     * @return static
+     */
+    public function timestamp($unixTimestamp)
+    {
+        return $this->setTimestamp($unixTimestamp);
+    }
+
+    /**
+     * Returns a timestamp rounded with the given precision (6 by default).
+     *
+     * @example getPreciseTimestamp()   1532087464437474 (microsecond maximum precision)
+     * @example getPreciseTimestamp(6)  1532087464437474
+     * @example getPreciseTimestamp(5)  153208746443747  (1/100000 second precision)
+     * @example getPreciseTimestamp(4)  15320874644375   (1/10000 second precision)
+     * @example getPreciseTimestamp(3)  1532087464437    (millisecond precision)
+     * @example getPreciseTimestamp(2)  153208746444     (1/100 second precision)
+     * @example getPreciseTimestamp(1)  15320874644      (1/10 second precision)
+     * @example getPreciseTimestamp(0)  1532087464       (second precision)
+     * @example getPreciseTimestamp(-1) 153208746        (10 second precision)
+     * @example getPreciseTimestamp(-2) 15320875         (100 second precision)
+     *
+     * @param int $precision
+     *
+     * @return float
+     */
+    public function getPreciseTimestamp($precision = 6)
+    {
+        return round(((float) $this->rawFormat('Uu')) / pow(10, 6 - $precision));
+    }
+
+    /**
+     * Returns the milliseconds timestamps used amongst other by Date javascript objects.
+     *
+     * @return float
+     */
+    public function valueOf()
+    {
+        return $this->getPreciseTimestamp(3);
+    }
+
+    /**
+     * Returns the timestamp with millisecond precision.
+     *
+     * @return int
+     */
+    public function getTimestampMs()
+    {
+        return (int) $this->getPreciseTimestamp(3);
+    }
+
+    /**
+     * @alias getTimestamp
+     *
+     * Returns the UNIX timestamp for the current date.
+     *
+     * @return int
+     */
+    public function unix()
+    {
+        return $this->getTimestamp();
+    }
+
+    /**
+     * Return an array with integer part digits and decimals digits split from one or more positive numbers
+     * (such as timestamps) as string with the given number of decimals (6 by default).
+     *
+     * By splitting integer and decimal, this method obtain a better precision than
+     * number_format when the input is a string.
+     *
+     * @param float|int|string $numbers  one or more numbers
+     * @param int              $decimals number of decimals precision (6 by default)
+     *
+     * @return array 0-index is integer part, 1-index is decimal part digits
+     */
+    private static function getIntegerAndDecimalParts($numbers, $decimals = 6)
+    {
+        if (\is_int($numbers) || \is_float($numbers)) {
+            $numbers = number_format($numbers, $decimals, '.', '');
+        }
+
+        $sign = str_starts_with($numbers, '-') ? -1 : 1;
+        $integer = 0;
+        $decimal = 0;
+
+        foreach (preg_split('`[^\d.]+`', $numbers) as $chunk) {
+            [$integerPart, $decimalPart] = explode('.', "$chunk.");
+
+            $integer += (int) $integerPart;
+            $decimal += (float) ("0.$decimalPart");
+        }
+
+        $overflow = floor($decimal);
+        $integer += $overflow;
+        $decimal -= $overflow;
+
+        return [$sign * $integer, $decimal === 0.0 ? 0.0 : $sign * round($decimal * pow(10, $decimals))];
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php
new file mode 100644
index 00000000..38cb2406
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Closure;
+
+/**
+ * Trait ToStringFormat.
+ *
+ * Handle global format customization for string cast of the object.
+ */
+trait ToStringFormat
+{
+    /**
+     * Format to use for __toString method when type juggling occurs.
+     *
+     * @var string|Closure|null
+     */
+    protected static $toStringFormat;
+
+    /**
+     * Reset the format used to the default when type juggling a Carbon instance to a string
+     *
+     * @return void
+     */
+    public static function resetToStringFormat()
+    {
+        static::setToStringFormat(null);
+    }
+
+    /**
+     * @param string|Closure|null $format
+     *
+     * @return void
+     *
+     * @deprecated To avoid conflict between different third-party libraries, static setters should not be used.
+     *             You should rather let Carbon object being cast to string with DEFAULT_TO_STRING_FORMAT, and
+     *             use other method or custom format passed to format() method if you need to dump another string
+     *             format.
+     *
+     * Set the default format used when type juggling a Carbon instance to a string.
+     */
+    public static function setToStringFormat($format)
+    {
+        static::$toStringFormat = $format;
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Units.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
new file mode 100644
index 00000000..f4f797d9
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Units.php
@@ -0,0 +1,406 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+use Carbon\CarbonConverterInterface;
+use Carbon\CarbonInterface;
+use Carbon\CarbonInterval;
+use Carbon\Exceptions\UnitException;
+use Closure;
+use DateInterval;
+use ReturnTypeWillChange;
+
+/**
+ * Trait Units.
+ *
+ * Add, subtract and set units.
+ */
+trait Units
+{
+    /**
+     * Add seconds to the instance using timestamp. Positive $value travels
+     * forward while negative $value travels into the past.
+     *
+     * @param string $unit
+     * @param int    $value
+     *
+     * @return static
+     */
+    public function addRealUnit($unit, $value = 1)
+    {
+        switch ($unit) {
+            // @call addRealUnit
+            case 'micro':
+
+            // @call addRealUnit
+            case 'microsecond':
+                /* @var CarbonInterface $this */
+                $diff = $this->microsecond + $value;
+                $time = $this->getTimestamp();
+                $seconds = (int) floor($diff / static::MICROSECONDS_PER_SECOND);
+                $time += $seconds;
+                $diff -= $seconds * static::MICROSECONDS_PER_SECOND;
+                $microtime = str_pad((string) $diff, 6, '0', STR_PAD_LEFT);
+                $tz = $this->tz;
+
+                return $this->tz('UTC')->modify("@$time.$microtime")->tz($tz);
+
+            // @call addRealUnit
+            case 'milli':
+            // @call addRealUnit
+            case 'millisecond':
+                return $this->addRealUnit('microsecond', $value * static::MICROSECONDS_PER_MILLISECOND);
+
+            // @call addRealUnit
+            case 'second':
+                break;
+
+            // @call addRealUnit
+            case 'minute':
+                $value *= static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'hour':
+                $value *= static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'day':
+                $value *= static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'week':
+                $value *= static::DAYS_PER_WEEK * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'month':
+                $value *= 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'quarter':
+                $value *= static::MONTHS_PER_QUARTER * 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'year':
+                $value *= 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'decade':
+                $value *= static::YEARS_PER_DECADE * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'century':
+                $value *= static::YEARS_PER_CENTURY * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            // @call addRealUnit
+            case 'millennium':
+                $value *= static::YEARS_PER_MILLENNIUM * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE;
+
+                break;
+
+            default:
+                if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) {
+                    throw new UnitException("Invalid unit for real timestamp add/sub: '$unit'");
+                }
+
+                return $this;
+        }
+
+        /* @var CarbonInterface $this */
+        return $this->setTimestamp((int) ($this->getTimestamp() + $value));
+    }
+
+    public function subRealUnit($unit, $value = 1)
+    {
+        return $this->addRealUnit($unit, -$value);
+    }
+
+    /**
+     * Returns true if a property can be changed via setter.
+     *
+     * @param string $unit
+     *
+     * @return bool
+     */
+    public static function isModifiableUnit($unit)
+    {
+        static $modifiableUnits = [
+            // @call addUnit
+            'millennium',
+            // @call addUnit
+            'century',
+            // @call addUnit
+            'decade',
+            // @call addUnit
+            'quarter',
+            // @call addUnit
+            'week',
+            // @call addUnit
+            'weekday',
+        ];
+
+        return \in_array($unit, $modifiableUnits, true) || \in_array($unit, static::$units, true);
+    }
+
+    /**
+     * Call native PHP DateTime/DateTimeImmutable add() method.
+     *
+     * @param DateInterval $interval
+     *
+     * @return static
+     */
+    public function rawAdd(DateInterval $interval)
+    {
+        return parent::add($interval);
+    }
+
+    /**
+     * Add given units or interval to the current instance.
+     *
+     * @example $date->add('hour', 3)
+     * @example $date->add(15, 'days')
+     * @example $date->add(CarbonInterval::days(4))
+     *
+     * @param string|DateInterval|Closure|CarbonConverterInterface $unit
+     * @param int                                                  $value
+     * @param bool|null                                            $overflow
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function add($unit, $value = 1, $overflow = null)
+    {
+        if (\is_string($unit) && \func_num_args() === 1) {
+            $unit = CarbonInterval::make($unit);
+        }
+
+        if ($unit instanceof CarbonConverterInterface) {
+            return $this->resolveCarbon($unit->convertDate($this, false));
+        }
+
+        if ($unit instanceof Closure) {
+            return $this->resolveCarbon($unit($this, false));
+        }
+
+        if ($unit instanceof DateInterval) {
+            return parent::add($unit);
+        }
+
+        if (is_numeric($unit)) {
+            [$value, $unit] = [$unit, $value];
+        }
+
+        return $this->addUnit($unit, $value, $overflow);
+    }
+
+    /**
+     * Add given units to the current instance.
+     *
+     * @param string    $unit
+     * @param int       $value
+     * @param bool|null $overflow
+     *
+     * @return static
+     */
+    public function addUnit($unit, $value = 1, $overflow = null)
+    {
+        $originalArgs = \func_get_args();
+
+        $date = $this;
+
+        if (!is_numeric($value) || !(float) $value) {
+            return $date->isMutable() ? $date : $date->avoidMutation();
+        }
+
+        $unit = self::singularUnit($unit);
+        $metaUnits = [
+            'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'],
+            'century' => [static::YEARS_PER_CENTURY, 'year'],
+            'decade' => [static::YEARS_PER_DECADE, 'year'],
+            'quarter' => [static::MONTHS_PER_QUARTER, 'month'],
+        ];
+
+        if (isset($metaUnits[$unit])) {
+            [$factor, $unit] = $metaUnits[$unit];
+            $value *= $factor;
+        }
+
+        if ($unit === 'weekday') {
+            $weekendDays = static::getWeekendDays();
+
+            if ($weekendDays !== [static::SATURDAY, static::SUNDAY]) {
+                $absoluteValue = abs($value);
+                $sign = $value / max(1, $absoluteValue);
+                $weekDaysCount = 7 - min(6, \count(array_unique($weekendDays)));
+                $weeks = floor($absoluteValue / $weekDaysCount);
+
+                for ($diff = $absoluteValue % $weekDaysCount; $diff; $diff--) {
+                    /** @var static $date */
+                    $date = $date->addDays($sign);
+
+                    while (\in_array($date->dayOfWeek, $weekendDays, true)) {
+                        $date = $date->addDays($sign);
+                    }
+                }
+
+                $value = $weeks * $sign;
+                $unit = 'week';
+            }
+
+            $timeString = $date->toTimeString();
+        } elseif ($canOverflow = (\in_array($unit, [
+                'month',
+                'year',
+            ]) && ($overflow === false || (
+                $overflow === null &&
+                ($ucUnit = ucfirst($unit).'s') &&
+                !($this->{'local'.$ucUnit.'Overflow'} ?? static::{'shouldOverflow'.$ucUnit}())
+            )))) {
+            $day = $date->day;
+        }
+
+        $value = (int) $value;
+
+        if ($unit === 'milli' || $unit === 'millisecond') {
+            $unit = 'microsecond';
+            $value *= static::MICROSECONDS_PER_MILLISECOND;
+        }
+
+        // Work-around for bug https://bugs.php.net/bug.php?id=75642
+        if ($unit === 'micro' || $unit === 'microsecond') {
+            $microseconds = $this->micro + $value;
+            $second = (int) floor($microseconds / static::MICROSECONDS_PER_SECOND);
+            $microseconds %= static::MICROSECONDS_PER_SECOND;
+            if ($microseconds < 0) {
+                $microseconds += static::MICROSECONDS_PER_SECOND;
+            }
+            $date = $date->microseconds($microseconds);
+            $unit = 'second';
+            $value = $second;
+        }
+        $date = $date->modify("$value $unit");
+
+        if (isset($timeString)) {
+            $date = $date->setTimeFromTimeString($timeString);
+        } elseif (isset($canOverflow, $day) && $canOverflow && $day !== $date->day) {
+            $date = $date->modify('last day of previous month');
+        }
+
+        if (!$date) {
+            throw new UnitException('Unable to add unit '.var_export($originalArgs, true));
+        }
+
+        return $date;
+    }
+
+    /**
+     * Subtract given units to the current instance.
+     *
+     * @param string    $unit
+     * @param int       $value
+     * @param bool|null $overflow
+     *
+     * @return static
+     */
+    public function subUnit($unit, $value = 1, $overflow = null)
+    {
+        return $this->addUnit($unit, -$value, $overflow);
+    }
+
+    /**
+     * Call native PHP DateTime/DateTimeImmutable sub() method.
+     *
+     * @param DateInterval $interval
+     *
+     * @return static
+     */
+    public function rawSub(DateInterval $interval)
+    {
+        return parent::sub($interval);
+    }
+
+    /**
+     * Subtract given units or interval to the current instance.
+     *
+     * @example $date->sub('hour', 3)
+     * @example $date->sub(15, 'days')
+     * @example $date->sub(CarbonInterval::days(4))
+     *
+     * @param string|DateInterval|Closure|CarbonConverterInterface $unit
+     * @param int                                                  $value
+     * @param bool|null                                            $overflow
+     *
+     * @return static
+     */
+    #[ReturnTypeWillChange]
+    public function sub($unit, $value = 1, $overflow = null)
+    {
+        if (\is_string($unit) && \func_num_args() === 1) {
+            $unit = CarbonInterval::make($unit);
+        }
+
+        if ($unit instanceof CarbonConverterInterface) {
+            return $this->resolveCarbon($unit->convertDate($this, true));
+        }
+
+        if ($unit instanceof Closure) {
+            return $this->resolveCarbon($unit($this, true));
+        }
+
+        if ($unit instanceof DateInterval) {
+            return parent::sub($unit);
+        }
+
+        if (is_numeric($unit)) {
+            [$value, $unit] = [$unit, $value];
+        }
+
+        return $this->addUnit($unit, -(float) $value, $overflow);
+    }
+
+    /**
+     * Subtract given units or interval to the current instance.
+     *
+     * @see sub()
+     *
+     * @param string|DateInterval $unit
+     * @param int                 $value
+     * @param bool|null           $overflow
+     *
+     * @return static
+     */
+    public function subtract($unit, $value = 1, $overflow = null)
+    {
+        if (\is_string($unit) && \func_num_args() === 1) {
+            $unit = CarbonInterval::make($unit);
+        }
+
+        return $this->sub($unit, $value, $overflow);
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Week.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
new file mode 100644
index 00000000..6f148145
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Traits/Week.php
@@ -0,0 +1,219 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon\Traits;
+
+/**
+ * Trait Week.
+ *
+ * week and ISO week number, year and count in year.
+ *
+ * Depends on the following properties:
+ *
+ * @property int $daysInYear
+ * @property int $dayOfWeek
+ * @property int $dayOfYear
+ * @property int $year
+ *
+ * Depends on the following methods:
+ *
+ * @method static addWeeks(int $weeks = 1)
+ * @method static copy()
+ * @method static dayOfYear(int $dayOfYear)
+ * @method string getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null)
+ * @method static next(int|string $day = null)
+ * @method static startOfWeek(int $day = 1)
+ * @method static subWeeks(int $weeks = 1)
+ * @method static year(int $year = null)
+ */
+trait Week
+{
+    /**
+     * Set/get the week number of year using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $year      if null, act as a getter, if not null, set the year and return current instance.
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int|static
+     */
+    public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null)
+    {
+        return $this->weekYear(
+            $year,
+            $dayOfWeek ?? 1,
+            $dayOfYear ?? 4
+        );
+    }
+
+    /**
+     * Set/get the week number of year using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $year      if null, act as a getter, if not null, set the year and return current instance.
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int|static
+     */
+    public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null)
+    {
+        $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
+        $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
+
+        if ($year !== null) {
+            $year = (int) round($year);
+
+            if ($this->weekYear(null, $dayOfWeek, $dayOfYear) === $year) {
+                return $this->avoidMutation();
+            }
+
+            $week = $this->week(null, $dayOfWeek, $dayOfYear);
+            $day = $this->dayOfWeek;
+            $date = $this->year($year);
+            switch ($date->weekYear(null, $dayOfWeek, $dayOfYear) - $year) {
+                case 1:
+                    $date = $date->subWeeks(26);
+
+                    break;
+                case -1:
+                    $date = $date->addWeeks(26);
+
+                    break;
+            }
+
+            $date = $date->addWeeks($week - $date->week(null, $dayOfWeek, $dayOfYear))->startOfWeek($dayOfWeek);
+
+            if ($date->dayOfWeek === $day) {
+                return $date;
+            }
+
+            return $date->next($day);
+        }
+
+        $year = $this->year;
+        $day = $this->dayOfYear;
+        $date = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+
+        if ($date->year === $year && $day < $date->dayOfYear) {
+            return $year - 1;
+        }
+
+        $date = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+
+        if ($date->year === $year && $day >= $date->dayOfYear) {
+            return $year + 1;
+        }
+
+        return $year;
+    }
+
+    /**
+     * Get the number of weeks of the current week-year using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int
+     */
+    public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null)
+    {
+        return $this->weeksInYear(
+            $dayOfWeek ?? 1,
+            $dayOfYear ?? 4
+        );
+    }
+
+    /**
+     * Get the number of weeks of the current week-year using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday)
+     * @param int|null $dayOfYear first day of year included in the week #1
+     *
+     * @return int
+     */
+    public function weeksInYear($dayOfWeek = null, $dayOfYear = null)
+    {
+        $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
+        $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
+        $year = $this->year;
+        $start = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+        $startDay = $start->dayOfYear;
+        if ($start->year !== $year) {
+            $startDay -= $start->daysInYear;
+        }
+        $end = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+        $endDay = $end->dayOfYear;
+        if ($end->year !== $year) {
+            $endDay += $this->daysInYear;
+        }
+
+        return (int) round(($endDay - $startDay) / 7);
+    }
+
+    /**
+     * Get/set the week number using given first day of week and first
+     * day of year included in the first week. Or use US format if no settings
+     * given (Sunday / Jan 6).
+     *
+     * @param int|null $week
+     * @param int|null $dayOfWeek
+     * @param int|null $dayOfYear
+     *
+     * @return int|static
+     */
+    public function week($week = null, $dayOfWeek = null, $dayOfYear = null)
+    {
+        $date = $this;
+        $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0;
+        $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1;
+
+        if ($week !== null) {
+            return $date->addWeeks(round($week) - $this->week(null, $dayOfWeek, $dayOfYear));
+        }
+
+        $start = $date->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+        $end = $date->avoidMutation()->startOfWeek($dayOfWeek);
+        if ($start > $end) {
+            $start = $start->subWeeks(26)->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek);
+        }
+        $week = (int) ($start->diffInDays($end) / 7 + 1);
+
+        return $week > $end->weeksInYear($dayOfWeek, $dayOfYear) ? 1 : $week;
+    }
+
+    /**
+     * Get/set the week number using given first day of week and first
+     * day of year included in the first week. Or use ISO format if no settings
+     * given.
+     *
+     * @param int|null $week
+     * @param int|null $dayOfWeek
+     * @param int|null $dayOfYear
+     *
+     * @return int|static
+     */
+    public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null)
+    {
+        return $this->week(
+            $week,
+            $dayOfWeek ?? 1,
+            $dayOfYear ?? 4
+        );
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/Translator.php b/htdocs/vendor/nesbot/carbon/src/Carbon/Translator.php
new file mode 100644
index 00000000..491c9e72
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/Translator.php
@@ -0,0 +1,32 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use ReflectionMethod;
+use Symfony\Component\Translation;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+$transMethod = new ReflectionMethod(
+    class_exists(TranslatorInterface::class)
+        ? TranslatorInterface::class
+        : Translation\Translator::class,
+    'trans'
+);
+
+require $transMethod->hasReturnType()
+    ? __DIR__.'/../../lazy/Carbon/TranslatorStrongType.php'
+    : __DIR__.'/../../lazy/Carbon/TranslatorWeakType.php';
+
+class Translator extends LazyTranslator
+{
+    // Proxy dynamically loaded LazyTranslator in a static way
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php b/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php
new file mode 100644
index 00000000..ad36c670
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Carbon\Exceptions\ImmutableException;
+use Symfony\Component\Config\ConfigCacheFactoryInterface;
+use Symfony\Component\Translation\Formatter\MessageFormatterInterface;
+
+class TranslatorImmutable extends Translator
+{
+    /** @var bool */
+    private $constructed = false;
+
+    public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false)
+    {
+        parent::__construct($locale, $formatter, $cacheDir, $debug);
+        $this->constructed = true;
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    public function setDirectories(array $directories)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        return parent::setDirectories($directories);
+    }
+
+    public function setLocale($locale)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        return parent::setLocale($locale);
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    public function setMessages($locale, $messages)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        return parent::setMessages($locale, $messages);
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    public function setTranslations($messages)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        return parent::setTranslations($messages);
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        parent::setConfigCacheFactory($configCacheFactory);
+    }
+
+    public function resetMessages($locale = null)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        return parent::resetMessages($locale);
+    }
+
+    /**
+     * @codeCoverageIgnore
+     */
+    public function setFallbackLocales(array $locales)
+    {
+        $this->disallowMutation(__METHOD__);
+
+        parent::setFallbackLocales($locales);
+    }
+
+    private function disallowMutation($method)
+    {
+        if ($this->constructed) {
+            throw new ImmutableException($method.' not allowed on '.static::class);
+        }
+    }
+}
diff --git a/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php b/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php
new file mode 100644
index 00000000..ef4dee8e
--- /dev/null
+++ b/htdocs/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Carbon;
+
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+/**
+ * Mark translator using strong type from symfony/translation >= 6.
+ */
+interface TranslatorStrongTypeInterface
+{
+    public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages');
+}
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/LICENSE b/htdocs/vendor/symfony/polyfill-mbstring/LICENSE
new file mode 100644
index 00000000..4cd8bdd3
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2019 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/Mbstring.php b/htdocs/vendor/symfony/polyfill-mbstring/Mbstring.php
new file mode 100644
index 00000000..bce5c4a8
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/Mbstring.php
@@ -0,0 +1,874 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Mbstring;
+
+/**
+ * Partial mbstring implementation in PHP, iconv based, UTF-8 centric.
+ *
+ * Implemented:
+ * - mb_chr                  - Returns a specific character from its Unicode code point
+ * - mb_convert_encoding     - Convert character encoding
+ * - mb_convert_variables    - Convert character code in variable(s)
+ * - mb_decode_mimeheader    - Decode string in MIME header field
+ * - mb_encode_mimeheader    - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED
+ * - mb_decode_numericentity - Decode HTML numeric string reference to character
+ * - mb_encode_numericentity - Encode character to HTML numeric string reference
+ * - mb_convert_case         - Perform case folding on a string
+ * - mb_detect_encoding      - Detect character encoding
+ * - mb_get_info             - Get internal settings of mbstring
+ * - mb_http_input           - Detect HTTP input character encoding
+ * - mb_http_output          - Set/Get HTTP output character encoding
+ * - mb_internal_encoding    - Set/Get internal character encoding
+ * - mb_list_encodings       - Returns an array of all supported encodings
+ * - mb_ord                  - Returns the Unicode code point of a character
+ * - mb_output_handler       - Callback function converts character encoding in output buffer
+ * - mb_scrub                - Replaces ill-formed byte sequences with substitute characters
+ * - mb_strlen               - Get string length
+ * - mb_strpos               - Find position of first occurrence of string in a string
+ * - mb_strrpos              - Find position of last occurrence of a string in a string
+ * - mb_str_split            - Convert a string to an array
+ * - mb_strtolower           - Make a string lowercase
+ * - mb_strtoupper           - Make a string uppercase
+ * - mb_substitute_character - Set/Get substitution character
+ * - mb_substr               - Get part of string
+ * - mb_stripos              - Finds position of first occurrence of a string within another, case insensitive
+ * - mb_stristr              - Finds first occurrence of a string within another, case insensitive
+ * - mb_strrchr              - Finds the last occurrence of a character in a string within another
+ * - mb_strrichr             - Finds the last occurrence of a character in a string within another, case insensitive
+ * - mb_strripos             - Finds position of last occurrence of a string within another, case insensitive
+ * - mb_strstr               - Finds first occurrence of a string within another
+ * - mb_strwidth             - Return width of string
+ * - mb_substr_count         - Count the number of substring occurrences
+ *
+ * Not implemented:
+ * - mb_convert_kana         - Convert "kana" one from another ("zen-kaku", "han-kaku" and more)
+ * - mb_ereg_*               - Regular expression with multibyte support
+ * - mb_parse_str            - Parse GET/POST/COOKIE data and set global variable
+ * - mb_preferred_mime_name  - Get MIME charset string
+ * - mb_regex_encoding       - Returns current encoding for multibyte regex as string
+ * - mb_regex_set_options    - Set/Get the default options for mbregex functions
+ * - mb_send_mail            - Send encoded mail
+ * - mb_split                - Split multibyte string using regular expression
+ * - mb_strcut               - Get part of string
+ * - mb_strimwidth           - Get truncated string with specified width
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Mbstring
+{
+    public const MB_CASE_FOLD = \PHP_INT_MAX;
+
+    private const CASE_FOLD = [
+        ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"],
+        ['μ', 's', 'ι',        'σ', 'β',        'θ',        'φ',        'π',        'κ',        'ρ',        'ε',        "\xE1\xB9\xA1", 'ι'],
+    ];
+
+    private static $encodingList = ['ASCII', 'UTF-8'];
+    private static $language = 'neutral';
+    private static $internalEncoding = 'UTF-8';
+
+    public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null)
+    {
+        if (\is_array($fromEncoding) || (null !== $fromEncoding && false !== strpos($fromEncoding, ','))) {
+            $fromEncoding = self::mb_detect_encoding($s, $fromEncoding);
+        } else {
+            $fromEncoding = self::getEncoding($fromEncoding);
+        }
+
+        $toEncoding = self::getEncoding($toEncoding);
+
+        if ('BASE64' === $fromEncoding) {
+            $s = base64_decode($s);
+            $fromEncoding = $toEncoding;
+        }
+
+        if ('BASE64' === $toEncoding) {
+            return base64_encode($s);
+        }
+
+        if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) {
+            if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) {
+                $fromEncoding = 'Windows-1252';
+            }
+            if ('UTF-8' !== $fromEncoding) {
+                $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s);
+            }
+
+            return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s);
+        }
+
+        if ('HTML-ENTITIES' === $fromEncoding) {
+            $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8');
+            $fromEncoding = 'UTF-8';
+        }
+
+        return iconv($fromEncoding, $toEncoding.'//IGNORE', $s);
+    }
+
+    public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars)
+    {
+        $ok = true;
+        array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) {
+            if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) {
+                $ok = false;
+            }
+        });
+
+        return $ok ? $fromEncoding : false;
+    }
+
+    public static function mb_decode_mimeheader($s)
+    {
+        return iconv_mime_decode($s, 2, self::$internalEncoding);
+    }
+
+    public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null)
+    {
+        trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING);
+    }
+
+    public static function mb_decode_numericentity($s, $convmap, $encoding = null)
+    {
+        if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+            trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+            return null;
+        }
+
+        if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+            return false;
+        }
+
+        if (null !== $encoding && !\is_scalar($encoding)) {
+            trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+            return '';  // Instead of null (cf. mb_encode_numericentity).
+        }
+
+        $s = (string) $s;
+        if ('' === $s) {
+            return '';
+        }
+
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $encoding) {
+            $encoding = null;
+            if (!preg_match('//u', $s)) {
+                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+            }
+        } else {
+            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+        }
+
+        $cnt = floor(\count($convmap) / 4) * 4;
+
+        for ($i = 0; $i < $cnt; $i += 4) {
+            // collector_decode_htmlnumericentity ignores $convmap[$i + 3]
+            $convmap[$i] += $convmap[$i + 2];
+            $convmap[$i + 1] += $convmap[$i + 2];
+        }
+
+        $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) {
+            $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1];
+            for ($i = 0; $i < $cnt; $i += 4) {
+                if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) {
+                    return self::mb_chr($c - $convmap[$i + 2]);
+                }
+            }
+
+            return $m[0];
+        }, $s);
+
+        if (null === $encoding) {
+            return $s;
+        }
+
+        return iconv('UTF-8', $encoding.'//IGNORE', $s);
+    }
+
+    public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false)
+    {
+        if (null !== $s && !\is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) {
+            trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+            return null;
+        }
+
+        if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) {
+            return false;
+        }
+
+        if (null !== $encoding && !\is_scalar($encoding)) {
+            trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING);
+
+            return null;  // Instead of '' (cf. mb_decode_numericentity).
+        }
+
+        if (null !== $is_hex && !\is_scalar($is_hex)) {
+            trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING);
+
+            return null;
+        }
+
+        $s = (string) $s;
+        if ('' === $s) {
+            return '';
+        }
+
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $encoding) {
+            $encoding = null;
+            if (!preg_match('//u', $s)) {
+                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+            }
+        } else {
+            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+        }
+
+        static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+        $cnt = floor(\count($convmap) / 4) * 4;
+        $i = 0;
+        $len = \strlen($s);
+        $result = '';
+
+        while ($i < $len) {
+            $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+            $uchr = substr($s, $i, $ulen);
+            $i += $ulen;
+            $c = self::mb_ord($uchr);
+
+            for ($j = 0; $j < $cnt; $j += 4) {
+                if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) {
+                    $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3];
+                    $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';';
+                    continue 2;
+                }
+            }
+            $result .= $uchr;
+        }
+
+        if (null === $encoding) {
+            return $result;
+        }
+
+        return iconv('UTF-8', $encoding.'//IGNORE', $result);
+    }
+
+    public static function mb_convert_case($s, $mode, $encoding = null)
+    {
+        $s = (string) $s;
+        if ('' === $s) {
+            return '';
+        }
+
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $encoding) {
+            $encoding = null;
+            if (!preg_match('//u', $s)) {
+                $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s);
+            }
+        } else {
+            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+        }
+
+        if (\MB_CASE_TITLE == $mode) {
+            static $titleRegexp = null;
+            if (null === $titleRegexp) {
+                $titleRegexp = self::getData('titleCaseRegexp');
+            }
+            $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s);
+        } else {
+            if (\MB_CASE_UPPER == $mode) {
+                static $upper = null;
+                if (null === $upper) {
+                    $upper = self::getData('upperCase');
+                }
+                $map = $upper;
+            } else {
+                if (self::MB_CASE_FOLD === $mode) {
+                    $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s);
+                }
+
+                static $lower = null;
+                if (null === $lower) {
+                    $lower = self::getData('lowerCase');
+                }
+                $map = $lower;
+            }
+
+            static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
+
+            $i = 0;
+            $len = \strlen($s);
+
+            while ($i < $len) {
+                $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"];
+                $uchr = substr($s, $i, $ulen);
+                $i += $ulen;
+
+                if (isset($map[$uchr])) {
+                    $uchr = $map[$uchr];
+                    $nlen = \strlen($uchr);
+
+                    if ($nlen == $ulen) {
+                        $nlen = $i;
+                        do {
+                            $s[--$nlen] = $uchr[--$ulen];
+                        } while ($ulen);
+                    } else {
+                        $s = substr_replace($s, $uchr, $i - $ulen, $ulen);
+                        $len += $nlen - $ulen;
+                        $i += $nlen - $ulen;
+                    }
+                }
+            }
+        }
+
+        if (null === $encoding) {
+            return $s;
+        }
+
+        return iconv('UTF-8', $encoding.'//IGNORE', $s);
+    }
+
+    public static function mb_internal_encoding($encoding = null)
+    {
+        if (null === $encoding) {
+            return self::$internalEncoding;
+        }
+
+        $normalizedEncoding = self::getEncoding($encoding);
+
+        if ('UTF-8' === $normalizedEncoding || false !== @iconv($normalizedEncoding, $normalizedEncoding, ' ')) {
+            self::$internalEncoding = $normalizedEncoding;
+
+            return true;
+        }
+
+        if (80000 > \PHP_VERSION_ID) {
+            return false;
+        }
+
+        throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding));
+    }
+
+    public static function mb_language($lang = null)
+    {
+        if (null === $lang) {
+            return self::$language;
+        }
+
+        switch ($normalizedLang = strtolower($lang)) {
+            case 'uni':
+            case 'neutral':
+                self::$language = $normalizedLang;
+
+                return true;
+        }
+
+        if (80000 > \PHP_VERSION_ID) {
+            return false;
+        }
+
+        throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang));
+    }
+
+    public static function mb_list_encodings()
+    {
+        return ['UTF-8'];
+    }
+
+    public static function mb_encoding_aliases($encoding)
+    {
+        switch (strtoupper($encoding)) {
+            case 'UTF8':
+            case 'UTF-8':
+                return ['utf8'];
+        }
+
+        return false;
+    }
+
+    public static function mb_check_encoding($var = null, $encoding = null)
+    {
+        if (null === $encoding) {
+            if (null === $var) {
+                return false;
+            }
+            $encoding = self::$internalEncoding;
+        }
+
+        return self::mb_detect_encoding($var, [$encoding]) || false !== @iconv($encoding, $encoding, $var);
+    }
+
+    public static function mb_detect_encoding($str, $encodingList = null, $strict = false)
+    {
+        if (null === $encodingList) {
+            $encodingList = self::$encodingList;
+        } else {
+            if (!\is_array($encodingList)) {
+                $encodingList = array_map('trim', explode(',', $encodingList));
+            }
+            $encodingList = array_map('strtoupper', $encodingList);
+        }
+
+        foreach ($encodingList as $enc) {
+            switch ($enc) {
+                case 'ASCII':
+                    if (!preg_match('/[\x80-\xFF]/', $str)) {
+                        return $enc;
+                    }
+                    break;
+
+                case 'UTF8':
+                case 'UTF-8':
+                    if (preg_match('//u', $str)) {
+                        return 'UTF-8';
+                    }
+                    break;
+
+                default:
+                    if (0 === strncmp($enc, 'ISO-8859-', 9)) {
+                        return $enc;
+                    }
+            }
+        }
+
+        return false;
+    }
+
+    public static function mb_detect_order($encodingList = null)
+    {
+        if (null === $encodingList) {
+            return self::$encodingList;
+        }
+
+        if (!\is_array($encodingList)) {
+            $encodingList = array_map('trim', explode(',', $encodingList));
+        }
+        $encodingList = array_map('strtoupper', $encodingList);
+
+        foreach ($encodingList as $enc) {
+            switch ($enc) {
+                default:
+                    if (strncmp($enc, 'ISO-8859-', 9)) {
+                        return false;
+                    }
+                    // no break
+                case 'ASCII':
+                case 'UTF8':
+                case 'UTF-8':
+            }
+        }
+
+        self::$encodingList = $encodingList;
+
+        return true;
+    }
+
+    public static function mb_strlen($s, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        if ('CP850' === $encoding || 'ASCII' === $encoding) {
+            return \strlen($s);
+        }
+
+        return @iconv_strlen($s, $encoding);
+    }
+
+    public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        if ('CP850' === $encoding || 'ASCII' === $encoding) {
+            return strpos($haystack, $needle, $offset);
+        }
+
+        $needle = (string) $needle;
+        if ('' === $needle) {
+            if (80000 > \PHP_VERSION_ID) {
+                trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING);
+
+                return false;
+            }
+
+            return 0;
+        }
+
+        return iconv_strpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        if ('CP850' === $encoding || 'ASCII' === $encoding) {
+            return strrpos($haystack, $needle, $offset);
+        }
+
+        if ($offset != (int) $offset) {
+            $offset = 0;
+        } elseif ($offset = (int) $offset) {
+            if ($offset < 0) {
+                if (0 > $offset += self::mb_strlen($needle)) {
+                    $haystack = self::mb_substr($haystack, 0, $offset, $encoding);
+                }
+                $offset = 0;
+            } else {
+                $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding);
+            }
+        }
+
+        $pos = '' !== $needle || 80000 > \PHP_VERSION_ID
+            ? iconv_strrpos($haystack, $needle, $encoding)
+            : self::mb_strlen($haystack, $encoding);
+
+        return false !== $pos ? $offset + $pos : false;
+    }
+
+    public static function mb_str_split($string, $split_length = 1, $encoding = null)
+    {
+        if (null !== $string && !\is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) {
+            trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING);
+
+            return null;
+        }
+
+        if (1 > $split_length = (int) $split_length) {
+            if (80000 > \PHP_VERSION_ID) {
+                trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING);
+
+                return false;
+            }
+
+            throw new \ValueError('Argument #2 ($length) must be greater than 0');
+        }
+
+        if (null === $encoding) {
+            $encoding = mb_internal_encoding();
+        }
+
+        if ('UTF-8' === $encoding = self::getEncoding($encoding)) {
+            $rx = '/(';
+            while (65535 < $split_length) {
+                $rx .= '.{65535}';
+                $split_length -= 65535;
+            }
+            $rx .= '.{'.$split_length.'})/us';
+
+            return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY);
+        }
+
+        $result = [];
+        $length = mb_strlen($string, $encoding);
+
+        for ($i = 0; $i < $length; $i += $split_length) {
+            $result[] = mb_substr($string, $i, $split_length, $encoding);
+        }
+
+        return $result;
+    }
+
+    public static function mb_strtolower($s, $encoding = null)
+    {
+        return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding);
+    }
+
+    public static function mb_strtoupper($s, $encoding = null)
+    {
+        return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding);
+    }
+
+    public static function mb_substitute_character($c = null)
+    {
+        if (null === $c) {
+            return 'none';
+        }
+        if (0 === strcasecmp($c, 'none')) {
+            return true;
+        }
+        if (80000 > \PHP_VERSION_ID) {
+            return false;
+        }
+        if (\is_int($c) || 'long' === $c || 'entity' === $c) {
+            return false;
+        }
+
+        throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint');
+    }
+
+    public static function mb_substr($s, $start, $length = null, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        if ('CP850' === $encoding || 'ASCII' === $encoding) {
+            return (string) substr($s, $start, null === $length ? 2147483647 : $length);
+        }
+
+        if ($start < 0) {
+            $start = iconv_strlen($s, $encoding) + $start;
+            if ($start < 0) {
+                $start = 0;
+            }
+        }
+
+        if (null === $length) {
+            $length = 2147483647;
+        } elseif ($length < 0) {
+            $length = iconv_strlen($s, $encoding) + $length - $start;
+            if ($length < 0) {
+                return '';
+            }
+        }
+
+        return (string) iconv_substr($s, $start, $length, $encoding);
+    }
+
+    public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+        return self::mb_strpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_stristr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $pos = self::mb_stripos($haystack, $needle, 0, $encoding);
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+        if ('CP850' === $encoding || 'ASCII' === $encoding) {
+            $pos = strrpos($haystack, $needle);
+        } else {
+            $needle = self::mb_substr($needle, 0, 1, $encoding);
+            $pos = iconv_strrpos($haystack, $needle, $encoding);
+        }
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $needle = self::mb_substr($needle, 0, 1, $encoding);
+        $pos = self::mb_strripos($haystack, $needle, $encoding);
+
+        return self::getSubpart($pos, $part, $haystack, $encoding);
+    }
+
+    public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null)
+    {
+        $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding);
+        $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding);
+
+        return self::mb_strrpos($haystack, $needle, $offset, $encoding);
+    }
+
+    public static function mb_strstr($haystack, $needle, $part = false, $encoding = null)
+    {
+        $pos = strpos($haystack, $needle);
+        if (false === $pos) {
+            return false;
+        }
+        if ($part) {
+            return substr($haystack, 0, $pos);
+        }
+
+        return substr($haystack, $pos);
+    }
+
+    public static function mb_get_info($type = 'all')
+    {
+        $info = [
+            'internal_encoding' => self::$internalEncoding,
+            'http_output' => 'pass',
+            'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)',
+            'func_overload' => 0,
+            'func_overload_list' => 'no overload',
+            'mail_charset' => 'UTF-8',
+            'mail_header_encoding' => 'BASE64',
+            'mail_body_encoding' => 'BASE64',
+            'illegal_chars' => 0,
+            'encoding_translation' => 'Off',
+            'language' => self::$language,
+            'detect_order' => self::$encodingList,
+            'substitute_character' => 'none',
+            'strict_detection' => 'Off',
+        ];
+
+        if ('all' === $type) {
+            return $info;
+        }
+        if (isset($info[$type])) {
+            return $info[$type];
+        }
+
+        return false;
+    }
+
+    public static function mb_http_input($type = '')
+    {
+        return false;
+    }
+
+    public static function mb_http_output($encoding = null)
+    {
+        return null !== $encoding ? 'pass' === $encoding : 'pass';
+    }
+
+    public static function mb_strwidth($s, $encoding = null)
+    {
+        $encoding = self::getEncoding($encoding);
+
+        if ('UTF-8' !== $encoding) {
+            $s = iconv($encoding, 'UTF-8//IGNORE', $s);
+        }
+
+        $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide);
+
+        return ($wide << 1) + iconv_strlen($s, 'UTF-8');
+    }
+
+    public static function mb_substr_count($haystack, $needle, $encoding = null)
+    {
+        return substr_count($haystack, $needle);
+    }
+
+    public static function mb_output_handler($contents, $status)
+    {
+        return $contents;
+    }
+
+    public static function mb_chr($code, $encoding = null)
+    {
+        if (0x80 > $code %= 0x200000) {
+            $s = \chr($code);
+        } elseif (0x800 > $code) {
+            $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
+        } elseif (0x10000 > $code) {
+            $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+        } else {
+            $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
+        }
+
+        if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+            $s = mb_convert_encoding($s, $encoding, 'UTF-8');
+        }
+
+        return $s;
+    }
+
+    public static function mb_ord($s, $encoding = null)
+    {
+        if ('UTF-8' !== $encoding = self::getEncoding($encoding)) {
+            $s = mb_convert_encoding($s, 'UTF-8', $encoding);
+        }
+
+        if (1 === \strlen($s)) {
+            return \ord($s);
+        }
+
+        $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
+        if (0xF0 <= $code) {
+            return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
+        }
+        if (0xE0 <= $code) {
+            return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
+        }
+        if (0xC0 <= $code) {
+            return (($code - 0xC0) << 6) + $s[2] - 0x80;
+        }
+
+        return $code;
+    }
+
+    private static function getSubpart($pos, $part, $haystack, $encoding)
+    {
+        if (false === $pos) {
+            return false;
+        }
+        if ($part) {
+            return self::mb_substr($haystack, 0, $pos, $encoding);
+        }
+
+        return self::mb_substr($haystack, $pos, null, $encoding);
+    }
+
+    private static function html_encoding_callback(array $m)
+    {
+        $i = 1;
+        $entities = '';
+        $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8'));
+
+        while (isset($m[$i])) {
+            if (0x80 > $m[$i]) {
+                $entities .= \chr($m[$i++]);
+                continue;
+            }
+            if (0xF0 <= $m[$i]) {
+                $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+            } elseif (0xE0 <= $m[$i]) {
+                $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80;
+            } else {
+                $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80;
+            }
+
+            $entities .= '&#'.$c.';';
+        }
+
+        return $entities;
+    }
+
+    private static function title_case(array $s)
+    {
+        return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8');
+    }
+
+    private static function getData($file)
+    {
+        if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
+            return require $file;
+        }
+
+        return false;
+    }
+
+    private static function getEncoding($encoding)
+    {
+        if (null === $encoding) {
+            return self::$internalEncoding;
+        }
+
+        if ('UTF-8' === $encoding) {
+            return 'UTF-8';
+        }
+
+        $encoding = strtoupper($encoding);
+
+        if ('8BIT' === $encoding || 'BINARY' === $encoding) {
+            return 'CP850';
+        }
+
+        if ('UTF8' === $encoding) {
+            return 'UTF-8';
+        }
+
+        return $encoding;
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/README.md b/htdocs/vendor/symfony/polyfill-mbstring/README.md
new file mode 100644
index 00000000..478b40da
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/README.md
@@ -0,0 +1,13 @@
+Symfony Polyfill / Mbstring
+===========================
+
+This component provides a partial, native PHP implementation for the
+[Mbstring](https://php.net/mbstring) extension.
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
new file mode 100644
index 00000000..fac60b08
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php
@@ -0,0 +1,1397 @@
+<?php
+
+return array (
+  'A' => 'a',
+  'B' => 'b',
+  'C' => 'c',
+  'D' => 'd',
+  'E' => 'e',
+  'F' => 'f',
+  'G' => 'g',
+  'H' => 'h',
+  'I' => 'i',
+  'J' => 'j',
+  'K' => 'k',
+  'L' => 'l',
+  'M' => 'm',
+  'N' => 'n',
+  'O' => 'o',
+  'P' => 'p',
+  'Q' => 'q',
+  'R' => 'r',
+  'S' => 's',
+  'T' => 't',
+  'U' => 'u',
+  'V' => 'v',
+  'W' => 'w',
+  'X' => 'x',
+  'Y' => 'y',
+  'Z' => 'z',
+  'À' => 'à',
+  'Á' => 'á',
+  'Â' => 'â',
+  'Ã' => 'ã',
+  'Ä' => 'ä',
+  'Ã…' => 'Ã¥',
+  'Æ' => 'æ',
+  'Ç' => 'ç',
+  'È' => 'è',
+  'É' => 'é',
+  'Ê' => 'ê',
+  'Ë' => 'ë',
+  'Ì' => 'ì',
+  'Í' => 'í',
+  'Î' => 'î',
+  'Ï' => 'ï',
+  'Ð' => 'ð',
+  'Ñ' => 'ñ',
+  'Ò' => 'ò',
+  'Ó' => 'ó',
+  'Ô' => 'ô',
+  'Õ' => 'õ',
+  'Ö' => 'ö',
+  'Ø' => 'ø',
+  'Ù' => 'ù',
+  'Ú' => 'ú',
+  'Û' => 'û',
+  'Ü' => 'ü',
+  'Ý' => 'ý',
+  'Þ' => 'þ',
+  'Ā' => 'ā',
+  'Ă' => 'ă',
+  'Ä„' => 'Ä…',
+  'Ć' => 'ć',
+  'Ĉ' => 'ĉ',
+  'ÄŠ' => 'Ä‹',
+  'Č' => 'č',
+  'Ď' => 'ď',
+  'Đ' => 'đ',
+  'Ä’' => 'Ä“',
+  'Ä”' => 'Ä•',
+  'Ä–' => 'Ä—',
+  'Ę' => 'ę',
+  'Äš' => 'Ä›',
+  'Ĝ' => 'ĝ',
+  'Äž' => 'ÄŸ',
+  'Ä ' => 'Ä¡',
+  'Ä¢' => 'Ä£',
+  'Ĥ' => 'ĥ',
+  'Ħ' => 'ħ',
+  'Ĩ' => 'ĩ',
+  'Ī' => 'ī',
+  'Ĭ' => 'ĭ',
+  'Į' => 'į',
+  'İ' => 'i̇',
+  'IJ' => 'ij',
+  'Ĵ' => 'ĵ',
+  'Ķ' => 'ķ',
+  'Ĺ' => 'ĺ',
+  'Ļ' => 'ļ',
+  'Ľ' => 'ľ',
+  'Ä¿' => 'Å€',
+  'Ł' => 'ł',
+  'Ń' => 'ń',
+  'Ņ' => 'ņ',
+  'Ň' => 'ň',
+  'ÅŠ' => 'Å‹',
+  'Ō' => 'ō',
+  'Ŏ' => 'ŏ',
+  'Ő' => 'ő',
+  'Å’' => 'Å“',
+  'Å”' => 'Å•',
+  'Å–' => 'Å—',
+  'Ř' => 'ř',
+  'Åš' => 'Å›',
+  'Ŝ' => 'ŝ',
+  'Åž' => 'ÅŸ',
+  'Å ' => 'Å¡',
+  'Å¢' => 'Å£',
+  'Ť' => 'ť',
+  'Ŧ' => 'ŧ',
+  'Ũ' => 'ũ',
+  'Ū' => 'ū',
+  'Ŭ' => 'ŭ',
+  'Ů' => 'ů',
+  'Ű' => 'ű',
+  'Ų' => 'ų',
+  'Ŵ' => 'ŵ',
+  'Ŷ' => 'ŷ',
+  'Ÿ' => 'ÿ',
+  'Ź' => 'ź',
+  'Ż' => 'ż',
+  'Ž' => 'ž',
+  'Ɓ' => 'ɓ',
+  'Ƃ' => 'ƃ',
+  'Æ„' => 'Æ…',
+  'Ɔ' => 'ɔ',
+  'Ƈ' => 'ƈ',
+  'Ɖ' => 'ɖ',
+  'ÆŠ' => 'É—',
+  'Ƌ' => 'ƌ',
+  'Ǝ' => 'ǝ',
+  'Ə' => 'ə',
+  'Ɛ' => 'ɛ',
+  'Æ‘' => 'Æ’',
+  'Æ“' => 'É ',
+  'Æ”' => 'É£',
+  'Æ–' => 'É©',
+  'Ɨ' => 'ɨ',
+  'Ƙ' => 'ƙ',
+  'Ɯ' => 'ɯ',
+  'Ɲ' => 'ɲ',
+  'Ɵ' => 'ɵ',
+  'Æ ' => 'Æ¡',
+  'Æ¢' => 'Æ£',
+  'Ƥ' => 'ƥ',
+  'Ʀ' => 'ʀ',
+  'Ƨ' => 'ƨ',
+  'Ʃ' => 'ʃ',
+  'Ƭ' => 'ƭ',
+  'Ʈ' => 'ʈ',
+  'Ư' => 'ư',
+  'Ʊ' => 'ʊ',
+  'Ʋ' => 'ʋ',
+  'Ƴ' => 'ƴ',
+  'Ƶ' => 'ƶ',
+  'Æ·' => 'Ê’',
+  'Ƹ' => 'ƹ',
+  'Ƽ' => 'ƽ',
+  'DŽ' => 'dž',
+  'Dž' => 'dž',
+  'LJ' => 'lj',
+  'Lj' => 'lj',
+  'NJ' => 'nj',
+  'Nj' => 'nj',
+  'Ǎ' => 'ǎ',
+  'Ǐ' => 'ǐ',
+  'Ç‘' => 'Ç’',
+  'Ç“' => 'Ç”',
+  'Ç•' => 'Ç–',
+  'Ǘ' => 'ǘ',
+  'Ç™' => 'Çš',
+  'Ǜ' => 'ǜ',
+  'Çž' => 'ÇŸ',
+  'Ç ' => 'Ç¡',
+  'Ç¢' => 'Ç£',
+  'Ǥ' => 'ǥ',
+  'Ǧ' => 'ǧ',
+  'Ǩ' => 'ǩ',
+  'Ǫ' => 'ǫ',
+  'Ǭ' => 'ǭ',
+  'Ǯ' => 'ǯ',
+  'DZ' => 'dz',
+  'Dz' => 'dz',
+  'Ǵ' => 'ǵ',
+  'Ƕ' => 'ƕ',
+  'Ç·' => 'Æ¿',
+  'Ǹ' => 'ǹ',
+  'Ǻ' => 'ǻ',
+  'Ǽ' => 'ǽ',
+  'Ǿ' => 'ǿ',
+  'Ȁ' => 'ȁ',
+  'Ȃ' => 'ȃ',
+  'È„' => 'È…',
+  'Ȇ' => 'ȇ',
+  'Ȉ' => 'ȉ',
+  'ÈŠ' => 'È‹',
+  'Ȍ' => 'ȍ',
+  'Ȏ' => 'ȏ',
+  'Ȑ' => 'ȑ',
+  'È’' => 'È“',
+  'È”' => 'È•',
+  'È–' => 'È—',
+  'Ș' => 'ș',
+  'Èš' => 'È›',
+  'Ȝ' => 'ȝ',
+  'Èž' => 'ÈŸ',
+  'È ' => 'Æž',
+  'È¢' => 'È£',
+  'Ȥ' => 'ȥ',
+  'Ȧ' => 'ȧ',
+  'Ȩ' => 'ȩ',
+  'Ȫ' => 'ȫ',
+  'Ȭ' => 'ȭ',
+  'Ȯ' => 'ȯ',
+  'Ȱ' => 'ȱ',
+  'Ȳ' => 'ȳ',
+  'Ⱥ' => 'ⱥ',
+  'Ȼ' => 'ȼ',
+  'Ƚ' => 'ƚ',
+  'Ⱦ' => 'ⱦ',
+  'Ɂ' => 'ɂ',
+  'Ƀ' => 'ƀ',
+  'Ʉ' => 'ʉ',
+  'Ʌ' => 'ʌ',
+  'Ɇ' => 'ɇ',
+  'Ɉ' => 'ɉ',
+  'ÉŠ' => 'É‹',
+  'Ɍ' => 'ɍ',
+  'Ɏ' => 'ɏ',
+  'Ͱ' => 'ͱ',
+  'Ͳ' => 'ͳ',
+  'Ͷ' => 'ͷ',
+  'Ϳ' => 'ϳ',
+  'Ά' => 'ά',
+  'Έ' => 'έ',
+  'Ή' => 'ή',
+  'Ί' => 'ί',
+  'Ό' => 'ό',
+  'Ύ' => 'ύ',
+  'Ώ' => 'ώ',
+  'Α' => 'α',
+  'Β' => 'β',
+  'Γ' => 'γ',
+  'Δ' => 'δ',
+  'Ε' => 'ε',
+  'Ζ' => 'ζ',
+  'Η' => 'η',
+  'Θ' => 'θ',
+  'Ι' => 'ι',
+  'Κ' => 'κ',
+  'Λ' => 'λ',
+  'Μ' => 'μ',
+  'Ν' => 'ν',
+  'Ξ' => 'ξ',
+  'Ο' => 'ο',
+  'Π' => 'π',
+  'Ρ' => 'ρ',
+  'Σ' => 'σ',
+  'Τ' => 'τ',
+  'Î¥' => 'Ï…',
+  'Φ' => 'φ',
+  'Χ' => 'χ',
+  'Ψ' => 'ψ',
+  'Ω' => 'ω',
+  'Ϊ' => 'ϊ',
+  'Ϋ' => 'ϋ',
+  'Ϗ' => 'ϗ',
+  'Ϙ' => 'ϙ',
+  'Ïš' => 'Ï›',
+  'Ϝ' => 'ϝ',
+  'Ïž' => 'ÏŸ',
+  'Ï ' => 'Ï¡',
+  'Ï¢' => 'Ï£',
+  'Ϥ' => 'ϥ',
+  'Ϧ' => 'ϧ',
+  'Ϩ' => 'ϩ',
+  'Ϫ' => 'ϫ',
+  'Ϭ' => 'ϭ',
+  'Ϯ' => 'ϯ',
+  'ϴ' => 'θ',
+  'Ϸ' => 'ϸ',
+  'Ϲ' => 'ϲ',
+  'Ϻ' => 'ϻ',
+  'Ͻ' => 'ͻ',
+  'Ͼ' => 'ͼ',
+  'Ͽ' => 'ͽ',
+  'Ѐ' => 'ѐ',
+  'Ё' => 'ё',
+  'Ђ' => 'ђ',
+  'Ѓ' => 'ѓ',
+  'Є' => 'є',
+  'Ð…' => 'Ñ•',
+  'І' => 'і',
+  'Ї' => 'ї',
+  'Ј' => 'ј',
+  'Љ' => 'љ',
+  'Њ' => 'њ',
+  'Ћ' => 'ћ',
+  'Ќ' => 'ќ',
+  'Ѝ' => 'ѝ',
+  'ÐŽ' => 'Ñž',
+  'Џ' => 'џ',
+  'А' => 'а',
+  'Б' => 'б',
+  'В' => 'в',
+  'Г' => 'г',
+  'Д' => 'д',
+  'Е' => 'е',
+  'Ж' => 'ж',
+  'З' => 'з',
+  'И' => 'и',
+  'Й' => 'й',
+  'К' => 'к',
+  'Л' => 'л',
+  'М' => 'м',
+  'Н' => 'н',
+  'О' => 'о',
+  'П' => 'п',
+  'Р' => 'р',
+  'С' => 'с',
+  'Т' => 'т',
+  'У' => 'у',
+  'Ф' => 'ф',
+  'Ð¥' => 'Ñ…',
+  'Ц' => 'ц',
+  'Ч' => 'ч',
+  'Ш' => 'ш',
+  'Щ' => 'щ',
+  'Ъ' => 'ъ',
+  'Ы' => 'ы',
+  'Ь' => 'ь',
+  'Э' => 'э',
+  'Ю' => 'ю',
+  'Я' => 'я',
+  'Ñ ' => 'Ñ¡',
+  'Ñ¢' => 'Ñ£',
+  'Ѥ' => 'ѥ',
+  'Ѧ' => 'ѧ',
+  'Ѩ' => 'ѩ',
+  'Ѫ' => 'ѫ',
+  'Ѭ' => 'ѭ',
+  'Ѯ' => 'ѯ',
+  'Ѱ' => 'ѱ',
+  'Ѳ' => 'ѳ',
+  'Ѵ' => 'ѵ',
+  'Ѷ' => 'ѷ',
+  'Ѹ' => 'ѹ',
+  'Ѻ' => 'ѻ',
+  'Ѽ' => 'ѽ',
+  'Ѿ' => 'ѿ',
+  'Ҁ' => 'ҁ',
+  'ÒŠ' => 'Ò‹',
+  'Ҍ' => 'ҍ',
+  'Ҏ' => 'ҏ',
+  'Ґ' => 'ґ',
+  'Ò’' => 'Ò“',
+  'Ò”' => 'Ò•',
+  'Ò–' => 'Ò—',
+  'Ò˜' => 'Ò™',
+  'Òš' => 'Ò›',
+  'Ҝ' => 'ҝ',
+  'Òž' => 'ÒŸ',
+  'Ò ' => 'Ò¡',
+  'Ò¢' => 'Ò£',
+  'Ò¤' => 'Ò¥',
+  'Ò¦' => 'Ò§',
+  'Ò¨' => 'Ò©',
+  'Òª' => 'Ò«',
+  'Ò¬' => 'Ò­',
+  'Ò®' => 'Ò¯',
+  'Ò°' => 'Ò±',
+  'Ò²' => 'Ò³',
+  'Ò´' => 'Òµ',
+  'Ò¶' => 'Ò·',
+  'Ò¸' => 'Ò¹',
+  'Òº' => 'Ò»',
+  'Ò¼' => 'Ò½',
+  'Ò¾' => 'Ò¿',
+  'Ӏ' => 'ӏ',
+  'Ӂ' => 'ӂ',
+  'Óƒ' => 'Ó„',
+  'Ó…' => 'Ó†',
+  'Ó‡' => 'Óˆ',
+  'Ó‰' => 'ÓŠ',
+  'Ӌ' => 'ӌ',
+  'Ӎ' => 'ӎ',
+  'Ӑ' => 'ӑ',
+  'Ó’' => 'Ó“',
+  'Ó”' => 'Ó•',
+  'Ó–' => 'Ó—',
+  'Ó˜' => 'Ó™',
+  'Óš' => 'Ó›',
+  'Ӝ' => 'ӝ',
+  'Óž' => 'ÓŸ',
+  'Ó ' => 'Ó¡',
+  'Ó¢' => 'Ó£',
+  'Ó¤' => 'Ó¥',
+  'Ó¦' => 'Ó§',
+  'Ó¨' => 'Ó©',
+  'Óª' => 'Ó«',
+  'Ó¬' => 'Ó­',
+  'Ó®' => 'Ó¯',
+  'Ó°' => 'Ó±',
+  'Ó²' => 'Ó³',
+  'Ó´' => 'Óµ',
+  'Ó¶' => 'Ó·',
+  'Ó¸' => 'Ó¹',
+  'Óº' => 'Ó»',
+  'Ó¼' => 'Ó½',
+  'Ó¾' => 'Ó¿',
+  'Ԁ' => 'ԁ',
+  'Ô‚' => 'Ôƒ',
+  'Ô„' => 'Ô…',
+  'Ô†' => 'Ô‡',
+  'Ôˆ' => 'Ô‰',
+  'ÔŠ' => 'Ô‹',
+  'Ԍ' => 'ԍ',
+  'Ԏ' => 'ԏ',
+  'Ԑ' => 'ԑ',
+  'Ô’' => 'Ô“',
+  'Ô”' => 'Ô•',
+  'Ô–' => 'Ô—',
+  'Ô˜' => 'Ô™',
+  'Ôš' => 'Ô›',
+  'Ԝ' => 'ԝ',
+  'Ôž' => 'ÔŸ',
+  'Ô ' => 'Ô¡',
+  'Ô¢' => 'Ô£',
+  'Ô¤' => 'Ô¥',
+  'Ô¦' => 'Ô§',
+  'Ô¨' => 'Ô©',
+  'Ôª' => 'Ô«',
+  'Ô¬' => 'Ô­',
+  'Ô®' => 'Ô¯',
+  'Ô±' => 'Õ¡',
+  'Ô²' => 'Õ¢',
+  'Ô³' => 'Õ£',
+  'Ô´' => 'Õ¤',
+  'Ôµ' => 'Õ¥',
+  'Ô¶' => 'Õ¦',
+  'Ô·' => 'Õ§',
+  'Ô¸' => 'Õ¨',
+  'Ô¹' => 'Õ©',
+  'Ôº' => 'Õª',
+  'Ô»' => 'Õ«',
+  'Ô¼' => 'Õ¬',
+  'Ô½' => 'Õ­',
+  'Ô¾' => 'Õ®',
+  'Ô¿' => 'Õ¯',
+  'Õ€' => 'Õ°',
+  'Ձ' => 'ձ',
+  'Õ‚' => 'Õ²',
+  'Õƒ' => 'Õ³',
+  'Õ„' => 'Õ´',
+  'Õ…' => 'Õµ',
+  'Õ†' => 'Õ¶',
+  'Õ‡' => 'Õ·',
+  'Õˆ' => 'Õ¸',
+  'Õ‰' => 'Õ¹',
+  'ÕŠ' => 'Õº',
+  'Õ‹' => 'Õ»',
+  'Ռ' => 'ռ',
+  'Ս' => 'ս',
+  'ÕŽ' => 'Õ¾',
+  'Տ' => 'տ',
+  'Ր' => 'ր',
+  'Ց' => 'ց',
+  'Õ’' => 'Ö‚',
+  'Õ“' => 'Öƒ',
+  'Õ”' => 'Ö„',
+  'Õ•' => 'Ö…',
+  'Õ–' => 'Ö†',
+  'á‚ ' => 'â´€',
+  'Ⴁ' => 'ⴁ',
+  'á‚¢' => 'â´‚',
+  'á‚£' => 'â´ƒ',
+  'Ⴄ' => 'ⴄ',
+  'á‚¥' => 'â´…',
+  'Ⴆ' => 'ⴆ',
+  'Ⴇ' => 'ⴇ',
+  'Ⴈ' => 'ⴈ',
+  'á‚©' => 'â´‰',
+  'Ⴊ' => 'ⴊ',
+  'á‚«' => 'â´‹',
+  'Ⴌ' => 'ⴌ',
+  'Ⴍ' => 'ⴍ',
+  'á‚®' => 'â´Ž',
+  'Ⴏ' => 'ⴏ',
+  'Ⴐ' => 'ⴐ',
+  'Ⴑ' => 'ⴑ',
+  'Ⴒ' => 'ⴒ',
+  'Ⴓ' => 'ⴓ',
+  'á‚´' => 'â´”',
+  'Ⴕ' => 'ⴕ',
+  'Ⴖ' => 'ⴖ',
+  'á‚·' => 'â´—',
+  'Ⴘ' => 'ⴘ',
+  'Ⴙ' => 'ⴙ',
+  'Ⴚ' => 'ⴚ',
+  'á‚»' => 'â´›',
+  'Ⴜ' => 'ⴜ',
+  'Ⴝ' => 'ⴝ',
+  'Ⴞ' => 'ⴞ',
+  'á‚¿' => 'â´Ÿ',
+  'Ⴠ' => 'ⴠ',
+  'Ⴡ' => 'ⴡ',
+  'Ⴢ' => 'ⴢ',
+  'Ⴣ' => 'ⴣ',
+  'Ⴤ' => 'ⴤ',
+  'Ⴥ' => 'ⴥ',
+  'Ⴧ' => 'ⴧ',
+  'Ⴭ' => 'ⴭ',
+  'Ꭰ' => 'ꭰ',
+  'Ꭱ' => 'ꭱ',
+  'Ꭲ' => 'ꭲ',
+  'Ꭳ' => 'ꭳ',
+  'Ꭴ' => 'ꭴ',
+  'Ꭵ' => 'ꭵ',
+  'Ꭶ' => 'ꭶ',
+  'Ꭷ' => 'ꭷ',
+  'Ꭸ' => 'ꭸ',
+  'Ꭹ' => 'ꭹ',
+  'Ꭺ' => 'ꭺ',
+  'Ꭻ' => 'ꭻ',
+  'Ꭼ' => 'ꭼ',
+  'Ꭽ' => 'ꭽ',
+  'Ꭾ' => 'ꭾ',
+  'Ꭿ' => 'ꭿ',
+  'Ꮀ' => 'ꮀ',
+  'Ꮁ' => 'ꮁ',
+  'Ꮂ' => 'ꮂ',
+  'Ꮃ' => 'ꮃ',
+  'Ꮄ' => 'ꮄ',
+  'Ꮅ' => 'ꮅ',
+  'Ꮆ' => 'ꮆ',
+  'Ꮇ' => 'ꮇ',
+  'Ꮈ' => 'ꮈ',
+  'Ꮉ' => 'ꮉ',
+  'Ꮊ' => 'ꮊ',
+  'Ꮋ' => 'ꮋ',
+  'Ꮌ' => 'ꮌ',
+  'Ꮍ' => 'ꮍ',
+  'Ꮎ' => 'ꮎ',
+  'Ꮏ' => 'ꮏ',
+  'Ꮐ' => 'ꮐ',
+  'Ꮑ' => 'ꮑ',
+  'Ꮒ' => 'ꮒ',
+  'Ꮓ' => 'ꮓ',
+  'Ꮔ' => 'ꮔ',
+  'Ꮕ' => 'ꮕ',
+  'Ꮖ' => 'ꮖ',
+  'Ꮗ' => 'ꮗ',
+  'Ꮘ' => 'ꮘ',
+  'Ꮙ' => 'ꮙ',
+  'Ꮚ' => 'ꮚ',
+  'Ꮛ' => 'ꮛ',
+  'Ꮜ' => 'ꮜ',
+  'Ꮝ' => 'ꮝ',
+  'Ꮞ' => 'ꮞ',
+  'Ꮟ' => 'ꮟ',
+  'Ꮠ' => 'ꮠ',
+  'Ꮡ' => 'ꮡ',
+  'Ꮢ' => 'ꮢ',
+  'Ꮣ' => 'ꮣ',
+  'Ꮤ' => 'ꮤ',
+  'Ꮥ' => 'ꮥ',
+  'Ꮦ' => 'ꮦ',
+  'Ꮧ' => 'ꮧ',
+  'Ꮨ' => 'ꮨ',
+  'Ꮩ' => 'ꮩ',
+  'Ꮪ' => 'ꮪ',
+  'Ꮫ' => 'ꮫ',
+  'Ꮬ' => 'ꮬ',
+  'Ꮭ' => 'ꮭ',
+  'Ꮮ' => 'ꮮ',
+  'Ꮯ' => 'ꮯ',
+  'Ꮰ' => 'ꮰ',
+  'Ꮱ' => 'ꮱ',
+  'Ꮲ' => 'ꮲ',
+  'Ꮳ' => 'ꮳ',
+  'Ꮴ' => 'ꮴ',
+  'Ꮵ' => 'ꮵ',
+  'Ꮶ' => 'ꮶ',
+  'Ꮷ' => 'ꮷ',
+  'Ꮸ' => 'ꮸ',
+  'Ꮹ' => 'ꮹ',
+  'Ꮺ' => 'ꮺ',
+  'Ꮻ' => 'ꮻ',
+  'Ꮼ' => 'ꮼ',
+  'Ꮽ' => 'ꮽ',
+  'Ꮾ' => 'ꮾ',
+  'Ꮿ' => 'ꮿ',
+  'Ᏸ' => 'ᏸ',
+  'Ᏹ' => 'ᏹ',
+  'Ᏺ' => 'ᏺ',
+  'Ᏻ' => 'ᏻ',
+  'Ᏼ' => 'ᏼ',
+  'Ᏽ' => 'ᏽ',
+  'Ა' => 'ა',
+  'Ბ' => 'ბ',
+  'Გ' => 'გ',
+  'Დ' => 'დ',
+  'Ე' => 'ე',
+  'Ვ' => 'ვ',
+  'Ზ' => 'ზ',
+  'Თ' => 'თ',
+  'Ი' => 'ი',
+  'Კ' => 'კ',
+  'Ლ' => 'ლ',
+  'Მ' => 'მ',
+  'Ნ' => 'ნ',
+  'Ო' => 'ო',
+  'Პ' => 'პ',
+  'Ჟ' => 'ჟ',
+  'Რ' => 'რ',
+  'Ს' => 'ს',
+  'Ტ' => 'ტ',
+  'Უ' => 'უ',
+  'Ფ' => 'ფ',
+  'Ქ' => 'ქ',
+  'Ღ' => 'ღ',
+  'Ყ' => 'ყ',
+  'Შ' => 'შ',
+  'Ჩ' => 'ჩ',
+  'Ც' => 'ც',
+  'Ძ' => 'ძ',
+  'Წ' => 'წ',
+  'Ჭ' => 'ჭ',
+  'Ხ' => 'ხ',
+  'Ჯ' => 'ჯ',
+  'Ჰ' => 'ჰ',
+  'Ჱ' => 'ჱ',
+  'Ჲ' => 'ჲ',
+  'Ჳ' => 'ჳ',
+  'Ჴ' => 'ჴ',
+  'Ჵ' => 'ჵ',
+  'Ჶ' => 'ჶ',
+  'Ჷ' => 'ჷ',
+  'Ჸ' => 'ჸ',
+  'Ჹ' => 'ჹ',
+  'Ჺ' => 'ჺ',
+  'Ჽ' => 'ჽ',
+  'Ჾ' => 'ჾ',
+  'Ჿ' => 'ჿ',
+  'Ḁ' => 'ḁ',
+  'Ḃ' => 'ḃ',
+  'Ḅ' => 'ḅ',
+  'Ḇ' => 'ḇ',
+  'Ḉ' => 'ḉ',
+  'Ḋ' => 'ḋ',
+  'Ḍ' => 'ḍ',
+  'Ḏ' => 'ḏ',
+  'Ḑ' => 'ḑ',
+  'Ḓ' => 'ḓ',
+  'Ḕ' => 'ḕ',
+  'Ḗ' => 'ḗ',
+  'Ḙ' => 'ḙ',
+  'Ḛ' => 'ḛ',
+  'Ḝ' => 'ḝ',
+  'Ḟ' => 'ḟ',
+  'Ḡ' => 'ḡ',
+  'Ḣ' => 'ḣ',
+  'Ḥ' => 'ḥ',
+  'Ḧ' => 'ḧ',
+  'Ḩ' => 'ḩ',
+  'Ḫ' => 'ḫ',
+  'Ḭ' => 'ḭ',
+  'Ḯ' => 'ḯ',
+  'Ḱ' => 'ḱ',
+  'Ḳ' => 'ḳ',
+  'Ḵ' => 'ḵ',
+  'Ḷ' => 'ḷ',
+  'Ḹ' => 'ḹ',
+  'Ḻ' => 'ḻ',
+  'Ḽ' => 'ḽ',
+  'Ḿ' => 'ḿ',
+  'Ṁ' => 'ṁ',
+  'Ṃ' => 'ṃ',
+  'Ṅ' => 'ṅ',
+  'Ṇ' => 'ṇ',
+  'Ṉ' => 'ṉ',
+  'Ṋ' => 'ṋ',
+  'Ṍ' => 'ṍ',
+  'Ṏ' => 'ṏ',
+  'Ṑ' => 'ṑ',
+  'Ṓ' => 'ṓ',
+  'Ṕ' => 'ṕ',
+  'á¹–' => 'á¹—',
+  'Ṙ' => 'ṙ',
+  'Ṛ' => 'ṛ',
+  'Ṝ' => 'ṝ',
+  'Ṟ' => 'ṟ',
+  'Ṡ' => 'ṡ',
+  'á¹¢' => 'á¹£',
+  'Ṥ' => 'ṥ',
+  'Ṧ' => 'ṧ',
+  'Ṩ' => 'ṩ',
+  'Ṫ' => 'ṫ',
+  'Ṭ' => 'ṭ',
+  'Ṯ' => 'ṯ',
+  'á¹°' => 'á¹±',
+  'á¹²' => 'á¹³',
+  'á¹´' => 'á¹µ',
+  'Ṷ' => 'ṷ',
+  'Ṹ' => 'ṹ',
+  'Ṻ' => 'ṻ',
+  'á¹¼' => 'á¹½',
+  'Ṿ' => 'ṿ',
+  'Ẁ' => 'ẁ',
+  'Ẃ' => 'ẃ',
+  'Ẅ' => 'ẅ',
+  'Ẇ' => 'ẇ',
+  'Ẉ' => 'ẉ',
+  'Ẋ' => 'ẋ',
+  'Ẍ' => 'ẍ',
+  'Ẏ' => 'ẏ',
+  'Ẑ' => 'ẑ',
+  'Ẓ' => 'ẓ',
+  'Ẕ' => 'ẕ',
+  'ẞ' => 'ß',
+  'Ạ' => 'ạ',
+  'Ả' => 'ả',
+  'Ấ' => 'ấ',
+  'Ầ' => 'ầ',
+  'Ẩ' => 'ẩ',
+  'Ẫ' => 'ẫ',
+  'Ậ' => 'ậ',
+  'Ắ' => 'ắ',
+  'Ằ' => 'ằ',
+  'Ẳ' => 'ẳ',
+  'Ẵ' => 'ẵ',
+  'Ặ' => 'ặ',
+  'Ẹ' => 'ẹ',
+  'Ẻ' => 'ẻ',
+  'Ẽ' => 'ẽ',
+  'Ế' => 'ế',
+  'Ề' => 'ề',
+  'Ể' => 'ể',
+  'Ễ' => 'ễ',
+  'Ệ' => 'ệ',
+  'Ỉ' => 'ỉ',
+  'Ị' => 'ị',
+  'Ọ' => 'ọ',
+  'Ỏ' => 'ỏ',
+  'Ố' => 'ố',
+  'Ồ' => 'ồ',
+  'Ổ' => 'ổ',
+  'á»–' => 'á»—',
+  'Ộ' => 'ộ',
+  'Ớ' => 'ớ',
+  'Ờ' => 'ờ',
+  'Ở' => 'ở',
+  'Ỡ' => 'ỡ',
+  'Ợ' => 'ợ',
+  'Ụ' => 'ụ',
+  'Ủ' => 'ủ',
+  'Ứ' => 'ứ',
+  'Ừ' => 'ừ',
+  'Ử' => 'ử',
+  'Ữ' => 'ữ',
+  'á»°' => 'á»±',
+  'Ỳ' => 'ỳ',
+  'Ỵ' => 'ỵ',
+  'Ỷ' => 'ỷ',
+  'Ỹ' => 'ỹ',
+  'Ỻ' => 'ỻ',
+  'Ỽ' => 'ỽ',
+  'Ỿ' => 'ỿ',
+  'Ἀ' => 'ἀ',
+  'Ἁ' => 'ἁ',
+  'Ἂ' => 'ἂ',
+  'Ἃ' => 'ἃ',
+  'Ἄ' => 'ἄ',
+  'Ἅ' => 'ἅ',
+  'Ἆ' => 'ἆ',
+  'Ἇ' => 'ἇ',
+  'Ἐ' => 'ἐ',
+  'Ἑ' => 'ἑ',
+  'Ἒ' => 'ἒ',
+  'Ἓ' => 'ἓ',
+  'Ἔ' => 'ἔ',
+  'Ἕ' => 'ἕ',
+  'Ἠ' => 'ἠ',
+  'Ἡ' => 'ἡ',
+  'Ἢ' => 'ἢ',
+  'Ἣ' => 'ἣ',
+  'Ἤ' => 'ἤ',
+  'á¼­' => 'á¼¥',
+  'Ἦ' => 'ἦ',
+  'Ἧ' => 'ἧ',
+  'Ἰ' => 'ἰ',
+  'á¼¹' => 'á¼±',
+  'Ἲ' => 'ἲ',
+  'á¼»' => 'á¼³',
+  'á¼¼' => 'á¼´',
+  'á¼½' => 'á¼µ',
+  'Ἶ' => 'ἶ',
+  'Ἷ' => 'ἷ',
+  'Ὀ' => 'ὀ',
+  'Ὁ' => 'ὁ',
+  'Ὂ' => 'ὂ',
+  'Ὃ' => 'ὃ',
+  'Ὄ' => 'ὄ',
+  'Ὅ' => 'ὅ',
+  'Ὑ' => 'ὑ',
+  'Ὓ' => 'ὓ',
+  'Ὕ' => 'ὕ',
+  'Ὗ' => 'ὗ',
+  'Ὠ' => 'ὠ',
+  'Ὡ' => 'ὡ',
+  'Ὢ' => 'ὢ',
+  'Ὣ' => 'ὣ',
+  'Ὤ' => 'ὤ',
+  'á½­' => 'á½¥',
+  'Ὦ' => 'ὦ',
+  'Ὧ' => 'ὧ',
+  'ᾈ' => 'ᾀ',
+  'ᾉ' => 'ᾁ',
+  'ᾊ' => 'ᾂ',
+  'ᾋ' => 'ᾃ',
+  'ᾌ' => 'ᾄ',
+  'ᾍ' => 'ᾅ',
+  'ᾎ' => 'ᾆ',
+  'ᾏ' => 'ᾇ',
+  'ᾘ' => 'ᾐ',
+  'ᾙ' => 'ᾑ',
+  'ᾚ' => 'ᾒ',
+  'ᾛ' => 'ᾓ',
+  'ᾜ' => 'ᾔ',
+  'ᾝ' => 'ᾕ',
+  'ᾞ' => 'ᾖ',
+  'ᾟ' => 'ᾗ',
+  'ᾨ' => 'ᾠ',
+  'ᾩ' => 'ᾡ',
+  'ᾪ' => 'ᾢ',
+  'ᾫ' => 'ᾣ',
+  'ᾬ' => 'ᾤ',
+  'á¾­' => 'á¾¥',
+  'ᾮ' => 'ᾦ',
+  'ᾯ' => 'ᾧ',
+  'Ᾰ' => 'ᾰ',
+  'á¾¹' => 'á¾±',
+  'Ὰ' => 'ὰ',
+  'á¾»' => 'á½±',
+  'á¾¼' => 'á¾³',
+  'Ὲ' => 'ὲ',
+  'Έ' => 'έ',
+  'á¿Š' => 'á½´',
+  'á¿‹' => 'á½µ',
+  'ῌ' => 'ῃ',
+  'Ῐ' => 'ῐ',
+  'á¿™' => 'á¿‘',
+  'Ὶ' => 'ὶ',
+  'á¿›' => 'á½·',
+  'Ῠ' => 'ῠ',
+  'á¿©' => 'á¿¡',
+  'Ὺ' => 'ὺ',
+  'á¿«' => 'á½»',
+  'Ῥ' => 'ῥ',
+  'Ὸ' => 'ὸ',
+  'Ό' => 'ό',
+  'Ὼ' => 'ὼ',
+  'á¿»' => 'á½½',
+  'ῼ' => 'ῳ',
+  'Ω' => 'ω',
+  'K' => 'k',
+  'â„«' => 'Ã¥',
+  'Ⅎ' => 'ⅎ',
+  'â… ' => 'â…°',
+  'â…¡' => 'â…±',
+  'â…¢' => 'â…²',
+  'â…£' => 'â…³',
+  'â…¤' => 'â…´',
+  'â…¥' => 'â…µ',
+  'â…¦' => 'â…¶',
+  'â…§' => 'â…·',
+  'â…¨' => 'â…¸',
+  'â…©' => 'â…¹',
+  'â…ª' => 'â…º',
+  'â…«' => 'â…»',
+  'â…¬' => 'â…¼',
+  'â…­' => 'â…½',
+  'â…®' => 'â…¾',
+  'â…¯' => 'â…¿',
+  'Ↄ' => 'ↄ',
+  'Ⓐ' => 'ⓐ',
+  'â’·' => 'â“‘',
+  'â’¸' => 'â“’',
+  'â’¹' => 'â““',
+  'â’º' => 'â“”',
+  'â’»' => 'â“•',
+  'â’¼' => 'â“–',
+  'â’½' => 'â“—',
+  'Ⓘ' => 'ⓘ',
+  'â’¿' => 'â“™',
+  'â“€' => 'â“š',
+  'Ⓛ' => 'ⓛ',
+  'Ⓜ' => 'ⓜ',
+  'Ⓝ' => 'ⓝ',
+  'â“„' => 'â“ž',
+  'â“…' => 'â“Ÿ',
+  'Ⓠ' => 'ⓠ',
+  'Ⓡ' => 'ⓡ',
+  'Ⓢ' => 'ⓢ',
+  'Ⓣ' => 'ⓣ',
+  'Ⓤ' => 'ⓤ',
+  'â“‹' => 'â“¥',
+  'Ⓦ' => 'ⓦ',
+  'Ⓧ' => 'ⓧ',
+  'Ⓨ' => 'ⓨ',
+  'Ⓩ' => 'ⓩ',
+  'â°€' => 'â°°',
+  'Ⰱ' => 'ⰱ',
+  'â°‚' => 'â°²',
+  'â°ƒ' => 'â°³',
+  'â°„' => 'â°´',
+  'â°…' => 'â°µ',
+  'â°†' => 'â°¶',
+  'â°‡' => 'â°·',
+  'â°ˆ' => 'â°¸',
+  'â°‰' => 'â°¹',
+  'â°Š' => 'â°º',
+  'â°‹' => 'â°»',
+  'Ⰼ' => 'ⰼ',
+  'Ⰽ' => 'ⰽ',
+  'â°Ž' => 'â°¾',
+  'Ⰿ' => 'ⰿ',
+  'Ⱀ' => 'ⱀ',
+  'Ⱁ' => 'ⱁ',
+  'Ⱂ' => 'ⱂ',
+  'Ⱃ' => 'ⱃ',
+  'Ⱄ' => 'ⱄ',
+  'â°•' => 'â±…',
+  'Ⱆ' => 'ⱆ',
+  'Ⱇ' => 'ⱇ',
+  'Ⱈ' => 'ⱈ',
+  'Ⱉ' => 'ⱉ',
+  'Ⱊ' => 'ⱊ',
+  'Ⱋ' => 'ⱋ',
+  'Ⱌ' => 'ⱌ',
+  'Ⱍ' => 'ⱍ',
+  'Ⱎ' => 'ⱎ',
+  'Ⱏ' => 'ⱏ',
+  'Ⱐ' => 'ⱐ',
+  'Ⱑ' => 'ⱑ',
+  'â°¢' => 'â±’',
+  'Ⱓ' => 'ⱓ',
+  'â°¤' => 'â±”',
+  'Ⱕ' => 'ⱕ',
+  'â°¦' => 'â±–',
+  'â°§' => 'â±—',
+  'Ⱘ' => 'ⱘ',
+  'â°©' => 'â±™',
+  'Ⱚ' => 'ⱚ',
+  'â°«' => 'â±›',
+  'Ⱜ' => 'ⱜ',
+  'Ⱝ' => 'ⱝ',
+  'Ⱞ' => 'ⱞ',
+  'Ⱡ' => 'ⱡ',
+  'â±¢' => 'É«',
+  'â±£' => 'áµ½',
+  'Ɽ' => 'ɽ',
+  'Ⱨ' => 'ⱨ',
+  'Ⱪ' => 'ⱪ',
+  'Ⱬ' => 'ⱬ',
+  'â±­' => 'É‘',
+  'Ɱ' => 'ɱ',
+  'Ɐ' => 'ɐ',
+  'â±°' => 'É’',
+  'â±²' => 'â±³',
+  'Ⱶ' => 'ⱶ',
+  'â±¾' => 'È¿',
+  'Ɀ' => 'ɀ',
+  'Ⲁ' => 'ⲁ',
+  'Ⲃ' => 'ⲃ',
+  'Ⲅ' => 'ⲅ',
+  'Ⲇ' => 'ⲇ',
+  'Ⲉ' => 'ⲉ',
+  'Ⲋ' => 'ⲋ',
+  'Ⲍ' => 'ⲍ',
+  'Ⲏ' => 'ⲏ',
+  'Ⲑ' => 'ⲑ',
+  'Ⲓ' => 'ⲓ',
+  'Ⲕ' => 'ⲕ',
+  'â²–' => 'â²—',
+  'Ⲙ' => 'ⲙ',
+  'Ⲛ' => 'ⲛ',
+  'Ⲝ' => 'ⲝ',
+  'Ⲟ' => 'ⲟ',
+  'Ⲡ' => 'ⲡ',
+  'â²¢' => 'â²£',
+  'Ⲥ' => 'ⲥ',
+  'Ⲧ' => 'ⲧ',
+  'Ⲩ' => 'ⲩ',
+  'Ⲫ' => 'ⲫ',
+  'Ⲭ' => 'ⲭ',
+  'Ⲯ' => 'ⲯ',
+  'â²°' => 'â²±',
+  'â²²' => 'â²³',
+  'â²´' => 'â²µ',
+  'Ⲷ' => 'ⲷ',
+  'Ⲹ' => 'ⲹ',
+  'Ⲻ' => 'ⲻ',
+  'â²¼' => 'â²½',
+  'Ⲿ' => 'ⲿ',
+  'Ⳁ' => 'ⳁ',
+  'Ⳃ' => 'ⳃ',
+  'Ⳅ' => 'ⳅ',
+  'Ⳇ' => 'ⳇ',
+  'Ⳉ' => 'ⳉ',
+  'Ⳋ' => 'ⳋ',
+  'Ⳍ' => 'ⳍ',
+  'Ⳏ' => 'ⳏ',
+  'Ⳑ' => 'ⳑ',
+  'Ⳓ' => 'ⳓ',
+  'Ⳕ' => 'ⳕ',
+  'â³–' => 'â³—',
+  'Ⳙ' => 'ⳙ',
+  'Ⳛ' => 'ⳛ',
+  'Ⳝ' => 'ⳝ',
+  'Ⳟ' => 'ⳟ',
+  'Ⳡ' => 'ⳡ',
+  'â³¢' => 'â³£',
+  'Ⳬ' => 'ⳬ',
+  'â³­' => 'â³®',
+  'â³²' => 'â³³',
+  'Ꙁ' => 'ꙁ',
+  'Ꙃ' => 'ꙃ',
+  'Ꙅ' => 'ꙅ',
+  'Ꙇ' => 'ꙇ',
+  'Ꙉ' => 'ꙉ',
+  'Ꙋ' => 'ꙋ',
+  'Ꙍ' => 'ꙍ',
+  'Ꙏ' => 'ꙏ',
+  'Ꙑ' => 'ꙑ',
+  'Ꙓ' => 'ꙓ',
+  'Ꙕ' => 'ꙕ',
+  'ê™–' => 'ê™—',
+  'Ꙙ' => 'ꙙ',
+  'Ꙛ' => 'ꙛ',
+  'Ꙝ' => 'ꙝ',
+  'Ꙟ' => 'ꙟ',
+  'Ꙡ' => 'ꙡ',
+  'Ꙣ' => 'ꙣ',
+  'Ꙥ' => 'ꙥ',
+  'Ꙧ' => 'ꙧ',
+  'Ꙩ' => 'ꙩ',
+  'Ꙫ' => 'ꙫ',
+  'Ꙭ' => 'ꙭ',
+  'Ꚁ' => 'ꚁ',
+  'Ꚃ' => 'ꚃ',
+  'êš„' => 'êš…',
+  'Ꚇ' => 'ꚇ',
+  'Ꚉ' => 'ꚉ',
+  'Ꚋ' => 'ꚋ',
+  'Ꚍ' => 'ꚍ',
+  'Ꚏ' => 'ꚏ',
+  'Ꚑ' => 'ꚑ',
+  'êš’' => 'êš“',
+  'êš”' => 'êš•',
+  'êš–' => 'êš—',
+  'Ꚙ' => 'ꚙ',
+  'êšš' => 'êš›',
+  'Ꜣ' => 'ꜣ',
+  'Ꜥ' => 'ꜥ',
+  'Ꜧ' => 'ꜧ',
+  'Ꜩ' => 'ꜩ',
+  'Ꜫ' => 'ꜫ',
+  'Ꜭ' => 'ꜭ',
+  'Ꜯ' => 'ꜯ',
+  'Ꜳ' => 'ꜳ',
+  'Ꜵ' => 'ꜵ',
+  'Ꜷ' => 'ꜷ',
+  'Ꜹ' => 'ꜹ',
+  'Ꜻ' => 'ꜻ',
+  'Ꜽ' => 'ꜽ',
+  'Ꜿ' => 'ꜿ',
+  'Ꝁ' => 'ꝁ',
+  'Ꝃ' => 'ꝃ',
+  'Ꝅ' => 'ꝅ',
+  'Ꝇ' => 'ꝇ',
+  'Ꝉ' => 'ꝉ',
+  'Ꝋ' => 'ꝋ',
+  'Ꝍ' => 'ꝍ',
+  'Ꝏ' => 'ꝏ',
+  'Ꝑ' => 'ꝑ',
+  'Ꝓ' => 'ꝓ',
+  'Ꝕ' => 'ꝕ',
+  'Ꝗ' => 'ꝗ',
+  'Ꝙ' => 'ꝙ',
+  'Ꝛ' => 'ꝛ',
+  'Ꝝ' => 'ꝝ',
+  'Ꝟ' => 'ꝟ',
+  'Ꝡ' => 'ꝡ',
+  'Ꝣ' => 'ꝣ',
+  'Ꝥ' => 'ꝥ',
+  'Ꝧ' => 'ꝧ',
+  'Ꝩ' => 'ꝩ',
+  'Ꝫ' => 'ꝫ',
+  'Ꝭ' => 'ꝭ',
+  'Ꝯ' => 'ꝯ',
+  'Ꝺ' => 'ꝺ',
+  'Ꝼ' => 'ꝼ',
+  'Ᵹ' => 'ᵹ',
+  'Ꝿ' => 'ꝿ',
+  'Ꞁ' => 'ꞁ',
+  'Ꞃ' => 'ꞃ',
+  'êž„' => 'êž…',
+  'Ꞇ' => 'ꞇ',
+  'Ꞌ' => 'ꞌ',
+  'Ɥ' => 'ɥ',
+  'Ꞑ' => 'ꞑ',
+  'êž’' => 'êž“',
+  'êž–' => 'êž—',
+  'Ꞙ' => 'ꞙ',
+  'êžš' => 'êž›',
+  'Ꞝ' => 'ꞝ',
+  'Ꞟ' => 'ꞟ',
+  'êž ' => 'êž¡',
+  'Ꞣ' => 'ꞣ',
+  'Ꞥ' => 'ꞥ',
+  'Ꞧ' => 'ꞧ',
+  'Ꞩ' => 'ꞩ',
+  'Ɦ' => 'ɦ',
+  'Ɜ' => 'ɜ',
+  'Ɡ' => 'ɡ',
+  'Ɬ' => 'ɬ',
+  'Ɪ' => 'ɪ',
+  'êž°' => 'Êž',
+  'Ʇ' => 'ʇ',
+  'Ʝ' => 'ʝ',
+  'êž³' => 'ê­“',
+  'êž´' => 'êžµ',
+  'Ꞷ' => 'ꞷ',
+  'Ꞹ' => 'ꞹ',
+  'Ꞻ' => 'ꞻ',
+  'êž¼' => 'êž½',
+  'êž¾' => 'êž¿',
+  'Ꟃ' => 'ꟃ',
+  'Ꞔ' => 'ꞔ',
+  'Ʂ' => 'ʂ',
+  'Ᶎ' => 'ᶎ',
+  'Ꟈ' => 'ꟈ',
+  'Ꟊ' => 'ꟊ',
+  'Ꟶ' => 'ꟶ',
+  'A' => 'a',
+  'B' => 'b',
+  'C' => 'c',
+  'D' => 'd',
+  'ï¼¥' => 'ï½…',
+  'F' => 'f',
+  'G' => 'g',
+  'H' => 'h',
+  'I' => 'i',
+  'J' => 'j',
+  'K' => 'k',
+  'L' => 'l',
+  'M' => 'm',
+  'N' => 'n',
+  'O' => 'o',
+  'P' => 'p',
+  'Q' => 'q',
+  'ï¼²' => 'ï½’',
+  'S' => 's',
+  'ï¼´' => 'ï½”',
+  'U' => 'u',
+  'V' => 'v',
+  'ï¼·' => 'ï½—',
+  'X' => 'x',
+  'ï¼¹' => 'ï½™',
+  'Z' => 'z',
+  '𐐀' => '𐐨',
+  '𐐁' => '𐐩',
+  '𐐂' => '𐐪',
+  '𐐃' => '𐐫',
+  '𐐄' => '𐐬',
+  '𐐅' => '𐐭',
+  '𐐆' => '𐐮',
+  '𐐇' => '𐐯',
+  '𐐈' => '𐐰',
+  '𐐉' => '𐐱',
+  '𐐊' => '𐐲',
+  '𐐋' => '𐐳',
+  '𐐌' => '𐐴',
+  '𐐍' => '𐐵',
+  '𐐎' => '𐐶',
+  '𐐏' => '𐐷',
+  '𐐐' => '𐐸',
+  '𐐑' => '𐐹',
+  '𐐒' => '𐐺',
+  '𐐓' => '𐐻',
+  '𐐔' => '𐐼',
+  '𐐕' => '𐐽',
+  '𐐖' => '𐐾',
+  '𐐗' => '𐐿',
+  '𐐘' => '𐑀',
+  '𐐙' => '𐑁',
+  '𐐚' => '𐑂',
+  '𐐛' => '𐑃',
+  '𐐜' => '𐑄',
+  '𐐝' => '𐑅',
+  '𐐞' => '𐑆',
+  '𐐟' => '𐑇',
+  '𐐠' => '𐑈',
+  '𐐡' => '𐑉',
+  '𐐢' => '𐑊',
+  '𐐣' => '𐑋',
+  '𐐤' => '𐑌',
+  '𐐥' => '𐑍',
+  '𐐦' => '𐑎',
+  '𐐧' => '𐑏',
+  '𐒰' => '𐓘',
+  '𐒱' => '𐓙',
+  '𐒲' => '𐓚',
+  '𐒳' => '𐓛',
+  '𐒴' => '𐓜',
+  '𐒵' => '𐓝',
+  '𐒶' => '𐓞',
+  '𐒷' => '𐓟',
+  '𐒸' => '𐓠',
+  '𐒹' => '𐓡',
+  '𐒺' => '𐓢',
+  '𐒻' => '𐓣',
+  '𐒼' => '𐓤',
+  '𐒽' => '𐓥',
+  '𐒾' => '𐓦',
+  '𐒿' => '𐓧',
+  '𐓀' => '𐓨',
+  '𐓁' => '𐓩',
+  '𐓂' => '𐓪',
+  '𐓃' => '𐓫',
+  '𐓄' => '𐓬',
+  '𐓅' => '𐓭',
+  '𐓆' => '𐓮',
+  '𐓇' => '𐓯',
+  '𐓈' => '𐓰',
+  '𐓉' => '𐓱',
+  '𐓊' => '𐓲',
+  '𐓋' => '𐓳',
+  '𐓌' => '𐓴',
+  '𐓍' => '𐓵',
+  '𐓎' => '𐓶',
+  '𐓏' => '𐓷',
+  '𐓐' => '𐓸',
+  '𐓑' => '𐓹',
+  '𐓒' => '𐓺',
+  '𐓓' => '𐓻',
+  '𐲀' => '𐳀',
+  '𐲁' => '𐳁',
+  '𐲂' => '𐳂',
+  '𐲃' => '𐳃',
+  '𐲄' => '𐳄',
+  '𐲅' => '𐳅',
+  '𐲆' => '𐳆',
+  '𐲇' => '𐳇',
+  '𐲈' => '𐳈',
+  '𐲉' => '𐳉',
+  '𐲊' => '𐳊',
+  '𐲋' => '𐳋',
+  '𐲌' => '𐳌',
+  '𐲍' => '𐳍',
+  '𐲎' => '𐳎',
+  '𐲏' => '𐳏',
+  '𐲐' => '𐳐',
+  '𐲑' => '𐳑',
+  '𐲒' => '𐳒',
+  '𐲓' => '𐳓',
+  '𐲔' => '𐳔',
+  '𐲕' => '𐳕',
+  '𐲖' => '𐳖',
+  '𐲗' => '𐳗',
+  '𐲘' => '𐳘',
+  '𐲙' => '𐳙',
+  '𐲚' => '𐳚',
+  '𐲛' => '𐳛',
+  '𐲜' => '𐳜',
+  '𐲝' => '𐳝',
+  '𐲞' => '𐳞',
+  '𐲟' => '𐳟',
+  '𐲠' => '𐳠',
+  '𐲡' => '𐳡',
+  '𐲢' => '𐳢',
+  '𐲣' => '𐳣',
+  '𐲤' => '𐳤',
+  '𐲥' => '𐳥',
+  '𐲦' => '𐳦',
+  '𐲧' => '𐳧',
+  '𐲨' => '𐳨',
+  '𐲩' => '𐳩',
+  '𐲪' => '𐳪',
+  '𐲫' => '𐳫',
+  '𐲬' => '𐳬',
+  '𐲭' => '𐳭',
+  '𐲮' => '𐳮',
+  '𐲯' => '𐳯',
+  '𐲰' => '𐳰',
+  '𐲱' => '𐳱',
+  '𐲲' => '𐳲',
+  'ð‘¢ ' => 'ð‘£€',
+  '𑢡' => '𑣁',
+  '𑢢' => '𑣂',
+  '𑢣' => '𑣃',
+  '𑢤' => '𑣄',
+  'ð‘¢¥' => 'ð‘£…',
+  '𑢦' => '𑣆',
+  '𑢧' => '𑣇',
+  '𑢨' => '𑣈',
+  '𑢩' => '𑣉',
+  '𑢪' => '𑣊',
+  '𑢫' => '𑣋',
+  '𑢬' => '𑣌',
+  '𑢭' => '𑣍',
+  '𑢮' => '𑣎',
+  '𑢯' => '𑣏',
+  '𑢰' => '𑣐',
+  '𑢱' => '𑣑',
+  'ð‘¢²' => 'ð‘£’',
+  '𑢳' => '𑣓',
+  'ð‘¢´' => 'ð‘£”',
+  '𑢵' => '𑣕',
+  '𑢶' => '𑣖',
+  'ð‘¢·' => 'ð‘£—',
+  '𑢸' => '𑣘',
+  'ð‘¢¹' => 'ð‘£™',
+  '𑢺' => '𑣚',
+  'ð‘¢»' => 'ð‘£›',
+  '𑢼' => '𑣜',
+  '𑢽' => '𑣝',
+  '𑢾' => '𑣞',
+  '𑢿' => '𑣟',
+  'ð–¹€' => 'ð–¹ ',
+  '𖹁' => '𖹡',
+  '𖹂' => '𖹢',
+  '𖹃' => '𖹣',
+  '𖹄' => '𖹤',
+  'ð–¹…' => 'ð–¹¥',
+  '𖹆' => '𖹦',
+  '𖹇' => '𖹧',
+  '𖹈' => '𖹨',
+  '𖹉' => '𖹩',
+  '𖹊' => '𖹪',
+  '𖹋' => '𖹫',
+  '𖹌' => '𖹬',
+  '𖹍' => '𖹭',
+  '𖹎' => '𖹮',
+  '𖹏' => '𖹯',
+  '𖹐' => '𖹰',
+  '𖹑' => '𖹱',
+  'ð–¹’' => 'ð–¹²',
+  '𖹓' => '𖹳',
+  'ð–¹”' => 'ð–¹´',
+  '𖹕' => '𖹵',
+  '𖹖' => '𖹶',
+  'ð–¹—' => 'ð–¹·',
+  '𖹘' => '𖹸',
+  'ð–¹™' => 'ð–¹¹',
+  '𖹚' => '𖹺',
+  'ð–¹›' => 'ð–¹»',
+  '𖹜' => '𖹼',
+  '𖹝' => '𖹽',
+  '𖹞' => '𖹾',
+  '𖹟' => '𖹿',
+  '𞤀' => '𞤢',
+  '𞤁' => '𞤣',
+  '𞤂' => '𞤤',
+  '𞤃' => '𞤥',
+  '𞤄' => '𞤦',
+  '𞤅' => '𞤧',
+  '𞤆' => '𞤨',
+  '𞤇' => '𞤩',
+  '𞤈' => '𞤪',
+  '𞤉' => '𞤫',
+  '𞤊' => '𞤬',
+  '𞤋' => '𞤭',
+  '𞤌' => '𞤮',
+  '𞤍' => '𞤯',
+  '𞤎' => '𞤰',
+  '𞤏' => '𞤱',
+  '𞤐' => '𞤲',
+  '𞤑' => '𞤳',
+  '𞤒' => '𞤴',
+  '𞤓' => '𞤵',
+  '𞤔' => '𞤶',
+  '𞤕' => '𞤷',
+  '𞤖' => '𞤸',
+  '𞤗' => '𞤹',
+  '𞤘' => '𞤺',
+  '𞤙' => '𞤻',
+  '𞤚' => '𞤼',
+  '𞤛' => '𞤽',
+  '𞤜' => '𞤾',
+  '𞤝' => '𞤿',
+  '𞤞' => '𞥀',
+  '𞤟' => '𞥁',
+  '𞤠' => '𞥂',
+  '𞤡' => '𞥃',
+);
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
new file mode 100644
index 00000000..2a8f6e73
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php
@@ -0,0 +1,5 @@
+<?php
+
+// from Case_Ignorable in https://unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
+
+return '/(?<![\x{0027}\x{002E}\x{003A}\x{005E}\x{0060}\x{00A8}\x{00AD}\x{00AF}\x{00B4}\x{00B7}\x{00B8}\x{02B0}-\x{02C1}\x{02C2}-\x{02C5}\x{02C6}-\x{02D1}\x{02D2}-\x{02DF}\x{02E0}-\x{02E4}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EE}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037A}\x{0384}-\x{0385}\x{0387}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0559}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{05F4}\x{0600}-\x{0605}\x{0610}-\x{061A}\x{061C}\x{0640}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DD}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07FA}\x{07FD}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0971}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E46}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EB9}\x{0EBB}-\x{0EBC}\x{0EC6}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{10FC}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17D7}\x{17DD}\x{180B}-\x{180D}\x{180E}\x{1843}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AA7}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1C78}-\x{1C7D}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1D2C}-\x{1D6A}\x{1D78}\x{1D9B}-\x{1DBF}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200F}\x{2018}\x{2019}\x{2024}\x{2027}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{2066}-\x{206F}\x{2071}\x{207F}\x{2090}-\x{209C}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2C7C}-\x{2C7D}\x{2CEF}-\x{2CF1}\x{2D6F}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E2F}\x{3005}\x{302A}-\x{302D}\x{3031}-\x{3035}\x{303B}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{309D}-\x{309E}\x{30FC}-\x{30FE}\x{A015}\x{A4F8}-\x{A4FD}\x{A60C}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A67F}\x{A69C}-\x{A69D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A770}\x{A788}\x{A789}-\x{A78A}\x{A7F8}-\x{A7F9}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}\x{A9CF}\x{A9E5}\x{A9E6}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA70}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AADD}\x{AAEC}-\x{AAED}\x{AAF3}-\x{AAF4}\x{AAF6}\x{AB5B}\x{AB5C}-\x{AB5F}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FBB2}-\x{FBC1}\x{FE00}-\x{FE0F}\x{FE13}\x{FE20}-\x{FE2F}\x{FE52}\x{FE55}\x{FEFF}\x{FF07}\x{FF0E}\x{FF1A}\x{FF3E}\x{FF40}\x{FF70}\x{FF9E}-\x{FF9F}\x{FFE3}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{110BD}\x{110CD}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16B40}-\x{16B43}\x{16F8F}-\x{16F92}\x{16F93}-\x{16F9F}\x{16FE0}-\x{16FE1}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1F3FB}-\x{1F3FF}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}])(\pL)(\pL*+)/u';
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
new file mode 100644
index 00000000..56b9cb85
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php
@@ -0,0 +1,1489 @@
+<?php
+
+return array (
+  'a' => 'A',
+  'b' => 'B',
+  'c' => 'C',
+  'd' => 'D',
+  'e' => 'E',
+  'f' => 'F',
+  'g' => 'G',
+  'h' => 'H',
+  'i' => 'I',
+  'j' => 'J',
+  'k' => 'K',
+  'l' => 'L',
+  'm' => 'M',
+  'n' => 'N',
+  'o' => 'O',
+  'p' => 'P',
+  'q' => 'Q',
+  'r' => 'R',
+  's' => 'S',
+  't' => 'T',
+  'u' => 'U',
+  'v' => 'V',
+  'w' => 'W',
+  'x' => 'X',
+  'y' => 'Y',
+  'z' => 'Z',
+  'µ' => 'Μ',
+  'à' => 'À',
+  'á' => 'Á',
+  'â' => 'Â',
+  'ã' => 'Ã',
+  'ä' => 'Ä',
+  'Ã¥' => 'Ã…',
+  'æ' => 'Æ',
+  'ç' => 'Ç',
+  'è' => 'È',
+  'é' => 'É',
+  'ê' => 'Ê',
+  'ë' => 'Ë',
+  'ì' => 'Ì',
+  'í' => 'Í',
+  'î' => 'Î',
+  'ï' => 'Ï',
+  'ð' => 'Ð',
+  'ñ' => 'Ñ',
+  'ò' => 'Ò',
+  'ó' => 'Ó',
+  'ô' => 'Ô',
+  'õ' => 'Õ',
+  'ö' => 'Ö',
+  'ø' => 'Ø',
+  'ù' => 'Ù',
+  'ú' => 'Ú',
+  'û' => 'Û',
+  'ü' => 'Ü',
+  'ý' => 'Ý',
+  'þ' => 'Þ',
+  'ÿ' => 'Ÿ',
+  'ā' => 'Ā',
+  'ă' => 'Ă',
+  'Ä…' => 'Ä„',
+  'ć' => 'Ć',
+  'ĉ' => 'Ĉ',
+  'Ä‹' => 'ÄŠ',
+  'č' => 'Č',
+  'ď' => 'Ď',
+  'đ' => 'Đ',
+  'Ä“' => 'Ä’',
+  'Ä•' => 'Ä”',
+  'Ä—' => 'Ä–',
+  'ę' => 'Ę',
+  'Ä›' => 'Äš',
+  'ĝ' => 'Ĝ',
+  'ÄŸ' => 'Äž',
+  'Ä¡' => 'Ä ',
+  'Ä£' => 'Ä¢',
+  'ĥ' => 'Ĥ',
+  'ħ' => 'Ħ',
+  'ĩ' => 'Ĩ',
+  'ī' => 'Ī',
+  'ĭ' => 'Ĭ',
+  'į' => 'Į',
+  'ı' => 'I',
+  'ij' => 'IJ',
+  'ĵ' => 'Ĵ',
+  'ķ' => 'Ķ',
+  'ĺ' => 'Ĺ',
+  'ļ' => 'Ļ',
+  'ľ' => 'Ľ',
+  'Å€' => 'Ä¿',
+  'ł' => 'Ł',
+  'ń' => 'Ń',
+  'ņ' => 'Ņ',
+  'ň' => 'Ň',
+  'Å‹' => 'ÅŠ',
+  'ō' => 'Ō',
+  'ŏ' => 'Ŏ',
+  'ő' => 'Ő',
+  'Å“' => 'Å’',
+  'Å•' => 'Å”',
+  'Å—' => 'Å–',
+  'ř' => 'Ř',
+  'Å›' => 'Åš',
+  'ŝ' => 'Ŝ',
+  'ÅŸ' => 'Åž',
+  'Å¡' => 'Å ',
+  'Å£' => 'Å¢',
+  'ť' => 'Ť',
+  'ŧ' => 'Ŧ',
+  'ũ' => 'Ũ',
+  'ū' => 'Ū',
+  'ŭ' => 'Ŭ',
+  'ů' => 'Ů',
+  'ű' => 'Ű',
+  'ų' => 'Ų',
+  'ŵ' => 'Ŵ',
+  'ŷ' => 'Ŷ',
+  'ź' => 'Ź',
+  'ż' => 'Ż',
+  'ž' => 'Ž',
+  'Å¿' => 'S',
+  'ƀ' => 'Ƀ',
+  'ƃ' => 'Ƃ',
+  'Æ…' => 'Æ„',
+  'ƈ' => 'Ƈ',
+  'ƌ' => 'Ƌ',
+  'Æ’' => 'Æ‘',
+  'ƕ' => 'Ƕ',
+  'ƙ' => 'Ƙ',
+  'ƚ' => 'Ƚ',
+  'Æž' => 'È ',
+  'Æ¡' => 'Æ ',
+  'Æ£' => 'Æ¢',
+  'ƥ' => 'Ƥ',
+  'ƨ' => 'Ƨ',
+  'ƭ' => 'Ƭ',
+  'ư' => 'Ư',
+  'ƴ' => 'Ƴ',
+  'ƶ' => 'Ƶ',
+  'ƹ' => 'Ƹ',
+  'ƽ' => 'Ƽ',
+  'Æ¿' => 'Ç·',
+  'Ç…' => 'Ç„',
+  'dž' => 'DŽ',
+  'Lj' => 'LJ',
+  'lj' => 'LJ',
+  'Ç‹' => 'ÇŠ',
+  'nj' => 'NJ',
+  'ǎ' => 'Ǎ',
+  'ǐ' => 'Ǐ',
+  'Ç’' => 'Ç‘',
+  'Ç”' => 'Ç“',
+  'Ç–' => 'Ç•',
+  'ǘ' => 'Ǘ',
+  'Çš' => 'Ç™',
+  'ǜ' => 'Ǜ',
+  'ǝ' => 'Ǝ',
+  'ÇŸ' => 'Çž',
+  'Ç¡' => 'Ç ',
+  'Ç£' => 'Ç¢',
+  'ǥ' => 'Ǥ',
+  'ǧ' => 'Ǧ',
+  'ǩ' => 'Ǩ',
+  'ǫ' => 'Ǫ',
+  'ǭ' => 'Ǭ',
+  'ǯ' => 'Ǯ',
+  'Dz' => 'DZ',
+  'dz' => 'DZ',
+  'ǵ' => 'Ǵ',
+  'ǹ' => 'Ǹ',
+  'ǻ' => 'Ǻ',
+  'ǽ' => 'Ǽ',
+  'ǿ' => 'Ǿ',
+  'ȁ' => 'Ȁ',
+  'ȃ' => 'Ȃ',
+  'È…' => 'È„',
+  'ȇ' => 'Ȇ',
+  'ȉ' => 'Ȉ',
+  'È‹' => 'ÈŠ',
+  'ȍ' => 'Ȍ',
+  'ȏ' => 'Ȏ',
+  'ȑ' => 'Ȑ',
+  'È“' => 'È’',
+  'È•' => 'È”',
+  'È—' => 'È–',
+  'ș' => 'Ș',
+  'È›' => 'Èš',
+  'ȝ' => 'Ȝ',
+  'ÈŸ' => 'Èž',
+  'È£' => 'È¢',
+  'ȥ' => 'Ȥ',
+  'ȧ' => 'Ȧ',
+  'ȩ' => 'Ȩ',
+  'ȫ' => 'Ȫ',
+  'ȭ' => 'Ȭ',
+  'ȯ' => 'Ȯ',
+  'ȱ' => 'Ȱ',
+  'ȳ' => 'Ȳ',
+  'ȼ' => 'Ȼ',
+  'È¿' => 'â±¾',
+  'ɀ' => 'Ɀ',
+  'ɂ' => 'Ɂ',
+  'ɇ' => 'Ɇ',
+  'ɉ' => 'Ɉ',
+  'É‹' => 'ÉŠ',
+  'ɍ' => 'Ɍ',
+  'ɏ' => 'Ɏ',
+  'ɐ' => 'Ɐ',
+  'É‘' => 'â±­',
+  'É’' => 'â±°',
+  'ɓ' => 'Ɓ',
+  'ɔ' => 'Ɔ',
+  'ɖ' => 'Ɖ',
+  'É—' => 'ÆŠ',
+  'ə' => 'Ə',
+  'ɛ' => 'Ɛ',
+  'ɜ' => 'Ɜ',
+  'É ' => 'Æ“',
+  'ɡ' => 'Ɡ',
+  'É£' => 'Æ”',
+  'ɥ' => 'Ɥ',
+  'ɦ' => 'Ɦ',
+  'ɨ' => 'Ɨ',
+  'É©' => 'Æ–',
+  'ɪ' => 'Ɪ',
+  'É«' => 'â±¢',
+  'ɬ' => 'Ɬ',
+  'ɯ' => 'Ɯ',
+  'ɱ' => 'Ɱ',
+  'ɲ' => 'Ɲ',
+  'ɵ' => 'Ɵ',
+  'ɽ' => 'Ɽ',
+  'ʀ' => 'Ʀ',
+  'ʂ' => 'Ʂ',
+  'ʃ' => 'Ʃ',
+  'ʇ' => 'Ʇ',
+  'ʈ' => 'Ʈ',
+  'ʉ' => 'Ʉ',
+  'ʊ' => 'Ʊ',
+  'ʋ' => 'Ʋ',
+  'ʌ' => 'Ʌ',
+  'Ê’' => 'Æ·',
+  'ʝ' => 'Ʝ',
+  'Êž' => 'êž°',
+  'ͅ' => 'Ι',
+  'ͱ' => 'Ͱ',
+  'ͳ' => 'Ͳ',
+  'ͷ' => 'Ͷ',
+  'ͻ' => 'Ͻ',
+  'ͼ' => 'Ͼ',
+  'ͽ' => 'Ͽ',
+  'ά' => 'Ά',
+  'έ' => 'Έ',
+  'ή' => 'Ή',
+  'ί' => 'Ί',
+  'α' => 'Α',
+  'β' => 'Β',
+  'γ' => 'Γ',
+  'δ' => 'Δ',
+  'ε' => 'Ε',
+  'ζ' => 'Ζ',
+  'η' => 'Η',
+  'θ' => 'Θ',
+  'ι' => 'Ι',
+  'κ' => 'Κ',
+  'λ' => 'Λ',
+  'μ' => 'Μ',
+  'ν' => 'Ν',
+  'ξ' => 'Ξ',
+  'ο' => 'Ο',
+  'π' => 'Π',
+  'ρ' => 'Ρ',
+  'ς' => 'Σ',
+  'σ' => 'Σ',
+  'τ' => 'Τ',
+  'Ï…' => 'Î¥',
+  'φ' => 'Φ',
+  'χ' => 'Χ',
+  'ψ' => 'Ψ',
+  'ω' => 'Ω',
+  'ϊ' => 'Ϊ',
+  'ϋ' => 'Ϋ',
+  'ό' => 'Ό',
+  'ύ' => 'Ύ',
+  'ώ' => 'Ώ',
+  'ϐ' => 'Β',
+  'ϑ' => 'Θ',
+  'ϕ' => 'Φ',
+  'ϖ' => 'Π',
+  'ϗ' => 'Ϗ',
+  'ϙ' => 'Ϙ',
+  'Ï›' => 'Ïš',
+  'ϝ' => 'Ϝ',
+  'ÏŸ' => 'Ïž',
+  'Ï¡' => 'Ï ',
+  'Ï£' => 'Ï¢',
+  'ϥ' => 'Ϥ',
+  'ϧ' => 'Ϧ',
+  'ϩ' => 'Ϩ',
+  'ϫ' => 'Ϫ',
+  'ϭ' => 'Ϭ',
+  'ϯ' => 'Ϯ',
+  'ϰ' => 'Κ',
+  'ϱ' => 'Ρ',
+  'ϲ' => 'Ϲ',
+  'ϳ' => 'Ϳ',
+  'ϵ' => 'Ε',
+  'ϸ' => 'Ϸ',
+  'ϻ' => 'Ϻ',
+  'а' => 'А',
+  'б' => 'Б',
+  'в' => 'В',
+  'г' => 'Г',
+  'д' => 'Д',
+  'е' => 'Е',
+  'ж' => 'Ж',
+  'з' => 'З',
+  'и' => 'И',
+  'й' => 'Й',
+  'к' => 'К',
+  'л' => 'Л',
+  'м' => 'М',
+  'н' => 'Н',
+  'о' => 'О',
+  'п' => 'П',
+  'р' => 'Р',
+  'с' => 'С',
+  'т' => 'Т',
+  'у' => 'У',
+  'ф' => 'Ф',
+  'Ñ…' => 'Ð¥',
+  'ц' => 'Ц',
+  'ч' => 'Ч',
+  'ш' => 'Ш',
+  'щ' => 'Щ',
+  'ъ' => 'Ъ',
+  'ы' => 'Ы',
+  'ь' => 'Ь',
+  'э' => 'Э',
+  'ю' => 'Ю',
+  'я' => 'Я',
+  'ѐ' => 'Ѐ',
+  'ё' => 'Ё',
+  'ђ' => 'Ђ',
+  'ѓ' => 'Ѓ',
+  'є' => 'Є',
+  'Ñ•' => 'Ð…',
+  'і' => 'І',
+  'ї' => 'Ї',
+  'ј' => 'Ј',
+  'љ' => 'Љ',
+  'њ' => 'Њ',
+  'ћ' => 'Ћ',
+  'ќ' => 'Ќ',
+  'ѝ' => 'Ѝ',
+  'Ñž' => 'ÐŽ',
+  'џ' => 'Џ',
+  'Ñ¡' => 'Ñ ',
+  'Ñ£' => 'Ñ¢',
+  'ѥ' => 'Ѥ',
+  'ѧ' => 'Ѧ',
+  'ѩ' => 'Ѩ',
+  'ѫ' => 'Ѫ',
+  'ѭ' => 'Ѭ',
+  'ѯ' => 'Ѯ',
+  'ѱ' => 'Ѱ',
+  'ѳ' => 'Ѳ',
+  'ѵ' => 'Ѵ',
+  'ѷ' => 'Ѷ',
+  'ѹ' => 'Ѹ',
+  'ѻ' => 'Ѻ',
+  'ѽ' => 'Ѽ',
+  'ѿ' => 'Ѿ',
+  'ҁ' => 'Ҁ',
+  'Ò‹' => 'ÒŠ',
+  'ҍ' => 'Ҍ',
+  'ҏ' => 'Ҏ',
+  'ґ' => 'Ґ',
+  'Ò“' => 'Ò’',
+  'Ò•' => 'Ò”',
+  'Ò—' => 'Ò–',
+  'Ò™' => 'Ò˜',
+  'Ò›' => 'Òš',
+  'ҝ' => 'Ҝ',
+  'ÒŸ' => 'Òž',
+  'Ò¡' => 'Ò ',
+  'Ò£' => 'Ò¢',
+  'Ò¥' => 'Ò¤',
+  'Ò§' => 'Ò¦',
+  'Ò©' => 'Ò¨',
+  'Ò«' => 'Òª',
+  'Ò­' => 'Ò¬',
+  'Ò¯' => 'Ò®',
+  'Ò±' => 'Ò°',
+  'Ò³' => 'Ò²',
+  'Òµ' => 'Ò´',
+  'Ò·' => 'Ò¶',
+  'Ò¹' => 'Ò¸',
+  'Ò»' => 'Òº',
+  'Ò½' => 'Ò¼',
+  'Ò¿' => 'Ò¾',
+  'ӂ' => 'Ӂ',
+  'Ó„' => 'Óƒ',
+  'Ó†' => 'Ó…',
+  'Óˆ' => 'Ó‡',
+  'ÓŠ' => 'Ó‰',
+  'ӌ' => 'Ӌ',
+  'ӎ' => 'Ӎ',
+  'ӏ' => 'Ӏ',
+  'ӑ' => 'Ӑ',
+  'Ó“' => 'Ó’',
+  'Ó•' => 'Ó”',
+  'Ó—' => 'Ó–',
+  'Ó™' => 'Ó˜',
+  'Ó›' => 'Óš',
+  'ӝ' => 'Ӝ',
+  'ÓŸ' => 'Óž',
+  'Ó¡' => 'Ó ',
+  'Ó£' => 'Ó¢',
+  'Ó¥' => 'Ó¤',
+  'Ó§' => 'Ó¦',
+  'Ó©' => 'Ó¨',
+  'Ó«' => 'Óª',
+  'Ó­' => 'Ó¬',
+  'Ó¯' => 'Ó®',
+  'Ó±' => 'Ó°',
+  'Ó³' => 'Ó²',
+  'Óµ' => 'Ó´',
+  'Ó·' => 'Ó¶',
+  'Ó¹' => 'Ó¸',
+  'Ó»' => 'Óº',
+  'Ó½' => 'Ó¼',
+  'Ó¿' => 'Ó¾',
+  'ԁ' => 'Ԁ',
+  'Ôƒ' => 'Ô‚',
+  'Ô…' => 'Ô„',
+  'Ô‡' => 'Ô†',
+  'Ô‰' => 'Ôˆ',
+  'Ô‹' => 'ÔŠ',
+  'ԍ' => 'Ԍ',
+  'ԏ' => 'Ԏ',
+  'ԑ' => 'Ԑ',
+  'Ô“' => 'Ô’',
+  'Ô•' => 'Ô”',
+  'Ô—' => 'Ô–',
+  'Ô™' => 'Ô˜',
+  'Ô›' => 'Ôš',
+  'ԝ' => 'Ԝ',
+  'ÔŸ' => 'Ôž',
+  'Ô¡' => 'Ô ',
+  'Ô£' => 'Ô¢',
+  'Ô¥' => 'Ô¤',
+  'Ô§' => 'Ô¦',
+  'Ô©' => 'Ô¨',
+  'Ô«' => 'Ôª',
+  'Ô­' => 'Ô¬',
+  'Ô¯' => 'Ô®',
+  'Õ¡' => 'Ô±',
+  'Õ¢' => 'Ô²',
+  'Õ£' => 'Ô³',
+  'Õ¤' => 'Ô´',
+  'Õ¥' => 'Ôµ',
+  'Õ¦' => 'Ô¶',
+  'Õ§' => 'Ô·',
+  'Õ¨' => 'Ô¸',
+  'Õ©' => 'Ô¹',
+  'Õª' => 'Ôº',
+  'Õ«' => 'Ô»',
+  'Õ¬' => 'Ô¼',
+  'Õ­' => 'Ô½',
+  'Õ®' => 'Ô¾',
+  'Õ¯' => 'Ô¿',
+  'Õ°' => 'Õ€',
+  'ձ' => 'Ձ',
+  'Õ²' => 'Õ‚',
+  'Õ³' => 'Õƒ',
+  'Õ´' => 'Õ„',
+  'Õµ' => 'Õ…',
+  'Õ¶' => 'Õ†',
+  'Õ·' => 'Õ‡',
+  'Õ¸' => 'Õˆ',
+  'Õ¹' => 'Õ‰',
+  'Õº' => 'ÕŠ',
+  'Õ»' => 'Õ‹',
+  'ռ' => 'Ռ',
+  'ս' => 'Ս',
+  'Õ¾' => 'ÕŽ',
+  'տ' => 'Տ',
+  'ր' => 'Ր',
+  'ց' => 'Ց',
+  'Ö‚' => 'Õ’',
+  'Öƒ' => 'Õ“',
+  'Ö„' => 'Õ”',
+  'Ö…' => 'Õ•',
+  'Ö†' => 'Õ–',
+  'ა' => 'Ა',
+  'ბ' => 'Ბ',
+  'გ' => 'Გ',
+  'დ' => 'Დ',
+  'ე' => 'Ე',
+  'ვ' => 'Ვ',
+  'ზ' => 'Ზ',
+  'თ' => 'Თ',
+  'ი' => 'Ი',
+  'კ' => 'Კ',
+  'ლ' => 'Ლ',
+  'მ' => 'Მ',
+  'ნ' => 'Ნ',
+  'ო' => 'Ო',
+  'პ' => 'Პ',
+  'ჟ' => 'Ჟ',
+  'რ' => 'Რ',
+  'ს' => 'Ს',
+  'ტ' => 'Ტ',
+  'უ' => 'Უ',
+  'ფ' => 'Ფ',
+  'ქ' => 'Ქ',
+  'ღ' => 'Ღ',
+  'ყ' => 'Ყ',
+  'შ' => 'Შ',
+  'ჩ' => 'Ჩ',
+  'ც' => 'Ც',
+  'ძ' => 'Ძ',
+  'წ' => 'Წ',
+  'ჭ' => 'Ჭ',
+  'ხ' => 'Ხ',
+  'ჯ' => 'Ჯ',
+  'ჰ' => 'Ჰ',
+  'ჱ' => 'Ჱ',
+  'ჲ' => 'Ჲ',
+  'ჳ' => 'Ჳ',
+  'ჴ' => 'Ჴ',
+  'ჵ' => 'Ჵ',
+  'ჶ' => 'Ჶ',
+  'ჷ' => 'Ჷ',
+  'ჸ' => 'Ჸ',
+  'ჹ' => 'Ჹ',
+  'ჺ' => 'Ჺ',
+  'ჽ' => 'Ჽ',
+  'ჾ' => 'Ჾ',
+  'ჿ' => 'Ჿ',
+  'ᏸ' => 'Ᏸ',
+  'ᏹ' => 'Ᏹ',
+  'ᏺ' => 'Ᏺ',
+  'ᏻ' => 'Ᏻ',
+  'ᏼ' => 'Ᏼ',
+  'ᏽ' => 'Ᏽ',
+  'á²€' => 'Ð’',
+  'ᲁ' => 'Д',
+  'ᲂ' => 'О',
+  'ᲃ' => 'С',
+  'ᲄ' => 'Т',
+  'ᲅ' => 'Т',
+  'ᲆ' => 'Ъ',
+  'ᲇ' => 'Ѣ',
+  'ᲈ' => 'Ꙋ',
+  'ᵹ' => 'Ᵹ',
+  'áµ½' => 'â±£',
+  'ᶎ' => 'Ᶎ',
+  'ḁ' => 'Ḁ',
+  'ḃ' => 'Ḃ',
+  'ḅ' => 'Ḅ',
+  'ḇ' => 'Ḇ',
+  'ḉ' => 'Ḉ',
+  'ḋ' => 'Ḋ',
+  'ḍ' => 'Ḍ',
+  'ḏ' => 'Ḏ',
+  'ḑ' => 'Ḑ',
+  'ḓ' => 'Ḓ',
+  'ḕ' => 'Ḕ',
+  'ḗ' => 'Ḗ',
+  'ḙ' => 'Ḙ',
+  'ḛ' => 'Ḛ',
+  'ḝ' => 'Ḝ',
+  'ḟ' => 'Ḟ',
+  'ḡ' => 'Ḡ',
+  'ḣ' => 'Ḣ',
+  'ḥ' => 'Ḥ',
+  'ḧ' => 'Ḧ',
+  'ḩ' => 'Ḩ',
+  'ḫ' => 'Ḫ',
+  'ḭ' => 'Ḭ',
+  'ḯ' => 'Ḯ',
+  'ḱ' => 'Ḱ',
+  'ḳ' => 'Ḳ',
+  'ḵ' => 'Ḵ',
+  'ḷ' => 'Ḷ',
+  'ḹ' => 'Ḹ',
+  'ḻ' => 'Ḻ',
+  'ḽ' => 'Ḽ',
+  'ḿ' => 'Ḿ',
+  'ṁ' => 'Ṁ',
+  'ṃ' => 'Ṃ',
+  'ṅ' => 'Ṅ',
+  'ṇ' => 'Ṇ',
+  'ṉ' => 'Ṉ',
+  'ṋ' => 'Ṋ',
+  'ṍ' => 'Ṍ',
+  'ṏ' => 'Ṏ',
+  'ṑ' => 'Ṑ',
+  'ṓ' => 'Ṓ',
+  'ṕ' => 'Ṕ',
+  'á¹—' => 'á¹–',
+  'ṙ' => 'Ṙ',
+  'ṛ' => 'Ṛ',
+  'ṝ' => 'Ṝ',
+  'ṟ' => 'Ṟ',
+  'ṡ' => 'Ṡ',
+  'á¹£' => 'á¹¢',
+  'ṥ' => 'Ṥ',
+  'ṧ' => 'Ṧ',
+  'ṩ' => 'Ṩ',
+  'ṫ' => 'Ṫ',
+  'ṭ' => 'Ṭ',
+  'ṯ' => 'Ṯ',
+  'á¹±' => 'á¹°',
+  'á¹³' => 'á¹²',
+  'á¹µ' => 'á¹´',
+  'ṷ' => 'Ṷ',
+  'ṹ' => 'Ṹ',
+  'ṻ' => 'Ṻ',
+  'á¹½' => 'á¹¼',
+  'ṿ' => 'Ṿ',
+  'ẁ' => 'Ẁ',
+  'ẃ' => 'Ẃ',
+  'ẅ' => 'Ẅ',
+  'ẇ' => 'Ẇ',
+  'ẉ' => 'Ẉ',
+  'ẋ' => 'Ẋ',
+  'ẍ' => 'Ẍ',
+  'ẏ' => 'Ẏ',
+  'ẑ' => 'Ẑ',
+  'ẓ' => 'Ẓ',
+  'ẕ' => 'Ẕ',
+  'ẛ' => 'Ṡ',
+  'ạ' => 'Ạ',
+  'ả' => 'Ả',
+  'ấ' => 'Ấ',
+  'ầ' => 'Ầ',
+  'ẩ' => 'Ẩ',
+  'ẫ' => 'Ẫ',
+  'ậ' => 'Ậ',
+  'ắ' => 'Ắ',
+  'ằ' => 'Ằ',
+  'ẳ' => 'Ẳ',
+  'ẵ' => 'Ẵ',
+  'ặ' => 'Ặ',
+  'ẹ' => 'Ẹ',
+  'ẻ' => 'Ẻ',
+  'ẽ' => 'Ẽ',
+  'ế' => 'Ế',
+  'ề' => 'Ề',
+  'ể' => 'Ể',
+  'ễ' => 'Ễ',
+  'ệ' => 'Ệ',
+  'ỉ' => 'Ỉ',
+  'ị' => 'Ị',
+  'ọ' => 'Ọ',
+  'ỏ' => 'Ỏ',
+  'ố' => 'Ố',
+  'ồ' => 'Ồ',
+  'ổ' => 'Ổ',
+  'á»—' => 'á»–',
+  'ộ' => 'Ộ',
+  'ớ' => 'Ớ',
+  'ờ' => 'Ờ',
+  'ở' => 'Ở',
+  'ỡ' => 'Ỡ',
+  'ợ' => 'Ợ',
+  'ụ' => 'Ụ',
+  'ủ' => 'Ủ',
+  'ứ' => 'Ứ',
+  'ừ' => 'Ừ',
+  'ử' => 'Ử',
+  'ữ' => 'Ữ',
+  'á»±' => 'á»°',
+  'ỳ' => 'Ỳ',
+  'ỵ' => 'Ỵ',
+  'ỷ' => 'Ỷ',
+  'ỹ' => 'Ỹ',
+  'ỻ' => 'Ỻ',
+  'ỽ' => 'Ỽ',
+  'ỿ' => 'Ỿ',
+  'ἀ' => 'Ἀ',
+  'ἁ' => 'Ἁ',
+  'ἂ' => 'Ἂ',
+  'ἃ' => 'Ἃ',
+  'ἄ' => 'Ἄ',
+  'ἅ' => 'Ἅ',
+  'ἆ' => 'Ἆ',
+  'ἇ' => 'Ἇ',
+  'ἐ' => 'Ἐ',
+  'ἑ' => 'Ἑ',
+  'ἒ' => 'Ἒ',
+  'ἓ' => 'Ἓ',
+  'ἔ' => 'Ἔ',
+  'ἕ' => 'Ἕ',
+  'ἠ' => 'Ἠ',
+  'ἡ' => 'Ἡ',
+  'ἢ' => 'Ἢ',
+  'ἣ' => 'Ἣ',
+  'ἤ' => 'Ἤ',
+  'á¼¥' => 'á¼­',
+  'ἦ' => 'Ἦ',
+  'ἧ' => 'Ἧ',
+  'ἰ' => 'Ἰ',
+  'á¼±' => 'á¼¹',
+  'ἲ' => 'Ἲ',
+  'á¼³' => 'á¼»',
+  'á¼´' => 'á¼¼',
+  'á¼µ' => 'á¼½',
+  'ἶ' => 'Ἶ',
+  'ἷ' => 'Ἷ',
+  'ὀ' => 'Ὀ',
+  'ὁ' => 'Ὁ',
+  'ὂ' => 'Ὂ',
+  'ὃ' => 'Ὃ',
+  'ὄ' => 'Ὄ',
+  'ὅ' => 'Ὅ',
+  'ὑ' => 'Ὑ',
+  'ὓ' => 'Ὓ',
+  'ὕ' => 'Ὕ',
+  'ὗ' => 'Ὗ',
+  'ὠ' => 'Ὠ',
+  'ὡ' => 'Ὡ',
+  'ὢ' => 'Ὢ',
+  'ὣ' => 'Ὣ',
+  'ὤ' => 'Ὤ',
+  'á½¥' => 'á½­',
+  'ὦ' => 'Ὦ',
+  'ὧ' => 'Ὧ',
+  'ὰ' => 'Ὰ',
+  'á½±' => 'á¾»',
+  'ὲ' => 'Ὲ',
+  'έ' => 'Έ',
+  'á½´' => 'á¿Š',
+  'á½µ' => 'á¿‹',
+  'ὶ' => 'Ὶ',
+  'á½·' => 'á¿›',
+  'ὸ' => 'Ὸ',
+  'ό' => 'Ό',
+  'ὺ' => 'Ὺ',
+  'á½»' => 'á¿«',
+  'ὼ' => 'Ὼ',
+  'á½½' => 'á¿»',
+  'ᾀ' => 'ἈΙ',
+  'ᾁ' => 'ἉΙ',
+  'ᾂ' => 'ἊΙ',
+  'ᾃ' => 'ἋΙ',
+  'ᾄ' => 'ἌΙ',
+  'ᾅ' => 'ἍΙ',
+  'ᾆ' => 'ἎΙ',
+  'ᾇ' => 'ἏΙ',
+  'ᾐ' => 'ἨΙ',
+  'ᾑ' => 'ἩΙ',
+  'ᾒ' => 'ἪΙ',
+  'ᾓ' => 'ἫΙ',
+  'ᾔ' => 'ἬΙ',
+  'ᾕ' => 'ἭΙ',
+  'ᾖ' => 'ἮΙ',
+  'ᾗ' => 'ἯΙ',
+  'ᾠ' => 'ὨΙ',
+  'ᾡ' => 'ὩΙ',
+  'ᾢ' => 'ὪΙ',
+  'ᾣ' => 'ὫΙ',
+  'ᾤ' => 'ὬΙ',
+  'ᾥ' => 'ὭΙ',
+  'ᾦ' => 'ὮΙ',
+  'ᾧ' => 'ὯΙ',
+  'ᾰ' => 'Ᾰ',
+  'á¾±' => 'á¾¹',
+  'ᾳ' => 'ΑΙ',
+  'ι' => 'Ι',
+  'ῃ' => 'ΗΙ',
+  'ῐ' => 'Ῐ',
+  'á¿‘' => 'á¿™',
+  'ῠ' => 'Ῠ',
+  'á¿¡' => 'á¿©',
+  'ῥ' => 'Ῥ',
+  'ῳ' => 'ΩΙ',
+  'ⅎ' => 'Ⅎ',
+  'â…°' => 'â… ',
+  'â…±' => 'â…¡',
+  'â…²' => 'â…¢',
+  'â…³' => 'â…£',
+  'â…´' => 'â…¤',
+  'â…µ' => 'â…¥',
+  'â…¶' => 'â…¦',
+  'â…·' => 'â…§',
+  'â…¸' => 'â…¨',
+  'â…¹' => 'â…©',
+  'â…º' => 'â…ª',
+  'â…»' => 'â…«',
+  'â…¼' => 'â…¬',
+  'â…½' => 'â…­',
+  'â…¾' => 'â…®',
+  'â…¿' => 'â…¯',
+  'ↄ' => 'Ↄ',
+  'ⓐ' => 'Ⓐ',
+  'â“‘' => 'â’·',
+  'â“’' => 'â’¸',
+  'â““' => 'â’¹',
+  'â“”' => 'â’º',
+  'â“•' => 'â’»',
+  'â“–' => 'â’¼',
+  'â“—' => 'â’½',
+  'ⓘ' => 'Ⓘ',
+  'â“™' => 'â’¿',
+  'â“š' => 'â“€',
+  'ⓛ' => 'Ⓛ',
+  'ⓜ' => 'Ⓜ',
+  'ⓝ' => 'Ⓝ',
+  'â“ž' => 'â“„',
+  'â“Ÿ' => 'â“…',
+  'ⓠ' => 'Ⓠ',
+  'ⓡ' => 'Ⓡ',
+  'ⓢ' => 'Ⓢ',
+  'ⓣ' => 'Ⓣ',
+  'ⓤ' => 'Ⓤ',
+  'â“¥' => 'â“‹',
+  'ⓦ' => 'Ⓦ',
+  'ⓧ' => 'Ⓧ',
+  'ⓨ' => 'Ⓨ',
+  'ⓩ' => 'Ⓩ',
+  'â°°' => 'â°€',
+  'ⰱ' => 'Ⰱ',
+  'â°²' => 'â°‚',
+  'â°³' => 'â°ƒ',
+  'â°´' => 'â°„',
+  'â°µ' => 'â°…',
+  'â°¶' => 'â°†',
+  'â°·' => 'â°‡',
+  'â°¸' => 'â°ˆ',
+  'â°¹' => 'â°‰',
+  'â°º' => 'â°Š',
+  'â°»' => 'â°‹',
+  'ⰼ' => 'Ⰼ',
+  'ⰽ' => 'Ⰽ',
+  'â°¾' => 'â°Ž',
+  'ⰿ' => 'Ⰿ',
+  'ⱀ' => 'Ⱀ',
+  'ⱁ' => 'Ⱁ',
+  'ⱂ' => 'Ⱂ',
+  'ⱃ' => 'Ⱃ',
+  'ⱄ' => 'Ⱄ',
+  'â±…' => 'â°•',
+  'ⱆ' => 'Ⱆ',
+  'ⱇ' => 'Ⱇ',
+  'ⱈ' => 'Ⱈ',
+  'ⱉ' => 'Ⱉ',
+  'ⱊ' => 'Ⱊ',
+  'ⱋ' => 'Ⱋ',
+  'ⱌ' => 'Ⱌ',
+  'ⱍ' => 'Ⱍ',
+  'ⱎ' => 'Ⱎ',
+  'ⱏ' => 'Ⱏ',
+  'ⱐ' => 'Ⱐ',
+  'ⱑ' => 'Ⱑ',
+  'â±’' => 'â°¢',
+  'ⱓ' => 'Ⱓ',
+  'â±”' => 'â°¤',
+  'ⱕ' => 'Ⱕ',
+  'â±–' => 'â°¦',
+  'â±—' => 'â°§',
+  'ⱘ' => 'Ⱘ',
+  'â±™' => 'â°©',
+  'ⱚ' => 'Ⱚ',
+  'â±›' => 'â°«',
+  'ⱜ' => 'Ⱜ',
+  'ⱝ' => 'Ⱝ',
+  'ⱞ' => 'Ⱞ',
+  'ⱡ' => 'Ⱡ',
+  'ⱥ' => 'Ⱥ',
+  'ⱦ' => 'Ⱦ',
+  'ⱨ' => 'Ⱨ',
+  'ⱪ' => 'Ⱪ',
+  'ⱬ' => 'Ⱬ',
+  'â±³' => 'â±²',
+  'ⱶ' => 'Ⱶ',
+  'ⲁ' => 'Ⲁ',
+  'ⲃ' => 'Ⲃ',
+  'ⲅ' => 'Ⲅ',
+  'ⲇ' => 'Ⲇ',
+  'ⲉ' => 'Ⲉ',
+  'ⲋ' => 'Ⲋ',
+  'ⲍ' => 'Ⲍ',
+  'ⲏ' => 'Ⲏ',
+  'ⲑ' => 'Ⲑ',
+  'ⲓ' => 'Ⲓ',
+  'ⲕ' => 'Ⲕ',
+  'â²—' => 'â²–',
+  'ⲙ' => 'Ⲙ',
+  'ⲛ' => 'Ⲛ',
+  'ⲝ' => 'Ⲝ',
+  'ⲟ' => 'Ⲟ',
+  'ⲡ' => 'Ⲡ',
+  'â²£' => 'â²¢',
+  'ⲥ' => 'Ⲥ',
+  'ⲧ' => 'Ⲧ',
+  'ⲩ' => 'Ⲩ',
+  'ⲫ' => 'Ⲫ',
+  'ⲭ' => 'Ⲭ',
+  'ⲯ' => 'Ⲯ',
+  'â²±' => 'â²°',
+  'â²³' => 'â²²',
+  'â²µ' => 'â²´',
+  'ⲷ' => 'Ⲷ',
+  'ⲹ' => 'Ⲹ',
+  'ⲻ' => 'Ⲻ',
+  'â²½' => 'â²¼',
+  'ⲿ' => 'Ⲿ',
+  'ⳁ' => 'Ⳁ',
+  'ⳃ' => 'Ⳃ',
+  'ⳅ' => 'Ⳅ',
+  'ⳇ' => 'Ⳇ',
+  'ⳉ' => 'Ⳉ',
+  'ⳋ' => 'Ⳋ',
+  'ⳍ' => 'Ⳍ',
+  'ⳏ' => 'Ⳏ',
+  'ⳑ' => 'Ⳑ',
+  'ⳓ' => 'Ⳓ',
+  'ⳕ' => 'Ⳕ',
+  'â³—' => 'â³–',
+  'ⳙ' => 'Ⳙ',
+  'ⳛ' => 'Ⳛ',
+  'ⳝ' => 'Ⳝ',
+  'ⳟ' => 'Ⳟ',
+  'ⳡ' => 'Ⳡ',
+  'â³£' => 'â³¢',
+  'ⳬ' => 'Ⳬ',
+  'â³®' => 'â³­',
+  'â³³' => 'â³²',
+  'â´€' => 'á‚ ',
+  'ⴁ' => 'Ⴁ',
+  'â´‚' => 'á‚¢',
+  'â´ƒ' => 'á‚£',
+  'ⴄ' => 'Ⴄ',
+  'â´…' => 'á‚¥',
+  'ⴆ' => 'Ⴆ',
+  'ⴇ' => 'Ⴇ',
+  'ⴈ' => 'Ⴈ',
+  'â´‰' => 'á‚©',
+  'ⴊ' => 'Ⴊ',
+  'â´‹' => 'á‚«',
+  'ⴌ' => 'Ⴌ',
+  'ⴍ' => 'Ⴍ',
+  'â´Ž' => 'á‚®',
+  'ⴏ' => 'Ⴏ',
+  'ⴐ' => 'Ⴐ',
+  'ⴑ' => 'Ⴑ',
+  'ⴒ' => 'Ⴒ',
+  'ⴓ' => 'Ⴓ',
+  'â´”' => 'á‚´',
+  'ⴕ' => 'Ⴕ',
+  'ⴖ' => 'Ⴖ',
+  'â´—' => 'á‚·',
+  'ⴘ' => 'Ⴘ',
+  'ⴙ' => 'Ⴙ',
+  'ⴚ' => 'Ⴚ',
+  'â´›' => 'á‚»',
+  'ⴜ' => 'Ⴜ',
+  'ⴝ' => 'Ⴝ',
+  'ⴞ' => 'Ⴞ',
+  'â´Ÿ' => 'á‚¿',
+  'ⴠ' => 'Ⴠ',
+  'ⴡ' => 'Ⴡ',
+  'ⴢ' => 'Ⴢ',
+  'ⴣ' => 'Ⴣ',
+  'ⴤ' => 'Ⴤ',
+  'ⴥ' => 'Ⴥ',
+  'ⴧ' => 'Ⴧ',
+  'ⴭ' => 'Ⴭ',
+  'ꙁ' => 'Ꙁ',
+  'ꙃ' => 'Ꙃ',
+  'ꙅ' => 'Ꙅ',
+  'ꙇ' => 'Ꙇ',
+  'ꙉ' => 'Ꙉ',
+  'ꙋ' => 'Ꙋ',
+  'ꙍ' => 'Ꙍ',
+  'ꙏ' => 'Ꙏ',
+  'ꙑ' => 'Ꙑ',
+  'ꙓ' => 'Ꙓ',
+  'ꙕ' => 'Ꙕ',
+  'ê™—' => 'ê™–',
+  'ꙙ' => 'Ꙙ',
+  'ꙛ' => 'Ꙛ',
+  'ꙝ' => 'Ꙝ',
+  'ꙟ' => 'Ꙟ',
+  'ꙡ' => 'Ꙡ',
+  'ꙣ' => 'Ꙣ',
+  'ꙥ' => 'Ꙥ',
+  'ꙧ' => 'Ꙧ',
+  'ꙩ' => 'Ꙩ',
+  'ꙫ' => 'Ꙫ',
+  'ꙭ' => 'Ꙭ',
+  'ꚁ' => 'Ꚁ',
+  'ꚃ' => 'Ꚃ',
+  'êš…' => 'êš„',
+  'ꚇ' => 'Ꚇ',
+  'ꚉ' => 'Ꚉ',
+  'ꚋ' => 'Ꚋ',
+  'ꚍ' => 'Ꚍ',
+  'ꚏ' => 'Ꚏ',
+  'ꚑ' => 'Ꚑ',
+  'êš“' => 'êš’',
+  'êš•' => 'êš”',
+  'êš—' => 'êš–',
+  'ꚙ' => 'Ꚙ',
+  'êš›' => 'êšš',
+  'ꜣ' => 'Ꜣ',
+  'ꜥ' => 'Ꜥ',
+  'ꜧ' => 'Ꜧ',
+  'ꜩ' => 'Ꜩ',
+  'ꜫ' => 'Ꜫ',
+  'ꜭ' => 'Ꜭ',
+  'ꜯ' => 'Ꜯ',
+  'ꜳ' => 'Ꜳ',
+  'ꜵ' => 'Ꜵ',
+  'ꜷ' => 'Ꜷ',
+  'ꜹ' => 'Ꜹ',
+  'ꜻ' => 'Ꜻ',
+  'ꜽ' => 'Ꜽ',
+  'ꜿ' => 'Ꜿ',
+  'ꝁ' => 'Ꝁ',
+  'ꝃ' => 'Ꝃ',
+  'ꝅ' => 'Ꝅ',
+  'ꝇ' => 'Ꝇ',
+  'ꝉ' => 'Ꝉ',
+  'ꝋ' => 'Ꝋ',
+  'ꝍ' => 'Ꝍ',
+  'ꝏ' => 'Ꝏ',
+  'ꝑ' => 'Ꝑ',
+  'ꝓ' => 'Ꝓ',
+  'ꝕ' => 'Ꝕ',
+  'ꝗ' => 'Ꝗ',
+  'ꝙ' => 'Ꝙ',
+  'ꝛ' => 'Ꝛ',
+  'ꝝ' => 'Ꝝ',
+  'ꝟ' => 'Ꝟ',
+  'ꝡ' => 'Ꝡ',
+  'ꝣ' => 'Ꝣ',
+  'ꝥ' => 'Ꝥ',
+  'ꝧ' => 'Ꝧ',
+  'ꝩ' => 'Ꝩ',
+  'ꝫ' => 'Ꝫ',
+  'ꝭ' => 'Ꝭ',
+  'ꝯ' => 'Ꝯ',
+  'ꝺ' => 'Ꝺ',
+  'ꝼ' => 'Ꝼ',
+  'ꝿ' => 'Ꝿ',
+  'ꞁ' => 'Ꞁ',
+  'ꞃ' => 'Ꞃ',
+  'êž…' => 'êž„',
+  'ꞇ' => 'Ꞇ',
+  'ꞌ' => 'Ꞌ',
+  'ꞑ' => 'Ꞑ',
+  'êž“' => 'êž’',
+  'ꞔ' => 'Ꞔ',
+  'êž—' => 'êž–',
+  'ꞙ' => 'Ꞙ',
+  'êž›' => 'êžš',
+  'ꞝ' => 'Ꞝ',
+  'ꞟ' => 'Ꞟ',
+  'êž¡' => 'êž ',
+  'ꞣ' => 'Ꞣ',
+  'ꞥ' => 'Ꞥ',
+  'ꞧ' => 'Ꞧ',
+  'ꞩ' => 'Ꞩ',
+  'êžµ' => 'êž´',
+  'ꞷ' => 'Ꞷ',
+  'ꞹ' => 'Ꞹ',
+  'ꞻ' => 'Ꞻ',
+  'êž½' => 'êž¼',
+  'êž¿' => 'êž¾',
+  'ꟃ' => 'Ꟃ',
+  'ꟈ' => 'Ꟈ',
+  'ꟊ' => 'Ꟊ',
+  'ꟶ' => 'Ꟶ',
+  'ê­“' => 'êž³',
+  'ꭰ' => 'Ꭰ',
+  'ꭱ' => 'Ꭱ',
+  'ꭲ' => 'Ꭲ',
+  'ꭳ' => 'Ꭳ',
+  'ꭴ' => 'Ꭴ',
+  'ꭵ' => 'Ꭵ',
+  'ꭶ' => 'Ꭶ',
+  'ꭷ' => 'Ꭷ',
+  'ꭸ' => 'Ꭸ',
+  'ꭹ' => 'Ꭹ',
+  'ꭺ' => 'Ꭺ',
+  'ꭻ' => 'Ꭻ',
+  'ꭼ' => 'Ꭼ',
+  'ꭽ' => 'Ꭽ',
+  'ꭾ' => 'Ꭾ',
+  'ꭿ' => 'Ꭿ',
+  'ꮀ' => 'Ꮀ',
+  'ꮁ' => 'Ꮁ',
+  'ꮂ' => 'Ꮂ',
+  'ꮃ' => 'Ꮃ',
+  'ꮄ' => 'Ꮄ',
+  'ꮅ' => 'Ꮅ',
+  'ꮆ' => 'Ꮆ',
+  'ꮇ' => 'Ꮇ',
+  'ꮈ' => 'Ꮈ',
+  'ꮉ' => 'Ꮉ',
+  'ꮊ' => 'Ꮊ',
+  'ꮋ' => 'Ꮋ',
+  'ꮌ' => 'Ꮌ',
+  'ꮍ' => 'Ꮍ',
+  'ꮎ' => 'Ꮎ',
+  'ꮏ' => 'Ꮏ',
+  'ꮐ' => 'Ꮐ',
+  'ꮑ' => 'Ꮑ',
+  'ꮒ' => 'Ꮒ',
+  'ꮓ' => 'Ꮓ',
+  'ꮔ' => 'Ꮔ',
+  'ꮕ' => 'Ꮕ',
+  'ꮖ' => 'Ꮖ',
+  'ꮗ' => 'Ꮗ',
+  'ꮘ' => 'Ꮘ',
+  'ꮙ' => 'Ꮙ',
+  'ꮚ' => 'Ꮚ',
+  'ꮛ' => 'Ꮛ',
+  'ꮜ' => 'Ꮜ',
+  'ꮝ' => 'Ꮝ',
+  'ꮞ' => 'Ꮞ',
+  'ꮟ' => 'Ꮟ',
+  'ꮠ' => 'Ꮠ',
+  'ꮡ' => 'Ꮡ',
+  'ꮢ' => 'Ꮢ',
+  'ꮣ' => 'Ꮣ',
+  'ꮤ' => 'Ꮤ',
+  'ꮥ' => 'Ꮥ',
+  'ꮦ' => 'Ꮦ',
+  'ꮧ' => 'Ꮧ',
+  'ꮨ' => 'Ꮨ',
+  'ꮩ' => 'Ꮩ',
+  'ꮪ' => 'Ꮪ',
+  'ꮫ' => 'Ꮫ',
+  'ꮬ' => 'Ꮬ',
+  'ꮭ' => 'Ꮭ',
+  'ꮮ' => 'Ꮮ',
+  'ꮯ' => 'Ꮯ',
+  'ꮰ' => 'Ꮰ',
+  'ꮱ' => 'Ꮱ',
+  'ꮲ' => 'Ꮲ',
+  'ꮳ' => 'Ꮳ',
+  'ꮴ' => 'Ꮴ',
+  'ꮵ' => 'Ꮵ',
+  'ꮶ' => 'Ꮶ',
+  'ꮷ' => 'Ꮷ',
+  'ꮸ' => 'Ꮸ',
+  'ꮹ' => 'Ꮹ',
+  'ꮺ' => 'Ꮺ',
+  'ꮻ' => 'Ꮻ',
+  'ꮼ' => 'Ꮼ',
+  'ꮽ' => 'Ꮽ',
+  'ꮾ' => 'Ꮾ',
+  'ꮿ' => 'Ꮿ',
+  'a' => 'A',
+  'b' => 'B',
+  'c' => 'C',
+  'd' => 'D',
+  'ï½…' => 'ï¼¥',
+  'f' => 'F',
+  'g' => 'G',
+  'h' => 'H',
+  'i' => 'I',
+  'j' => 'J',
+  'k' => 'K',
+  'l' => 'L',
+  'm' => 'M',
+  'n' => 'N',
+  'o' => 'O',
+  'p' => 'P',
+  'q' => 'Q',
+  'ï½’' => 'ï¼²',
+  's' => 'S',
+  'ï½”' => 'ï¼´',
+  'u' => 'U',
+  'v' => 'V',
+  'ï½—' => 'ï¼·',
+  'x' => 'X',
+  'ï½™' => 'ï¼¹',
+  'z' => 'Z',
+  '𐐨' => '𐐀',
+  '𐐩' => '𐐁',
+  '𐐪' => '𐐂',
+  '𐐫' => '𐐃',
+  '𐐬' => '𐐄',
+  '𐐭' => '𐐅',
+  '𐐮' => '𐐆',
+  '𐐯' => '𐐇',
+  '𐐰' => '𐐈',
+  '𐐱' => '𐐉',
+  '𐐲' => '𐐊',
+  '𐐳' => '𐐋',
+  '𐐴' => '𐐌',
+  '𐐵' => '𐐍',
+  '𐐶' => '𐐎',
+  '𐐷' => '𐐏',
+  '𐐸' => '𐐐',
+  '𐐹' => '𐐑',
+  '𐐺' => '𐐒',
+  '𐐻' => '𐐓',
+  '𐐼' => '𐐔',
+  '𐐽' => '𐐕',
+  '𐐾' => '𐐖',
+  '𐐿' => '𐐗',
+  '𐑀' => '𐐘',
+  '𐑁' => '𐐙',
+  '𐑂' => '𐐚',
+  '𐑃' => '𐐛',
+  '𐑄' => '𐐜',
+  '𐑅' => '𐐝',
+  '𐑆' => '𐐞',
+  '𐑇' => '𐐟',
+  '𐑈' => '𐐠',
+  '𐑉' => '𐐡',
+  '𐑊' => '𐐢',
+  '𐑋' => '𐐣',
+  '𐑌' => '𐐤',
+  '𐑍' => '𐐥',
+  '𐑎' => '𐐦',
+  '𐑏' => '𐐧',
+  '𐓘' => '𐒰',
+  '𐓙' => '𐒱',
+  '𐓚' => '𐒲',
+  '𐓛' => '𐒳',
+  '𐓜' => '𐒴',
+  '𐓝' => '𐒵',
+  '𐓞' => '𐒶',
+  '𐓟' => '𐒷',
+  '𐓠' => '𐒸',
+  '𐓡' => '𐒹',
+  '𐓢' => '𐒺',
+  '𐓣' => '𐒻',
+  '𐓤' => '𐒼',
+  '𐓥' => '𐒽',
+  '𐓦' => '𐒾',
+  '𐓧' => '𐒿',
+  '𐓨' => '𐓀',
+  '𐓩' => '𐓁',
+  '𐓪' => '𐓂',
+  '𐓫' => '𐓃',
+  '𐓬' => '𐓄',
+  '𐓭' => '𐓅',
+  '𐓮' => '𐓆',
+  '𐓯' => '𐓇',
+  '𐓰' => '𐓈',
+  '𐓱' => '𐓉',
+  '𐓲' => '𐓊',
+  '𐓳' => '𐓋',
+  '𐓴' => '𐓌',
+  '𐓵' => '𐓍',
+  '𐓶' => '𐓎',
+  '𐓷' => '𐓏',
+  '𐓸' => '𐓐',
+  '𐓹' => '𐓑',
+  '𐓺' => '𐓒',
+  '𐓻' => '𐓓',
+  '𐳀' => '𐲀',
+  '𐳁' => '𐲁',
+  '𐳂' => '𐲂',
+  '𐳃' => '𐲃',
+  '𐳄' => '𐲄',
+  '𐳅' => '𐲅',
+  '𐳆' => '𐲆',
+  '𐳇' => '𐲇',
+  '𐳈' => '𐲈',
+  '𐳉' => '𐲉',
+  '𐳊' => '𐲊',
+  '𐳋' => '𐲋',
+  '𐳌' => '𐲌',
+  '𐳍' => '𐲍',
+  '𐳎' => '𐲎',
+  '𐳏' => '𐲏',
+  '𐳐' => '𐲐',
+  '𐳑' => '𐲑',
+  '𐳒' => '𐲒',
+  '𐳓' => '𐲓',
+  '𐳔' => '𐲔',
+  '𐳕' => '𐲕',
+  '𐳖' => '𐲖',
+  '𐳗' => '𐲗',
+  '𐳘' => '𐲘',
+  '𐳙' => '𐲙',
+  '𐳚' => '𐲚',
+  '𐳛' => '𐲛',
+  '𐳜' => '𐲜',
+  '𐳝' => '𐲝',
+  '𐳞' => '𐲞',
+  '𐳟' => '𐲟',
+  '𐳠' => '𐲠',
+  '𐳡' => '𐲡',
+  '𐳢' => '𐲢',
+  '𐳣' => '𐲣',
+  '𐳤' => '𐲤',
+  '𐳥' => '𐲥',
+  '𐳦' => '𐲦',
+  '𐳧' => '𐲧',
+  '𐳨' => '𐲨',
+  '𐳩' => '𐲩',
+  '𐳪' => '𐲪',
+  '𐳫' => '𐲫',
+  '𐳬' => '𐲬',
+  '𐳭' => '𐲭',
+  '𐳮' => '𐲮',
+  '𐳯' => '𐲯',
+  '𐳰' => '𐲰',
+  '𐳱' => '𐲱',
+  '𐳲' => '𐲲',
+  'ð‘£€' => 'ð‘¢ ',
+  '𑣁' => '𑢡',
+  '𑣂' => '𑢢',
+  '𑣃' => '𑢣',
+  '𑣄' => '𑢤',
+  'ð‘£…' => 'ð‘¢¥',
+  '𑣆' => '𑢦',
+  '𑣇' => '𑢧',
+  '𑣈' => '𑢨',
+  '𑣉' => '𑢩',
+  '𑣊' => '𑢪',
+  '𑣋' => '𑢫',
+  '𑣌' => '𑢬',
+  '𑣍' => '𑢭',
+  '𑣎' => '𑢮',
+  '𑣏' => '𑢯',
+  '𑣐' => '𑢰',
+  '𑣑' => '𑢱',
+  'ð‘£’' => 'ð‘¢²',
+  '𑣓' => '𑢳',
+  'ð‘£”' => 'ð‘¢´',
+  '𑣕' => '𑢵',
+  '𑣖' => '𑢶',
+  'ð‘£—' => 'ð‘¢·',
+  '𑣘' => '𑢸',
+  'ð‘£™' => 'ð‘¢¹',
+  '𑣚' => '𑢺',
+  'ð‘£›' => 'ð‘¢»',
+  '𑣜' => '𑢼',
+  '𑣝' => '𑢽',
+  '𑣞' => '𑢾',
+  '𑣟' => '𑢿',
+  'ð–¹ ' => 'ð–¹€',
+  '𖹡' => '𖹁',
+  '𖹢' => '𖹂',
+  '𖹣' => '𖹃',
+  '𖹤' => '𖹄',
+  'ð–¹¥' => 'ð–¹…',
+  '𖹦' => '𖹆',
+  '𖹧' => '𖹇',
+  '𖹨' => '𖹈',
+  '𖹩' => '𖹉',
+  '𖹪' => '𖹊',
+  '𖹫' => '𖹋',
+  '𖹬' => '𖹌',
+  '𖹭' => '𖹍',
+  '𖹮' => '𖹎',
+  '𖹯' => '𖹏',
+  '𖹰' => '𖹐',
+  '𖹱' => '𖹑',
+  'ð–¹²' => 'ð–¹’',
+  '𖹳' => '𖹓',
+  'ð–¹´' => 'ð–¹”',
+  '𖹵' => '𖹕',
+  '𖹶' => '𖹖',
+  'ð–¹·' => 'ð–¹—',
+  '𖹸' => '𖹘',
+  'ð–¹¹' => 'ð–¹™',
+  '𖹺' => '𖹚',
+  'ð–¹»' => 'ð–¹›',
+  '𖹼' => '𖹜',
+  '𖹽' => '𖹝',
+  '𖹾' => '𖹞',
+  '𖹿' => '𖹟',
+  '𞤢' => '𞤀',
+  '𞤣' => '𞤁',
+  '𞤤' => '𞤂',
+  '𞤥' => '𞤃',
+  '𞤦' => '𞤄',
+  '𞤧' => '𞤅',
+  '𞤨' => '𞤆',
+  '𞤩' => '𞤇',
+  '𞤪' => '𞤈',
+  '𞤫' => '𞤉',
+  '𞤬' => '𞤊',
+  '𞤭' => '𞤋',
+  '𞤮' => '𞤌',
+  '𞤯' => '𞤍',
+  '𞤰' => '𞤎',
+  '𞤱' => '𞤏',
+  '𞤲' => '𞤐',
+  '𞤳' => '𞤑',
+  '𞤴' => '𞤒',
+  '𞤵' => '𞤓',
+  '𞤶' => '𞤔',
+  '𞤷' => '𞤕',
+  '𞤸' => '𞤖',
+  '𞤹' => '𞤗',
+  '𞤺' => '𞤘',
+  '𞤻' => '𞤙',
+  '𞤼' => '𞤚',
+  '𞤽' => '𞤛',
+  '𞤾' => '𞤜',
+  '𞤿' => '𞤝',
+  '𞥀' => '𞤞',
+  '𞥁' => '𞤟',
+  '𞥂' => '𞤠',
+  '𞥃' => '𞤡',
+  'ß' => 'SS',
+  'ff' => 'FF',
+  'fi' => 'FI',
+  'fl' => 'FL',
+  'ffi' => 'FFI',
+  'ffl' => 'FFL',
+  'ſt' => 'ST',
+  'st' => 'ST',
+  'Ö‡' => 'ÔµÕ’',
+  'ﬓ' => 'ՄՆ',
+  'ﬔ' => 'ՄԵ',
+  'ﬕ' => 'ՄԻ',
+  'ﬖ' => 'ՎՆ',
+  'ﬗ' => 'ՄԽ',
+  'ʼn' => 'ʼN',
+  'ΐ' => 'Ϊ́',
+  'ΰ' => 'Ϋ́',
+  'ǰ' => 'J̌',
+  'ẖ' => 'H̱',
+  'ẗ' => 'T̈',
+  'ẘ' => 'W̊',
+  'ẙ' => 'Y̊',
+  'ẚ' => 'Aʾ',
+  'ὐ' => 'Υ̓',
+  'ὒ' => 'Υ̓̀',
+  'ὔ' => 'Υ̓́',
+  'ὖ' => 'Υ̓͂',
+  'ᾶ' => 'Α͂',
+  'ῆ' => 'Η͂',
+  'ῒ' => 'Ϊ̀',
+  'ΐ' => 'Ϊ́',
+  'ῖ' => 'Ι͂',
+  'ῗ' => 'Ϊ͂',
+  'ῢ' => 'Ϋ̀',
+  'ΰ' => 'Ϋ́',
+  'ῤ' => 'Ρ̓',
+  'ῦ' => 'Υ͂',
+  'ῧ' => 'Ϋ͂',
+  'ῶ' => 'Ω͂',
+  'ᾈ' => 'ἈΙ',
+  'ᾉ' => 'ἉΙ',
+  'ᾊ' => 'ἊΙ',
+  'ᾋ' => 'ἋΙ',
+  'ᾌ' => 'ἌΙ',
+  'ᾍ' => 'ἍΙ',
+  'ᾎ' => 'ἎΙ',
+  'ᾏ' => 'ἏΙ',
+  'ᾘ' => 'ἨΙ',
+  'ᾙ' => 'ἩΙ',
+  'ᾚ' => 'ἪΙ',
+  'ᾛ' => 'ἫΙ',
+  'ᾜ' => 'ἬΙ',
+  'ᾝ' => 'ἭΙ',
+  'ᾞ' => 'ἮΙ',
+  'ᾟ' => 'ἯΙ',
+  'ᾨ' => 'ὨΙ',
+  'ᾩ' => 'ὩΙ',
+  'ᾪ' => 'ὪΙ',
+  'ᾫ' => 'ὫΙ',
+  'ᾬ' => 'ὬΙ',
+  'ᾭ' => 'ὭΙ',
+  'ᾮ' => 'ὮΙ',
+  'ᾯ' => 'ὯΙ',
+  'ᾼ' => 'ΑΙ',
+  'ῌ' => 'ΗΙ',
+  'ῼ' => 'ΩΙ',
+  'ᾲ' => 'ᾺΙ',
+  'ᾴ' => 'ΆΙ',
+  'ῂ' => 'ῊΙ',
+  'ῄ' => 'ΉΙ',
+  'ῲ' => 'ῺΙ',
+  'ῴ' => 'ΏΙ',
+  'ᾷ' => 'Α͂Ι',
+  'ῇ' => 'Η͂Ι',
+  'ῷ' => 'Ω͂Ι',
+);
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/bootstrap.php b/htdocs/vendor/symfony/polyfill-mbstring/bootstrap.php
new file mode 100644
index 00000000..1fedd1f7
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/bootstrap.php
@@ -0,0 +1,147 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+    return require __DIR__.'/bootstrap80.php';
+}
+
+if (!function_exists('mb_convert_encoding')) {
+    function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+    function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+    function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+    function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+    function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+    function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+    function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+    function mb_language($language = null) { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+    function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+    function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+    function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+    function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+    function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+    function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+    function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+    function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+    function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+    function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+    function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+    function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+    function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+    function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+    function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+    function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+    function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+    function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+    function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+    function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); }
+}
+if (!function_exists('mb_http_output')) {
+    function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+    function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+    function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+    function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); }
+}
+if (!function_exists('mb_http_input')) {
+    function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+    function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+    function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+    function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+    return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+    define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+    define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+    define('MB_CASE_TITLE', 2);
+}
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/bootstrap80.php b/htdocs/vendor/symfony/polyfill-mbstring/bootstrap80.php
new file mode 100644
index 00000000..82f5ac4d
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/bootstrap80.php
@@ -0,0 +1,143 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Mbstring as p;
+
+if (!function_exists('mb_convert_encoding')) {
+    function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); }
+}
+if (!function_exists('mb_decode_mimeheader')) {
+    function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); }
+}
+if (!function_exists('mb_encode_mimeheader')) {
+    function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); }
+}
+if (!function_exists('mb_decode_numericentity')) {
+    function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); }
+}
+if (!function_exists('mb_encode_numericentity')) {
+    function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); }
+}
+if (!function_exists('mb_convert_case')) {
+    function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); }
+}
+if (!function_exists('mb_internal_encoding')) {
+    function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); }
+}
+if (!function_exists('mb_language')) {
+    function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); }
+}
+if (!function_exists('mb_list_encodings')) {
+    function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); }
+}
+if (!function_exists('mb_encoding_aliases')) {
+    function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); }
+}
+if (!function_exists('mb_check_encoding')) {
+    function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); }
+}
+if (!function_exists('mb_detect_encoding')) {
+    function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); }
+}
+if (!function_exists('mb_detect_order')) {
+    function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); }
+}
+if (!function_exists('mb_parse_str')) {
+    function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; }
+}
+if (!function_exists('mb_strlen')) {
+    function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); }
+}
+if (!function_exists('mb_strpos')) {
+    function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strtolower')) {
+    function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); }
+}
+if (!function_exists('mb_strtoupper')) {
+    function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); }
+}
+if (!function_exists('mb_substitute_character')) {
+    function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); }
+}
+if (!function_exists('mb_substr')) {
+    function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); }
+}
+if (!function_exists('mb_stripos')) {
+    function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_stristr')) {
+    function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrchr')) {
+    function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strrichr')) {
+    function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_strripos')) {
+    function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strrpos')) {
+    function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); }
+}
+if (!function_exists('mb_strstr')) {
+    function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); }
+}
+if (!function_exists('mb_get_info')) {
+    function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); }
+}
+if (!function_exists('mb_http_output')) {
+    function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); }
+}
+if (!function_exists('mb_strwidth')) {
+    function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); }
+}
+if (!function_exists('mb_substr_count')) {
+    function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); }
+}
+if (!function_exists('mb_output_handler')) {
+    function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); }
+}
+if (!function_exists('mb_http_input')) {
+    function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); }
+}
+
+if (!function_exists('mb_convert_variables')) {
+    function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); }
+}
+
+if (!function_exists('mb_ord')) {
+    function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); }
+}
+if (!function_exists('mb_chr')) {
+    function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); }
+}
+if (!function_exists('mb_scrub')) {
+    function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); }
+}
+if (!function_exists('mb_str_split')) {
+    function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); }
+}
+
+if (extension_loaded('mbstring')) {
+    return;
+}
+
+if (!defined('MB_CASE_UPPER')) {
+    define('MB_CASE_UPPER', 0);
+}
+if (!defined('MB_CASE_LOWER')) {
+    define('MB_CASE_LOWER', 1);
+}
+if (!defined('MB_CASE_TITLE')) {
+    define('MB_CASE_TITLE', 2);
+}
diff --git a/htdocs/vendor/symfony/polyfill-mbstring/composer.json b/htdocs/vendor/symfony/polyfill-mbstring/composer.json
new file mode 100644
index 00000000..44895536
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-mbstring/composer.json
@@ -0,0 +1,41 @@
+{
+    "name": "symfony/polyfill-mbstring",
+    "type": "library",
+    "description": "Symfony polyfill for the Mbstring extension",
+    "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=7.1"
+    },
+    "provide": {
+        "ext-mbstring": "*"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
+        "files": [ "bootstrap.php" ]
+    },
+    "suggest": {
+        "ext-mbstring": "For best performance"
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-main": "1.27-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/LICENSE b/htdocs/vendor/symfony/polyfill-php80/LICENSE
new file mode 100644
index 00000000..5593b1d8
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2020 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/htdocs/vendor/symfony/polyfill-php80/Php80.php b/htdocs/vendor/symfony/polyfill-php80/Php80.php
new file mode 100644
index 00000000..362dd1a9
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Php80.php
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php80;
+
+/**
+ * @author Ion Bazan <ion.bazan@gmail.com>
+ * @author Nico Oelgart <nicoswd@gmail.com>
+ * @author Nicolas Grekas <p@tchwork.com>
+ *
+ * @internal
+ */
+final class Php80
+{
+    public static function fdiv(float $dividend, float $divisor): float
+    {
+        return @($dividend / $divisor);
+    }
+
+    public static function get_debug_type($value): string
+    {
+        switch (true) {
+            case null === $value: return 'null';
+            case \is_bool($value): return 'bool';
+            case \is_string($value): return 'string';
+            case \is_array($value): return 'array';
+            case \is_int($value): return 'int';
+            case \is_float($value): return 'float';
+            case \is_object($value): break;
+            case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class';
+            default:
+                if (null === $type = @get_resource_type($value)) {
+                    return 'unknown';
+                }
+
+                if ('Unknown' === $type) {
+                    $type = 'closed';
+                }
+
+                return "resource ($type)";
+        }
+
+        $class = \get_class($value);
+
+        if (false === strpos($class, '@')) {
+            return $class;
+        }
+
+        return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous';
+    }
+
+    public static function get_resource_id($res): int
+    {
+        if (!\is_resource($res) && null === @get_resource_type($res)) {
+            throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res)));
+        }
+
+        return (int) $res;
+    }
+
+    public static function preg_last_error_msg(): string
+    {
+        switch (preg_last_error()) {
+            case \PREG_INTERNAL_ERROR:
+                return 'Internal error';
+            case \PREG_BAD_UTF8_ERROR:
+                return 'Malformed UTF-8 characters, possibly incorrectly encoded';
+            case \PREG_BAD_UTF8_OFFSET_ERROR:
+                return 'The offset did not correspond to the beginning of a valid UTF-8 code point';
+            case \PREG_BACKTRACK_LIMIT_ERROR:
+                return 'Backtrack limit exhausted';
+            case \PREG_RECURSION_LIMIT_ERROR:
+                return 'Recursion limit exhausted';
+            case \PREG_JIT_STACKLIMIT_ERROR:
+                return 'JIT stack limit exhausted';
+            case \PREG_NO_ERROR:
+                return 'No error';
+            default:
+                return 'Unknown error';
+        }
+    }
+
+    public static function str_contains(string $haystack, string $needle): bool
+    {
+        return '' === $needle || false !== strpos($haystack, $needle);
+    }
+
+    public static function str_starts_with(string $haystack, string $needle): bool
+    {
+        return 0 === strncmp($haystack, $needle, \strlen($needle));
+    }
+
+    public static function str_ends_with(string $haystack, string $needle): bool
+    {
+        if ('' === $needle || $needle === $haystack) {
+            return true;
+        }
+
+        if ('' === $haystack) {
+            return false;
+        }
+
+        $needleLength = \strlen($needle);
+
+        return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength);
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/PhpToken.php b/htdocs/vendor/symfony/polyfill-php80/PhpToken.php
new file mode 100644
index 00000000..fe6e6910
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/PhpToken.php
@@ -0,0 +1,103 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php80;
+
+/**
+ * @author Fedonyuk Anton <info@ensostudio.ru>
+ *
+ * @internal
+ */
+class PhpToken implements \Stringable
+{
+    /**
+     * @var int
+     */
+    public $id;
+
+    /**
+     * @var string
+     */
+    public $text;
+
+    /**
+     * @var int
+     */
+    public $line;
+
+    /**
+     * @var int
+     */
+    public $pos;
+
+    public function __construct(int $id, string $text, int $line = -1, int $position = -1)
+    {
+        $this->id = $id;
+        $this->text = $text;
+        $this->line = $line;
+        $this->pos = $position;
+    }
+
+    public function getTokenName(): ?string
+    {
+        if ('UNKNOWN' === $name = token_name($this->id)) {
+            $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text;
+        }
+
+        return $name;
+    }
+
+    /**
+     * @param int|string|array $kind
+     */
+    public function is($kind): bool
+    {
+        foreach ((array) $kind as $value) {
+            if (\in_array($value, [$this->id, $this->text], true)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public function isIgnorable(): bool
+    {
+        return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true);
+    }
+
+    public function __toString(): string
+    {
+        return (string) $this->text;
+    }
+
+    /**
+     * @return static[]
+     */
+    public static function tokenize(string $code, int $flags = 0): array
+    {
+        $line = 1;
+        $position = 0;
+        $tokens = token_get_all($code, $flags);
+        foreach ($tokens as $index => $token) {
+            if (\is_string($token)) {
+                $id = \ord($token);
+                $text = $token;
+            } else {
+                [$id, $text, $line] = $token;
+            }
+            $tokens[$index] = new static($id, $text, $line, $position);
+            $position += \strlen($text);
+        }
+
+        return $tokens;
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/README.md b/htdocs/vendor/symfony/polyfill-php80/README.md
new file mode 100644
index 00000000..3816c559
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/README.md
@@ -0,0 +1,25 @@
+Symfony Polyfill / Php80
+========================
+
+This component provides features added to PHP 8.0 core:
+
+- [`Stringable`](https://php.net/stringable) interface
+- [`fdiv`](https://php.net/fdiv)
+- [`ValueError`](https://php.net/valueerror) class
+- [`UnhandledMatchError`](https://php.net/unhandledmatcherror) class
+- `FILTER_VALIDATE_BOOL` constant
+- [`get_debug_type`](https://php.net/get_debug_type)
+- [`PhpToken`](https://php.net/phptoken) class
+- [`preg_last_error_msg`](https://php.net/preg_last_error_msg)
+- [`str_contains`](https://php.net/str_contains)
+- [`str_starts_with`](https://php.net/str_starts_with)
+- [`str_ends_with`](https://php.net/str_ends_with)
+- [`get_resource_id`](https://php.net/get_resource_id)
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md).
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
new file mode 100644
index 00000000..2b955423
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+#[Attribute(Attribute::TARGET_CLASS)]
+final class Attribute
+{
+    public const TARGET_CLASS = 1;
+    public const TARGET_FUNCTION = 2;
+    public const TARGET_METHOD = 4;
+    public const TARGET_PROPERTY = 8;
+    public const TARGET_CLASS_CONSTANT = 16;
+    public const TARGET_PARAMETER = 32;
+    public const TARGET_ALL = 63;
+    public const IS_REPEATABLE = 64;
+
+    /** @var int */
+    public $flags;
+
+    public function __construct(int $flags = self::TARGET_ALL)
+    {
+        $this->flags = $flags;
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php
new file mode 100644
index 00000000..bd1212f6
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000 && extension_loaded('tokenizer')) {
+    class PhpToken extends Symfony\Polyfill\Php80\PhpToken
+    {
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
new file mode 100644
index 00000000..7c62d750
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+    interface Stringable
+    {
+        /**
+         * @return string
+         */
+        public function __toString();
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
new file mode 100644
index 00000000..01c6c6c8
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+    class UnhandledMatchError extends Error
+    {
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
new file mode 100644
index 00000000..783dbc28
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php
@@ -0,0 +1,16 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if (\PHP_VERSION_ID < 80000) {
+    class ValueError extends Error
+    {
+    }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/bootstrap.php b/htdocs/vendor/symfony/polyfill-php80/bootstrap.php
new file mode 100644
index 00000000..e5f7dbc1
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/bootstrap.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php80 as p;
+
+if (\PHP_VERSION_ID >= 80000) {
+    return;
+}
+
+if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) {
+    define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN);
+}
+
+if (!function_exists('fdiv')) {
+    function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); }
+}
+if (!function_exists('preg_last_error_msg')) {
+    function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); }
+}
+if (!function_exists('str_contains')) {
+    function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('str_starts_with')) {
+    function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('str_ends_with')) {
+    function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); }
+}
+if (!function_exists('get_debug_type')) {
+    function get_debug_type($value): string { return p\Php80::get_debug_type($value); }
+}
+if (!function_exists('get_resource_id')) {
+    function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); }
+}
diff --git a/htdocs/vendor/symfony/polyfill-php80/composer.json b/htdocs/vendor/symfony/polyfill-php80/composer.json
new file mode 100644
index 00000000..bd9a3262
--- /dev/null
+++ b/htdocs/vendor/symfony/polyfill-php80/composer.json
@@ -0,0 +1,40 @@
+{
+    "name": "symfony/polyfill-php80",
+    "type": "library",
+    "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+    "keywords": ["polyfill", "shim", "compatibility", "portable"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Ion Bazan",
+            "email": "ion.bazan@gmail.com"
+        },
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=7.1"
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Polyfill\\Php80\\": "" },
+        "files": [ "bootstrap.php" ],
+        "classmap": [ "Resources/stubs" ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-main": "1.27-dev"
+        },
+        "thanks": {
+            "name": "symfony/polyfill",
+            "url": "https://github.com/symfony/polyfill"
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/.gitignore b/htdocs/vendor/symfony/translation-contracts/.gitignore
new file mode 100644
index 00000000..c49a5d8d
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/htdocs/vendor/symfony/translation-contracts/CHANGELOG.md b/htdocs/vendor/symfony/translation-contracts/CHANGELOG.md
new file mode 100644
index 00000000..7932e261
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/CHANGELOG.md
@@ -0,0 +1,5 @@
+CHANGELOG
+=========
+
+The changelog is maintained for all Symfony contracts at the following URL:
+https://github.com/symfony/contracts/blob/main/CHANGELOG.md
diff --git a/htdocs/vendor/symfony/translation-contracts/LICENSE b/htdocs/vendor/symfony/translation-contracts/LICENSE
new file mode 100644
index 00000000..74cdc2db
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2022 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/htdocs/vendor/symfony/translation-contracts/LocaleAwareInterface.php b/htdocs/vendor/symfony/translation-contracts/LocaleAwareInterface.php
new file mode 100644
index 00000000..6923b977
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/LocaleAwareInterface.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Translation;
+
+interface LocaleAwareInterface
+{
+    /**
+     * Sets the current locale.
+     *
+     * @throws \InvalidArgumentException If the locale contains invalid characters
+     */
+    public function setLocale(string $locale);
+
+    /**
+     * Returns the current locale.
+     */
+    public function getLocale(): string;
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/README.md b/htdocs/vendor/symfony/translation-contracts/README.md
new file mode 100644
index 00000000..42e5c517
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/README.md
@@ -0,0 +1,9 @@
+Symfony Translation Contracts
+=============================
+
+A set of abstractions extracted out of the Symfony components.
+
+Can be used to build on semantics that the Symfony components proved useful - and
+that already have battle tested implementations.
+
+See https://github.com/symfony/contracts/blob/main/README.md for more information.
diff --git a/htdocs/vendor/symfony/translation-contracts/Test/TranslatorTest.php b/htdocs/vendor/symfony/translation-contracts/Test/TranslatorTest.php
new file mode 100644
index 00000000..4e5999df
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/Test/TranslatorTest.php
@@ -0,0 +1,384 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Translation\Test;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Contracts\Translation\TranslatorInterface;
+use Symfony\Contracts\Translation\TranslatorTrait;
+
+/**
+ * Test should cover all languages mentioned on http://translate.sourceforge.net/wiki/l10n/pluralforms
+ * and Plural forms mentioned on http://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms.
+ *
+ * See also https://developer.mozilla.org/en/Localization_and_Plurals which mentions 15 rules having a maximum of 6 forms.
+ * The mozilla code is also interesting to check for.
+ *
+ * As mentioned by chx http://drupal.org/node/1273968 we can cover all by testing number from 0 to 199
+ *
+ * The goal to cover all languages is to far fetched so this test case is smaller.
+ *
+ * @author Clemens Tolboom clemens@build2be.nl
+ */
+class TranslatorTest extends TestCase
+{
+    private $defaultLocale;
+
+    protected function setUp(): void
+    {
+        $this->defaultLocale = \Locale::getDefault();
+        \Locale::setDefault('en');
+    }
+
+    protected function tearDown(): void
+    {
+        \Locale::setDefault($this->defaultLocale);
+    }
+
+    public function getTranslator(): TranslatorInterface
+    {
+        return new class() implements TranslatorInterface {
+            use TranslatorTrait;
+        };
+    }
+
+    /**
+     * @dataProvider getTransTests
+     */
+    public function testTrans($expected, $id, $parameters)
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals($expected, $translator->trans($id, $parameters));
+    }
+
+    /**
+     * @dataProvider getTransChoiceTests
+     */
+    public function testTransChoiceWithExplicitLocale($expected, $id, $number)
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals($expected, $translator->trans($id, ['%count%' => $number]));
+    }
+
+    /**
+     * @requires extension intl
+     *
+     * @dataProvider getTransChoiceTests
+     */
+    public function testTransChoiceWithDefaultLocale($expected, $id, $number)
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals($expected, $translator->trans($id, ['%count%' => $number]));
+    }
+
+    /**
+     * @dataProvider getTransChoiceTests
+     */
+    public function testTransChoiceWithEnUsPosix($expected, $id, $number)
+    {
+        $translator = $this->getTranslator();
+        $translator->setLocale('en_US_POSIX');
+
+        $this->assertEquals($expected, $translator->trans($id, ['%count%' => $number]));
+    }
+
+    public function testGetSetLocale()
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals('en', $translator->getLocale());
+    }
+
+    /**
+     * @requires extension intl
+     */
+    public function testGetLocaleReturnsDefaultLocaleIfNotSet()
+    {
+        $translator = $this->getTranslator();
+
+        \Locale::setDefault('pt_BR');
+        $this->assertEquals('pt_BR', $translator->getLocale());
+
+        \Locale::setDefault('en');
+        $this->assertEquals('en', $translator->getLocale());
+    }
+
+    public function getTransTests()
+    {
+        return [
+            ['Symfony is great!', 'Symfony is great!', []],
+            ['Symfony is awesome!', 'Symfony is %what%!', ['%what%' => 'awesome']],
+        ];
+    }
+
+    public function getTransChoiceTests()
+    {
+        return [
+            ['There are no apples', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 0],
+            ['There is one apple', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 1],
+            ['There are 10 apples', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 10],
+            ['There are 0 apples', 'There is 1 apple|There are %count% apples', 0],
+            ['There is 1 apple', 'There is 1 apple|There are %count% apples', 1],
+            ['There are 10 apples', 'There is 1 apple|There are %count% apples', 10],
+            // custom validation messages may be coded with a fixed value
+            ['There are 2 apples', 'There are 2 apples', 2],
+        ];
+    }
+
+    /**
+     * @dataProvider getInternal
+     */
+    public function testInterval($expected, $number, $interval)
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals($expected, $translator->trans($interval.' foo|[1,Inf[ bar', ['%count%' => $number]));
+    }
+
+    public function getInternal()
+    {
+        return [
+            ['foo', 3, '{1,2, 3 ,4}'],
+            ['bar', 10, '{1,2, 3 ,4}'],
+            ['bar', 3, '[1,2]'],
+            ['foo', 1, '[1,2]'],
+            ['foo', 2, '[1,2]'],
+            ['bar', 1, ']1,2['],
+            ['bar', 2, ']1,2['],
+            ['foo', log(0), '[-Inf,2['],
+            ['foo', -log(0), '[-2,+Inf]'],
+        ];
+    }
+
+    /**
+     * @dataProvider getChooseTests
+     */
+    public function testChoose($expected, $id, $number, $locale = null)
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals($expected, $translator->trans($id, ['%count%' => $number], null, $locale));
+    }
+
+    public function testReturnMessageIfExactlyOneStandardRuleIsGiven()
+    {
+        $translator = $this->getTranslator();
+
+        $this->assertEquals('There are two apples', $translator->trans('There are two apples', ['%count%' => 2]));
+    }
+
+    /**
+     * @dataProvider getNonMatchingMessages
+     */
+    public function testThrowExceptionIfMatchingMessageCannotBeFound($id, $number)
+    {
+        $this->expectException(\InvalidArgumentException::class);
+        $translator = $this->getTranslator();
+
+        $translator->trans($id, ['%count%' => $number]);
+    }
+
+    public function getNonMatchingMessages()
+    {
+        return [
+            ['{0} There are no apples|{1} There is one apple', 2],
+            ['{1} There is one apple|]1,Inf] There are %count% apples', 0],
+            ['{1} There is one apple|]2,Inf] There are %count% apples', 2],
+            ['{0} There are no apples|There is one apple', 2],
+        ];
+    }
+
+    public function getChooseTests()
+    {
+        return [
+            ['There are no apples', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 0],
+            ['There are no apples', '{0}     There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 0],
+            ['There are no apples', '{0}There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 0],
+
+            ['There is one apple', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 1],
+
+            ['There are 10 apples', '{0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples', 10],
+            ['There are 10 apples', '{0} There are no apples|{1} There is one apple|]1,Inf]There are %count% apples', 10],
+            ['There are 10 apples', '{0} There are no apples|{1} There is one apple|]1,Inf]     There are %count% apples', 10],
+
+            ['There are 0 apples', 'There is one apple|There are %count% apples', 0],
+            ['There is one apple', 'There is one apple|There are %count% apples', 1],
+            ['There are 10 apples', 'There is one apple|There are %count% apples', 10],
+
+            ['There are 0 apples', 'one: There is one apple|more: There are %count% apples', 0],
+            ['There is one apple', 'one: There is one apple|more: There are %count% apples', 1],
+            ['There are 10 apples', 'one: There is one apple|more: There are %count% apples', 10],
+
+            ['There are no apples', '{0} There are no apples|one: There is one apple|more: There are %count% apples', 0],
+            ['There is one apple', '{0} There are no apples|one: There is one apple|more: There are %count% apples', 1],
+            ['There are 10 apples', '{0} There are no apples|one: There is one apple|more: There are %count% apples', 10],
+
+            ['', '{0}|{1} There is one apple|]1,Inf] There are %count% apples', 0],
+            ['', '{0} There are no apples|{1}|]1,Inf] There are %count% apples', 1],
+
+            // Indexed only tests which are Gettext PoFile* compatible strings.
+            ['There are 0 apples', 'There is one apple|There are %count% apples', 0],
+            ['There is one apple', 'There is one apple|There are %count% apples', 1],
+            ['There are 2 apples', 'There is one apple|There are %count% apples', 2],
+
+            // Tests for float numbers
+            ['There is almost one apple', '{0} There are no apples|]0,1[ There is almost one apple|{1} There is one apple|[1,Inf] There is more than one apple', 0.7],
+            ['There is one apple', '{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple', 1],
+            ['There is more than one apple', '{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple', 1.7],
+            ['There are no apples', '{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple', 0],
+            ['There are no apples', '{0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple', 0.0],
+            ['There are no apples', '{0.0} There are no apples|]0,1[There are %count% apples|{1} There is one apple|[1,Inf] There is more than one apple', 0],
+
+            // Test texts with new-lines
+            // with double-quotes and \n in id & double-quotes and actual newlines in text
+            ["This is a text with a\n            new-line in it. Selector = 0.", '{0}This is a text with a
+            new-line in it. Selector = 0.|{1}This is a text with a
+            new-line in it. Selector = 1.|[1,Inf]This is a text with a
+            new-line in it. Selector > 1.', 0],
+            // with double-quotes and \n in id and single-quotes and actual newlines in text
+            ["This is a text with a\n            new-line in it. Selector = 1.", '{0}This is a text with a
+            new-line in it. Selector = 0.|{1}This is a text with a
+            new-line in it. Selector = 1.|[1,Inf]This is a text with a
+            new-line in it. Selector > 1.', 1],
+            ["This is a text with a\n            new-line in it. Selector > 1.", '{0}This is a text with a
+            new-line in it. Selector = 0.|{1}This is a text with a
+            new-line in it. Selector = 1.|[1,Inf]This is a text with a
+            new-line in it. Selector > 1.', 5],
+            // with double-quotes and id split accros lines
+            ['This is a text with a
+            new-line in it. Selector = 1.', '{0}This is a text with a
+            new-line in it. Selector = 0.|{1}This is a text with a
+            new-line in it. Selector = 1.|[1,Inf]This is a text with a
+            new-line in it. Selector > 1.', 1],
+            // with single-quotes and id split accros lines
+            ['This is a text with a
+            new-line in it. Selector > 1.', '{0}This is a text with a
+            new-line in it. Selector = 0.|{1}This is a text with a
+            new-line in it. Selector = 1.|[1,Inf]This is a text with a
+            new-line in it. Selector > 1.', 5],
+            // with single-quotes and \n in text
+            ['This is a text with a\nnew-line in it. Selector = 0.', '{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1.', 0],
+            // with double-quotes and id split accros lines
+            ["This is a text with a\nnew-line in it. Selector = 1.", "{0}This is a text with a\nnew-line in it. Selector = 0.|{1}This is a text with a\nnew-line in it. Selector = 1.|[1,Inf]This is a text with a\nnew-line in it. Selector > 1.", 1],
+            // esacape pipe
+            ['This is a text with | in it. Selector = 0.', '{0}This is a text with || in it. Selector = 0.|{1}This is a text with || in it. Selector = 1.', 0],
+            // Empty plural set (2 plural forms) from a .PO file
+            ['', '|', 1],
+            // Empty plural set (3 plural forms) from a .PO file
+            ['', '||', 1],
+
+            // Floating values
+            ['1.5 liters', '%count% liter|%count% liters', 1.5],
+            ['1.5 litre', '%count% litre|%count% litres', 1.5, 'fr'],
+
+            // Negative values
+            ['-1 degree', '%count% degree|%count% degrees', -1],
+            ['-1 degré', '%count% degré|%count% degrés', -1],
+            ['-1.5 degrees', '%count% degree|%count% degrees', -1.5],
+            ['-1.5 degré', '%count% degré|%count% degrés', -1.5, 'fr'],
+            ['-2 degrees', '%count% degree|%count% degrees', -2],
+            ['-2 degrés', '%count% degré|%count% degrés', -2],
+        ];
+    }
+
+    /**
+     * @dataProvider failingLangcodes
+     */
+    public function testFailedLangcodes($nplural, $langCodes)
+    {
+        $matrix = $this->generateTestData($langCodes);
+        $this->validateMatrix($nplural, $matrix, false);
+    }
+
+    /**
+     * @dataProvider successLangcodes
+     */
+    public function testLangcodes($nplural, $langCodes)
+    {
+        $matrix = $this->generateTestData($langCodes);
+        $this->validateMatrix($nplural, $matrix);
+    }
+
+    /**
+     * This array should contain all currently known langcodes.
+     *
+     * As it is impossible to have this ever complete we should try as hard as possible to have it almost complete.
+     */
+    public function successLangcodes(): array
+    {
+        return [
+            ['1', ['ay', 'bo', 'cgg', 'dz', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky']],
+            ['2', ['nl', 'fr', 'en', 'de', 'de_GE', 'hy', 'hy_AM', 'en_US_POSIX']],
+            ['3', ['be', 'bs', 'cs', 'hr']],
+            ['4', ['cy', 'mt', 'sl']],
+            ['6', ['ar']],
+        ];
+    }
+
+    /**
+     * This array should be at least empty within the near future.
+     *
+     * This both depends on a complete list trying to add above as understanding
+     * the plural rules of the current failing languages.
+     *
+     * @return array with nplural together with langcodes
+     */
+    public function failingLangcodes(): array
+    {
+        return [
+            ['1', ['fa']],
+            ['2', ['jbo']],
+            ['3', ['cbs']],
+            ['4', ['gd', 'kw']],
+            ['5', ['ga']],
+        ];
+    }
+
+    /**
+     * We validate only on the plural coverage. Thus the real rules is not tested.
+     *
+     * @param string $nplural Plural expected
+     * @param array  $matrix  Containing langcodes and their plural index values
+     */
+    protected function validateMatrix(string $nplural, array $matrix, bool $expectSuccess = true)
+    {
+        foreach ($matrix as $langCode => $data) {
+            $indexes = array_flip($data);
+            if ($expectSuccess) {
+                $this->assertCount($nplural, $indexes, "Langcode '$langCode' has '$nplural' plural forms.");
+            } else {
+                $this->assertNotEquals((int) $nplural, \count($indexes), "Langcode '$langCode' has '$nplural' plural forms.");
+            }
+        }
+    }
+
+    protected function generateTestData($langCodes)
+    {
+        $translator = new class() {
+            use TranslatorTrait {
+                getPluralizationRule as public;
+            }
+        };
+
+        $matrix = [];
+        foreach ($langCodes as $langCode) {
+            for ($count = 0; $count < 200; ++$count) {
+                $plural = $translator->getPluralizationRule($count, $langCode);
+                $matrix[$langCode][$count] = $plural;
+            }
+        }
+
+        return $matrix;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/TranslatableInterface.php b/htdocs/vendor/symfony/translation-contracts/TranslatableInterface.php
new file mode 100644
index 00000000..47fd6fa0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/TranslatableInterface.php
@@ -0,0 +1,20 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Translation;
+
+/**
+ * @author Nicolas Grekas <p@tchwork.com>
+ */
+interface TranslatableInterface
+{
+    public function trans(TranslatorInterface $translator, string $locale = null): string;
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/TranslatorInterface.php b/htdocs/vendor/symfony/translation-contracts/TranslatorInterface.php
new file mode 100644
index 00000000..018db07e
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/TranslatorInterface.php
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Translation;
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface TranslatorInterface
+{
+    /**
+     * Translates the given message.
+     *
+     * When a number is provided as a parameter named "%count%", the message is parsed for plural
+     * forms and a translation is chosen according to this number using the following rules:
+     *
+     * Given a message with different plural translations separated by a
+     * pipe (|), this method returns the correct portion of the message based
+     * on the given number, locale and the pluralization rules in the message
+     * itself.
+     *
+     * The message supports two different types of pluralization rules:
+     *
+     * interval: {0} There are no apples|{1} There is one apple|]1,Inf] There are %count% apples
+     * indexed:  There is one apple|There are %count% apples
+     *
+     * The indexed solution can also contain labels (e.g. one: There is one apple).
+     * This is purely for making the translations more clear - it does not
+     * affect the functionality.
+     *
+     * The two methods can also be mixed:
+     *     {0} There are no apples|one: There is one apple|more: There are %count% apples
+     *
+     * An interval can represent a finite set of numbers:
+     *  {1,2,3,4}
+     *
+     * An interval can represent numbers between two numbers:
+     *  [1, +Inf]
+     *  ]-1,2[
+     *
+     * The left delimiter can be [ (inclusive) or ] (exclusive).
+     * The right delimiter can be [ (exclusive) or ] (inclusive).
+     * Beside numbers, you can use -Inf and +Inf for the infinite.
+     *
+     * @see https://en.wikipedia.org/wiki/ISO_31-11
+     *
+     * @param string      $id         The message id (may also be an object that can be cast to string)
+     * @param array       $parameters An array of parameters for the message
+     * @param string|null $domain     The domain for the message or null to use the default
+     * @param string|null $locale     The locale or null to use the default
+     *
+     * @throws \InvalidArgumentException If the locale contains invalid characters
+     */
+    public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string;
+
+    /**
+     * Returns the default locale.
+     */
+    public function getLocale(): string;
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/TranslatorTrait.php b/htdocs/vendor/symfony/translation-contracts/TranslatorTrait.php
new file mode 100644
index 00000000..99a639ce
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/TranslatorTrait.php
@@ -0,0 +1,231 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Translation;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+
+/**
+ * A trait to help implement TranslatorInterface and LocaleAwareInterface.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+trait TranslatorTrait
+{
+    private ?string $locale = null;
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setLocale(string $locale)
+    {
+        $this->locale = $locale;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocale(): string
+    {
+        return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en');
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
+    {
+        if (null === $id || '' === $id) {
+            return '';
+        }
+
+        if (!isset($parameters['%count%']) || !is_numeric($parameters['%count%'])) {
+            return strtr($id, $parameters);
+        }
+
+        $number = (float) $parameters['%count%'];
+        $locale = $locale ?: $this->getLocale();
+
+        $parts = [];
+        if (preg_match('/^\|++$/', $id)) {
+            $parts = explode('|', $id);
+        } elseif (preg_match_all('/(?:\|\||[^\|])++/', $id, $matches)) {
+            $parts = $matches[0];
+        }
+
+        $intervalRegexp = <<<'EOF'
+/^(?P<interval>
+    ({\s*
+        (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)
+    \s*})
+
+        |
+
+    (?P<left_delimiter>[\[\]])
+        \s*
+        (?P<left>-Inf|\-?\d+(\.\d+)?)
+        \s*,\s*
+        (?P<right>\+?Inf|\-?\d+(\.\d+)?)
+        \s*
+    (?P<right_delimiter>[\[\]])
+)\s*(?P<message>.*?)$/xs
+EOF;
+
+        $standardRules = [];
+        foreach ($parts as $part) {
+            $part = trim(str_replace('||', '|', $part));
+
+            // try to match an explicit rule, then fallback to the standard ones
+            if (preg_match($intervalRegexp, $part, $matches)) {
+                if ($matches[2]) {
+                    foreach (explode(',', $matches[3]) as $n) {
+                        if ($number == $n) {
+                            return strtr($matches['message'], $parameters);
+                        }
+                    }
+                } else {
+                    $leftNumber = '-Inf' === $matches['left'] ? -\INF : (float) $matches['left'];
+                    $rightNumber = is_numeric($matches['right']) ? (float) $matches['right'] : \INF;
+
+                    if (('[' === $matches['left_delimiter'] ? $number >= $leftNumber : $number > $leftNumber)
+                        && (']' === $matches['right_delimiter'] ? $number <= $rightNumber : $number < $rightNumber)
+                    ) {
+                        return strtr($matches['message'], $parameters);
+                    }
+                }
+            } elseif (preg_match('/^\w+\:\s*(.*?)$/', $part, $matches)) {
+                $standardRules[] = $matches[1];
+            } else {
+                $standardRules[] = $part;
+            }
+        }
+
+        $position = $this->getPluralizationRule($number, $locale);
+
+        if (!isset($standardRules[$position])) {
+            // when there's exactly one rule given, and that rule is a standard
+            // rule, use this rule
+            if (1 === \count($parts) && isset($standardRules[0])) {
+                return strtr($standardRules[0], $parameters);
+            }
+
+            $message = sprintf('Unable to choose a translation for "%s" with locale "%s" for value "%d". Double check that this translation has the correct plural options (e.g. "There is one apple|There are %%count%% apples").', $id, $locale, $number);
+
+            if (class_exists(InvalidArgumentException::class)) {
+                throw new InvalidArgumentException($message);
+            }
+
+            throw new \InvalidArgumentException($message);
+        }
+
+        return strtr($standardRules[$position], $parameters);
+    }
+
+    /**
+     * Returns the plural position to use for the given locale and number.
+     *
+     * The plural rules are derived from code of the Zend Framework (2010-09-25),
+     * which is subject to the new BSD license (http://framework.zend.com/license/new-bsd).
+     * Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+     */
+    private function getPluralizationRule(float $number, string $locale): int
+    {
+        $number = abs($number);
+
+        return match ('pt_BR' !== $locale && 'en_US_POSIX' !== $locale && \strlen($locale) > 3 ? substr($locale, 0, strrpos($locale, '_')) : $locale) {
+            'af',
+            'bn',
+            'bg',
+            'ca',
+            'da',
+            'de',
+            'el',
+            'en',
+            'en_US_POSIX',
+            'eo',
+            'es',
+            'et',
+            'eu',
+            'fa',
+            'fi',
+            'fo',
+            'fur',
+            'fy',
+            'gl',
+            'gu',
+            'ha',
+            'he',
+            'hu',
+            'is',
+            'it',
+            'ku',
+            'lb',
+            'ml',
+            'mn',
+            'mr',
+            'nah',
+            'nb',
+            'ne',
+            'nl',
+            'nn',
+            'no',
+            'oc',
+            'om',
+            'or',
+            'pa',
+            'pap',
+            'ps',
+            'pt',
+            'so',
+            'sq',
+            'sv',
+            'sw',
+            'ta',
+            'te',
+            'tk',
+            'ur',
+            'zu' => (1 == $number) ? 0 : 1,
+            'am',
+            'bh',
+            'fil',
+            'fr',
+            'gun',
+            'hi',
+            'hy',
+            'ln',
+            'mg',
+            'nso',
+            'pt_BR',
+            'ti',
+            'wa' => ($number < 2) ? 0 : 1,
+            'be',
+            'bs',
+            'hr',
+            'ru',
+            'sh',
+            'sr',
+            'uk' => ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2),
+            'cs',
+            'sk' => (1 == $number) ? 0 : ((($number >= 2) && ($number <= 4)) ? 1 : 2),
+            'ga' => (1 == $number) ? 0 : ((2 == $number) ? 1 : 2),
+            'lt' => ((1 == $number % 10) && (11 != $number % 100)) ? 0 : ((($number % 10 >= 2) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2),
+            'sl' => (1 == $number % 100) ? 0 : ((2 == $number % 100) ? 1 : (((3 == $number % 100) || (4 == $number % 100)) ? 2 : 3)),
+            'mk' => (1 == $number % 10) ? 0 : 1,
+            'mt' => (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 1) && ($number % 100 < 11))) ? 1 : ((($number % 100 > 10) && ($number % 100 < 20)) ? 2 : 3)),
+            'lv' => (0 == $number) ? 0 : (((1 == $number % 10) && (11 != $number % 100)) ? 1 : 2),
+            'pl' => (1 == $number) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 12) || ($number % 100 > 14))) ? 1 : 2),
+            'cy' => (1 == $number) ? 0 : ((2 == $number) ? 1 : (((8 == $number) || (11 == $number)) ? 2 : 3)),
+            'ro' => (1 == $number) ? 0 : (((0 == $number) || (($number % 100 > 0) && ($number % 100 < 20))) ? 1 : 2),
+            'ar' => (0 == $number) ? 0 : ((1 == $number) ? 1 : ((2 == $number) ? 2 : ((($number % 100 >= 3) && ($number % 100 <= 10)) ? 3 : ((($number % 100 >= 11) && ($number % 100 <= 99)) ? 4 : 5)))),
+            default => 0,
+        };
+    }
+}
diff --git a/htdocs/vendor/symfony/translation-contracts/composer.json b/htdocs/vendor/symfony/translation-contracts/composer.json
new file mode 100644
index 00000000..5240ed0f
--- /dev/null
+++ b/htdocs/vendor/symfony/translation-contracts/composer.json
@@ -0,0 +1,40 @@
+{
+    "name": "symfony/translation-contracts",
+    "type": "library",
+    "description": "Generic abstractions related to translation",
+    "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Nicolas Grekas",
+            "email": "p@tchwork.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=8.1"
+    },
+    "suggest": {
+        "symfony/translation-implementation": ""
+    },
+    "autoload": {
+        "psr-4": { "Symfony\\Contracts\\Translation\\": "" },
+        "exclude-from-classmap": [
+            "/Test/"
+        ]
+    },
+    "minimum-stability": "dev",
+    "extra": {
+        "branch-alias": {
+            "dev-main": "3.1-dev"
+        },
+        "thanks": {
+            "name": "symfony/contracts",
+            "url": "https://github.com/symfony/contracts"
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/CHANGELOG.md b/htdocs/vendor/symfony/translation/CHANGELOG.md
new file mode 100644
index 00000000..720298d8
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/CHANGELOG.md
@@ -0,0 +1,182 @@
+CHANGELOG
+=========
+
+6.1
+---
+
+ * Parameters implementing `TranslatableInterface` are processed
+ * Add the file extension to the `XliffFileDumper` constructor
+
+5.4
+---
+
+ * Add `github` format & autodetection to render errors as annotations when
+   running the XLIFF linter command in a Github Actions environment.
+ * Translation providers are not experimental anymore
+
+5.3
+---
+
+ * Add `translation:pull` and `translation:push` commands to manage translations with third-party providers
+ * Add `TranslatorBagInterface::getCatalogues` method
+ * Add support to load XLIFF string in `XliffFileLoader`
+
+5.2.0
+-----
+
+ * added support for calling `trans` with ICU formatted messages
+ * added `PseudoLocalizationTranslator`
+ * added `TranslatableMessage` objects that represent a message that can be translated
+ * added the `t()` function to easily create `TranslatableMessage` objects
+ * Added support for extracting messages from `TranslatableMessage` objects
+
+5.1.0
+-----
+
+ * added support for `name` attribute on `unit` element from xliff2 to be used as a translation key instead of always the `source` element
+
+5.0.0
+-----
+
+ * removed support for using `null` as the locale in `Translator`
+ * removed `TranslatorInterface`
+ * removed `MessageSelector`
+ * removed `ChoiceMessageFormatterInterface`
+ * removed `PluralizationRule`
+ * removed `Interval`
+ * removed `transChoice()` methods, use the trans() method instead with a %count% parameter
+ * removed `FileDumper::setBackup()` and `TranslationWriter::disableBackup()`
+ * removed `MessageFormatter::choiceFormat()`
+ * added argument `$filename` to `PhpExtractor::parseTokens()`
+ * removed support for implicit STDIN usage in the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit.
+
+4.4.0
+-----
+
+ * deprecated support for using `null` as the locale in `Translator`
+ * deprecated accepting STDIN implicitly when using the `lint:xliff` command, use `lint:xliff -` (append a dash) instead to make it explicit.
+ * Marked the `TranslationDataCollector` class as `@final`.
+
+4.3.0
+-----
+
+ * Improved Xliff 1.2 loader to load the original file's metadata
+ * Added `TranslatorPathsPass`
+
+4.2.0
+-----
+
+ * Started using ICU parent locales as fallback locales.
+ * allow using the ICU message format using domains with the "+intl-icu" suffix
+ * deprecated `Translator::transChoice()` in favor of using `Translator::trans()` with a `%count%` parameter
+ * deprecated `TranslatorInterface` in favor of `Symfony\Contracts\Translation\TranslatorInterface`
+ * deprecated `MessageSelector`, `Interval` and `PluralizationRules`; use `IdentityTranslator` instead
+ * Added `IntlFormatter` and `IntlFormatterInterface`
+ * added support for multiple files and directories in `XliffLintCommand`
+ * Marked `Translator::getFallbackLocales()` and `TranslationDataCollector::getFallbackLocales()` as internal
+
+4.1.0
+-----
+
+ * The `FileDumper::setBackup()` method is deprecated.
+ * The `TranslationWriter::disableBackup()` method is deprecated.
+ * The `XliffFileDumper` will write "name" on the "unit" node when dumping XLIFF 2.0.
+
+4.0.0
+-----
+
+ * removed the backup feature of the `FileDumper` class
+ * removed `TranslationWriter::writeTranslations()` method
+ * removed support for passing `MessageSelector` instances to the constructor of the `Translator` class
+
+3.4.0
+-----
+
+ * Added `TranslationDumperPass`
+ * Added `TranslationExtractorPass`
+ * Added `TranslatorPass`
+ * Added `TranslationReader` and `TranslationReaderInterface`
+ * Added `<notes>` section to the Xliff 2.0 dumper.
+ * Improved Xliff 2.0 loader to load `<notes>` section.
+ * Added `TranslationWriterInterface`
+ * Deprecated `TranslationWriter::writeTranslations` in favor of `TranslationWriter::write`
+ * added support for adding custom message formatter and decoupling the default one.
+ * Added `PhpExtractor`
+ * Added `PhpStringTokenParser`
+
+3.2.0
+-----
+
+ * Added support for escaping `|` in plural translations with double pipe.
+
+3.1.0
+-----
+
+ * Deprecated the backup feature of the file dumper classes.
+
+3.0.0
+-----
+
+ * removed `FileDumper::format()` method.
+ * Changed the visibility of the locale property in `Translator` from protected to private.
+
+2.8.0
+-----
+
+ * deprecated FileDumper::format(), overwrite FileDumper::formatCatalogue() instead.
+ * deprecated Translator::getMessages(), rely on TranslatorBagInterface::getCatalogue() instead.
+ * added `FileDumper::formatCatalogue` which allows format the catalogue without dumping it into file.
+ * added option `json_encoding` to JsonFileDumper
+ * added options `as_tree`, `inline` to YamlFileDumper
+ * added support for XLIFF 2.0.
+ * added support for XLIFF target and tool attributes.
+ * added message parameters to DataCollectorTranslator.
+ * [DEPRECATION] The `DiffOperation` class has been deprecated and
+   will be removed in Symfony 3.0, since its operation has nothing to do with 'diff',
+   so the class name is misleading. The `TargetOperation` class should be used for
+   this use-case instead.
+
+2.7.0
+-----
+
+ * added DataCollectorTranslator for collecting the translated messages.
+
+2.6.0
+-----
+
+ * added possibility to cache catalogues
+ * added TranslatorBagInterface
+ * added LoggingTranslator
+ * added Translator::getMessages() for retrieving the message catalogue as an array
+
+2.5.0
+-----
+
+ * added relative file path template to the file dumpers
+ * added optional backup to the file dumpers
+ * changed IcuResFileDumper to extend FileDumper
+
+2.3.0
+-----
+
+ * added classes to make operations on catalogues (like making a diff or a merge on 2 catalogues)
+ * added Translator::getFallbackLocales()
+ * deprecated Translator::setFallbackLocale() in favor of the new Translator::setFallbackLocales() method
+
+2.2.0
+-----
+
+ * QtTranslationsLoader class renamed to QtFileLoader. QtTranslationsLoader is deprecated and will be removed in 2.3.
+ * [BC BREAK] uniformized the exception thrown by the load() method when an error occurs. The load() method now
+   throws Symfony\Component\Translation\Exception\NotFoundResourceException when a resource cannot be found
+   and Symfony\Component\Translation\Exception\InvalidResourceException when a resource is invalid.
+ * changed the exception class thrown by some load() methods from \RuntimeException to \InvalidArgumentException
+   (IcuDatFileLoader, IcuResFileLoader and QtFileLoader)
+
+2.1.0
+-----
+
+ * added support for more than one fallback locale
+ * added support for extracting translation messages from templates (Twig and PHP)
+ * added dumpers for translation catalogs
+ * added support for QT, gettext, and ResourceBundles
diff --git a/htdocs/vendor/symfony/translation/Catalogue/AbstractOperation.php b/htdocs/vendor/symfony/translation/Catalogue/AbstractOperation.php
new file mode 100644
index 00000000..0691bf78
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Catalogue/AbstractOperation.php
@@ -0,0 +1,203 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Catalogue;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\LogicException;
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+/**
+ * Base catalogues binary operation class.
+ *
+ * A catalogue binary operation performs operation on
+ * source (the left argument) and target (the right argument) catalogues.
+ *
+ * @author Jean-François Simon <contact@jfsimon.fr>
+ */
+abstract class AbstractOperation implements OperationInterface
+{
+    public const OBSOLETE_BATCH = 'obsolete';
+    public const NEW_BATCH = 'new';
+    public const ALL_BATCH = 'all';
+
+    protected $source;
+    protected $target;
+    protected $result;
+
+    /**
+     * @var array|null The domains affected by this operation
+     */
+    private $domains;
+
+    /**
+     * This array stores 'all', 'new' and 'obsolete' messages for all valid domains.
+     *
+     * The data structure of this array is as follows:
+     *
+     *     [
+     *         'domain 1' => [
+     *             'all' => [...],
+     *             'new' => [...],
+     *             'obsolete' => [...]
+     *         ],
+     *         'domain 2' => [
+     *             'all' => [...],
+     *             'new' => [...],
+     *             'obsolete' => [...]
+     *         ],
+     *         ...
+     *     ]
+     *
+     * @var array The array that stores 'all', 'new' and 'obsolete' messages
+     */
+    protected $messages;
+
+    /**
+     * @throws LogicException
+     */
+    public function __construct(MessageCatalogueInterface $source, MessageCatalogueInterface $target)
+    {
+        if ($source->getLocale() !== $target->getLocale()) {
+            throw new LogicException('Operated catalogues must belong to the same locale.');
+        }
+
+        $this->source = $source;
+        $this->target = $target;
+        $this->result = new MessageCatalogue($source->getLocale());
+        $this->messages = [];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDomains(): array
+    {
+        if (null === $this->domains) {
+            $domains = [];
+            foreach ([$this->source, $this->target] as $catalogue) {
+                foreach ($catalogue->getDomains() as $domain) {
+                    $domains[$domain] = $domain;
+
+                    if ($catalogue->all($domainIcu = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX)) {
+                        $domains[$domainIcu] = $domainIcu;
+                    }
+                }
+            }
+
+            $this->domains = array_values($domains);
+        }
+
+        return $this->domains;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getMessages(string $domain): array
+    {
+        if (!\in_array($domain, $this->getDomains())) {
+            throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain));
+        }
+
+        if (!isset($this->messages[$domain][self::ALL_BATCH])) {
+            $this->processDomain($domain);
+        }
+
+        return $this->messages[$domain][self::ALL_BATCH];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getNewMessages(string $domain): array
+    {
+        if (!\in_array($domain, $this->getDomains())) {
+            throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain));
+        }
+
+        if (!isset($this->messages[$domain][self::NEW_BATCH])) {
+            $this->processDomain($domain);
+        }
+
+        return $this->messages[$domain][self::NEW_BATCH];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getObsoleteMessages(string $domain): array
+    {
+        if (!\in_array($domain, $this->getDomains())) {
+            throw new InvalidArgumentException(sprintf('Invalid domain: "%s".', $domain));
+        }
+
+        if (!isset($this->messages[$domain][self::OBSOLETE_BATCH])) {
+            $this->processDomain($domain);
+        }
+
+        return $this->messages[$domain][self::OBSOLETE_BATCH];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getResult(): MessageCatalogueInterface
+    {
+        foreach ($this->getDomains() as $domain) {
+            if (!isset($this->messages[$domain])) {
+                $this->processDomain($domain);
+            }
+        }
+
+        return $this->result;
+    }
+
+    /**
+     * @param self::*_BATCH $batch
+     */
+    public function moveMessagesToIntlDomainsIfPossible(string $batch = self::ALL_BATCH): void
+    {
+        // If MessageFormatter class does not exists, intl domains are not supported.
+        if (!class_exists(\MessageFormatter::class)) {
+            return;
+        }
+
+        foreach ($this->getDomains() as $domain) {
+            $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;
+            $messages = match ($batch) {
+                self::OBSOLETE_BATCH => $this->getObsoleteMessages($domain),
+                self::NEW_BATCH => $this->getNewMessages($domain),
+                self::ALL_BATCH => $this->getMessages($domain),
+                default => throw new \InvalidArgumentException(sprintf('$batch argument must be one of ["%s", "%s", "%s"].', self::ALL_BATCH, self::NEW_BATCH, self::OBSOLETE_BATCH)),
+            };
+
+            if (!$messages || (!$this->source->all($intlDomain) && $this->source->all($domain))) {
+                continue;
+            }
+
+            $result = $this->getResult();
+            $allIntlMessages = $result->all($intlDomain);
+            $currentMessages = array_diff_key($messages, $result->all($domain));
+            $result->replace($currentMessages, $domain);
+            $result->replace($allIntlMessages + $messages, $intlDomain);
+        }
+    }
+
+    /**
+     * Performs operation on source and target catalogues for the given domain and
+     * stores the results.
+     *
+     * @param string $domain The domain which the operation will be performed for
+     */
+    abstract protected function processDomain(string $domain);
+}
diff --git a/htdocs/vendor/symfony/translation/Catalogue/MergeOperation.php b/htdocs/vendor/symfony/translation/Catalogue/MergeOperation.php
new file mode 100644
index 00000000..7a67fdf7
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Catalogue/MergeOperation.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Catalogue;
+
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+/**
+ * Merge operation between two catalogues as follows:
+ * all = source ∪ target = {x: x ∈ source ∨ x ∈ target}
+ * new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
+ * obsolete = source ∖ all = {x: x ∈ source ∧ x ∉ source ∧ x ∉ target} = ∅
+ * Basically, the result contains messages from both catalogues.
+ *
+ * @author Jean-François Simon <contact@jfsimon.fr>
+ */
+class MergeOperation extends AbstractOperation
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected function processDomain(string $domain)
+    {
+        $this->messages[$domain] = [
+            'all' => [],
+            'new' => [],
+            'obsolete' => [],
+        ];
+        $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;
+
+        foreach ($this->target->getCatalogueMetadata('', $domain) ?? [] as $key => $value) {
+            if (null === $this->result->getCatalogueMetadata($key, $domain)) {
+                $this->result->setCatalogueMetadata($key, $value, $domain);
+            }
+        }
+
+        foreach ($this->target->getCatalogueMetadata('', $intlDomain) ?? [] as $key => $value) {
+            if (null === $this->result->getCatalogueMetadata($key, $intlDomain)) {
+                $this->result->setCatalogueMetadata($key, $value, $intlDomain);
+            }
+        }
+
+        foreach ($this->source->all($domain) as $id => $message) {
+            $this->messages[$domain]['all'][$id] = $message;
+            $d = $this->source->defines($id, $intlDomain) ? $intlDomain : $domain;
+            $this->result->add([$id => $message], $d);
+            if (null !== $keyMetadata = $this->source->getMetadata($id, $d)) {
+                $this->result->setMetadata($id, $keyMetadata, $d);
+            }
+        }
+
+        foreach ($this->target->all($domain) as $id => $message) {
+            if (!$this->source->has($id, $domain)) {
+                $this->messages[$domain]['all'][$id] = $message;
+                $this->messages[$domain]['new'][$id] = $message;
+                $d = $this->target->defines($id, $intlDomain) ? $intlDomain : $domain;
+                $this->result->add([$id => $message], $d);
+                if (null !== $keyMetadata = $this->target->getMetadata($id, $d)) {
+                    $this->result->setMetadata($id, $keyMetadata, $d);
+                }
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Catalogue/OperationInterface.php b/htdocs/vendor/symfony/translation/Catalogue/OperationInterface.php
new file mode 100644
index 00000000..1fe9534e
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Catalogue/OperationInterface.php
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Catalogue;
+
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+/**
+ * Represents an operation on catalogue(s).
+ *
+ * An instance of this interface performs an operation on one or more catalogues and
+ * stores intermediate and final results of the operation.
+ *
+ * The first catalogue in its argument(s) is called the 'source catalogue' or 'source' and
+ * the following results are stored:
+ *
+ * Messages: also called 'all', are valid messages for the given domain after the operation is performed.
+ *
+ * New Messages: also called 'new' (new = all ∖ source = {x: x ∈ all ∧ x ∉ source}).
+ *
+ * Obsolete Messages: also called 'obsolete' (obsolete = source ∖ all = {x: x ∈ source ∧ x ∉ all}).
+ *
+ * Result: also called 'result', is the resulting catalogue for the given domain that holds the same messages as 'all'.
+ *
+ * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com>
+ */
+interface OperationInterface
+{
+    /**
+     * Returns domains affected by operation.
+     */
+    public function getDomains(): array;
+
+    /**
+     * Returns all valid messages ('all') after operation.
+     */
+    public function getMessages(string $domain): array;
+
+    /**
+     * Returns new messages ('new') after operation.
+     */
+    public function getNewMessages(string $domain): array;
+
+    /**
+     * Returns obsolete messages ('obsolete') after operation.
+     */
+    public function getObsoleteMessages(string $domain): array;
+
+    /**
+     * Returns resulting catalogue ('result').
+     */
+    public function getResult(): MessageCatalogueInterface;
+}
diff --git a/htdocs/vendor/symfony/translation/Catalogue/TargetOperation.php b/htdocs/vendor/symfony/translation/Catalogue/TargetOperation.php
new file mode 100644
index 00000000..d42cfc34
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Catalogue/TargetOperation.php
@@ -0,0 +1,86 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Catalogue;
+
+use Symfony\Component\Translation\MessageCatalogueInterface;
+
+/**
+ * Target operation between two catalogues:
+ * intersection = source ∩ target = {x: x ∈ source ∧ x ∈ target}
+ * all = intersection ∪ (target ∖ intersection) = target
+ * new = all ∖ source = {x: x ∈ target ∧ x ∉ source}
+ * obsolete = source ∖ all = source ∖ target = {x: x ∈ source ∧ x ∉ target}
+ * Basically, the result contains messages from the target catalogue.
+ *
+ * @author Michael Lee <michael.lee@zerustech.com>
+ */
+class TargetOperation extends AbstractOperation
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected function processDomain(string $domain)
+    {
+        $this->messages[$domain] = [
+            'all' => [],
+            'new' => [],
+            'obsolete' => [],
+        ];
+        $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;
+
+        foreach ($this->target->getCatalogueMetadata('', $domain) ?? [] as $key => $value) {
+            if (null === $this->result->getCatalogueMetadata($key, $domain)) {
+                $this->result->setCatalogueMetadata($key, $value, $domain);
+            }
+        }
+
+        foreach ($this->target->getCatalogueMetadata('', $intlDomain) ?? [] as $key => $value) {
+            if (null === $this->result->getCatalogueMetadata($key, $intlDomain)) {
+                $this->result->setCatalogueMetadata($key, $value, $intlDomain);
+            }
+        }
+
+        // For 'all' messages, the code can't be simplified as ``$this->messages[$domain]['all'] = $target->all($domain);``,
+        // because doing so will drop messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
+        //
+        // For 'new' messages, the code can't be simplified as ``array_diff_assoc($this->target->all($domain), $this->source->all($domain));``
+        // because doing so will not exclude messages like {x: x ∈ target ∧ x ∉ source.all ∧ x ∈ source.fallback}
+        //
+        // For 'obsolete' messages, the code can't be simplified as ``array_diff_assoc($this->source->all($domain), $this->target->all($domain))``
+        // because doing so will not exclude messages like {x: x ∈ source ∧ x ∉ target.all ∧ x ∈ target.fallback}
+
+        foreach ($this->source->all($domain) as $id => $message) {
+            if ($this->target->has($id, $domain)) {
+                $this->messages[$domain]['all'][$id] = $message;
+                $d = $this->source->defines($id, $intlDomain) ? $intlDomain : $domain;
+                $this->result->add([$id => $message], $d);
+                if (null !== $keyMetadata = $this->source->getMetadata($id, $d)) {
+                    $this->result->setMetadata($id, $keyMetadata, $d);
+                }
+            } else {
+                $this->messages[$domain]['obsolete'][$id] = $message;
+            }
+        }
+
+        foreach ($this->target->all($domain) as $id => $message) {
+            if (!$this->source->has($id, $domain)) {
+                $this->messages[$domain]['all'][$id] = $message;
+                $this->messages[$domain]['new'][$id] = $message;
+                $d = $this->target->defines($id, $intlDomain) ? $intlDomain : $domain;
+                $this->result->add([$id => $message], $d);
+                if (null !== $keyMetadata = $this->target->getMetadata($id, $d)) {
+                    $this->result->setMetadata($id, $keyMetadata, $d);
+                }
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/CatalogueMetadataAwareInterface.php b/htdocs/vendor/symfony/translation/CatalogueMetadataAwareInterface.php
new file mode 100644
index 00000000..7e76857d
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/CatalogueMetadataAwareInterface.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+/**
+ * This interface is used to get, set, and delete metadata about the Catalogue.
+ *
+ * @author Hugo Alliaume <hugo@alliau.me>
+ */
+interface CatalogueMetadataAwareInterface
+{
+    /**
+     * Gets catalogue metadata for the given domain and key.
+     *
+     * Passing an empty domain will return an array with all catalogue metadata indexed by
+     * domain and then by key. Passing an empty key will return an array with all
+     * catalogue metadata for the given domain.
+     *
+     * @return mixed The value that was set or an array with the domains/keys or null
+     */
+    public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed;
+
+    /**
+     * Adds catalogue metadata to a message domain.
+     */
+    public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages');
+
+    /**
+     * Deletes catalogue metadata for the given key and domain.
+     *
+     * Passing an empty domain will delete all catalogue metadata. Passing an empty key will
+     * delete all metadata for the given domain.
+     */
+    public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages');
+}
diff --git a/htdocs/vendor/symfony/translation/Command/TranslationPullCommand.php b/htdocs/vendor/symfony/translation/Command/TranslationPullCommand.php
new file mode 100644
index 00000000..d37dceac
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Command/TranslationPullCommand.php
@@ -0,0 +1,187 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Command;
+
+use Symfony\Component\Console\Attribute\AsCommand;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Completion\CompletionInput;
+use Symfony\Component\Console\Completion\CompletionSuggestions;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Translation\Catalogue\TargetOperation;
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\Provider\TranslationProviderCollection;
+use Symfony\Component\Translation\Reader\TranslationReaderInterface;
+use Symfony\Component\Translation\Writer\TranslationWriterInterface;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+#[AsCommand(name: 'translation:pull', description: 'Pull translations from a given provider.')]
+final class TranslationPullCommand extends Command
+{
+    use TranslationTrait;
+
+    private TranslationProviderCollection $providerCollection;
+    private TranslationWriterInterface $writer;
+    private TranslationReaderInterface $reader;
+    private string $defaultLocale;
+    private array $transPaths;
+    private array $enabledLocales;
+
+    public function __construct(TranslationProviderCollection $providerCollection, TranslationWriterInterface $writer, TranslationReaderInterface $reader, string $defaultLocale, array $transPaths = [], array $enabledLocales = [])
+    {
+        $this->providerCollection = $providerCollection;
+        $this->writer = $writer;
+        $this->reader = $reader;
+        $this->defaultLocale = $defaultLocale;
+        $this->transPaths = $transPaths;
+        $this->enabledLocales = $enabledLocales;
+
+        parent::__construct();
+    }
+
+    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
+    {
+        if ($input->mustSuggestArgumentValuesFor('provider')) {
+            $suggestions->suggestValues($this->providerCollection->keys());
+
+            return;
+        }
+
+        if ($input->mustSuggestOptionValuesFor('domains')) {
+            $provider = $this->providerCollection->get($input->getArgument('provider'));
+
+            if ($provider && method_exists($provider, 'getDomains')) {
+                $domains = $provider->getDomains();
+                $suggestions->suggestValues($domains);
+            }
+
+            return;
+        }
+
+        if ($input->mustSuggestOptionValuesFor('locales')) {
+            $suggestions->suggestValues($this->enabledLocales);
+
+            return;
+        }
+
+        if ($input->mustSuggestOptionValuesFor('format')) {
+            $suggestions->suggestValues(['php', 'xlf', 'xlf12', 'xlf20', 'po', 'mo', 'yml', 'yaml', 'ts', 'csv', 'json', 'ini', 'res']);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $keys = $this->providerCollection->keys();
+        $defaultProvider = 1 === \count($keys) ? $keys[0] : null;
+
+        $this
+            ->setDefinition([
+                new InputArgument('provider', null !== $defaultProvider ? InputArgument::OPTIONAL : InputArgument::REQUIRED, 'The provider to pull translations from.', $defaultProvider),
+                new InputOption('force', null, InputOption::VALUE_NONE, 'Override existing translations with provider ones (it will delete not synchronized messages).'),
+                new InputOption('intl-icu', null, InputOption::VALUE_NONE, 'Associated to --force option, it will write messages in "%domain%+intl-icu.%locale%.xlf" files.'),
+                new InputOption('domains', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the domains to pull.'),
+                new InputOption('locales', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the locales to pull.'),
+                new InputOption('format', null, InputOption::VALUE_OPTIONAL, 'Override the default output format.', 'xlf12'),
+            ])
+            ->setHelp(<<<'EOF'
+The <info>%command.name%</> command pulls translations from the given provider. Only
+new translations are pulled, existing ones are not overwritten.
+
+You can overwrite existing translations (and remove the missing ones on local side) by using the <comment>--force</> flag:
+
+  <info>php %command.full_name% --force provider</>
+
+Full example:
+
+  <info>php %command.full_name% provider --force --domains=messages --domains=validators --locales=en</>
+
+This command pulls all translations associated with the <comment>messages</> and <comment>validators</> domains for the <comment>en</> locale.
+Local translations for the specified domains and locale are deleted if they're not present on the provider and overwritten if it's the case.
+Local translations for others domains and locales are ignored.
+EOF
+            )
+        ;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output): int
+    {
+        $io = new SymfonyStyle($input, $output);
+
+        $provider = $this->providerCollection->get($input->getArgument('provider'));
+        $force = $input->getOption('force');
+        $intlIcu = $input->getOption('intl-icu');
+        $locales = $input->getOption('locales') ?: $this->enabledLocales;
+        $domains = $input->getOption('domains');
+        $format = $input->getOption('format');
+        $xliffVersion = '1.2';
+
+        if ($intlIcu && !$force) {
+            $io->note('--intl-icu option only has an effect when used with --force. Here, it will be ignored.');
+        }
+
+        switch ($format) {
+            case 'xlf20': $xliffVersion = '2.0';
+                // no break
+            case 'xlf12': $format = 'xlf';
+        }
+
+        $writeOptions = [
+            'path' => end($this->transPaths),
+            'xliff_version' => $xliffVersion,
+            'default_locale' => $this->defaultLocale,
+        ];
+
+        if (!$domains) {
+            $domains = $provider->getDomains();
+        }
+
+        $providerTranslations = $provider->read($domains, $locales);
+
+        if ($force) {
+            foreach ($providerTranslations->getCatalogues() as $catalogue) {
+                $operation = new TargetOperation(new MessageCatalogue($catalogue->getLocale()), $catalogue);
+                if ($intlIcu) {
+                    $operation->moveMessagesToIntlDomainsIfPossible();
+                }
+                $this->writer->write($operation->getResult(), $format, $writeOptions);
+            }
+
+            $io->success(sprintf('Local translations has been updated from "%s" (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
+
+            return 0;
+        }
+
+        $localTranslations = $this->readLocalTranslations($locales, $domains, $this->transPaths);
+
+        // Append pulled translations to local ones.
+        $localTranslations->addBag($providerTranslations->diff($localTranslations));
+
+        foreach ($localTranslations->getCatalogues() as $catalogue) {
+            $this->writer->write($catalogue, $format, $writeOptions);
+        }
+
+        $io->success(sprintf('New translations from "%s" has been written locally (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
+
+        return 0;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Command/TranslationPushCommand.php b/htdocs/vendor/symfony/translation/Command/TranslationPushCommand.php
new file mode 100644
index 00000000..d36cc4b0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Command/TranslationPushCommand.php
@@ -0,0 +1,188 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Command;
+
+use Symfony\Component\Console\Attribute\AsCommand;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Completion\CompletionInput;
+use Symfony\Component\Console\Completion\CompletionSuggestions;
+use Symfony\Component\Console\Exception\InvalidArgumentException;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Translation\Provider\FilteringProvider;
+use Symfony\Component\Translation\Provider\TranslationProviderCollection;
+use Symfony\Component\Translation\Reader\TranslationReaderInterface;
+use Symfony\Component\Translation\TranslatorBag;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+#[AsCommand(name: 'translation:push', description: 'Push translations to a given provider.')]
+final class TranslationPushCommand extends Command
+{
+    use TranslationTrait;
+
+    private TranslationProviderCollection $providers;
+    private TranslationReaderInterface $reader;
+    private array $transPaths;
+    private array $enabledLocales;
+
+    public function __construct(TranslationProviderCollection $providers, TranslationReaderInterface $reader, array $transPaths = [], array $enabledLocales = [])
+    {
+        $this->providers = $providers;
+        $this->reader = $reader;
+        $this->transPaths = $transPaths;
+        $this->enabledLocales = $enabledLocales;
+
+        parent::__construct();
+    }
+
+    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
+    {
+        if ($input->mustSuggestArgumentValuesFor('provider')) {
+            $suggestions->suggestValues($this->providers->keys());
+
+            return;
+        }
+
+        if ($input->mustSuggestOptionValuesFor('domains')) {
+            $provider = $this->providers->get($input->getArgument('provider'));
+
+            if ($provider && method_exists($provider, 'getDomains')) {
+                $domains = $provider->getDomains();
+                $suggestions->suggestValues($domains);
+            }
+
+            return;
+        }
+
+        if ($input->mustSuggestOptionValuesFor('locales')) {
+            $suggestions->suggestValues($this->enabledLocales);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $keys = $this->providers->keys();
+        $defaultProvider = 1 === \count($keys) ? $keys[0] : null;
+
+        $this
+            ->setDefinition([
+                new InputArgument('provider', null !== $defaultProvider ? InputArgument::OPTIONAL : InputArgument::REQUIRED, 'The provider to push translations to.', $defaultProvider),
+                new InputOption('force', null, InputOption::VALUE_NONE, 'Override existing translations with local ones (it will delete not synchronized messages).'),
+                new InputOption('delete-missing', null, InputOption::VALUE_NONE, 'Delete translations available on provider but not locally.'),
+                new InputOption('domains', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the domains to push.'),
+                new InputOption('locales', null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Specify the locales to push.', $this->enabledLocales),
+            ])
+            ->setHelp(<<<'EOF'
+The <info>%command.name%</> command pushes translations to the given provider. Only new
+translations are pushed, existing ones are not overwritten.
+
+You can overwrite existing translations by using the <comment>--force</> flag:
+
+  <info>php %command.full_name% --force provider</>
+
+You can delete provider translations which are not present locally by using the <comment>--delete-missing</> flag:
+
+  <info>php %command.full_name% --delete-missing provider</>
+
+Full example:
+
+  <info>php %command.full_name% provider --force --delete-missing --domains=messages --domains=validators --locales=en</>
+
+This command pushes all translations associated with the <comment>messages</> and <comment>validators</> domains for the <comment>en</> locale.
+Provider translations for the specified domains and locale are deleted if they're not present locally and overwritten if it's the case.
+Provider translations for others domains and locales are ignored.
+EOF
+            )
+        ;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function execute(InputInterface $input, OutputInterface $output): int
+    {
+        $provider = $this->providers->get($input->getArgument('provider'));
+
+        if (!$this->enabledLocales) {
+            throw new InvalidArgumentException(sprintf('You must define "framework.translator.enabled_locales" or "framework.translator.providers.%s.locales" config key in order to work with translation providers.', parse_url($provider, \PHP_URL_SCHEME)));
+        }
+
+        $io = new SymfonyStyle($input, $output);
+        $domains = $input->getOption('domains');
+        $locales = $input->getOption('locales');
+        $force = $input->getOption('force');
+        $deleteMissing = $input->getOption('delete-missing');
+
+        if (!$domains && $provider instanceof FilteringProvider) {
+            $domains = $provider->getDomains();
+        }
+
+        // Reading local translations must be done after retrieving the domains from the provider
+        // in order to manage only translations from configured domains
+        $localTranslations = $this->readLocalTranslations($locales, $domains, $this->transPaths);
+
+        if (!$domains) {
+            $domains = $this->getDomainsFromTranslatorBag($localTranslations);
+        }
+
+        if (!$deleteMissing && $force) {
+            $provider->write($localTranslations);
+
+            $io->success(sprintf('All local translations has been sent to "%s" (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
+
+            return 0;
+        }
+
+        $providerTranslations = $provider->read($domains, $locales);
+
+        if ($deleteMissing) {
+            $provider->delete($providerTranslations->diff($localTranslations));
+
+            $io->success(sprintf('Missing translations on "%s" has been deleted (for "%s" locale(s), and "%s" domain(s)).', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
+
+            // Read provider translations again, after missing translations deletion,
+            // to avoid push freshly deleted translations.
+            $providerTranslations = $provider->read($domains, $locales);
+        }
+
+        $translationsToWrite = $localTranslations->diff($providerTranslations);
+
+        if ($force) {
+            $translationsToWrite->addBag($localTranslations->intersect($providerTranslations));
+        }
+
+        $provider->write($translationsToWrite);
+
+        $io->success(sprintf('%s local translations has been sent to "%s" (for "%s" locale(s), and "%s" domain(s)).', $force ? 'All' : 'New', parse_url($provider, \PHP_URL_SCHEME), implode(', ', $locales), implode(', ', $domains)));
+
+        return 0;
+    }
+
+    private function getDomainsFromTranslatorBag(TranslatorBag $translatorBag): array
+    {
+        $domains = [];
+
+        foreach ($translatorBag->getCatalogues() as $catalogue) {
+            $domains += $catalogue->getDomains();
+        }
+
+        return array_unique($domains);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Command/TranslationTrait.php b/htdocs/vendor/symfony/translation/Command/TranslationTrait.php
new file mode 100644
index 00000000..eafaffd3
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Command/TranslationTrait.php
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Command;
+
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\MessageCatalogueInterface;
+use Symfony\Component\Translation\TranslatorBag;
+
+/**
+ * @internal
+ */
+trait TranslationTrait
+{
+    private function readLocalTranslations(array $locales, array $domains, array $transPaths): TranslatorBag
+    {
+        $bag = new TranslatorBag();
+
+        foreach ($locales as $locale) {
+            $catalogue = new MessageCatalogue($locale);
+            foreach ($transPaths as $path) {
+                $this->reader->read($path, $catalogue);
+            }
+
+            if ($domains) {
+                foreach ($domains as $domain) {
+                    $bag->addCatalogue($this->filterCatalogue($catalogue, $domain));
+                }
+            } else {
+                $bag->addCatalogue($catalogue);
+            }
+        }
+
+        return $bag;
+    }
+
+    private function filterCatalogue(MessageCatalogue $catalogue, string $domain): MessageCatalogue
+    {
+        $filteredCatalogue = new MessageCatalogue($catalogue->getLocale());
+
+        // extract intl-icu messages only
+        $intlDomain = $domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;
+        if ($intlMessages = $catalogue->all($intlDomain)) {
+            $filteredCatalogue->add($intlMessages, $intlDomain);
+        }
+
+        // extract all messages and subtract intl-icu messages
+        if ($messages = array_diff($catalogue->all($domain), $intlMessages)) {
+            $filteredCatalogue->add($messages, $domain);
+        }
+        foreach ($catalogue->getResources() as $resource) {
+            $filteredCatalogue->addResource($resource);
+        }
+
+        if ($metadata = $catalogue->getMetadata('', $intlDomain)) {
+            foreach ($metadata as $k => $v) {
+                $filteredCatalogue->setMetadata($k, $v, $intlDomain);
+            }
+        }
+
+        if ($metadata = $catalogue->getMetadata('', $domain)) {
+            foreach ($metadata as $k => $v) {
+                $filteredCatalogue->setMetadata($k, $v, $domain);
+            }
+        }
+
+        return $filteredCatalogue;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Command/XliffLintCommand.php b/htdocs/vendor/symfony/translation/Command/XliffLintCommand.php
new file mode 100644
index 00000000..88057db4
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Command/XliffLintCommand.php
@@ -0,0 +1,278 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Command;
+
+use Symfony\Component\Console\Attribute\AsCommand;
+use Symfony\Component\Console\CI\GithubActionReporter;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Completion\CompletionInput;
+use Symfony\Component\Console\Completion\CompletionSuggestions;
+use Symfony\Component\Console\Exception\RuntimeException;
+use Symfony\Component\Console\Input\InputArgument;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;
+use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Util\XliffUtils;
+
+/**
+ * Validates XLIFF files syntax and outputs encountered errors.
+ *
+ * @author Grégoire Pineau <lyrixx@lyrixx.info>
+ * @author Robin Chalas <robin.chalas@gmail.com>
+ * @author Javier Eguiluz <javier.eguiluz@gmail.com>
+ */
+#[AsCommand(name: 'lint:xliff', description: 'Lint an XLIFF file and outputs encountered errors')]
+class XliffLintCommand extends Command
+{
+    private string $format;
+    private bool $displayCorrectFiles;
+    private ?\Closure $directoryIteratorProvider;
+    private ?\Closure $isReadableProvider;
+    private bool $requireStrictFileNames;
+
+    public function __construct(string $name = null, callable $directoryIteratorProvider = null, callable $isReadableProvider = null, bool $requireStrictFileNames = true)
+    {
+        parent::__construct($name);
+
+        $this->directoryIteratorProvider = null === $directoryIteratorProvider ? null : $directoryIteratorProvider(...);
+        $this->isReadableProvider = null === $isReadableProvider ? null : $isReadableProvider(...);
+        $this->requireStrictFileNames = $requireStrictFileNames;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function configure()
+    {
+        $this
+            ->addArgument('filename', InputArgument::IS_ARRAY, 'A file, a directory or "-" for reading from STDIN')
+            ->addOption('format', null, InputOption::VALUE_REQUIRED, 'The output format')
+            ->setHelp(<<<EOF
+The <info>%command.name%</info> command lints an XLIFF file and outputs to STDOUT
+the first encountered syntax error.
+
+You can validates XLIFF contents passed from STDIN:
+
+  <info>cat filename | php %command.full_name% -</info>
+
+You can also validate the syntax of a file:
+
+  <info>php %command.full_name% filename</info>
+
+Or of a whole directory:
+
+  <info>php %command.full_name% dirname</info>
+  <info>php %command.full_name% dirname --format=json</info>
+
+EOF
+            )
+        ;
+    }
+
+    protected function execute(InputInterface $input, OutputInterface $output): int
+    {
+        $io = new SymfonyStyle($input, $output);
+        $filenames = (array) $input->getArgument('filename');
+        $this->format = $input->getOption('format') ?? (GithubActionReporter::isGithubActionEnvironment() ? 'github' : 'txt');
+        $this->displayCorrectFiles = $output->isVerbose();
+
+        if (['-'] === $filenames) {
+            return $this->display($io, [$this->validate(file_get_contents('php://stdin'))]);
+        }
+
+        if (!$filenames) {
+            throw new RuntimeException('Please provide a filename or pipe file content to STDIN.');
+        }
+
+        $filesInfo = [];
+        foreach ($filenames as $filename) {
+            if (!$this->isReadable($filename)) {
+                throw new RuntimeException(sprintf('File or directory "%s" is not readable.', $filename));
+            }
+
+            foreach ($this->getFiles($filename) as $file) {
+                $filesInfo[] = $this->validate(file_get_contents($file), $file);
+            }
+        }
+
+        return $this->display($io, $filesInfo);
+    }
+
+    private function validate(string $content, string $file = null): array
+    {
+        $errors = [];
+
+        // Avoid: Warning DOMDocument::loadXML(): Empty string supplied as input
+        if ('' === trim($content)) {
+            return ['file' => $file, 'valid' => true];
+        }
+
+        $internal = libxml_use_internal_errors(true);
+
+        $document = new \DOMDocument();
+        $document->loadXML($content);
+
+        if (null !== $targetLanguage = $this->getTargetLanguageFromFile($document)) {
+            $normalizedLocalePattern = sprintf('(%s|%s)', preg_quote($targetLanguage, '/'), preg_quote(str_replace('-', '_', $targetLanguage), '/'));
+            // strict file names require translation files to be named '____.locale.xlf'
+            // otherwise, both '____.locale.xlf' and 'locale.____.xlf' are allowed
+            // also, the regexp matching must be case-insensitive, as defined for 'target-language' values
+            // http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html#target-language
+            $expectedFilenamePattern = $this->requireStrictFileNames ? sprintf('/^.*\.(?i:%s)\.(?:xlf|xliff)/', $normalizedLocalePattern) : sprintf('/^(?:.*\.(?i:%s)|(?i:%s)\..*)\.(?:xlf|xliff)/', $normalizedLocalePattern, $normalizedLocalePattern);
+
+            if (0 === preg_match($expectedFilenamePattern, basename($file))) {
+                $errors[] = [
+                    'line' => -1,
+                    'column' => -1,
+                    'message' => sprintf('There is a mismatch between the language included in the file name ("%s") and the "%s" value used in the "target-language" attribute of the file.', basename($file), $targetLanguage),
+                ];
+            }
+        }
+
+        foreach (XliffUtils::validateSchema($document) as $xmlError) {
+            $errors[] = [
+                'line' => $xmlError['line'],
+                'column' => $xmlError['column'],
+                'message' => $xmlError['message'],
+            ];
+        }
+
+        libxml_clear_errors();
+        libxml_use_internal_errors($internal);
+
+        return ['file' => $file, 'valid' => 0 === \count($errors), 'messages' => $errors];
+    }
+
+    private function display(SymfonyStyle $io, array $files)
+    {
+        return match ($this->format) {
+            'txt' => $this->displayTxt($io, $files),
+            'json' => $this->displayJson($io, $files),
+            'github' => $this->displayTxt($io, $files, true),
+            default => throw new InvalidArgumentException(sprintf('The format "%s" is not supported.', $this->format)),
+        };
+    }
+
+    private function displayTxt(SymfonyStyle $io, array $filesInfo, bool $errorAsGithubAnnotations = false)
+    {
+        $countFiles = \count($filesInfo);
+        $erroredFiles = 0;
+        $githubReporter = $errorAsGithubAnnotations ? new GithubActionReporter($io) : null;
+
+        foreach ($filesInfo as $info) {
+            if ($info['valid'] && $this->displayCorrectFiles) {
+                $io->comment('<info>OK</info>'.($info['file'] ? sprintf(' in %s', $info['file']) : ''));
+            } elseif (!$info['valid']) {
+                ++$erroredFiles;
+                $io->text('<error> ERROR </error>'.($info['file'] ? sprintf(' in %s', $info['file']) : ''));
+                $io->listing(array_map(function ($error) use ($info, $githubReporter) {
+                    // general document errors have a '-1' line number
+                    $line = -1 === $error['line'] ? null : $error['line'];
+
+                    $githubReporter?->error($error['message'], $info['file'], $line, null !== $line ? $error['column'] : null);
+
+                    return null === $line ? $error['message'] : sprintf('Line %d, Column %d: %s', $line, $error['column'], $error['message']);
+                }, $info['messages']));
+            }
+        }
+
+        if (0 === $erroredFiles) {
+            $io->success(sprintf('All %d XLIFF files contain valid syntax.', $countFiles));
+        } else {
+            $io->warning(sprintf('%d XLIFF files have valid syntax and %d contain errors.', $countFiles - $erroredFiles, $erroredFiles));
+        }
+
+        return min($erroredFiles, 1);
+    }
+
+    private function displayJson(SymfonyStyle $io, array $filesInfo)
+    {
+        $errors = 0;
+
+        array_walk($filesInfo, function (&$v) use (&$errors) {
+            $v['file'] = (string) $v['file'];
+            if (!$v['valid']) {
+                ++$errors;
+            }
+        });
+
+        $io->writeln(json_encode($filesInfo, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES));
+
+        return min($errors, 1);
+    }
+
+    private function getFiles(string $fileOrDirectory)
+    {
+        if (is_file($fileOrDirectory)) {
+            yield new \SplFileInfo($fileOrDirectory);
+
+            return;
+        }
+
+        foreach ($this->getDirectoryIterator($fileOrDirectory) as $file) {
+            if (!\in_array($file->getExtension(), ['xlf', 'xliff'])) {
+                continue;
+            }
+
+            yield $file;
+        }
+    }
+
+    private function getDirectoryIterator(string $directory)
+    {
+        $default = function ($directory) {
+            return new \RecursiveIteratorIterator(
+                new \RecursiveDirectoryIterator($directory, \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS),
+                \RecursiveIteratorIterator::LEAVES_ONLY
+            );
+        };
+
+        if (null !== $this->directoryIteratorProvider) {
+            return ($this->directoryIteratorProvider)($directory, $default);
+        }
+
+        return $default($directory);
+    }
+
+    private function isReadable(string $fileOrDirectory)
+    {
+        $default = function ($fileOrDirectory) {
+            return is_readable($fileOrDirectory);
+        };
+
+        if (null !== $this->isReadableProvider) {
+            return ($this->isReadableProvider)($fileOrDirectory, $default);
+        }
+
+        return $default($fileOrDirectory);
+    }
+
+    private function getTargetLanguageFromFile(\DOMDocument $xliffContents): ?string
+    {
+        foreach ($xliffContents->getElementsByTagName('file')[0]->attributes ?? [] as $attribute) {
+            if ('target-language' === $attribute->nodeName) {
+                return $attribute->nodeValue;
+            }
+        }
+
+        return null;
+    }
+
+    public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void
+    {
+        if ($input->mustSuggestOptionValuesFor('format')) {
+            $suggestions->suggestValues(['txt', 'json', 'github']);
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DataCollector/TranslationDataCollector.php b/htdocs/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
new file mode 100644
index 00000000..4244511e
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DataCollector/TranslationDataCollector.php
@@ -0,0 +1,160 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\DataCollector;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\DataCollector\DataCollector;
+use Symfony\Component\HttpKernel\DataCollector\LateDataCollectorInterface;
+use Symfony\Component\Translation\DataCollectorTranslator;
+use Symfony\Component\VarDumper\Cloner\Data;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ *
+ * @final
+ */
+class TranslationDataCollector extends DataCollector implements LateDataCollectorInterface
+{
+    private DataCollectorTranslator $translator;
+
+    public function __construct(DataCollectorTranslator $translator)
+    {
+        $this->translator = $translator;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function lateCollect()
+    {
+        $messages = $this->sanitizeCollectedMessages($this->translator->getCollectedMessages());
+
+        $this->data += $this->computeCount($messages);
+        $this->data['messages'] = $messages;
+
+        $this->data = $this->cloneVar($this->data);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function collect(Request $request, Response $response, \Throwable $exception = null)
+    {
+        $this->data['locale'] = $this->translator->getLocale();
+        $this->data['fallback_locales'] = $this->translator->getFallbackLocales();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function reset()
+    {
+        $this->data = [];
+    }
+
+    public function getMessages(): array|Data
+    {
+        return $this->data['messages'] ?? [];
+    }
+
+    public function getCountMissings(): int
+    {
+        return $this->data[DataCollectorTranslator::MESSAGE_MISSING] ?? 0;
+    }
+
+    public function getCountFallbacks(): int
+    {
+        return $this->data[DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK] ?? 0;
+    }
+
+    public function getCountDefines(): int
+    {
+        return $this->data[DataCollectorTranslator::MESSAGE_DEFINED] ?? 0;
+    }
+
+    public function getLocale()
+    {
+        return !empty($this->data['locale']) ? $this->data['locale'] : null;
+    }
+
+    /**
+     * @internal
+     */
+    public function getFallbackLocales()
+    {
+        return (isset($this->data['fallback_locales']) && \count($this->data['fallback_locales']) > 0) ? $this->data['fallback_locales'] : [];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getName(): string
+    {
+        return 'translation';
+    }
+
+    private function sanitizeCollectedMessages(array $messages)
+    {
+        $result = [];
+        foreach ($messages as $key => $message) {
+            $messageId = $message['locale'].$message['domain'].$message['id'];
+
+            if (!isset($result[$messageId])) {
+                $message['count'] = 1;
+                $message['parameters'] = !empty($message['parameters']) ? [$message['parameters']] : [];
+                $messages[$key]['translation'] = $this->sanitizeString($message['translation']);
+                $result[$messageId] = $message;
+            } else {
+                if (!empty($message['parameters'])) {
+                    $result[$messageId]['parameters'][] = $message['parameters'];
+                }
+
+                ++$result[$messageId]['count'];
+            }
+
+            unset($messages[$key]);
+        }
+
+        return $result;
+    }
+
+    private function computeCount(array $messages)
+    {
+        $count = [
+            DataCollectorTranslator::MESSAGE_DEFINED => 0,
+            DataCollectorTranslator::MESSAGE_MISSING => 0,
+            DataCollectorTranslator::MESSAGE_EQUALS_FALLBACK => 0,
+        ];
+
+        foreach ($messages as $message) {
+            ++$count[$message['state']];
+        }
+
+        return $count;
+    }
+
+    private function sanitizeString(string $string, int $length = 80)
+    {
+        $string = trim(preg_replace('/\s+/', ' ', $string));
+
+        if (false !== $encoding = mb_detect_encoding($string, null, true)) {
+            if (mb_strlen($string, $encoding) > $length) {
+                return mb_substr($string, 0, $length - 3, $encoding).'...';
+            }
+        } elseif (\strlen($string) > $length) {
+            return substr($string, 0, $length - 3).'...';
+        }
+
+        return $string;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DataCollectorTranslator.php b/htdocs/vendor/symfony/translation/DataCollectorTranslator.php
new file mode 100644
index 00000000..cab98746
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DataCollectorTranslator.php
@@ -0,0 +1,162 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\HttpKernel\CacheWarmer\WarmableInterface;
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class DataCollectorTranslator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface, WarmableInterface
+{
+    public const MESSAGE_DEFINED = 0;
+    public const MESSAGE_MISSING = 1;
+    public const MESSAGE_EQUALS_FALLBACK = 2;
+
+    private TranslatorInterface $translator;
+    private array $messages = [];
+
+    /**
+     * @param TranslatorInterface&TranslatorBagInterface&LocaleAwareInterface $translator
+     */
+    public function __construct(TranslatorInterface $translator)
+    {
+        if (!$translator instanceof TranslatorBagInterface || !$translator instanceof LocaleAwareInterface) {
+            throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', get_debug_type($translator)));
+        }
+
+        $this->translator = $translator;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
+    {
+        $trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale);
+        $this->collectMessage($locale, $domain, $id, $trans, $parameters);
+
+        return $trans;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setLocale(string $locale)
+    {
+        $this->translator->setLocale($locale);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocale(): string
+    {
+        return $this->translator->getLocale();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogue(string $locale = null): MessageCatalogueInterface
+    {
+        return $this->translator->getCatalogue($locale);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogues(): array
+    {
+        return $this->translator->getCatalogues();
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * @return string[]
+     */
+    public function warmUp(string $cacheDir): array
+    {
+        if ($this->translator instanceof WarmableInterface) {
+            return (array) $this->translator->warmUp($cacheDir);
+        }
+
+        return [];
+    }
+
+    /**
+     * Gets the fallback locales.
+     */
+    public function getFallbackLocales(): array
+    {
+        if ($this->translator instanceof Translator || method_exists($this->translator, 'getFallbackLocales')) {
+            return $this->translator->getFallbackLocales();
+        }
+
+        return [];
+    }
+
+    /**
+     * Passes through all unknown calls onto the translator object.
+     */
+    public function __call(string $method, array $args)
+    {
+        return $this->translator->{$method}(...$args);
+    }
+
+    public function getCollectedMessages(): array
+    {
+        return $this->messages;
+    }
+
+    private function collectMessage(?string $locale, ?string $domain, string $id, string $translation, ?array $parameters = [])
+    {
+        if (null === $domain) {
+            $domain = 'messages';
+        }
+
+        $catalogue = $this->translator->getCatalogue($locale);
+        $locale = $catalogue->getLocale();
+        $fallbackLocale = null;
+        if ($catalogue->defines($id, $domain)) {
+            $state = self::MESSAGE_DEFINED;
+        } elseif ($catalogue->has($id, $domain)) {
+            $state = self::MESSAGE_EQUALS_FALLBACK;
+
+            $fallbackCatalogue = $catalogue->getFallbackCatalogue();
+            while ($fallbackCatalogue) {
+                if ($fallbackCatalogue->defines($id, $domain)) {
+                    $fallbackLocale = $fallbackCatalogue->getLocale();
+                    break;
+                }
+                $fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue();
+            }
+        } else {
+            $state = self::MESSAGE_MISSING;
+        }
+
+        $this->messages[] = [
+            'locale' => $locale,
+            'fallbackLocale' => $fallbackLocale,
+            'domain' => $domain,
+            'id' => $id,
+            'translation' => $translation,
+            'parameters' => $parameters,
+            'state' => $state,
+            'transChoiceNumber' => isset($parameters['%count%']) && is_numeric($parameters['%count%']) ? $parameters['%count%'] : null,
+        ];
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php b/htdocs/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php
new file mode 100644
index 00000000..4020a078
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Adds tagged translation.formatter services to translation writer.
+ */
+class TranslationDumperPass implements CompilerPassInterface
+{
+    public function process(ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('translation.writer')) {
+            return;
+        }
+
+        $definition = $container->getDefinition('translation.writer');
+
+        foreach ($container->findTaggedServiceIds('translation.dumper', true) as $id => $attributes) {
+            $definition->addMethodCall('addDumper', [$attributes[0]['alias'], new Reference($id)]);
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php b/htdocs/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php
new file mode 100644
index 00000000..ee7c47ae
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Exception\RuntimeException;
+use Symfony\Component\DependencyInjection\Reference;
+
+/**
+ * Adds tagged translation.extractor services to translation extractor.
+ */
+class TranslationExtractorPass implements CompilerPassInterface
+{
+    public function process(ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('translation.extractor')) {
+            return;
+        }
+
+        $definition = $container->getDefinition('translation.extractor');
+
+        foreach ($container->findTaggedServiceIds('translation.extractor', true) as $id => $attributes) {
+            if (!isset($attributes[0]['alias'])) {
+                throw new RuntimeException(sprintf('The alias for the tag "translation.extractor" of service "%s" must be set.', $id));
+            }
+
+            $definition->addMethodCall('addExtractor', [$attributes[0]['alias'], new Reference($id)]);
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPass.php b/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPass.php
new file mode 100644
index 00000000..be79cdaf
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPass.php
@@ -0,0 +1,74 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
+use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Reference;
+
+class TranslatorPass implements CompilerPassInterface
+{
+    public function process(ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('translator.default')) {
+            return;
+        }
+
+        $loaders = [];
+        $loaderRefs = [];
+        foreach ($container->findTaggedServiceIds('translation.loader', true) as $id => $attributes) {
+            $loaderRefs[$id] = new Reference($id);
+            $loaders[$id][] = $attributes[0]['alias'];
+            if (isset($attributes[0]['legacy-alias'])) {
+                $loaders[$id][] = $attributes[0]['legacy-alias'];
+            }
+        }
+
+        if ($container->hasDefinition('translation.reader')) {
+            $definition = $container->getDefinition('translation.reader');
+            foreach ($loaders as $id => $formats) {
+                foreach ($formats as $format) {
+                    $definition->addMethodCall('addLoader', [$format, $loaderRefs[$id]]);
+                }
+            }
+        }
+
+        $container
+            ->findDefinition('translator.default')
+            ->replaceArgument(0, ServiceLocatorTagPass::register($container, $loaderRefs))
+            ->replaceArgument(3, $loaders)
+        ;
+
+        if (!$container->hasParameter('twig.default_path')) {
+            return;
+        }
+
+        $paths = array_keys($container->getDefinition('twig.template_iterator')->getArgument(1));
+        if ($container->hasDefinition('console.command.translation_debug')) {
+            $definition = $container->getDefinition('console.command.translation_debug');
+            $definition->replaceArgument(4, $container->getParameter('twig.default_path'));
+
+            if (\count($definition->getArguments()) > 6) {
+                $definition->replaceArgument(6, $paths);
+            }
+        }
+        if ($container->hasDefinition('console.command.translation_extract')) {
+            $definition = $container->getDefinition('console.command.translation_extract');
+            $definition->replaceArgument(5, $container->getParameter('twig.default_path'));
+
+            if (\count($definition->getArguments()) > 7) {
+                $definition->replaceArgument(7, $paths);
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php b/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php
new file mode 100644
index 00000000..b85c0662
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php
@@ -0,0 +1,147 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\DependencyInjection;
+
+use Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Definition;
+use Symfony\Component\DependencyInjection\Reference;
+use Symfony\Component\DependencyInjection\ServiceLocator;
+
+/**
+ * @author Yonel Ceruto <yonelceruto@gmail.com>
+ */
+class TranslatorPathsPass extends AbstractRecursivePass
+{
+    private int $level = 0;
+
+    /**
+     * @var array<string, bool>
+     */
+    private array $paths = [];
+
+    /**
+     * @var array<int, Definition>
+     */
+    private array $definitions = [];
+
+    /**
+     * @var array<string, array<string, bool>>
+     */
+    private array $controllers = [];
+
+    public function process(ContainerBuilder $container)
+    {
+        if (!$container->hasDefinition('translator')) {
+            return;
+        }
+
+        foreach ($this->findControllerArguments($container) as $controller => $argument) {
+            $id = substr($controller, 0, strpos($controller, ':') ?: \strlen($controller));
+            if ($container->hasDefinition($id)) {
+                [$locatorRef] = $argument->getValues();
+                $this->controllers[(string) $locatorRef][$container->getDefinition($id)->getClass()] = true;
+            }
+        }
+
+        try {
+            parent::process($container);
+
+            $paths = [];
+            foreach ($this->paths as $class => $_) {
+                if (($r = $container->getReflectionClass($class)) && !$r->isInterface()) {
+                    $paths[] = $r->getFileName();
+                    foreach ($r->getTraits() as $trait) {
+                        $paths[] = $trait->getFileName();
+                    }
+                }
+            }
+            if ($paths) {
+                if ($container->hasDefinition('console.command.translation_debug')) {
+                    $definition = $container->getDefinition('console.command.translation_debug');
+                    $definition->replaceArgument(6, array_merge($definition->getArgument(6), $paths));
+                }
+                if ($container->hasDefinition('console.command.translation_extract')) {
+                    $definition = $container->getDefinition('console.command.translation_extract');
+                    $definition->replaceArgument(7, array_merge($definition->getArgument(7), $paths));
+                }
+            }
+        } finally {
+            $this->level = 0;
+            $this->paths = [];
+            $this->definitions = [];
+        }
+    }
+
+    protected function processValue(mixed $value, bool $isRoot = false): mixed
+    {
+        if ($value instanceof Reference) {
+            if ('translator' === (string) $value) {
+                for ($i = $this->level - 1; $i >= 0; --$i) {
+                    $class = $this->definitions[$i]->getClass();
+
+                    if (ServiceLocator::class === $class) {
+                        if (!isset($this->controllers[$this->currentId])) {
+                            continue;
+                        }
+                        foreach ($this->controllers[$this->currentId] as $class => $_) {
+                            $this->paths[$class] = true;
+                        }
+                    } else {
+                        $this->paths[$class] = true;
+                    }
+
+                    break;
+                }
+            }
+
+            return $value;
+        }
+
+        if ($value instanceof Definition) {
+            $this->definitions[$this->level++] = $value;
+            $value = parent::processValue($value, $isRoot);
+            unset($this->definitions[--$this->level]);
+
+            return $value;
+        }
+
+        return parent::processValue($value, $isRoot);
+    }
+
+    private function findControllerArguments(ContainerBuilder $container): array
+    {
+        if ($container->hasDefinition('argument_resolver.service')) {
+            $argument = $container->getDefinition('argument_resolver.service')->getArgument(0);
+            if ($argument instanceof Reference) {
+                $argument = $container->getDefinition($argument);
+            }
+
+            return $argument->getArgument(0);
+        }
+
+        if ($container->hasDefinition('debug.'.'argument_resolver.service')) {
+            $argument = $container->getDefinition('debug.'.'argument_resolver.service')->getArgument(0);
+            if ($argument instanceof Reference) {
+                $argument = $container->getDefinition($argument);
+            }
+            $argument = $argument->getArgument(0);
+            if ($argument instanceof Reference) {
+                $argument = $container->getDefinition($argument);
+            }
+
+            return $argument->getArgument(0);
+        }
+
+        return [];
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/CsvFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/CsvFileDumper.php
new file mode 100644
index 00000000..0bd3f5e0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/CsvFileDumper.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * CsvFileDumper generates a csv formatted string representation of a message catalogue.
+ *
+ * @author Stealth35
+ */
+class CsvFileDumper extends FileDumper
+{
+    private string $delimiter = ';';
+    private string $enclosure = '"';
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $handle = fopen('php://memory', 'r+');
+
+        foreach ($messages->all($domain) as $source => $target) {
+            fputcsv($handle, [$source, $target], $this->delimiter, $this->enclosure);
+        }
+
+        rewind($handle);
+        $output = stream_get_contents($handle);
+        fclose($handle);
+
+        return $output;
+    }
+
+    /**
+     * Sets the delimiter and escape character for CSV.
+     */
+    public function setCsvControl(string $delimiter = ';', string $enclosure = '"')
+    {
+        $this->delimiter = $delimiter;
+        $this->enclosure = $enclosure;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'csv';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/DumperInterface.php b/htdocs/vendor/symfony/translation/Dumper/DumperInterface.php
new file mode 100644
index 00000000..7cdaef51
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/DumperInterface.php
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * DumperInterface is the interface implemented by all translation dumpers.
+ * There is no common option.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+interface DumperInterface
+{
+    /**
+     * Dumps the message catalogue.
+     *
+     * @param array $options Options that are used by the dumper
+     */
+    public function dump(MessageCatalogue $messages, array $options = []);
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/FileDumper.php b/htdocs/vendor/symfony/translation/Dumper/FileDumper.php
new file mode 100644
index 00000000..6bad4ff3
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/FileDumper.php
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\RuntimeException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * FileDumper is an implementation of DumperInterface that dump a message catalogue to file(s).
+ *
+ * Options:
+ * - path (mandatory): the directory where the files should be saved
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+abstract class FileDumper implements DumperInterface
+{
+    /**
+     * A template for the relative paths to files.
+     *
+     * @var string
+     */
+    protected $relativePathTemplate = '%domain%.%locale%.%extension%';
+
+    /**
+     * Sets the template for the relative paths to files.
+     *
+     * @param string $relativePathTemplate A template for the relative paths to files
+     */
+    public function setRelativePathTemplate(string $relativePathTemplate)
+    {
+        $this->relativePathTemplate = $relativePathTemplate;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function dump(MessageCatalogue $messages, array $options = [])
+    {
+        if (!\array_key_exists('path', $options)) {
+            throw new InvalidArgumentException('The file dumper needs a path option.');
+        }
+
+        // save a file for each domain
+        foreach ($messages->getDomains() as $domain) {
+            $fullpath = $options['path'].'/'.$this->getRelativePath($domain, $messages->getLocale());
+            if (!file_exists($fullpath)) {
+                $directory = \dirname($fullpath);
+                if (!file_exists($directory) && !@mkdir($directory, 0777, true)) {
+                    throw new RuntimeException(sprintf('Unable to create directory "%s".', $directory));
+                }
+            }
+
+            $intlDomain = $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX;
+            $intlMessages = $messages->all($intlDomain);
+
+            if ($intlMessages) {
+                $intlPath = $options['path'].'/'.$this->getRelativePath($intlDomain, $messages->getLocale());
+                file_put_contents($intlPath, $this->formatCatalogue($messages, $intlDomain, $options));
+
+                $messages->replace([], $intlDomain);
+
+                try {
+                    if ($messages->all($domain)) {
+                        file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options));
+                    }
+                    continue;
+                } finally {
+                    $messages->replace($intlMessages, $intlDomain);
+                }
+            }
+
+            file_put_contents($fullpath, $this->formatCatalogue($messages, $domain, $options));
+        }
+    }
+
+    /**
+     * Transforms a domain of a message catalogue to its string representation.
+     */
+    abstract public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string;
+
+    /**
+     * Gets the file extension of the dumper.
+     */
+    abstract protected function getExtension(): string;
+
+    /**
+     * Gets the relative file path using the template.
+     */
+    private function getRelativePath(string $domain, string $locale): string
+    {
+        return strtr($this->relativePathTemplate, [
+            '%domain%' => $domain,
+            '%locale%' => $locale,
+            '%extension%' => $this->getExtension(),
+        ]);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/IcuResFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/IcuResFileDumper.php
new file mode 100644
index 00000000..f13f86c8
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/IcuResFileDumper.php
@@ -0,0 +1,104 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * IcuResDumper generates an ICU ResourceBundle formatted string representation of a message catalogue.
+ *
+ * @author Stealth35
+ */
+class IcuResFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected $relativePathTemplate = '%domain%/%locale%.%extension%';
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $data = $indexes = $resources = '';
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $indexes .= pack('v', \strlen($data) + 28);
+            $data .= $source."\0";
+        }
+
+        $data .= $this->writePadding($data);
+
+        $keyTop = $this->getPosition($data);
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $resources .= pack('V', $this->getPosition($data));
+
+            $data .= pack('V', \strlen($target))
+                .mb_convert_encoding($target."\0", 'UTF-16LE', 'UTF-8')
+                .$this->writePadding($data)
+            ;
+        }
+
+        $resOffset = $this->getPosition($data);
+
+        $data .= pack('v', \count($messages->all($domain)))
+            .$indexes
+            .$this->writePadding($data)
+            .$resources
+        ;
+
+        $bundleTop = $this->getPosition($data);
+
+        $root = pack('V7',
+            $resOffset + (2 << 28), // Resource Offset + Resource Type
+            6,                      // Index length
+            $keyTop,                        // Index keys top
+            $bundleTop,                     // Index resources top
+            $bundleTop,                     // Index bundle top
+            \count($messages->all($domain)), // Index max table length
+            0                               // Index attributes
+        );
+
+        $header = pack('vC2v4C12@32',
+            32,                     // Header size
+            0xDA, 0x27,             // Magic number 1 and 2
+            20, 0, 0, 2,            // Rest of the header, ..., Size of a char
+            0x52, 0x65, 0x73, 0x42, // Data format identifier
+            1, 2, 0, 0,             // Data version
+            1, 4, 0, 0              // Unicode version
+        );
+
+        return $header.$root.$data;
+    }
+
+    private function writePadding(string $data): ?string
+    {
+        $padding = \strlen($data) % 4;
+
+        return $padding ? str_repeat("\xAA", 4 - $padding) : null;
+    }
+
+    private function getPosition(string $data)
+    {
+        return (\strlen($data) + 28) / 4;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'res';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/IniFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/IniFileDumper.php
new file mode 100644
index 00000000..75032be1
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/IniFileDumper.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * IniFileDumper generates an ini formatted string representation of a message catalogue.
+ *
+ * @author Stealth35
+ */
+class IniFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $output = '';
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $escapeTarget = str_replace('"', '\"', $target);
+            $output .= $source.'="'.$escapeTarget."\"\n";
+        }
+
+        return $output;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'ini';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/JsonFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/JsonFileDumper.php
new file mode 100644
index 00000000..11027303
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/JsonFileDumper.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * JsonFileDumper generates an json formatted string representation of a message catalogue.
+ *
+ * @author singles
+ */
+class JsonFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $flags = $options['json_encoding'] ?? \JSON_PRETTY_PRINT;
+
+        return json_encode($messages->all($domain), $flags);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'json';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/MoFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/MoFileDumper.php
new file mode 100644
index 00000000..c0880101
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/MoFileDumper.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\Loader\MoFileLoader;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * MoFileDumper generates a gettext formatted string representation of a message catalogue.
+ *
+ * @author Stealth35
+ */
+class MoFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $sources = $targets = $sourceOffsets = $targetOffsets = '';
+        $offsets = [];
+        $size = 0;
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $offsets[] = array_map('strlen', [$sources, $source, $targets, $target]);
+            $sources .= "\0".$source;
+            $targets .= "\0".$target;
+            ++$size;
+        }
+
+        $header = [
+            'magicNumber' => MoFileLoader::MO_LITTLE_ENDIAN_MAGIC,
+            'formatRevision' => 0,
+            'count' => $size,
+            'offsetId' => MoFileLoader::MO_HEADER_SIZE,
+            'offsetTranslated' => MoFileLoader::MO_HEADER_SIZE + (8 * $size),
+            'sizeHashes' => 0,
+            'offsetHashes' => MoFileLoader::MO_HEADER_SIZE + (16 * $size),
+        ];
+
+        $sourcesSize = \strlen($sources);
+        $sourcesStart = $header['offsetHashes'] + 1;
+
+        foreach ($offsets as $offset) {
+            $sourceOffsets .= $this->writeLong($offset[1])
+                          .$this->writeLong($offset[0] + $sourcesStart);
+            $targetOffsets .= $this->writeLong($offset[3])
+                          .$this->writeLong($offset[2] + $sourcesStart + $sourcesSize);
+        }
+
+        $output = implode('', array_map($this->writeLong(...), $header))
+               .$sourceOffsets
+               .$targetOffsets
+               .$sources
+               .$targets
+        ;
+
+        return $output;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'mo';
+    }
+
+    private function writeLong(mixed $str): string
+    {
+        return pack('V*', $str);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/PhpFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/PhpFileDumper.php
new file mode 100644
index 00000000..565d8937
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/PhpFileDumper.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * PhpFileDumper generates PHP files from a message catalogue.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class PhpFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        return "<?php\n\nreturn ".var_export($messages->all($domain), true).";\n";
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'php';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/PoFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/PoFileDumper.php
new file mode 100644
index 00000000..313e5045
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/PoFileDumper.php
@@ -0,0 +1,137 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * PoFileDumper generates a gettext formatted string representation of a message catalogue.
+ *
+ * @author Stealth35
+ */
+class PoFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $output = 'msgid ""'."\n";
+        $output .= 'msgstr ""'."\n";
+        $output .= '"Content-Type: text/plain; charset=UTF-8\n"'."\n";
+        $output .= '"Content-Transfer-Encoding: 8bit\n"'."\n";
+        $output .= '"Language: '.$messages->getLocale().'\n"'."\n";
+        $output .= "\n";
+
+        $newLine = false;
+        foreach ($messages->all($domain) as $source => $target) {
+            if ($newLine) {
+                $output .= "\n";
+            } else {
+                $newLine = true;
+            }
+            $metadata = $messages->getMetadata($source, $domain);
+
+            if (isset($metadata['comments'])) {
+                $output .= $this->formatComments($metadata['comments']);
+            }
+            if (isset($metadata['flags'])) {
+                $output .= $this->formatComments(implode(',', (array) $metadata['flags']), ',');
+            }
+            if (isset($metadata['sources'])) {
+                $output .= $this->formatComments(implode(' ', (array) $metadata['sources']), ':');
+            }
+
+            $sourceRules = $this->getStandardRules($source);
+            $targetRules = $this->getStandardRules($target);
+            if (2 == \count($sourceRules) && [] !== $targetRules) {
+                $output .= sprintf('msgid "%s"'."\n", $this->escape($sourceRules[0]));
+                $output .= sprintf('msgid_plural "%s"'."\n", $this->escape($sourceRules[1]));
+                foreach ($targetRules as $i => $targetRule) {
+                    $output .= sprintf('msgstr[%d] "%s"'."\n", $i, $this->escape($targetRule));
+                }
+            } else {
+                $output .= sprintf('msgid "%s"'."\n", $this->escape($source));
+                $output .= sprintf('msgstr "%s"'."\n", $this->escape($target));
+            }
+        }
+
+        return $output;
+    }
+
+    private function getStandardRules(string $id)
+    {
+        // Partly copied from TranslatorTrait::trans.
+        $parts = [];
+        if (preg_match('/^\|++$/', $id)) {
+            $parts = explode('|', $id);
+        } elseif (preg_match_all('/(?:\|\||[^\|])++/', $id, $matches)) {
+            $parts = $matches[0];
+        }
+
+        $intervalRegexp = <<<'EOF'
+/^(?P<interval>
+    ({\s*
+        (\-?\d+(\.\d+)?[\s*,\s*\-?\d+(\.\d+)?]*)
+    \s*})
+
+        |
+
+    (?P<left_delimiter>[\[\]])
+        \s*
+        (?P<left>-Inf|\-?\d+(\.\d+)?)
+        \s*,\s*
+        (?P<right>\+?Inf|\-?\d+(\.\d+)?)
+        \s*
+    (?P<right_delimiter>[\[\]])
+)\s*(?P<message>.*?)$/xs
+EOF;
+
+        $standardRules = [];
+        foreach ($parts as $part) {
+            $part = trim(str_replace('||', '|', $part));
+
+            if (preg_match($intervalRegexp, $part)) {
+                // Explicit rule is not a standard rule.
+                return [];
+            } else {
+                $standardRules[] = $part;
+            }
+        }
+
+        return $standardRules;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'po';
+    }
+
+    private function escape(string $str): string
+    {
+        return addcslashes($str, "\0..\37\42\134");
+    }
+
+    private function formatComments(string|array $comments, string $prefix = ''): ?string
+    {
+        $output = null;
+
+        foreach ((array) $comments as $comment) {
+            $output .= sprintf('#%s %s'."\n", $prefix, $comment);
+        }
+
+        return $output;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/QtFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/QtFileDumper.php
new file mode 100644
index 00000000..819409fc
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/QtFileDumper.php
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * QtFileDumper generates ts files from a message catalogue.
+ *
+ * @author Benjamin Eberlei <kontakt@beberlei.de>
+ */
+class QtFileDumper extends FileDumper
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $dom = new \DOMDocument('1.0', 'utf-8');
+        $dom->formatOutput = true;
+        $ts = $dom->appendChild($dom->createElement('TS'));
+        $context = $ts->appendChild($dom->createElement('context'));
+        $context->appendChild($dom->createElement('name', $domain));
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $message = $context->appendChild($dom->createElement('message'));
+            $metadata = $messages->getMetadata($source, $domain);
+            if (isset($metadata['sources'])) {
+                foreach ((array) $metadata['sources'] as $location) {
+                    $loc = explode(':', $location, 2);
+                    $location = $message->appendChild($dom->createElement('location'));
+                    $location->setAttribute('filename', $loc[0]);
+                    if (isset($loc[1])) {
+                        $location->setAttribute('line', $loc[1]);
+                    }
+                }
+            }
+            $message->appendChild($dom->createElement('source', $source));
+            $message->appendChild($dom->createElement('translation', $target));
+        }
+
+        return $dom->saveXML();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return 'ts';
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/XliffFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/XliffFileDumper.php
new file mode 100644
index 00000000..d03d8146
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/XliffFileDumper.php
@@ -0,0 +1,227 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * XliffFileDumper generates xliff files from a message catalogue.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class XliffFileDumper extends FileDumper
+{
+    public function __construct(
+        private string $extension = 'xlf',
+    ) {
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        $xliffVersion = '1.2';
+        if (\array_key_exists('xliff_version', $options)) {
+            $xliffVersion = $options['xliff_version'];
+        }
+
+        if (\array_key_exists('default_locale', $options)) {
+            $defaultLocale = $options['default_locale'];
+        } else {
+            $defaultLocale = \Locale::getDefault();
+        }
+
+        if ('1.2' === $xliffVersion) {
+            return $this->dumpXliff1($defaultLocale, $messages, $domain, $options);
+        }
+        if ('2.0' === $xliffVersion) {
+            return $this->dumpXliff2($defaultLocale, $messages, $domain);
+        }
+
+        throw new InvalidArgumentException(sprintf('No support implemented for dumping XLIFF version "%s".', $xliffVersion));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return $this->extension;
+    }
+
+    private function dumpXliff1(string $defaultLocale, MessageCatalogue $messages, ?string $domain, array $options = [])
+    {
+        $toolInfo = ['tool-id' => 'symfony', 'tool-name' => 'Symfony'];
+        if (\array_key_exists('tool_info', $options)) {
+            $toolInfo = array_merge($toolInfo, $options['tool_info']);
+        }
+
+        $dom = new \DOMDocument('1.0', 'utf-8');
+        $dom->formatOutput = true;
+
+        $xliff = $dom->appendChild($dom->createElement('xliff'));
+        $xliff->setAttribute('version', '1.2');
+        $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:1.2');
+
+        $xliffFile = $xliff->appendChild($dom->createElement('file'));
+        $xliffFile->setAttribute('source-language', str_replace('_', '-', $defaultLocale));
+        $xliffFile->setAttribute('target-language', str_replace('_', '-', $messages->getLocale()));
+        $xliffFile->setAttribute('datatype', 'plaintext');
+        $xliffFile->setAttribute('original', 'file.ext');
+
+        $xliffHead = $xliffFile->appendChild($dom->createElement('header'));
+        $xliffTool = $xliffHead->appendChild($dom->createElement('tool'));
+        foreach ($toolInfo as $id => $value) {
+            $xliffTool->setAttribute($id, $value);
+        }
+
+        if ($catalogueMetadata = $messages->getCatalogueMetadata('', $domain) ?? []) {
+            $xliffPropGroup = $xliffHead->appendChild($dom->createElement('prop-group'));
+            foreach ($catalogueMetadata as $key => $value) {
+                $xliffProp = $xliffPropGroup->appendChild($dom->createElement('prop'));
+                $xliffProp->setAttribute('prop-type', $key);
+                $xliffProp->appendChild($dom->createTextNode($value));
+            }
+        }
+
+        $xliffBody = $xliffFile->appendChild($dom->createElement('body'));
+        foreach ($messages->all($domain) as $source => $target) {
+            $translation = $dom->createElement('trans-unit');
+
+            $translation->setAttribute('id', strtr(substr(base64_encode(hash('sha256', $source, true)), 0, 7), '/+', '._'));
+            $translation->setAttribute('resname', $source);
+
+            $s = $translation->appendChild($dom->createElement('source'));
+            $s->appendChild($dom->createTextNode($source));
+
+            // Does the target contain characters requiring a CDATA section?
+            $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
+
+            $targetElement = $dom->createElement('target');
+            $metadata = $messages->getMetadata($source, $domain);
+            if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
+                foreach ($metadata['target-attributes'] as $name => $value) {
+                    $targetElement->setAttribute($name, $value);
+                }
+            }
+            $t = $translation->appendChild($targetElement);
+            $t->appendChild($text);
+
+            if ($this->hasMetadataArrayInfo('notes', $metadata)) {
+                foreach ($metadata['notes'] as $note) {
+                    if (!isset($note['content'])) {
+                        continue;
+                    }
+
+                    $n = $translation->appendChild($dom->createElement('note'));
+                    $n->appendChild($dom->createTextNode($note['content']));
+
+                    if (isset($note['priority'])) {
+                        $n->setAttribute('priority', $note['priority']);
+                    }
+
+                    if (isset($note['from'])) {
+                        $n->setAttribute('from', $note['from']);
+                    }
+                }
+            }
+
+            $xliffBody->appendChild($translation);
+        }
+
+        return $dom->saveXML();
+    }
+
+    private function dumpXliff2(string $defaultLocale, MessageCatalogue $messages, ?string $domain)
+    {
+        $dom = new \DOMDocument('1.0', 'utf-8');
+        $dom->formatOutput = true;
+
+        $xliff = $dom->appendChild($dom->createElement('xliff'));
+        $xliff->setAttribute('xmlns', 'urn:oasis:names:tc:xliff:document:2.0');
+        $xliff->setAttribute('version', '2.0');
+        $xliff->setAttribute('srcLang', str_replace('_', '-', $defaultLocale));
+        $xliff->setAttribute('trgLang', str_replace('_', '-', $messages->getLocale()));
+
+        $xliffFile = $xliff->appendChild($dom->createElement('file'));
+        if (str_ends_with($domain, MessageCatalogue::INTL_DOMAIN_SUFFIX)) {
+            $xliffFile->setAttribute('id', substr($domain, 0, -\strlen(MessageCatalogue::INTL_DOMAIN_SUFFIX)).'.'.$messages->getLocale());
+        } else {
+            $xliffFile->setAttribute('id', $domain.'.'.$messages->getLocale());
+        }
+
+        if ($catalogueMetadata = $messages->getCatalogueMetadata('', $domain) ?? []) {
+            $xliff->setAttribute('xmlns:m', 'urn:oasis:names:tc:xliff:metadata:2.0');
+            $xliffMetadata = $xliffFile->appendChild($dom->createElement('m:metadata'));
+            foreach ($catalogueMetadata as $key => $value) {
+                $xliffMeta = $xliffMetadata->appendChild($dom->createElement('prop'));
+                $xliffMeta->setAttribute('type', $key);
+                $xliffMeta->appendChild($dom->createTextNode($value));
+            }
+        }
+
+        foreach ($messages->all($domain) as $source => $target) {
+            $translation = $dom->createElement('unit');
+            $translation->setAttribute('id', strtr(substr(base64_encode(hash('sha256', $source, true)), 0, 7), '/+', '._'));
+
+            if (\strlen($source) <= 80) {
+                $translation->setAttribute('name', $source);
+            }
+
+            $metadata = $messages->getMetadata($source, $domain);
+
+            // Add notes section
+            if ($this->hasMetadataArrayInfo('notes', $metadata)) {
+                $notesElement = $dom->createElement('notes');
+                foreach ($metadata['notes'] as $note) {
+                    $n = $dom->createElement('note');
+                    $n->appendChild($dom->createTextNode($note['content'] ?? ''));
+                    unset($note['content']);
+
+                    foreach ($note as $name => $value) {
+                        $n->setAttribute($name, $value);
+                    }
+                    $notesElement->appendChild($n);
+                }
+                $translation->appendChild($notesElement);
+            }
+
+            $segment = $translation->appendChild($dom->createElement('segment'));
+
+            $s = $segment->appendChild($dom->createElement('source'));
+            $s->appendChild($dom->createTextNode($source));
+
+            // Does the target contain characters requiring a CDATA section?
+            $text = 1 === preg_match('/[&<>]/', $target) ? $dom->createCDATASection($target) : $dom->createTextNode($target);
+
+            $targetElement = $dom->createElement('target');
+            if ($this->hasMetadataArrayInfo('target-attributes', $metadata)) {
+                foreach ($metadata['target-attributes'] as $name => $value) {
+                    $targetElement->setAttribute($name, $value);
+                }
+            }
+            $t = $segment->appendChild($targetElement);
+            $t->appendChild($text);
+
+            $xliffFile->appendChild($translation);
+        }
+
+        return $dom->saveXML();
+    }
+
+    private function hasMetadataArrayInfo(string $key, array $metadata = null): bool
+    {
+        return is_iterable($metadata[$key] ?? null);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Dumper/YamlFileDumper.php b/htdocs/vendor/symfony/translation/Dumper/YamlFileDumper.php
new file mode 100644
index 00000000..d0cfbefa
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Dumper/YamlFileDumper.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Dumper;
+
+use Symfony\Component\Translation\Exception\LogicException;
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\Util\ArrayConverter;
+use Symfony\Component\Yaml\Yaml;
+
+/**
+ * YamlFileDumper generates yaml files from a message catalogue.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class YamlFileDumper extends FileDumper
+{
+    private string $extension;
+
+    public function __construct(string $extension = 'yml')
+    {
+        $this->extension = $extension;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatCatalogue(MessageCatalogue $messages, string $domain, array $options = []): string
+    {
+        if (!class_exists(Yaml::class)) {
+            throw new LogicException('Dumping translations in the YAML format requires the Symfony Yaml component.');
+        }
+
+        $data = $messages->all($domain);
+
+        if (isset($options['as_tree']) && $options['as_tree']) {
+            $data = ArrayConverter::expandToTree($data);
+        }
+
+        if (isset($options['inline']) && ($inline = (int) $options['inline']) > 0) {
+            return Yaml::dump($data, $inline);
+        }
+
+        return Yaml::dump($data);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function getExtension(): string
+    {
+        return $this->extension;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/ExceptionInterface.php b/htdocs/vendor/symfony/translation/Exception/ExceptionInterface.php
new file mode 100644
index 00000000..8f9c54ef
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/ExceptionInterface.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Exception interface for all exceptions thrown by the component.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface ExceptionInterface extends \Throwable
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/IncompleteDsnException.php b/htdocs/vendor/symfony/translation/Exception/IncompleteDsnException.php
new file mode 100644
index 00000000..cb0ce027
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/IncompleteDsnException.php
@@ -0,0 +1,24 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+class IncompleteDsnException extends InvalidArgumentException
+{
+    public function __construct(string $message, string $dsn = null, \Throwable $previous = null)
+    {
+        if ($dsn) {
+            $message = sprintf('Invalid "%s" provider DSN: ', $dsn).$message;
+        }
+
+        parent::__construct($message, 0, $previous);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/InvalidArgumentException.php b/htdocs/vendor/symfony/translation/Exception/InvalidArgumentException.php
new file mode 100644
index 00000000..90d06690
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/InvalidArgumentException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Base InvalidArgumentException for the Translation component.
+ *
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/InvalidResourceException.php b/htdocs/vendor/symfony/translation/Exception/InvalidResourceException.php
new file mode 100644
index 00000000..cf079432
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/InvalidResourceException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Thrown when a resource cannot be loaded.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class InvalidResourceException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/LogicException.php b/htdocs/vendor/symfony/translation/Exception/LogicException.php
new file mode 100644
index 00000000..9019c7e7
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/LogicException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Base LogicException for Translation component.
+ *
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class LogicException extends \LogicException implements ExceptionInterface
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/MissingRequiredOptionException.php b/htdocs/vendor/symfony/translation/Exception/MissingRequiredOptionException.php
new file mode 100644
index 00000000..2b5f8080
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/MissingRequiredOptionException.php
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * @author Oskar Stark <oskarstark@googlemail.com>
+ */
+class MissingRequiredOptionException extends IncompleteDsnException
+{
+    public function __construct(string $option, string $dsn = null, \Throwable $previous = null)
+    {
+        $message = sprintf('The option "%s" is required but missing.', $option);
+
+        parent::__construct($message, $dsn, $previous);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/NotFoundResourceException.php b/htdocs/vendor/symfony/translation/Exception/NotFoundResourceException.php
new file mode 100644
index 00000000..cff73ae3
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/NotFoundResourceException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Thrown when a resource does not exist.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class NotFoundResourceException extends \InvalidArgumentException implements ExceptionInterface
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/ProviderException.php b/htdocs/vendor/symfony/translation/Exception/ProviderException.php
new file mode 100644
index 00000000..65883f85
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/ProviderException.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+use Symfony\Contracts\HttpClient\ResponseInterface;
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class ProviderException extends RuntimeException implements ProviderExceptionInterface
+{
+    private ResponseInterface $response;
+    private string $debug;
+
+    public function __construct(string $message, ResponseInterface $response, int $code = 0, \Exception $previous = null)
+    {
+        $this->response = $response;
+        $this->debug = $response->getInfo('debug') ?? '';
+
+        parent::__construct($message, $code, $previous);
+    }
+
+    public function getResponse(): ResponseInterface
+    {
+        return $this->response;
+    }
+
+    public function getDebug(): string
+    {
+        return $this->debug;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/ProviderExceptionInterface.php b/htdocs/vendor/symfony/translation/Exception/ProviderExceptionInterface.php
new file mode 100644
index 00000000..922e8272
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/ProviderExceptionInterface.php
@@ -0,0 +1,23 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface ProviderExceptionInterface extends ExceptionInterface
+{
+    /*
+     * Returns debug info coming from the Symfony\Contracts\HttpClient\ResponseInterface
+     */
+    public function getDebug(): string;
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/RuntimeException.php b/htdocs/vendor/symfony/translation/Exception/RuntimeException.php
new file mode 100644
index 00000000..dcd79408
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/RuntimeException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+/**
+ * Base RuntimeException for the Translation component.
+ *
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class RuntimeException extends \RuntimeException implements ExceptionInterface
+{
+}
diff --git a/htdocs/vendor/symfony/translation/Exception/UnsupportedSchemeException.php b/htdocs/vendor/symfony/translation/Exception/UnsupportedSchemeException.php
new file mode 100644
index 00000000..7fbaa8f0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Exception/UnsupportedSchemeException.php
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Exception;
+
+use Symfony\Component\Translation\Bridge;
+use Symfony\Component\Translation\Provider\Dsn;
+
+class UnsupportedSchemeException extends LogicException
+{
+    private const SCHEME_TO_PACKAGE_MAP = [
+        'crowdin' => [
+            'class' => Bridge\Crowdin\CrowdinProviderFactory::class,
+            'package' => 'symfony/crowdin-translation-provider',
+        ],
+        'loco' => [
+            'class' => Bridge\Loco\LocoProviderFactory::class,
+            'package' => 'symfony/loco-translation-provider',
+        ],
+        'lokalise' => [
+            'class' => Bridge\Lokalise\LokaliseProviderFactory::class,
+            'package' => 'symfony/lokalise-translation-provider',
+        ],
+    ];
+
+    public function __construct(Dsn $dsn, string $name = null, array $supported = [])
+    {
+        $provider = $dsn->getScheme();
+        if (false !== $pos = strpos($provider, '+')) {
+            $provider = substr($provider, 0, $pos);
+        }
+        $package = self::SCHEME_TO_PACKAGE_MAP[$provider] ?? null;
+        if ($package && !class_exists($package['class'])) {
+            parent::__construct(sprintf('Unable to synchronize translations via "%s" as the provider is not installed; try running "composer require %s".', $provider, $package['package']));
+
+            return;
+        }
+
+        $message = sprintf('The "%s" scheme is not supported', $dsn->getScheme());
+        if ($name && $supported) {
+            $message .= sprintf('; supported schemes for translation provider "%s" are: "%s"', $name, implode('", "', $supported));
+        }
+
+        parent::__construct($message.'.');
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Extractor/AbstractFileExtractor.php b/htdocs/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
new file mode 100644
index 00000000..4c088b94
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Extractor/AbstractFileExtractor.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+
+/**
+ * Base class used by classes that extract translation messages from files.
+ *
+ * @author Marcos D. Sánchez <marcosdsanchez@gmail.com>
+ */
+abstract class AbstractFileExtractor
+{
+    protected function extractFiles(string|iterable $resource): iterable
+    {
+        if (is_iterable($resource)) {
+            $files = [];
+            foreach ($resource as $file) {
+                if ($this->canBeExtracted($file)) {
+                    $files[] = $this->toSplFileInfo($file);
+                }
+            }
+        } elseif (is_file($resource)) {
+            $files = $this->canBeExtracted($resource) ? [$this->toSplFileInfo($resource)] : [];
+        } else {
+            $files = $this->extractFromDirectory($resource);
+        }
+
+        return $files;
+    }
+
+    private function toSplFileInfo(string $file): \SplFileInfo
+    {
+        return new \SplFileInfo($file);
+    }
+
+    /**
+     * @throws InvalidArgumentException
+     */
+    protected function isFile(string $file): bool
+    {
+        if (!is_file($file)) {
+            throw new InvalidArgumentException(sprintf('The "%s" file does not exist.', $file));
+        }
+
+        return true;
+    }
+
+    /**
+     * @return bool
+     */
+    abstract protected function canBeExtracted(string $file);
+
+    /**
+     * @return iterable
+     */
+    abstract protected function extractFromDirectory(string|array $resource);
+}
diff --git a/htdocs/vendor/symfony/translation/Extractor/ChainExtractor.php b/htdocs/vendor/symfony/translation/Extractor/ChainExtractor.php
new file mode 100644
index 00000000..e58e82f0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Extractor/ChainExtractor.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * ChainExtractor extracts translation messages from template files.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class ChainExtractor implements ExtractorInterface
+{
+    /**
+     * The extractors.
+     *
+     * @var ExtractorInterface[]
+     */
+    private array $extractors = [];
+
+    /**
+     * Adds a loader to the translation extractor.
+     */
+    public function addExtractor(string $format, ExtractorInterface $extractor)
+    {
+        $this->extractors[$format] = $extractor;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setPrefix(string $prefix)
+    {
+        foreach ($this->extractors as $extractor) {
+            $extractor->setPrefix($prefix);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function extract(string|iterable $directory, MessageCatalogue $catalogue)
+    {
+        foreach ($this->extractors as $extractor) {
+            $extractor->extract($directory, $catalogue);
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Extractor/ExtractorInterface.php b/htdocs/vendor/symfony/translation/Extractor/ExtractorInterface.php
new file mode 100644
index 00000000..b76a7f20
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Extractor/ExtractorInterface.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * Extracts translation messages from a directory or files to the catalogue.
+ * New found messages are injected to the catalogue using the prefix.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+interface ExtractorInterface
+{
+    /**
+     * Extracts translation messages from files, a file or a directory to the catalogue.
+     *
+     * @param string|iterable<string> $resource Files, a file or a directory
+     */
+    public function extract(string|iterable $resource, MessageCatalogue $catalogue);
+
+    /**
+     * Sets the prefix that should be used for new found messages.
+     */
+    public function setPrefix(string $prefix);
+}
diff --git a/htdocs/vendor/symfony/translation/Extractor/PhpExtractor.php b/htdocs/vendor/symfony/translation/Extractor/PhpExtractor.php
new file mode 100644
index 00000000..1b86cc59
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Extractor/PhpExtractor.php
@@ -0,0 +1,330 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * PhpExtractor extracts translation messages from a PHP template.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class PhpExtractor extends AbstractFileExtractor implements ExtractorInterface
+{
+    public const MESSAGE_TOKEN = 300;
+    public const METHOD_ARGUMENTS_TOKEN = 1000;
+    public const DOMAIN_TOKEN = 1001;
+
+    /**
+     * Prefix for new found message.
+     */
+    private string $prefix = '';
+
+    /**
+     * The sequence that captures translation messages.
+     */
+    protected $sequences = [
+        [
+            '->',
+            'trans',
+            '(',
+            self::MESSAGE_TOKEN,
+            ',',
+            self::METHOD_ARGUMENTS_TOKEN,
+            ',',
+            self::DOMAIN_TOKEN,
+        ],
+        [
+            '->',
+            'trans',
+            '(',
+            self::MESSAGE_TOKEN,
+        ],
+        [
+            'new',
+            'TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+            ',',
+            self::METHOD_ARGUMENTS_TOKEN,
+            ',',
+            self::DOMAIN_TOKEN,
+        ],
+        [
+            'new',
+            'TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+        ],
+        [
+            'new',
+            '\\',
+            'Symfony',
+            '\\',
+            'Component',
+            '\\',
+            'Translation',
+            '\\',
+            'TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+            ',',
+            self::METHOD_ARGUMENTS_TOKEN,
+            ',',
+            self::DOMAIN_TOKEN,
+        ],
+        [
+            'new',
+            '\Symfony\Component\Translation\TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+            ',',
+            self::METHOD_ARGUMENTS_TOKEN,
+            ',',
+            self::DOMAIN_TOKEN,
+        ],
+        [
+            'new',
+            '\\',
+            'Symfony',
+            '\\',
+            'Component',
+            '\\',
+            'Translation',
+            '\\',
+            'TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+        ],
+        [
+            'new',
+            '\Symfony\Component\Translation\TranslatableMessage',
+            '(',
+            self::MESSAGE_TOKEN,
+        ],
+        [
+            't',
+            '(',
+            self::MESSAGE_TOKEN,
+            ',',
+            self::METHOD_ARGUMENTS_TOKEN,
+            ',',
+            self::DOMAIN_TOKEN,
+        ],
+        [
+            't',
+            '(',
+            self::MESSAGE_TOKEN,
+        ],
+    ];
+
+    /**
+     * {@inheritdoc}
+     */
+    public function extract(string|iterable $resource, MessageCatalogue $catalog)
+    {
+        $files = $this->extractFiles($resource);
+        foreach ($files as $file) {
+            $this->parseTokens(token_get_all(file_get_contents($file)), $catalog, $file);
+
+            gc_mem_caches();
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setPrefix(string $prefix)
+    {
+        $this->prefix = $prefix;
+    }
+
+    /**
+     * Normalizes a token.
+     */
+    protected function normalizeToken(mixed $token): ?string
+    {
+        if (isset($token[1]) && 'b"' !== $token) {
+            return $token[1];
+        }
+
+        return $token;
+    }
+
+    /**
+     * Seeks to a non-whitespace token.
+     */
+    private function seekToNextRelevantToken(\Iterator $tokenIterator)
+    {
+        for (; $tokenIterator->valid(); $tokenIterator->next()) {
+            $t = $tokenIterator->current();
+            if (\T_WHITESPACE !== $t[0]) {
+                break;
+            }
+        }
+    }
+
+    private function skipMethodArgument(\Iterator $tokenIterator)
+    {
+        $openBraces = 0;
+
+        for (; $tokenIterator->valid(); $tokenIterator->next()) {
+            $t = $tokenIterator->current();
+
+            if ('[' === $t[0] || '(' === $t[0]) {
+                ++$openBraces;
+            }
+
+            if (']' === $t[0] || ')' === $t[0]) {
+                --$openBraces;
+            }
+
+            if ((0 === $openBraces && ',' === $t[0]) || (-1 === $openBraces && ')' === $t[0])) {
+                break;
+            }
+        }
+    }
+
+    /**
+     * Extracts the message from the iterator while the tokens
+     * match allowed message tokens.
+     */
+    private function getValue(\Iterator $tokenIterator)
+    {
+        $message = '';
+        $docToken = '';
+        $docPart = '';
+
+        for (; $tokenIterator->valid(); $tokenIterator->next()) {
+            $t = $tokenIterator->current();
+            if ('.' === $t) {
+                // Concatenate with next token
+                continue;
+            }
+            if (!isset($t[1])) {
+                break;
+            }
+
+            switch ($t[0]) {
+                case \T_START_HEREDOC:
+                    $docToken = $t[1];
+                    break;
+                case \T_ENCAPSED_AND_WHITESPACE:
+                case \T_CONSTANT_ENCAPSED_STRING:
+                    if ('' === $docToken) {
+                        $message .= PhpStringTokenParser::parse($t[1]);
+                    } else {
+                        $docPart = $t[1];
+                    }
+                    break;
+                case \T_END_HEREDOC:
+                    if ($indentation = strspn($t[1], ' ')) {
+                        $docPartWithLineBreaks = $docPart;
+                        $docPart = '';
+
+                        foreach (preg_split('~(\r\n|\n|\r)~', $docPartWithLineBreaks, -1, \PREG_SPLIT_DELIM_CAPTURE) as $str) {
+                            if (\in_array($str, ["\r\n", "\n", "\r"], true)) {
+                                $docPart .= $str;
+                            } else {
+                                $docPart .= substr($str, $indentation);
+                            }
+                        }
+                    }
+
+                    $message .= PhpStringTokenParser::parseDocString($docToken, $docPart);
+                    $docToken = '';
+                    $docPart = '';
+                    break;
+                case \T_WHITESPACE:
+                    break;
+                default:
+                    break 2;
+            }
+        }
+
+        return $message;
+    }
+
+    /**
+     * Extracts trans message from PHP tokens.
+     */
+    protected function parseTokens(array $tokens, MessageCatalogue $catalog, string $filename)
+    {
+        $tokenIterator = new \ArrayIterator($tokens);
+
+        for ($key = 0; $key < $tokenIterator->count(); ++$key) {
+            foreach ($this->sequences as $sequence) {
+                $message = '';
+                $domain = 'messages';
+                $tokenIterator->seek($key);
+
+                foreach ($sequence as $sequenceKey => $item) {
+                    $this->seekToNextRelevantToken($tokenIterator);
+
+                    if ($this->normalizeToken($tokenIterator->current()) === $item) {
+                        $tokenIterator->next();
+                        continue;
+                    } elseif (self::MESSAGE_TOKEN === $item) {
+                        $message = $this->getValue($tokenIterator);
+
+                        if (\count($sequence) === ($sequenceKey + 1)) {
+                            break;
+                        }
+                    } elseif (self::METHOD_ARGUMENTS_TOKEN === $item) {
+                        $this->skipMethodArgument($tokenIterator);
+                    } elseif (self::DOMAIN_TOKEN === $item) {
+                        $domainToken = $this->getValue($tokenIterator);
+                        if ('' !== $domainToken) {
+                            $domain = $domainToken;
+                        }
+
+                        break;
+                    } else {
+                        break;
+                    }
+                }
+
+                if ($message) {
+                    $catalog->set($message, $this->prefix.$message, $domain);
+                    $metadata = $catalog->getMetadata($message, $domain) ?? [];
+                    $normalizedFilename = preg_replace('{[\\\\/]+}', '/', $filename);
+                    $metadata['sources'][] = $normalizedFilename.':'.$tokens[$key][2];
+                    $catalog->setMetadata($message, $metadata, $domain);
+                    break;
+                }
+            }
+        }
+    }
+
+    /**
+     * @throws \InvalidArgumentException
+     */
+    protected function canBeExtracted(string $file): bool
+    {
+        return $this->isFile($file) && 'php' === pathinfo($file, \PATHINFO_EXTENSION);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function extractFromDirectory(string|array $directory): iterable
+    {
+        if (!class_exists(Finder::class)) {
+            throw new \LogicException(sprintf('You cannot use "%s" as the "symfony/finder" package is not installed. Try running "composer require symfony/finder".', static::class));
+        }
+
+        $finder = new Finder();
+
+        return $finder->files()->name('*.php')->in($directory);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Extractor/PhpStringTokenParser.php b/htdocs/vendor/symfony/translation/Extractor/PhpStringTokenParser.php
new file mode 100644
index 00000000..7fbd37c6
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Extractor/PhpStringTokenParser.php
@@ -0,0 +1,136 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Extractor;
+
+/*
+ * The following is derived from code at http://github.com/nikic/PHP-Parser
+ *
+ * Copyright (c) 2011 by Nikita Popov
+ *
+ * Some rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *
+ *     * Redistributions in binary form must reproduce the above
+ *       copyright notice, this list of conditions and the following
+ *       disclaimer in the documentation and/or other materials provided
+ *       with the distribution.
+ *
+ *     * The names of the contributors may not be used to endorse or
+ *       promote products derived from this software without specific
+ *       prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+class PhpStringTokenParser
+{
+    protected static $replacements = [
+        '\\' => '\\',
+        '$' => '$',
+        'n' => "\n",
+        'r' => "\r",
+        't' => "\t",
+        'f' => "\f",
+        'v' => "\v",
+        'e' => "\x1B",
+    ];
+
+    /**
+     * Parses a string token.
+     *
+     * @param string $str String token content
+     */
+    public static function parse(string $str): string
+    {
+        $bLength = 0;
+        if ('b' === $str[0]) {
+            $bLength = 1;
+        }
+
+        if ('\'' === $str[$bLength]) {
+            return str_replace(
+                ['\\\\', '\\\''],
+                ['\\', '\''],
+                substr($str, $bLength + 1, -1)
+            );
+        } else {
+            return self::parseEscapeSequences(substr($str, $bLength + 1, -1), '"');
+        }
+    }
+
+    /**
+     * Parses escape sequences in strings (all string types apart from single quoted).
+     *
+     * @param string      $str   String without quotes
+     * @param string|null $quote Quote type
+     */
+    public static function parseEscapeSequences(string $str, string $quote = null): string
+    {
+        if (null !== $quote) {
+            $str = str_replace('\\'.$quote, $quote, $str);
+        }
+
+        return preg_replace_callback(
+            '~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3})~',
+            [__CLASS__, 'parseCallback'],
+            $str
+        );
+    }
+
+    private static function parseCallback(array $matches): string
+    {
+        $str = $matches[1];
+
+        if (isset(self::$replacements[$str])) {
+            return self::$replacements[$str];
+        } elseif ('x' === $str[0] || 'X' === $str[0]) {
+            return \chr(hexdec($str));
+        } else {
+            return \chr(octdec($str));
+        }
+    }
+
+    /**
+     * Parses a constant doc string.
+     *
+     * @param string $startToken Doc string start token content (<<<SMTHG)
+     * @param string $str        String token content
+     */
+    public static function parseDocString(string $startToken, string $str): string
+    {
+        // strip last newline (thanks tokenizer for sticking it into the string!)
+        $str = preg_replace('~(\r\n|\n|\r)$~', '', $str);
+
+        // nowdoc string
+        if (str_contains($startToken, '\'')) {
+            return $str;
+        }
+
+        return self::parseEscapeSequences($str, null);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Formatter/IntlFormatter.php b/htdocs/vendor/symfony/translation/Formatter/IntlFormatter.php
new file mode 100644
index 00000000..546c992a
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Formatter/IntlFormatter.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Formatter;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\LogicException;
+
+/**
+ * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class IntlFormatter implements IntlFormatterInterface
+{
+    private $hasMessageFormatter;
+    private $cache = [];
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatIntl(string $message, string $locale, array $parameters = []): string
+    {
+        // MessageFormatter constructor throws an exception if the message is empty
+        if ('' === $message) {
+            return '';
+        }
+
+        if (!$formatter = $this->cache[$locale][$message] ?? null) {
+            if (!$this->hasMessageFormatter ??= class_exists(\MessageFormatter::class)) {
+                throw new LogicException('Cannot parse message translation: please install the "intl" PHP extension or the "symfony/polyfill-intl-messageformatter" package.');
+            }
+            try {
+                $this->cache[$locale][$message] = $formatter = new \MessageFormatter($locale, $message);
+            } catch (\IntlException $e) {
+                throw new InvalidArgumentException(sprintf('Invalid message format (error #%d): ', intl_get_error_code()).intl_get_error_message(), 0, $e);
+            }
+        }
+
+        foreach ($parameters as $key => $value) {
+            if (\in_array($key[0] ?? null, ['%', '{'], true)) {
+                unset($parameters[$key]);
+                $parameters[trim($key, '%{ }')] = $value;
+            }
+        }
+
+        if (false === $message = $formatter->format($parameters)) {
+            throw new InvalidArgumentException(sprintf('Unable to format message (error #%s): ', $formatter->getErrorCode()).$formatter->getErrorMessage());
+        }
+
+        return $message;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Formatter/IntlFormatterInterface.php b/htdocs/vendor/symfony/translation/Formatter/IntlFormatterInterface.php
new file mode 100644
index 00000000..02fc6acb
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Formatter/IntlFormatterInterface.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Formatter;
+
+/**
+ * Formats ICU message patterns.
+ *
+ * @author Nicolas Grekas <p@tchwork.com>
+ */
+interface IntlFormatterInterface
+{
+    /**
+     * Formats a localized message using rules defined by ICU MessageFormat.
+     *
+     * @see http://icu-project.org/apiref/icu4c/classMessageFormat.html#details
+     */
+    public function formatIntl(string $message, string $locale, array $parameters = []): string;
+}
diff --git a/htdocs/vendor/symfony/translation/Formatter/MessageFormatter.php b/htdocs/vendor/symfony/translation/Formatter/MessageFormatter.php
new file mode 100644
index 00000000..013ed852
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Formatter/MessageFormatter.php
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Formatter;
+
+use Symfony\Component\Translation\IdentityTranslator;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+// Help opcache.preload discover always-needed symbols
+class_exists(IntlFormatter::class);
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class MessageFormatter implements MessageFormatterInterface, IntlFormatterInterface
+{
+    private TranslatorInterface $translator;
+    private IntlFormatterInterface $intlFormatter;
+
+    /**
+     * @param TranslatorInterface|null $translator An identity translator to use as selector for pluralization
+     */
+    public function __construct(TranslatorInterface $translator = null, IntlFormatterInterface $intlFormatter = null)
+    {
+        $this->translator = $translator ?? new IdentityTranslator();
+        $this->intlFormatter = $intlFormatter ?? new IntlFormatter();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function format(string $message, string $locale, array $parameters = []): string
+    {
+        if ($this->translator instanceof TranslatorInterface) {
+            return $this->translator->trans($message, $parameters, null, $locale);
+        }
+
+        return strtr($message, $parameters);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function formatIntl(string $message, string $locale, array $parameters = []): string
+    {
+        return $this->intlFormatter->formatIntl($message, $locale, $parameters);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Formatter/MessageFormatterInterface.php b/htdocs/vendor/symfony/translation/Formatter/MessageFormatterInterface.php
new file mode 100644
index 00000000..d5c41c19
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Formatter/MessageFormatterInterface.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Formatter;
+
+/**
+ * @author Guilherme Blanco <guilhermeblanco@hotmail.com>
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+interface MessageFormatterInterface
+{
+    /**
+     * Formats a localized message pattern with given arguments.
+     *
+     * @param string $message    The message (may also be an object that can be cast to string)
+     * @param string $locale     The message locale
+     * @param array  $parameters An array of parameters for the message
+     */
+    public function format(string $message, string $locale, array $parameters = []): string;
+}
diff --git a/htdocs/vendor/symfony/translation/IdentityTranslator.php b/htdocs/vendor/symfony/translation/IdentityTranslator.php
new file mode 100644
index 00000000..46875edf
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/IdentityTranslator.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+use Symfony\Contracts\Translation\TranslatorTrait;
+
+/**
+ * IdentityTranslator does not translate anything.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class IdentityTranslator implements TranslatorInterface, LocaleAwareInterface
+{
+    use TranslatorTrait;
+}
diff --git a/htdocs/vendor/symfony/translation/LICENSE b/htdocs/vendor/symfony/translation/LICENSE
new file mode 100644
index 00000000..88bf75bb
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2004-2022 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/htdocs/vendor/symfony/translation/Loader/ArrayLoader.php b/htdocs/vendor/symfony/translation/Loader/ArrayLoader.php
new file mode 100644
index 00000000..35de9ef5
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/ArrayLoader.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * ArrayLoader loads translations from a PHP array.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class ArrayLoader implements LoaderInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        $resource = $this->flatten($resource);
+        $catalogue = new MessageCatalogue($locale);
+        $catalogue->add($resource, $domain);
+
+        return $catalogue;
+    }
+
+    /**
+     * Flattens an nested array of translations.
+     *
+     * The scheme used is:
+     *   'key' => ['key2' => ['key3' => 'value']]
+     * Becomes:
+     *   'key.key2.key3' => 'value'
+     */
+    private function flatten(array $messages): array
+    {
+        $result = [];
+        foreach ($messages as $key => $value) {
+            if (\is_array($value)) {
+                foreach ($this->flatten($value) as $k => $v) {
+                    $result[$key.'.'.$k] = $v;
+                }
+            } else {
+                $result[$key] = $value;
+            }
+        }
+
+        return $result;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/CsvFileLoader.php b/htdocs/vendor/symfony/translation/Loader/CsvFileLoader.php
new file mode 100644
index 00000000..6f14fd39
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/CsvFileLoader.php
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+
+/**
+ * CsvFileLoader loads translations from CSV files.
+ *
+ * @author Saša Stamenković <umpirsky@gmail.com>
+ */
+class CsvFileLoader extends FileLoader
+{
+    private string $delimiter = ';';
+    private string $enclosure = '"';
+    private string $escape = '\\';
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        $messages = [];
+
+        try {
+            $file = new \SplFileObject($resource, 'rb');
+        } catch (\RuntimeException $e) {
+            throw new NotFoundResourceException(sprintf('Error opening file "%s".', $resource), 0, $e);
+        }
+
+        $file->setFlags(\SplFileObject::READ_CSV | \SplFileObject::SKIP_EMPTY);
+        $file->setCsvControl($this->delimiter, $this->enclosure, $this->escape);
+
+        foreach ($file as $data) {
+            if (false === $data) {
+                continue;
+            }
+
+            if (!str_starts_with($data[0], '#') && isset($data[1]) && 2 === \count($data)) {
+                $messages[$data[0]] = $data[1];
+            }
+        }
+
+        return $messages;
+    }
+
+    /**
+     * Sets the delimiter, enclosure, and escape character for CSV.
+     */
+    public function setCsvControl(string $delimiter = ';', string $enclosure = '"', string $escape = '\\')
+    {
+        $this->delimiter = $delimiter;
+        $this->enclosure = $enclosure;
+        $this->escape = $escape;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/FileLoader.php b/htdocs/vendor/symfony/translation/Loader/FileLoader.php
new file mode 100644
index 00000000..e170d761
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/FileLoader.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+abstract class FileLoader extends ArrayLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        if (!stream_is_local($resource)) {
+            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+        }
+
+        if (!file_exists($resource)) {
+            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+        }
+
+        $messages = $this->loadResource($resource);
+
+        // empty resource
+        if (null === $messages) {
+            $messages = [];
+        }
+
+        // not an array
+        if (!\is_array($messages)) {
+            throw new InvalidResourceException(sprintf('Unable to load file "%s".', $resource));
+        }
+
+        $catalogue = parent::load($messages, $locale, $domain);
+
+        if (class_exists(FileResource::class)) {
+            $catalogue->addResource(new FileResource($resource));
+        }
+
+        return $catalogue;
+    }
+
+    /**
+     * @throws InvalidResourceException if stream content has an invalid format
+     */
+    abstract protected function loadResource(string $resource): array;
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/IcuDatFileLoader.php b/htdocs/vendor/symfony/translation/Loader/IcuDatFileLoader.php
new file mode 100644
index 00000000..e589ab17
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/IcuDatFileLoader.php
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * IcuResFileLoader loads translations from a resource bundle.
+ *
+ * @author stealth35
+ */
+class IcuDatFileLoader extends IcuResFileLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        if (!stream_is_local($resource.'.dat')) {
+            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+        }
+
+        if (!file_exists($resource.'.dat')) {
+            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+        }
+
+        try {
+            $rb = new \ResourceBundle($locale, $resource);
+        } catch (\Exception) {
+            $rb = null;
+        }
+
+        if (!$rb) {
+            throw new InvalidResourceException(sprintf('Cannot load resource "%s".', $resource));
+        } elseif (intl_is_failure($rb->getErrorCode())) {
+            throw new InvalidResourceException($rb->getErrorMessage(), $rb->getErrorCode());
+        }
+
+        $messages = $this->flatten($rb);
+        $catalogue = new MessageCatalogue($locale);
+        $catalogue->add($messages, $domain);
+
+        if (class_exists(FileResource::class)) {
+            $catalogue->addResource(new FileResource($resource.'.dat'));
+        }
+
+        return $catalogue;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/IcuResFileLoader.php b/htdocs/vendor/symfony/translation/Loader/IcuResFileLoader.php
new file mode 100644
index 00000000..555b2a39
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/IcuResFileLoader.php
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Config\Resource\DirectoryResource;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * IcuResFileLoader loads translations from a resource bundle.
+ *
+ * @author stealth35
+ */
+class IcuResFileLoader implements LoaderInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        if (!stream_is_local($resource)) {
+            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+        }
+
+        if (!is_dir($resource)) {
+            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+        }
+
+        try {
+            $rb = new \ResourceBundle($locale, $resource);
+        } catch (\Exception) {
+            $rb = null;
+        }
+
+        if (!$rb) {
+            throw new InvalidResourceException(sprintf('Cannot load resource "%s".', $resource));
+        } elseif (intl_is_failure($rb->getErrorCode())) {
+            throw new InvalidResourceException($rb->getErrorMessage(), $rb->getErrorCode());
+        }
+
+        $messages = $this->flatten($rb);
+        $catalogue = new MessageCatalogue($locale);
+        $catalogue->add($messages, $domain);
+
+        if (class_exists(DirectoryResource::class)) {
+            $catalogue->addResource(new DirectoryResource($resource));
+        }
+
+        return $catalogue;
+    }
+
+    /**
+     * Flattens an ResourceBundle.
+     *
+     * The scheme used is:
+     *   key { key2 { key3 { "value" } } }
+     * Becomes:
+     *   'key.key2.key3' => 'value'
+     *
+     * This function takes an array by reference and will modify it
+     *
+     * @param \ResourceBundle $rb       The ResourceBundle that will be flattened
+     * @param array           $messages Used internally for recursive calls
+     * @param string          $path     Current path being parsed, used internally for recursive calls
+     */
+    protected function flatten(\ResourceBundle $rb, array &$messages = [], string $path = null): array
+    {
+        foreach ($rb as $key => $value) {
+            $nodePath = $path ? $path.'.'.$key : $key;
+            if ($value instanceof \ResourceBundle) {
+                $this->flatten($value, $messages, $nodePath);
+            } else {
+                $messages[$nodePath] = $value;
+            }
+        }
+
+        return $messages;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/IniFileLoader.php b/htdocs/vendor/symfony/translation/Loader/IniFileLoader.php
new file mode 100644
index 00000000..04e294d1
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/IniFileLoader.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+/**
+ * IniFileLoader loads translations from an ini file.
+ *
+ * @author stealth35
+ */
+class IniFileLoader extends FileLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        return parse_ini_file($resource, true);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/JsonFileLoader.php b/htdocs/vendor/symfony/translation/Loader/JsonFileLoader.php
new file mode 100644
index 00000000..c70dfde0
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/JsonFileLoader.php
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+
+/**
+ * JsonFileLoader loads translations from an json file.
+ *
+ * @author singles
+ */
+class JsonFileLoader extends FileLoader
+{
+    /**
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        $messages = [];
+        if ($data = file_get_contents($resource)) {
+            $messages = json_decode($data, true);
+
+            if (0 < $errorCode = json_last_error()) {
+                throw new InvalidResourceException('Error parsing JSON: '.$this->getJSONErrorMessage($errorCode));
+            }
+        }
+
+        return $messages;
+    }
+
+    /**
+     * Translates JSON_ERROR_* constant into meaningful message.
+     */
+    private function getJSONErrorMessage(int $errorCode): string
+    {
+        return match ($errorCode) {
+            \JSON_ERROR_DEPTH => 'Maximum stack depth exceeded',
+            \JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch',
+            \JSON_ERROR_CTRL_CHAR => 'Unexpected control character found',
+            \JSON_ERROR_SYNTAX => 'Syntax error, malformed JSON',
+            \JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded',
+            default => 'Unknown error',
+        };
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/LoaderInterface.php b/htdocs/vendor/symfony/translation/Loader/LoaderInterface.php
new file mode 100644
index 00000000..29d5560d
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/LoaderInterface.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * LoaderInterface is the interface implemented by all translation loaders.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface LoaderInterface
+{
+    /**
+     * Loads a locale.
+     *
+     * @throws NotFoundResourceException when the resource cannot be found
+     * @throws InvalidResourceException  when the resource cannot be loaded
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue;
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/MoFileLoader.php b/htdocs/vendor/symfony/translation/Loader/MoFileLoader.php
new file mode 100644
index 00000000..b0c89138
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/MoFileLoader.php
@@ -0,0 +1,140 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+
+/**
+ * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/)
+ */
+class MoFileLoader extends FileLoader
+{
+    /**
+     * Magic used for validating the format of an MO file as well as
+     * detecting if the machine used to create that file was little endian.
+     */
+    public const MO_LITTLE_ENDIAN_MAGIC = 0x950412DE;
+
+    /**
+     * Magic used for validating the format of an MO file as well as
+     * detecting if the machine used to create that file was big endian.
+     */
+    public const MO_BIG_ENDIAN_MAGIC = 0xDE120495;
+
+    /**
+     * The size of the header of an MO file in bytes.
+     */
+    public const MO_HEADER_SIZE = 28;
+
+    /**
+     * Parses machine object (MO) format, independent of the machine's endian it
+     * was created on. Both 32bit and 64bit systems are supported.
+     *
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        $stream = fopen($resource, 'r');
+
+        $stat = fstat($stream);
+
+        if ($stat['size'] < self::MO_HEADER_SIZE) {
+            throw new InvalidResourceException('MO stream content has an invalid format.');
+        }
+        $magic = unpack('V1', fread($stream, 4));
+        $magic = hexdec(substr(dechex(current($magic)), -8));
+
+        if (self::MO_LITTLE_ENDIAN_MAGIC == $magic) {
+            $isBigEndian = false;
+        } elseif (self::MO_BIG_ENDIAN_MAGIC == $magic) {
+            $isBigEndian = true;
+        } else {
+            throw new InvalidResourceException('MO stream content has an invalid format.');
+        }
+
+        // formatRevision
+        $this->readLong($stream, $isBigEndian);
+        $count = $this->readLong($stream, $isBigEndian);
+        $offsetId = $this->readLong($stream, $isBigEndian);
+        $offsetTranslated = $this->readLong($stream, $isBigEndian);
+        // sizeHashes
+        $this->readLong($stream, $isBigEndian);
+        // offsetHashes
+        $this->readLong($stream, $isBigEndian);
+
+        $messages = [];
+
+        for ($i = 0; $i < $count; ++$i) {
+            $pluralId = null;
+            $translated = null;
+
+            fseek($stream, $offsetId + $i * 8);
+
+            $length = $this->readLong($stream, $isBigEndian);
+            $offset = $this->readLong($stream, $isBigEndian);
+
+            if ($length < 1) {
+                continue;
+            }
+
+            fseek($stream, $offset);
+            $singularId = fread($stream, $length);
+
+            if (str_contains($singularId, "\000")) {
+                [$singularId, $pluralId] = explode("\000", $singularId);
+            }
+
+            fseek($stream, $offsetTranslated + $i * 8);
+            $length = $this->readLong($stream, $isBigEndian);
+            $offset = $this->readLong($stream, $isBigEndian);
+
+            if ($length < 1) {
+                continue;
+            }
+
+            fseek($stream, $offset);
+            $translated = fread($stream, $length);
+
+            if (str_contains($translated, "\000")) {
+                $translated = explode("\000", $translated);
+            }
+
+            $ids = ['singular' => $singularId, 'plural' => $pluralId];
+            $item = compact('ids', 'translated');
+
+            if (!empty($item['ids']['singular'])) {
+                $id = $item['ids']['singular'];
+                if (isset($item['ids']['plural'])) {
+                    $id .= '|'.$item['ids']['plural'];
+                }
+                $messages[$id] = stripcslashes(implode('|', (array) $item['translated']));
+            }
+        }
+
+        fclose($stream);
+
+        return array_filter($messages);
+    }
+
+    /**
+     * Reads an unsigned long from stream respecting endianness.
+     *
+     * @param resource $stream
+     */
+    private function readLong($stream, bool $isBigEndian): int
+    {
+        $result = unpack($isBigEndian ? 'N1' : 'V1', fread($stream, 4));
+        $result = current($result);
+
+        return (int) substr($result, -8);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/PhpFileLoader.php b/htdocs/vendor/symfony/translation/Loader/PhpFileLoader.php
new file mode 100644
index 00000000..ae299c2a
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/PhpFileLoader.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+/**
+ * PhpFileLoader loads translations from PHP files returning an array of translations.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class PhpFileLoader extends FileLoader
+{
+    private static ?array $cache = [];
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        if ([] === self::$cache && \function_exists('opcache_invalidate') && filter_var(\ini_get('opcache.enable'), \FILTER_VALIDATE_BOOLEAN) && (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true) || filter_var(\ini_get('opcache.enable_cli'), \FILTER_VALIDATE_BOOLEAN))) {
+            self::$cache = null;
+        }
+
+        if (null === self::$cache) {
+            return require $resource;
+        }
+
+        if (isset(self::$cache[$resource])) {
+            return self::$cache[$resource];
+        }
+
+        return self::$cache[$resource] = require $resource;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/PoFileLoader.php b/htdocs/vendor/symfony/translation/Loader/PoFileLoader.php
new file mode 100644
index 00000000..01fc8d4f
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/PoFileLoader.php
@@ -0,0 +1,149 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+/**
+ * @copyright Copyright (c) 2010, Union of RAD https://github.com/UnionOfRAD/lithium
+ * @copyright Copyright (c) 2012, Clemens Tolboom
+ */
+class PoFileLoader extends FileLoader
+{
+    /**
+     * Parses portable object (PO) format.
+     *
+     * From https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files
+     * we should be able to parse files having:
+     *
+     * white-space
+     * #  translator-comments
+     * #. extracted-comments
+     * #: reference...
+     * #, flag...
+     * #| msgid previous-untranslated-string
+     * msgid untranslated-string
+     * msgstr translated-string
+     *
+     * extra or different lines are:
+     *
+     * #| msgctxt previous-context
+     * #| msgid previous-untranslated-string
+     * msgctxt context
+     *
+     * #| msgid previous-untranslated-string-singular
+     * #| msgid_plural previous-untranslated-string-plural
+     * msgid untranslated-string-singular
+     * msgid_plural untranslated-string-plural
+     * msgstr[0] translated-string-case-0
+     * ...
+     * msgstr[N] translated-string-case-n
+     *
+     * The definition states:
+     * - white-space and comments are optional.
+     * - msgid "" that an empty singleline defines a header.
+     *
+     * This parser sacrifices some features of the reference implementation the
+     * differences to that implementation are as follows.
+     * - No support for comments spanning multiple lines.
+     * - Translator and extracted comments are treated as being the same type.
+     * - Message IDs are allowed to have other encodings as just US-ASCII.
+     *
+     * Items with an empty id are ignored.
+     *
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        $stream = fopen($resource, 'r');
+
+        $defaults = [
+            'ids' => [],
+            'translated' => null,
+        ];
+
+        $messages = [];
+        $item = $defaults;
+        $flags = [];
+
+        while ($line = fgets($stream)) {
+            $line = trim($line);
+
+            if ('' === $line) {
+                // Whitespace indicated current item is done
+                if (!\in_array('fuzzy', $flags)) {
+                    $this->addMessage($messages, $item);
+                }
+                $item = $defaults;
+                $flags = [];
+            } elseif (str_starts_with($line, '#,')) {
+                $flags = array_map('trim', explode(',', substr($line, 2)));
+            } elseif (str_starts_with($line, 'msgid "')) {
+                // We start a new msg so save previous
+                // TODO: this fails when comments or contexts are added
+                $this->addMessage($messages, $item);
+                $item = $defaults;
+                $item['ids']['singular'] = substr($line, 7, -1);
+            } elseif (str_starts_with($line, 'msgstr "')) {
+                $item['translated'] = substr($line, 8, -1);
+            } elseif ('"' === $line[0]) {
+                $continues = isset($item['translated']) ? 'translated' : 'ids';
+
+                if (\is_array($item[$continues])) {
+                    end($item[$continues]);
+                    $item[$continues][key($item[$continues])] .= substr($line, 1, -1);
+                } else {
+                    $item[$continues] .= substr($line, 1, -1);
+                }
+            } elseif (str_starts_with($line, 'msgid_plural "')) {
+                $item['ids']['plural'] = substr($line, 14, -1);
+            } elseif (str_starts_with($line, 'msgstr[')) {
+                $size = strpos($line, ']');
+                $item['translated'][(int) substr($line, 7, 1)] = substr($line, $size + 3, -1);
+            }
+        }
+        // save last item
+        if (!\in_array('fuzzy', $flags)) {
+            $this->addMessage($messages, $item);
+        }
+        fclose($stream);
+
+        return $messages;
+    }
+
+    /**
+     * Save a translation item to the messages.
+     *
+     * A .po file could contain by error missing plural indexes. We need to
+     * fix these before saving them.
+     */
+    private function addMessage(array &$messages, array $item)
+    {
+        if (!empty($item['ids']['singular'])) {
+            $id = stripcslashes($item['ids']['singular']);
+            if (isset($item['ids']['plural'])) {
+                $id .= '|'.stripcslashes($item['ids']['plural']);
+            }
+
+            $translated = (array) $item['translated'];
+            // PO are by definition indexed so sort by index.
+            ksort($translated);
+            // Make sure every index is filled.
+            end($translated);
+            $count = key($translated);
+            // Fill missing spots with '-'.
+            $empties = array_fill(0, $count + 1, '-');
+            $translated += $empties;
+            ksort($translated);
+
+            $messages[$id] = stripcslashes(implode('|', $translated));
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/QtFileLoader.php b/htdocs/vendor/symfony/translation/Loader/QtFileLoader.php
new file mode 100644
index 00000000..6d5582d6
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/QtFileLoader.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Config\Util\XmlUtils;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\Exception\RuntimeException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * QtFileLoader loads translations from QT Translations XML files.
+ *
+ * @author Benjamin Eberlei <kontakt@beberlei.de>
+ */
+class QtFileLoader implements LoaderInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        if (!class_exists(XmlUtils::class)) {
+            throw new RuntimeException('Loading translations from the QT format requires the Symfony Config component.');
+        }
+
+        if (!stream_is_local($resource)) {
+            throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+        }
+
+        if (!file_exists($resource)) {
+            throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+        }
+
+        try {
+            $dom = XmlUtils::loadFile($resource);
+        } catch (\InvalidArgumentException $e) {
+            throw new InvalidResourceException(sprintf('Unable to load "%s".', $resource), $e->getCode(), $e);
+        }
+
+        $internalErrors = libxml_use_internal_errors(true);
+        libxml_clear_errors();
+
+        $xpath = new \DOMXPath($dom);
+        $nodes = $xpath->evaluate('//TS/context/name[text()="'.$domain.'"]');
+
+        $catalogue = new MessageCatalogue($locale);
+        if (1 == $nodes->length) {
+            $translations = $nodes->item(0)->nextSibling->parentNode->parentNode->getElementsByTagName('message');
+            foreach ($translations as $translation) {
+                $translationValue = (string) $translation->getElementsByTagName('translation')->item(0)->nodeValue;
+
+                if (!empty($translationValue)) {
+                    $catalogue->set(
+                        (string) $translation->getElementsByTagName('source')->item(0)->nodeValue,
+                        $translationValue,
+                        $domain
+                    );
+                }
+                $translation = $translation->nextSibling;
+            }
+
+            if (class_exists(FileResource::class)) {
+                $catalogue->addResource(new FileResource($resource));
+            }
+        }
+
+        libxml_use_internal_errors($internalErrors);
+
+        return $catalogue;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/XliffFileLoader.php b/htdocs/vendor/symfony/translation/Loader/XliffFileLoader.php
new file mode 100644
index 00000000..971bfd50
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/XliffFileLoader.php
@@ -0,0 +1,236 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Config\Resource\FileResource;
+use Symfony\Component\Config\Util\Exception\InvalidXmlException;
+use Symfony\Component\Config\Util\Exception\XmlParsingException;
+use Symfony\Component\Config\Util\XmlUtils;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\Exception\RuntimeException;
+use Symfony\Component\Translation\MessageCatalogue;
+use Symfony\Component\Translation\Util\XliffUtils;
+
+/**
+ * XliffFileLoader loads translations from XLIFF files.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class XliffFileLoader implements LoaderInterface
+{
+    /**
+     * {@inheritdoc}
+     */
+    public function load(mixed $resource, string $locale, string $domain = 'messages'): MessageCatalogue
+    {
+        if (!class_exists(XmlUtils::class)) {
+            throw new RuntimeException('Loading translations from the Xliff format requires the Symfony Config component.');
+        }
+
+        if (!$this->isXmlString($resource)) {
+            if (!stream_is_local($resource)) {
+                throw new InvalidResourceException(sprintf('This is not a local file "%s".', $resource));
+            }
+
+            if (!file_exists($resource)) {
+                throw new NotFoundResourceException(sprintf('File "%s" not found.', $resource));
+            }
+
+            if (!is_file($resource)) {
+                throw new InvalidResourceException(sprintf('This is neither a file nor an XLIFF string "%s".', $resource));
+            }
+        }
+
+        try {
+            if ($this->isXmlString($resource)) {
+                $dom = XmlUtils::parse($resource);
+            } else {
+                $dom = XmlUtils::loadFile($resource);
+            }
+        } catch (\InvalidArgumentException|XmlParsingException|InvalidXmlException $e) {
+            throw new InvalidResourceException(sprintf('Unable to load "%s": ', $resource).$e->getMessage(), $e->getCode(), $e);
+        }
+
+        if ($errors = XliffUtils::validateSchema($dom)) {
+            throw new InvalidResourceException(sprintf('Invalid resource provided: "%s"; Errors: ', $resource).XliffUtils::getErrorsAsString($errors));
+        }
+
+        $catalogue = new MessageCatalogue($locale);
+        $this->extract($dom, $catalogue, $domain);
+
+        if (is_file($resource) && class_exists(FileResource::class)) {
+            $catalogue->addResource(new FileResource($resource));
+        }
+
+        return $catalogue;
+    }
+
+    private function extract(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain)
+    {
+        $xliffVersion = XliffUtils::getVersionNumber($dom);
+
+        if ('1.2' === $xliffVersion) {
+            $this->extractXliff1($dom, $catalogue, $domain);
+        }
+
+        if ('2.0' === $xliffVersion) {
+            $this->extractXliff2($dom, $catalogue, $domain);
+        }
+    }
+
+    /**
+     * Extract messages and metadata from DOMDocument into a MessageCatalogue.
+     */
+    private function extractXliff1(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain)
+    {
+        $xml = simplexml_import_dom($dom);
+        $encoding = $dom->encoding ? strtoupper($dom->encoding) : null;
+
+        $namespace = 'urn:oasis:names:tc:xliff:document:1.2';
+        $xml->registerXPathNamespace('xliff', $namespace);
+
+        foreach ($xml->xpath('//xliff:file') as $file) {
+            $fileAttributes = $file->attributes();
+
+            $file->registerXPathNamespace('xliff', $namespace);
+
+            foreach ($file->xpath('.//xliff:prop') as $prop) {
+                $catalogue->setCatalogueMetadata($prop->attributes()['prop-type'], (string) $prop, $domain);
+            }
+
+            foreach ($file->xpath('.//xliff:trans-unit') as $translation) {
+                $attributes = $translation->attributes();
+
+                if (!(isset($attributes['resname']) || isset($translation->source))) {
+                    continue;
+                }
+
+                $source = isset($attributes['resname']) && $attributes['resname'] ? $attributes['resname'] : $translation->source;
+                // If the xlf file has another encoding specified, try to convert it because
+                // simple_xml will always return utf-8 encoded values
+                $target = $this->utf8ToCharset((string) ($translation->target ?? $translation->source), $encoding);
+
+                $catalogue->set((string) $source, $target, $domain);
+
+                $metadata = [
+                    'source' => (string) $translation->source,
+                    'file' => [
+                        'original' => (string) $fileAttributes['original'],
+                    ],
+                ];
+                if ($notes = $this->parseNotesMetadata($translation->note, $encoding)) {
+                    $metadata['notes'] = $notes;
+                }
+
+                if (isset($translation->target) && $translation->target->attributes()) {
+                    $metadata['target-attributes'] = [];
+                    foreach ($translation->target->attributes() as $key => $value) {
+                        $metadata['target-attributes'][$key] = (string) $value;
+                    }
+                }
+
+                if (isset($attributes['id'])) {
+                    $metadata['id'] = (string) $attributes['id'];
+                }
+
+                $catalogue->setMetadata((string) $source, $metadata, $domain);
+            }
+        }
+    }
+
+    private function extractXliff2(\DOMDocument $dom, MessageCatalogue $catalogue, string $domain)
+    {
+        $xml = simplexml_import_dom($dom);
+        $encoding = $dom->encoding ? strtoupper($dom->encoding) : null;
+
+        $xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:2.0');
+
+        foreach ($xml->xpath('//xliff:unit') as $unit) {
+            foreach ($unit->segment as $segment) {
+                $attributes = $unit->attributes();
+                $source = $attributes['name'] ?? $segment->source;
+
+                // If the xlf file has another encoding specified, try to convert it because
+                // simple_xml will always return utf-8 encoded values
+                $target = $this->utf8ToCharset((string) ($segment->target ?? $segment->source), $encoding);
+
+                $catalogue->set((string) $source, $target, $domain);
+
+                $metadata = [];
+                if (isset($segment->target) && $segment->target->attributes()) {
+                    $metadata['target-attributes'] = [];
+                    foreach ($segment->target->attributes() as $key => $value) {
+                        $metadata['target-attributes'][$key] = (string) $value;
+                    }
+                }
+
+                if (isset($unit->notes)) {
+                    $metadata['notes'] = [];
+                    foreach ($unit->notes->note as $noteNode) {
+                        $note = [];
+                        foreach ($noteNode->attributes() as $key => $value) {
+                            $note[$key] = (string) $value;
+                        }
+                        $note['content'] = (string) $noteNode;
+                        $metadata['notes'][] = $note;
+                    }
+                }
+
+                $catalogue->setMetadata((string) $source, $metadata, $domain);
+            }
+        }
+    }
+
+    /**
+     * Convert a UTF8 string to the specified encoding.
+     */
+    private function utf8ToCharset(string $content, string $encoding = null): string
+    {
+        if ('UTF-8' !== $encoding && !empty($encoding)) {
+            return mb_convert_encoding($content, $encoding, 'UTF-8');
+        }
+
+        return $content;
+    }
+
+    private function parseNotesMetadata(\SimpleXMLElement $noteElement = null, string $encoding = null): array
+    {
+        $notes = [];
+
+        if (null === $noteElement) {
+            return $notes;
+        }
+
+        /** @var \SimpleXMLElement $xmlNote */
+        foreach ($noteElement as $xmlNote) {
+            $noteAttributes = $xmlNote->attributes();
+            $note = ['content' => $this->utf8ToCharset((string) $xmlNote, $encoding)];
+            if (isset($noteAttributes['priority'])) {
+                $note['priority'] = (int) $noteAttributes['priority'];
+            }
+
+            if (isset($noteAttributes['from'])) {
+                $note['from'] = (string) $noteAttributes['from'];
+            }
+
+            $notes[] = $note;
+        }
+
+        return $notes;
+    }
+
+    private function isXmlString(string $resource): bool
+    {
+        return str_starts_with($resource, '<?xml');
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Loader/YamlFileLoader.php b/htdocs/vendor/symfony/translation/Loader/YamlFileLoader.php
new file mode 100644
index 00000000..5eccf99d
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Loader/YamlFileLoader.php
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Loader;
+
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+use Symfony\Component\Translation\Exception\LogicException;
+use Symfony\Component\Yaml\Exception\ParseException;
+use Symfony\Component\Yaml\Parser as YamlParser;
+use Symfony\Component\Yaml\Yaml;
+
+/**
+ * YamlFileLoader loads translations from Yaml files.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class YamlFileLoader extends FileLoader
+{
+    private $yamlParser;
+
+    /**
+     * {@inheritdoc}
+     */
+    protected function loadResource(string $resource): array
+    {
+        if (null === $this->yamlParser) {
+            if (!class_exists(\Symfony\Component\Yaml\Parser::class)) {
+                throw new LogicException('Loading translations from the YAML format requires the Symfony Yaml component.');
+            }
+
+            $this->yamlParser = new YamlParser();
+        }
+
+        try {
+            $messages = $this->yamlParser->parseFile($resource, Yaml::PARSE_CONSTANT);
+        } catch (ParseException $e) {
+            throw new InvalidResourceException(sprintf('The file "%s" does not contain valid YAML: ', $resource).$e->getMessage(), 0, $e);
+        }
+
+        if (null !== $messages && !\is_array($messages)) {
+            throw new InvalidResourceException(sprintf('Unable to load file "%s".', $resource));
+        }
+
+        return $messages ?: [];
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/LocaleSwitcher.php b/htdocs/vendor/symfony/translation/LocaleSwitcher.php
new file mode 100644
index 00000000..0fc56e33
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/LocaleSwitcher.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Routing\RequestContext;
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+
+/**
+ * @author Kevin Bond <kevinbond@gmail.com>
+ */
+class LocaleSwitcher implements LocaleAwareInterface
+{
+    private string $defaultLocale;
+
+    /**
+     * @param LocaleAwareInterface[] $localeAwareServices
+     */
+    public function __construct(
+        private string $locale,
+        private iterable $localeAwareServices,
+        private ?RequestContext $requestContext = null,
+    ) {
+        $this->defaultLocale = $locale;
+    }
+
+    public function setLocale(string $locale): void
+    {
+        \Locale::setDefault($this->locale = $locale);
+        $this->requestContext?->setParameter('_locale', $locale);
+
+        foreach ($this->localeAwareServices as $service) {
+            $service->setLocale($locale);
+        }
+    }
+
+    public function getLocale(): string
+    {
+        return $this->locale;
+    }
+
+    /**
+     * Switch to a new locale, execute a callback, then switch back to the original.
+     *
+     * @template T
+     *
+     * @param callable():T $callback
+     *
+     * @return T
+     */
+    public function runWithLocale(string $locale, callable $callback): mixed
+    {
+        $original = $this->getLocale();
+        $this->setLocale($locale);
+
+        try {
+            return $callback();
+        } finally {
+            $this->setLocale($original);
+        }
+    }
+
+    public function reset(): void
+    {
+        $this->setLocale($this->defaultLocale);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/LoggingTranslator.php b/htdocs/vendor/symfony/translation/LoggingTranslator.php
new file mode 100644
index 00000000..8dd8ecf9
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/LoggingTranslator.php
@@ -0,0 +1,129 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Psr\Log\LoggerInterface;
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface
+{
+    private TranslatorInterface $translator;
+    private LoggerInterface $logger;
+
+    /**
+     * @param TranslatorInterface&TranslatorBagInterface&LocaleAwareInterface $translator The translator must implement TranslatorBagInterface
+     */
+    public function __construct(TranslatorInterface $translator, LoggerInterface $logger)
+    {
+        if (!$translator instanceof TranslatorBagInterface || !$translator instanceof LocaleAwareInterface) {
+            throw new InvalidArgumentException(sprintf('The Translator "%s" must implement TranslatorInterface, TranslatorBagInterface and LocaleAwareInterface.', get_debug_type($translator)));
+        }
+
+        $this->translator = $translator;
+        $this->logger = $logger;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
+    {
+        $trans = $this->translator->trans($id = (string) $id, $parameters, $domain, $locale);
+        $this->log($id, $domain, $locale);
+
+        return $trans;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setLocale(string $locale)
+    {
+        $prev = $this->translator->getLocale();
+        $this->translator->setLocale($locale);
+        if ($prev === $locale) {
+            return;
+        }
+
+        $this->logger->debug(sprintf('The locale of the translator has changed from "%s" to "%s".', $prev, $locale));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocale(): string
+    {
+        return $this->translator->getLocale();
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogue(string $locale = null): MessageCatalogueInterface
+    {
+        return $this->translator->getCatalogue($locale);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogues(): array
+    {
+        return $this->translator->getCatalogues();
+    }
+
+    /**
+     * Gets the fallback locales.
+     */
+    public function getFallbackLocales(): array
+    {
+        if ($this->translator instanceof Translator || method_exists($this->translator, 'getFallbackLocales')) {
+            return $this->translator->getFallbackLocales();
+        }
+
+        return [];
+    }
+
+    /**
+     * Passes through all unknown calls onto the translator object.
+     */
+    public function __call(string $method, array $args)
+    {
+        return $this->translator->{$method}(...$args);
+    }
+
+    /**
+     * Logs for missing translations.
+     */
+    private function log(string $id, ?string $domain, ?string $locale)
+    {
+        if (null === $domain) {
+            $domain = 'messages';
+        }
+
+        $catalogue = $this->translator->getCatalogue($locale);
+        if ($catalogue->defines($id, $domain)) {
+            return;
+        }
+
+        if ($catalogue->has($id, $domain)) {
+            $this->logger->debug('Translation use fallback catalogue.', ['id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale()]);
+        } else {
+            $this->logger->warning('Translation not found.', ['id' => $id, 'domain' => $domain, 'locale' => $catalogue->getLocale()]);
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/MessageCatalogue.php b/htdocs/vendor/symfony/translation/MessageCatalogue.php
new file mode 100644
index 00000000..4b8fc58d
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/MessageCatalogue.php
@@ -0,0 +1,368 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Config\Resource\ResourceInterface;
+use Symfony\Component\Translation\Exception\LogicException;
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class MessageCatalogue implements MessageCatalogueInterface, MetadataAwareInterface, CatalogueMetadataAwareInterface
+{
+    private array $messages = [];
+    private array $metadata = [];
+    private array $catalogueMetadata = [];
+    private array $resources = [];
+    private string $locale;
+    private ?MessageCatalogueInterface $fallbackCatalogue = null;
+    private ?self $parent = null;
+
+    /**
+     * @param array $messages An array of messages classified by domain
+     */
+    public function __construct(string $locale, array $messages = [])
+    {
+        $this->locale = $locale;
+        $this->messages = $messages;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocale(): string
+    {
+        return $this->locale;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getDomains(): array
+    {
+        $domains = [];
+
+        foreach ($this->messages as $domain => $messages) {
+            if (str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
+                $domain = substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX));
+            }
+            $domains[$domain] = $domain;
+        }
+
+        return array_values($domains);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function all(string $domain = null): array
+    {
+        if (null !== $domain) {
+            // skip messages merge if intl-icu requested explicitly
+            if (str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
+                return $this->messages[$domain] ?? [];
+            }
+
+            return ($this->messages[$domain.self::INTL_DOMAIN_SUFFIX] ?? []) + ($this->messages[$domain] ?? []);
+        }
+
+        $allMessages = [];
+
+        foreach ($this->messages as $domain => $messages) {
+            if (str_ends_with($domain, self::INTL_DOMAIN_SUFFIX)) {
+                $domain = substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX));
+                $allMessages[$domain] = $messages + ($allMessages[$domain] ?? []);
+            } else {
+                $allMessages[$domain] = ($allMessages[$domain] ?? []) + $messages;
+            }
+        }
+
+        return $allMessages;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function set(string $id, string $translation, string $domain = 'messages')
+    {
+        $this->add([$id => $translation], $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function has(string $id, string $domain = 'messages'): bool
+    {
+        if (isset($this->messages[$domain][$id]) || isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id])) {
+            return true;
+        }
+
+        if (null !== $this->fallbackCatalogue) {
+            return $this->fallbackCatalogue->has($id, $domain);
+        }
+
+        return false;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function defines(string $id, string $domain = 'messages'): bool
+    {
+        return isset($this->messages[$domain][$id]) || isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id]);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function get(string $id, string $domain = 'messages'): string
+    {
+        if (isset($this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id])) {
+            return $this->messages[$domain.self::INTL_DOMAIN_SUFFIX][$id];
+        }
+
+        if (isset($this->messages[$domain][$id])) {
+            return $this->messages[$domain][$id];
+        }
+
+        if (null !== $this->fallbackCatalogue) {
+            return $this->fallbackCatalogue->get($id, $domain);
+        }
+
+        return $id;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function replace(array $messages, string $domain = 'messages')
+    {
+        unset($this->messages[$domain], $this->messages[$domain.self::INTL_DOMAIN_SUFFIX]);
+
+        $this->add($messages, $domain);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function add(array $messages, string $domain = 'messages')
+    {
+        $altDomain = str_ends_with($domain, self::INTL_DOMAIN_SUFFIX) ? substr($domain, 0, -\strlen(self::INTL_DOMAIN_SUFFIX)) : $domain.self::INTL_DOMAIN_SUFFIX;
+        foreach ($messages as $id => $message) {
+            unset($this->messages[$altDomain][$id]);
+            $this->messages[$domain][$id] = $message;
+        }
+
+        if ([] === ($this->messages[$altDomain] ?? null)) {
+            unset($this->messages[$altDomain]);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function addCatalogue(MessageCatalogueInterface $catalogue)
+    {
+        if ($catalogue->getLocale() !== $this->locale) {
+            throw new LogicException(sprintf('Cannot add a catalogue for locale "%s" as the current locale for this catalogue is "%s".', $catalogue->getLocale(), $this->locale));
+        }
+
+        foreach ($catalogue->all() as $domain => $messages) {
+            if ($intlMessages = $catalogue->all($domain.self::INTL_DOMAIN_SUFFIX)) {
+                $this->add($intlMessages, $domain.self::INTL_DOMAIN_SUFFIX);
+                $messages = array_diff_key($messages, $intlMessages);
+            }
+            $this->add($messages, $domain);
+        }
+
+        foreach ($catalogue->getResources() as $resource) {
+            $this->addResource($resource);
+        }
+
+        if ($catalogue instanceof MetadataAwareInterface) {
+            $metadata = $catalogue->getMetadata('', '');
+            $this->addMetadata($metadata);
+        }
+
+        if ($catalogue instanceof CatalogueMetadataAwareInterface) {
+            $catalogueMetadata = $catalogue->getCatalogueMetadata('', '');
+            $this->addCatalogueMetadata($catalogueMetadata);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function addFallbackCatalogue(MessageCatalogueInterface $catalogue)
+    {
+        // detect circular references
+        $c = $catalogue;
+        while ($c = $c->getFallbackCatalogue()) {
+            if ($c->getLocale() === $this->getLocale()) {
+                throw new LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
+            }
+        }
+
+        $c = $this;
+        do {
+            if ($c->getLocale() === $catalogue->getLocale()) {
+                throw new LogicException(sprintf('Circular reference detected when adding a fallback catalogue for locale "%s".', $catalogue->getLocale()));
+            }
+
+            foreach ($catalogue->getResources() as $resource) {
+                $c->addResource($resource);
+            }
+        } while ($c = $c->parent);
+
+        $catalogue->parent = $this;
+        $this->fallbackCatalogue = $catalogue;
+
+        foreach ($catalogue->getResources() as $resource) {
+            $this->addResource($resource);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getFallbackCatalogue(): ?MessageCatalogueInterface
+    {
+        return $this->fallbackCatalogue;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getResources(): array
+    {
+        return array_values($this->resources);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function addResource(ResourceInterface $resource)
+    {
+        $this->resources[$resource->__toString()] = $resource;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getMetadata(string $key = '', string $domain = 'messages'): mixed
+    {
+        if ('' == $domain) {
+            return $this->metadata;
+        }
+
+        if (isset($this->metadata[$domain])) {
+            if ('' == $key) {
+                return $this->metadata[$domain];
+            }
+
+            if (isset($this->metadata[$domain][$key])) {
+                return $this->metadata[$domain][$key];
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setMetadata(string $key, mixed $value, string $domain = 'messages')
+    {
+        $this->metadata[$domain][$key] = $value;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function deleteMetadata(string $key = '', string $domain = 'messages')
+    {
+        if ('' == $domain) {
+            $this->metadata = [];
+        } elseif ('' == $key) {
+            unset($this->metadata[$domain]);
+        } else {
+            unset($this->metadata[$domain][$key]);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogueMetadata(string $key = '', string $domain = 'messages'): mixed
+    {
+        if (!$domain) {
+            return $this->catalogueMetadata;
+        }
+
+        if (isset($this->catalogueMetadata[$domain])) {
+            if (!$key) {
+                return $this->catalogueMetadata[$domain];
+            }
+
+            if (isset($this->catalogueMetadata[$domain][$key])) {
+                return $this->catalogueMetadata[$domain][$key];
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setCatalogueMetadata(string $key, mixed $value, string $domain = 'messages')
+    {
+        $this->catalogueMetadata[$domain][$key] = $value;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function deleteCatalogueMetadata(string $key = '', string $domain = 'messages')
+    {
+        if (!$domain) {
+            $this->catalogueMetadata = [];
+        } elseif (!$key) {
+            unset($this->catalogueMetadata[$domain]);
+        } else {
+            unset($this->catalogueMetadata[$domain][$key]);
+        }
+    }
+
+    /**
+     * Adds current values with the new values.
+     *
+     * @param array $values Values to add
+     */
+    private function addMetadata(array $values)
+    {
+        foreach ($values as $domain => $keys) {
+            foreach ($keys as $key => $value) {
+                $this->setMetadata($key, $value, $domain);
+            }
+        }
+    }
+
+    private function addCatalogueMetadata(array $values)
+    {
+        foreach ($values as $domain => $keys) {
+            foreach ($keys as $key => $value) {
+                $this->setCatalogueMetadata($key, $value, $domain);
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/MessageCatalogueInterface.php b/htdocs/vendor/symfony/translation/MessageCatalogueInterface.php
new file mode 100644
index 00000000..75e3a2fa
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/MessageCatalogueInterface.php
@@ -0,0 +1,124 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Config\Resource\ResourceInterface;
+
+/**
+ * MessageCatalogueInterface.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface MessageCatalogueInterface
+{
+    public const INTL_DOMAIN_SUFFIX = '+intl-icu';
+
+    /**
+     * Gets the catalogue locale.
+     */
+    public function getLocale(): string;
+
+    /**
+     * Gets the domains.
+     */
+    public function getDomains(): array;
+
+    /**
+     * Gets the messages within a given domain.
+     *
+     * If $domain is null, it returns all messages.
+     *
+     * @param string $domain The domain name
+     */
+    public function all(string $domain = null): array;
+
+    /**
+     * Sets a message translation.
+     *
+     * @param string $id          The message id
+     * @param string $translation The messages translation
+     * @param string $domain      The domain name
+     */
+    public function set(string $id, string $translation, string $domain = 'messages');
+
+    /**
+     * Checks if a message has a translation.
+     *
+     * @param string $id     The message id
+     * @param string $domain The domain name
+     */
+    public function has(string $id, string $domain = 'messages'): bool;
+
+    /**
+     * Checks if a message has a translation (it does not take into account the fallback mechanism).
+     *
+     * @param string $id     The message id
+     * @param string $domain The domain name
+     */
+    public function defines(string $id, string $domain = 'messages'): bool;
+
+    /**
+     * Gets a message translation.
+     *
+     * @param string $id     The message id
+     * @param string $domain The domain name
+     */
+    public function get(string $id, string $domain = 'messages'): string;
+
+    /**
+     * Sets translations for a given domain.
+     *
+     * @param array  $messages An array of translations
+     * @param string $domain   The domain name
+     */
+    public function replace(array $messages, string $domain = 'messages');
+
+    /**
+     * Adds translations for a given domain.
+     *
+     * @param array  $messages An array of translations
+     * @param string $domain   The domain name
+     */
+    public function add(array $messages, string $domain = 'messages');
+
+    /**
+     * Merges translations from the given Catalogue into the current one.
+     *
+     * The two catalogues must have the same locale.
+     */
+    public function addCatalogue(self $catalogue);
+
+    /**
+     * Merges translations from the given Catalogue into the current one
+     * only when the translation does not exist.
+     *
+     * This is used to provide default translations when they do not exist for the current locale.
+     */
+    public function addFallbackCatalogue(self $catalogue);
+
+    /**
+     * Gets the fallback catalogue.
+     */
+    public function getFallbackCatalogue(): ?self;
+
+    /**
+     * Returns an array of resources loaded to build this collection.
+     *
+     * @return ResourceInterface[]
+     */
+    public function getResources(): array;
+
+    /**
+     * Adds a resource for this collection.
+     */
+    public function addResource(ResourceInterface $resource);
+}
diff --git a/htdocs/vendor/symfony/translation/MetadataAwareInterface.php b/htdocs/vendor/symfony/translation/MetadataAwareInterface.php
new file mode 100644
index 00000000..5753b817
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/MetadataAwareInterface.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+/**
+ * This interface is used to get, set, and delete metadata about the translation messages.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+interface MetadataAwareInterface
+{
+    /**
+     * Gets metadata for the given domain and key.
+     *
+     * Passing an empty domain will return an array with all metadata indexed by
+     * domain and then by key. Passing an empty key will return an array with all
+     * metadata for the given domain.
+     *
+     * @return mixed The value that was set or an array with the domains/keys or null
+     */
+    public function getMetadata(string $key = '', string $domain = 'messages'): mixed;
+
+    /**
+     * Adds metadata to a message domain.
+     */
+    public function setMetadata(string $key, mixed $value, string $domain = 'messages');
+
+    /**
+     * Deletes metadata for the given key and domain.
+     *
+     * Passing an empty domain will delete all metadata. Passing an empty key will
+     * delete all metadata for the given domain.
+     */
+    public function deleteMetadata(string $key = '', string $domain = 'messages');
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/AbstractProviderFactory.php b/htdocs/vendor/symfony/translation/Provider/AbstractProviderFactory.php
new file mode 100644
index 00000000..17442fde
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/AbstractProviderFactory.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\IncompleteDsnException;
+
+abstract class AbstractProviderFactory implements ProviderFactoryInterface
+{
+    public function supports(Dsn $dsn): bool
+    {
+        return \in_array($dsn->getScheme(), $this->getSupportedSchemes(), true);
+    }
+
+    /**
+     * @return string[]
+     */
+    abstract protected function getSupportedSchemes(): array;
+
+    protected function getUser(Dsn $dsn): string
+    {
+        if (null === $user = $dsn->getUser()) {
+            throw new IncompleteDsnException('User is not set.', $dsn->getOriginalDsn());
+        }
+
+        return $user;
+    }
+
+    protected function getPassword(Dsn $dsn): string
+    {
+        if (null === $password = $dsn->getPassword()) {
+            throw new IncompleteDsnException('Password is not set.', $dsn->getOriginalDsn());
+        }
+
+        return $password;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/Dsn.php b/htdocs/vendor/symfony/translation/Provider/Dsn.php
new file mode 100644
index 00000000..0f74d17f
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/Dsn.php
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\MissingRequiredOptionException;
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Oskar Stark <oskarstark@googlemail.com>
+ */
+final class Dsn
+{
+    private ?string $scheme;
+    private ?string $host;
+    private ?string $user;
+    private ?string $password;
+    private ?int $port;
+    private ?string $path;
+    private array $options = [];
+    private string $originalDsn;
+
+    public function __construct(string $dsn)
+    {
+        $this->originalDsn = $dsn;
+
+        if (false === $parsedDsn = parse_url($dsn)) {
+            throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN is invalid.', $dsn));
+        }
+
+        if (!isset($parsedDsn['scheme'])) {
+            throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a scheme.', $dsn));
+        }
+        $this->scheme = $parsedDsn['scheme'];
+
+        if (!isset($parsedDsn['host'])) {
+            throw new InvalidArgumentException(sprintf('The "%s" translation provider DSN must contain a host (use "default" by default).', $dsn));
+        }
+        $this->host = $parsedDsn['host'];
+
+        $this->user = '' !== ($parsedDsn['user'] ?? '') ? urldecode($parsedDsn['user']) : null;
+        $this->password = '' !== ($parsedDsn['pass'] ?? '') ? urldecode($parsedDsn['pass']) : null;
+        $this->port = $parsedDsn['port'] ?? null;
+        $this->path = $parsedDsn['path'] ?? null;
+        parse_str($parsedDsn['query'] ?? '', $this->options);
+    }
+
+    public function getScheme(): string
+    {
+        return $this->scheme;
+    }
+
+    public function getHost(): string
+    {
+        return $this->host;
+    }
+
+    public function getUser(): ?string
+    {
+        return $this->user;
+    }
+
+    public function getPassword(): ?string
+    {
+        return $this->password;
+    }
+
+    public function getPort(int $default = null): ?int
+    {
+        return $this->port ?? $default;
+    }
+
+    public function getOption(string $key, mixed $default = null)
+    {
+        return $this->options[$key] ?? $default;
+    }
+
+    public function getRequiredOption(string $key)
+    {
+        if (!\array_key_exists($key, $this->options) || '' === trim($this->options[$key])) {
+            throw new MissingRequiredOptionException($key);
+        }
+
+        return $this->options[$key];
+    }
+
+    public function getOptions(): array
+    {
+        return $this->options;
+    }
+
+    public function getPath(): ?string
+    {
+        return $this->path;
+    }
+
+    public function getOriginalDsn(): string
+    {
+        return $this->originalDsn;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/FilteringProvider.php b/htdocs/vendor/symfony/translation/Provider/FilteringProvider.php
new file mode 100644
index 00000000..db02b6ad
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/FilteringProvider.php
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\TranslatorBag;
+use Symfony\Component\Translation\TranslatorBagInterface;
+
+/**
+ * Filters domains and locales between the Translator config values and those specific to each provider.
+ *
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+class FilteringProvider implements ProviderInterface
+{
+    private ProviderInterface $provider;
+    private array $locales;
+    private array $domains;
+
+    public function __construct(ProviderInterface $provider, array $locales, array $domains = [])
+    {
+        $this->provider = $provider;
+        $this->locales = $locales;
+        $this->domains = $domains;
+    }
+
+    public function __toString(): string
+    {
+        return (string) $this->provider;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function write(TranslatorBagInterface $translatorBag): void
+    {
+        $this->provider->write($translatorBag);
+    }
+
+    public function read(array $domains, array $locales): TranslatorBag
+    {
+        $domains = !$this->domains ? $domains : array_intersect($this->domains, $domains);
+        $locales = array_intersect($this->locales, $locales);
+
+        return $this->provider->read($domains, $locales);
+    }
+
+    public function delete(TranslatorBagInterface $translatorBag): void
+    {
+        $this->provider->delete($translatorBag);
+    }
+
+    public function getDomains(): array
+    {
+        return $this->domains;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/NullProvider.php b/htdocs/vendor/symfony/translation/Provider/NullProvider.php
new file mode 100644
index 00000000..f00392ea
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/NullProvider.php
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\TranslatorBag;
+use Symfony\Component\Translation\TranslatorBagInterface;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+class NullProvider implements ProviderInterface
+{
+    public function __toString(): string
+    {
+        return 'null';
+    }
+
+    public function write(TranslatorBagInterface $translatorBag, bool $override = false): void
+    {
+    }
+
+    public function read(array $domains, array $locales): TranslatorBag
+    {
+        return new TranslatorBag();
+    }
+
+    public function delete(TranslatorBagInterface $translatorBag): void
+    {
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/NullProviderFactory.php b/htdocs/vendor/symfony/translation/Provider/NullProviderFactory.php
new file mode 100644
index 00000000..f350f160
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/NullProviderFactory.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\UnsupportedSchemeException;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+final class NullProviderFactory extends AbstractProviderFactory
+{
+    public function create(Dsn $dsn): ProviderInterface
+    {
+        if ('null' === $dsn->getScheme()) {
+            return new NullProvider();
+        }
+
+        throw new UnsupportedSchemeException($dsn, 'null', $this->getSupportedSchemes());
+    }
+
+    protected function getSupportedSchemes(): array
+    {
+        return ['null'];
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/ProviderFactoryInterface.php b/htdocs/vendor/symfony/translation/Provider/ProviderFactoryInterface.php
new file mode 100644
index 00000000..3fd4494b
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/ProviderFactoryInterface.php
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\IncompleteDsnException;
+use Symfony\Component\Translation\Exception\UnsupportedSchemeException;
+
+interface ProviderFactoryInterface
+{
+    /**
+     * @throws UnsupportedSchemeException
+     * @throws IncompleteDsnException
+     */
+    public function create(Dsn $dsn): ProviderInterface;
+
+    public function supports(Dsn $dsn): bool;
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/ProviderInterface.php b/htdocs/vendor/symfony/translation/Provider/ProviderInterface.php
new file mode 100644
index 00000000..a32193f2
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/ProviderInterface.php
@@ -0,0 +1,32 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\TranslatorBag;
+use Symfony\Component\Translation\TranslatorBagInterface;
+
+interface ProviderInterface
+{
+    public function __toString(): string;
+
+    /**
+     * Translations available in the TranslatorBag only must be created.
+     * Translations available in both the TranslatorBag and on the provider
+     * must be overwritten.
+     * Translations available on the provider only must be kept.
+     */
+    public function write(TranslatorBagInterface $translatorBag): void;
+
+    public function read(array $domains, array $locales): TranslatorBag;
+
+    public function delete(TranslatorBagInterface $translatorBag): void;
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollection.php b/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollection.php
new file mode 100644
index 00000000..61ac641c
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollection.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+final class TranslationProviderCollection
+{
+    /**
+     * @var array<string, ProviderInterface>
+     */
+    private $providers;
+
+    /**
+     * @param array<string, ProviderInterface> $providers
+     */
+    public function __construct(iterable $providers)
+    {
+        $this->providers = \is_array($providers) ? $providers : iterator_to_array($providers);
+    }
+
+    public function __toString(): string
+    {
+        return '['.implode(',', array_keys($this->providers)).']';
+    }
+
+    public function has(string $name): bool
+    {
+        return isset($this->providers[$name]);
+    }
+
+    public function get(string $name): ProviderInterface
+    {
+        if (!$this->has($name)) {
+            throw new InvalidArgumentException(sprintf('Provider "%s" not found. Available: "%s".', $name, (string) $this));
+        }
+
+        return $this->providers[$name];
+    }
+
+    public function keys(): array
+    {
+        return array_keys($this->providers);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php b/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php
new file mode 100644
index 00000000..6300c875
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Provider;
+
+use Symfony\Component\Translation\Exception\UnsupportedSchemeException;
+
+/**
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ */
+class TranslationProviderCollectionFactory
+{
+    private iterable $factories;
+    private array $enabledLocales;
+
+    /**
+     * @param iterable<mixed, ProviderFactoryInterface> $factories
+     */
+    public function __construct(iterable $factories, array $enabledLocales)
+    {
+        $this->factories = $factories;
+        $this->enabledLocales = $enabledLocales;
+    }
+
+    public function fromConfig(array $config): TranslationProviderCollection
+    {
+        $providers = [];
+        foreach ($config as $name => $currentConfig) {
+            $providers[$name] = $this->fromDsnObject(
+                new Dsn($currentConfig['dsn']),
+                !$currentConfig['locales'] ? $this->enabledLocales : $currentConfig['locales'],
+                !$currentConfig['domains'] ? [] : $currentConfig['domains']
+            );
+        }
+
+        return new TranslationProviderCollection($providers);
+    }
+
+    public function fromDsnObject(Dsn $dsn, array $locales, array $domains = []): ProviderInterface
+    {
+        foreach ($this->factories as $factory) {
+            if ($factory->supports($dsn)) {
+                return new FilteringProvider($factory->create($dsn), $locales, $domains);
+            }
+        }
+
+        throw new UnsupportedSchemeException($dsn);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/PseudoLocalizationTranslator.php b/htdocs/vendor/symfony/translation/PseudoLocalizationTranslator.php
new file mode 100644
index 00000000..dfcfe43a
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/PseudoLocalizationTranslator.php
@@ -0,0 +1,368 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+/**
+ * This translator should only be used in a development environment.
+ */
+final class PseudoLocalizationTranslator implements TranslatorInterface
+{
+    private const EXPANSION_CHARACTER = '~';
+
+    private TranslatorInterface $translator;
+    private bool $accents;
+    private float $expansionFactor;
+    private bool $brackets;
+    private bool $parseHTML;
+
+    /**
+     * @var string[]
+     */
+    private array $localizableHTMLAttributes;
+
+    /**
+     * Available options:
+     *  * accents:
+     *      type: boolean
+     *      default: true
+     *      description: replace ASCII characters of the translated string with accented versions or similar characters
+     *      example: if true, "foo" => "ƒöö".
+     *
+     *  * expansion_factor:
+     *      type: float
+     *      default: 1
+     *      validation: it must be greater than or equal to 1
+     *      description: expand the translated string by the given factor with spaces and tildes
+     *      example: if 2, "foo" => "~foo ~"
+     *
+     *  * brackets:
+     *      type: boolean
+     *      default: true
+     *      description: wrap the translated string with brackets
+     *      example: if true, "foo" => "[foo]"
+     *
+     *  * parse_html:
+     *      type: boolean
+     *      default: false
+     *      description: parse the translated string as HTML - looking for HTML tags has a performance impact but allows to preserve them from alterations - it also allows to compute the visible translated string length which is useful to correctly expand ot when it contains HTML
+     *      warning: unclosed tags are unsupported, they will be fixed (closed) by the parser - eg, "foo <div>bar" => "foo <div>bar</div>"
+     *
+     *  * localizable_html_attributes:
+     *      type: string[]
+     *      default: []
+     *      description: the list of HTML attributes whose values can be altered - it is only useful when the "parse_html" option is set to true
+     *      example: if ["title"], and with the "accents" option set to true, "<a href="#" title="Go to your profile">Profile</a>" => "<a href="#" title="Ĝö ţö ýöûŕ þŕöƒîļé">Þŕöƒîļé</a>" - if "title" was not in the "localizable_html_attributes" list, the title attribute data would be left unchanged.
+     */
+    public function __construct(TranslatorInterface $translator, array $options = [])
+    {
+        $this->translator = $translator;
+        $this->accents = $options['accents'] ?? true;
+
+        if (1.0 > ($this->expansionFactor = $options['expansion_factor'] ?? 1.0)) {
+            throw new \InvalidArgumentException('The expansion factor must be greater than or equal to 1.');
+        }
+
+        $this->brackets = $options['brackets'] ?? true;
+
+        $this->parseHTML = $options['parse_html'] ?? false;
+        if ($this->parseHTML && !$this->accents && 1.0 === $this->expansionFactor) {
+            $this->parseHTML = false;
+        }
+
+        $this->localizableHTMLAttributes = $options['localizable_html_attributes'] ?? [];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function trans(string $id, array $parameters = [], string $domain = null, string $locale = null): string
+    {
+        $trans = '';
+        $visibleText = '';
+
+        foreach ($this->getParts($this->translator->trans($id, $parameters, $domain, $locale)) as [$visible, $localizable, $text]) {
+            if ($visible) {
+                $visibleText .= $text;
+            }
+
+            if (!$localizable) {
+                $trans .= $text;
+
+                continue;
+            }
+
+            $this->addAccents($trans, $text);
+        }
+
+        $this->expand($trans, $visibleText);
+
+        $this->addBrackets($trans);
+
+        return $trans;
+    }
+
+    public function getLocale(): string
+    {
+        return $this->translator->getLocale();
+    }
+
+    private function getParts(string $originalTrans): array
+    {
+        if (!$this->parseHTML) {
+            return [[true, true, $originalTrans]];
+        }
+
+        $html = mb_encode_numericentity($originalTrans, [0x80, 0xFFFF, 0, 0xFFFF], mb_detect_encoding($originalTrans, null, true) ?: 'UTF-8');
+
+        $useInternalErrors = libxml_use_internal_errors(true);
+
+        $dom = new \DOMDocument();
+        $dom->loadHTML('<trans>'.$html.'</trans>');
+
+        libxml_clear_errors();
+        libxml_use_internal_errors($useInternalErrors);
+
+        return $this->parseNode($dom->childNodes->item(1)->childNodes->item(0)->childNodes->item(0));
+    }
+
+    private function parseNode(\DOMNode $node): array
+    {
+        $parts = [];
+
+        foreach ($node->childNodes as $childNode) {
+            if (!$childNode instanceof \DOMElement) {
+                $parts[] = [true, true, $childNode->nodeValue];
+
+                continue;
+            }
+
+            $parts[] = [false, false, '<'.$childNode->tagName];
+
+            /** @var \DOMAttr $attribute */
+            foreach ($childNode->attributes as $attribute) {
+                $parts[] = [false, false, ' '.$attribute->nodeName.'="'];
+
+                $localizableAttribute = \in_array($attribute->nodeName, $this->localizableHTMLAttributes, true);
+                foreach (preg_split('/(&(?:amp|quot|#039|lt|gt);+)/', htmlspecialchars($attribute->nodeValue, \ENT_QUOTES, 'UTF-8'), -1, \PREG_SPLIT_DELIM_CAPTURE) as $i => $match) {
+                    if ('' === $match) {
+                        continue;
+                    }
+
+                    $parts[] = [false, $localizableAttribute && 0 === $i % 2, $match];
+                }
+
+                $parts[] = [false, false, '"'];
+            }
+
+            $parts[] = [false, false, '>'];
+
+            $parts = array_merge($parts, $this->parseNode($childNode, $parts));
+
+            $parts[] = [false, false, '</'.$childNode->tagName.'>'];
+        }
+
+        return $parts;
+    }
+
+    private function addAccents(string &$trans, string $text): void
+    {
+        $trans .= $this->accents ? strtr($text, [
+            ' ' => ' ',
+            '!' => '¡',
+            '"' => '″',
+            '#' => '♯',
+            '$' => '€',
+            '%' => '‰',
+            '&' => 'â…‹',
+            '\'' => '´',
+            '(' => '{',
+            ')' => '}',
+            '*' => '⁎',
+            '+' => '⁺',
+            ',' => '،',
+            '-' => '‐',
+            '.' => '·',
+            '/' => '⁄',
+            '0' => '⓪',
+            '1' => 'â‘ ',
+            '2' => 'â‘¡',
+            '3' => 'â‘¢',
+            '4' => 'â‘£',
+            '5' => '⑤',
+            '6' => 'â‘¥',
+            '7' => '⑦',
+            '8' => '⑧',
+            '9' => '⑨',
+            ':' => '∶',
+            ';' => '⁏',
+            '<' => '≤',
+            '=' => '≂',
+            '>' => '≥',
+            '?' => '¿',
+            '@' => 'Õž',
+            'A' => 'Ã…',
+            'B' => 'Ɓ',
+            'C' => 'Ç',
+            'D' => 'Ð',
+            'E' => 'É',
+            'F' => 'Æ‘',
+            'G' => 'Ĝ',
+            'H' => 'Ĥ',
+            'I' => 'ÃŽ',
+            'J' => 'Ä´',
+            'K' => 'Ķ',
+            'L' => 'Ä»',
+            'M' => 'á¹€',
+            'N' => 'Ñ',
+            'O' => 'Ö',
+            'P' => 'Þ',
+            'Q' => 'Ǫ',
+            'R' => 'Å”',
+            'S' => 'Å ',
+            'T' => 'Å¢',
+            'U' => 'Û',
+            'V' => 'á¹¼',
+            'W' => 'Å´',
+            'X' => 'Ẋ',
+            'Y' => 'Ý',
+            'Z' => 'Ž',
+            '[' => '⁅',
+            '\\' => '∖',
+            ']' => '⁆',
+            '^' => 'Ë„',
+            '_' => '‿',
+            '`' => '‵',
+            'a' => 'Ã¥',
+            'b' => 'Æ€',
+            'c' => 'ç',
+            'd' => 'ð',
+            'e' => 'é',
+            'f' => 'Æ’',
+            'g' => 'ĝ',
+            'h' => 'Ä¥',
+            'i' => 'î',
+            'j' => 'ĵ',
+            'k' => 'Ä·',
+            'l' => 'ļ',
+            'm' => 'ɱ',
+            'n' => 'ñ',
+            'o' => 'ö',
+            'p' => 'þ',
+            'q' => 'Ç«',
+            'r' => 'Å•',
+            's' => 'Å¡',
+            't' => 'Å£',
+            'u' => 'û',
+            'v' => 'á¹½',
+            'w' => 'ŵ',
+            'x' => 'ẋ',
+            'y' => 'ý',
+            'z' => 'ž',
+            '{' => '(',
+            '|' => '¦',
+            '}' => ')',
+            '~' => 'Ëž',
+        ]) : $text;
+    }
+
+    private function expand(string &$trans, string $visibleText): void
+    {
+        if (1.0 >= $this->expansionFactor) {
+            return;
+        }
+
+        $visibleLength = $this->strlen($visibleText);
+        $missingLength = (int) ceil($visibleLength * $this->expansionFactor) - $visibleLength;
+        if ($this->brackets) {
+            $missingLength -= 2;
+        }
+
+        if (0 >= $missingLength) {
+            return;
+        }
+
+        $words = [];
+        $wordsCount = 0;
+        foreach (preg_split('/ +/', $visibleText, -1, \PREG_SPLIT_NO_EMPTY) as $word) {
+            $wordLength = $this->strlen($word);
+
+            if ($wordLength >= $missingLength) {
+                continue;
+            }
+
+            if (!isset($words[$wordLength])) {
+                $words[$wordLength] = 0;
+            }
+
+            ++$words[$wordLength];
+            ++$wordsCount;
+        }
+
+        if (!$words) {
+            $trans .= 1 === $missingLength ? self::EXPANSION_CHARACTER : ' '.str_repeat(self::EXPANSION_CHARACTER, $missingLength - 1);
+
+            return;
+        }
+
+        arsort($words, \SORT_NUMERIC);
+
+        $longestWordLength = max(array_keys($words));
+
+        while (true) {
+            $r = mt_rand(1, $wordsCount);
+
+            foreach ($words as $length => $count) {
+                $r -= $count;
+                if ($r <= 0) {
+                    break;
+                }
+            }
+
+            $trans .= ' '.str_repeat(self::EXPANSION_CHARACTER, $length);
+
+            $missingLength -= $length + 1;
+
+            if (0 === $missingLength) {
+                return;
+            }
+
+            while ($longestWordLength >= $missingLength) {
+                $wordsCount -= $words[$longestWordLength];
+                unset($words[$longestWordLength]);
+
+                if (!$words) {
+                    $trans .= 1 === $missingLength ? self::EXPANSION_CHARACTER : ' '.str_repeat(self::EXPANSION_CHARACTER, $missingLength - 1);
+
+                    return;
+                }
+
+                $longestWordLength = max(array_keys($words));
+            }
+        }
+    }
+
+    private function addBrackets(string &$trans): void
+    {
+        if (!$this->brackets) {
+            return;
+        }
+
+        $trans = '['.$trans.']';
+    }
+
+    private function strlen(string $s): int
+    {
+        return false === ($encoding = mb_detect_encoding($s, null, true)) ? \strlen($s) : mb_strlen($s, $encoding);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/README.md b/htdocs/vendor/symfony/translation/README.md
new file mode 100644
index 00000000..4fedd6a2
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/README.md
@@ -0,0 +1,46 @@
+Translation Component
+=====================
+
+The Translation component provides tools to internationalize your application.
+
+Getting Started
+---------------
+
+```
+$ composer require symfony/translation
+```
+
+```php
+use Symfony\Component\Translation\Translator;
+use Symfony\Component\Translation\Loader\ArrayLoader;
+
+$translator = new Translator('fr_FR');
+$translator->addLoader('array', new ArrayLoader());
+$translator->addResource('array', [
+    'Hello World!' => 'Bonjour !',
+], 'fr_FR');
+
+echo $translator->trans('Hello World!'); // outputs « Bonjour ! »
+```
+
+Sponsor
+-------
+
+The Translation component for Symfony 6.1 is [backed][1] by:
+
+ * [Crowdin][2], a cloud-based localization management software helping teams to go global and stay agile.
+
+Help Symfony by [sponsoring][3] its development!
+
+Resources
+---------
+
+ * [Documentation](https://symfony.com/doc/current/translation.html)
+ * [Contributing](https://symfony.com/doc/current/contributing/index.html)
+ * [Report issues](https://github.com/symfony/symfony/issues) and
+   [send Pull Requests](https://github.com/symfony/symfony/pulls)
+   in the [main Symfony repository](https://github.com/symfony/symfony)
+
+[1]: https://symfony.com/backers
+[2]: https://crowdin.com
+[3]: https://symfony.com/sponsor
diff --git a/htdocs/vendor/symfony/translation/Reader/TranslationReader.php b/htdocs/vendor/symfony/translation/Reader/TranslationReader.php
new file mode 100644
index 00000000..bbc687e1
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Reader/TranslationReader.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Reader;
+
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\Translation\Loader\LoaderInterface;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * TranslationReader reads translation messages from translation files.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class TranslationReader implements TranslationReaderInterface
+{
+    /**
+     * Loaders used for import.
+     *
+     * @var array<string, LoaderInterface>
+     */
+    private array $loaders = [];
+
+    /**
+     * Adds a loader to the translation extractor.
+     *
+     * @param string $format The format of the loader
+     */
+    public function addLoader(string $format, LoaderInterface $loader)
+    {
+        $this->loaders[$format] = $loader;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function read(string $directory, MessageCatalogue $catalogue)
+    {
+        if (!is_dir($directory)) {
+            return;
+        }
+
+        foreach ($this->loaders as $format => $loader) {
+            // load any existing translation files
+            $finder = new Finder();
+            $extension = $catalogue->getLocale().'.'.$format;
+            $files = $finder->files()->name('*.'.$extension)->in($directory);
+            foreach ($files as $file) {
+                $domain = substr($file->getFilename(), 0, -1 * \strlen($extension) - 1);
+                $catalogue->addCatalogue($loader->load($file->getPathname(), $catalogue->getLocale(), $domain));
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Reader/TranslationReaderInterface.php b/htdocs/vendor/symfony/translation/Reader/TranslationReaderInterface.php
new file mode 100644
index 00000000..bc37204f
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Reader/TranslationReaderInterface.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Reader;
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * TranslationReader reads translation messages from translation files.
+ *
+ * @author Tobias Nyholm <tobias.nyholm@gmail.com>
+ */
+interface TranslationReaderInterface
+{
+    /**
+     * Reads translation messages from a directory to the catalogue.
+     */
+    public function read(string $directory, MessageCatalogue $catalogue);
+}
diff --git a/htdocs/vendor/symfony/translation/Resources/bin/translation-status.php b/htdocs/vendor/symfony/translation/Resources/bin/translation-status.php
new file mode 100644
index 00000000..4fe814cf
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/bin/translation-status.php
@@ -0,0 +1,278 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+if ('cli' !== \PHP_SAPI) {
+    throw new Exception('This script must be run from the command line.');
+}
+
+$usageInstructions = <<<END
+
+  Usage instructions
+  -------------------------------------------------------------------------------
+
+  $ cd symfony-code-root-directory/
+
+  # show the translation status of all locales
+  $ php translation-status.php
+
+  # only show the translation status of incomplete or erroneous locales
+  $ php translation-status.php --incomplete
+
+  # show the translation status of all locales, all their missing translations and mismatches between trans-unit id and source
+  $ php translation-status.php -v
+
+  # show the status of a single locale
+  $ php translation-status.php fr
+
+  # show the status of a single locale, missing translations and mismatches between trans-unit id and source
+  $ php translation-status.php fr -v
+
+END;
+
+$config = [
+    // if TRUE, the full list of missing translations is displayed
+    'verbose_output' => false,
+    // NULL = analyze all locales
+    'locale_to_analyze' => null,
+    // append --incomplete to only show incomplete languages
+    'include_completed_languages' => true,
+    // the reference files all the other translations are compared to
+    'original_files' => [
+        'src/Symfony/Component/Form/Resources/translations/validators.en.xlf',
+        'src/Symfony/Component/Security/Core/Resources/translations/security.en.xlf',
+        'src/Symfony/Component/Validator/Resources/translations/validators.en.xlf',
+    ],
+];
+
+$argc = $_SERVER['argc'];
+$argv = $_SERVER['argv'];
+
+if ($argc > 4) {
+    echo str_replace('translation-status.php', $argv[0], $usageInstructions);
+    exit(1);
+}
+
+foreach (array_slice($argv, 1) as $argumentOrOption) {
+    if ('--incomplete' === $argumentOrOption) {
+        $config['include_completed_languages'] = false;
+        continue;
+    }
+
+    if (str_starts_with($argumentOrOption, '-')) {
+        $config['verbose_output'] = true;
+    } else {
+        $config['locale_to_analyze'] = $argumentOrOption;
+    }
+}
+
+foreach ($config['original_files'] as $originalFilePath) {
+    if (!file_exists($originalFilePath)) {
+        echo sprintf('The following file does not exist. Make sure that you execute this command at the root dir of the Symfony code repository.%s  %s', \PHP_EOL, $originalFilePath);
+        exit(1);
+    }
+}
+
+$totalMissingTranslations = 0;
+$totalTranslationMismatches = 0;
+
+foreach ($config['original_files'] as $originalFilePath) {
+    $translationFilePaths = findTranslationFiles($originalFilePath, $config['locale_to_analyze']);
+    $translationStatus = calculateTranslationStatus($originalFilePath, $translationFilePaths);
+
+    $totalMissingTranslations += array_sum(array_map(function ($translation) {
+        return count($translation['missingKeys']);
+    }, array_values($translationStatus)));
+    $totalTranslationMismatches += array_sum(array_map(function ($translation) {
+        return count($translation['mismatches']);
+    }, array_values($translationStatus)));
+
+    printTranslationStatus($originalFilePath, $translationStatus, $config['verbose_output'], $config['include_completed_languages']);
+}
+
+exit($totalTranslationMismatches > 0 ? 1 : 0);
+
+function findTranslationFiles($originalFilePath, $localeToAnalyze)
+{
+    $translations = [];
+
+    $translationsDir = dirname($originalFilePath);
+    $originalFileName = basename($originalFilePath);
+    $translationFileNamePattern = str_replace('.en.', '.*.', $originalFileName);
+
+    $translationFiles = glob($translationsDir.'/'.$translationFileNamePattern, \GLOB_NOSORT);
+    sort($translationFiles);
+    foreach ($translationFiles as $filePath) {
+        $locale = extractLocaleFromFilePath($filePath);
+
+        if (null !== $localeToAnalyze && $locale !== $localeToAnalyze) {
+            continue;
+        }
+
+        $translations[$locale] = $filePath;
+    }
+
+    return $translations;
+}
+
+function calculateTranslationStatus($originalFilePath, $translationFilePaths)
+{
+    $translationStatus = [];
+    $allTranslationKeys = extractTranslationKeys($originalFilePath);
+
+    foreach ($translationFilePaths as $locale => $translationPath) {
+        $translatedKeys = extractTranslationKeys($translationPath);
+        $missingKeys = array_diff_key($allTranslationKeys, $translatedKeys);
+        $mismatches = findTransUnitMismatches($allTranslationKeys, $translatedKeys);
+
+        $translationStatus[$locale] = [
+            'total' => count($allTranslationKeys),
+            'translated' => count($translatedKeys),
+            'missingKeys' => $missingKeys,
+            'mismatches' => $mismatches,
+        ];
+        $translationStatus[$locale]['is_completed'] = isTranslationCompleted($translationStatus[$locale]);
+    }
+
+    return $translationStatus;
+}
+
+function isTranslationCompleted(array $translationStatus): bool
+{
+    return $translationStatus['total'] === $translationStatus['translated'] && 0 === count($translationStatus['mismatches']);
+}
+
+function printTranslationStatus($originalFilePath, $translationStatus, $verboseOutput, $includeCompletedLanguages)
+{
+    printTitle($originalFilePath);
+    printTable($translationStatus, $verboseOutput, $includeCompletedLanguages);
+    echo \PHP_EOL.\PHP_EOL;
+}
+
+function extractLocaleFromFilePath($filePath)
+{
+    $parts = explode('.', $filePath);
+
+    return $parts[count($parts) - 2];
+}
+
+function extractTranslationKeys($filePath)
+{
+    $translationKeys = [];
+    $contents = new \SimpleXMLElement(file_get_contents($filePath));
+
+    foreach ($contents->file->body->{'trans-unit'} as $translationKey) {
+        $translationId = (string) $translationKey['id'];
+        $translationKey = (string) $translationKey->source;
+
+        $translationKeys[$translationId] = $translationKey;
+    }
+
+    return $translationKeys;
+}
+
+/**
+ * Check whether the trans-unit id and source match with the base translation.
+ */
+function findTransUnitMismatches(array $baseTranslationKeys, array $translatedKeys): array
+{
+    $mismatches = [];
+
+    foreach ($baseTranslationKeys as $translationId => $translationKey) {
+        if (!isset($translatedKeys[$translationId])) {
+            continue;
+        }
+        if ($translatedKeys[$translationId] !== $translationKey) {
+            $mismatches[$translationId] = [
+                'found' => $translatedKeys[$translationId],
+                'expected' => $translationKey,
+            ];
+        }
+    }
+
+    return $mismatches;
+}
+
+function printTitle($title)
+{
+    echo $title.\PHP_EOL;
+    echo str_repeat('=', strlen($title)).\PHP_EOL.\PHP_EOL;
+}
+
+function printTable($translations, $verboseOutput, bool $includeCompletedLanguages)
+{
+    if (0 === count($translations)) {
+        echo 'No translations found';
+
+        return;
+    }
+    $longestLocaleNameLength = max(array_map('strlen', array_keys($translations)));
+
+    foreach ($translations as $locale => $translation) {
+        if (!$includeCompletedLanguages && $translation['is_completed']) {
+            continue;
+        }
+
+        if ($translation['translated'] > $translation['total']) {
+            textColorRed();
+        } elseif (count($translation['mismatches']) > 0) {
+            textColorRed();
+        } elseif ($translation['is_completed']) {
+            textColorGreen();
+        }
+
+        echo sprintf(
+            '|  Locale: %-'.$longestLocaleNameLength.'s  |  Translated: %2d/%2d  |  Mismatches: %d  |',
+            $locale,
+            $translation['translated'],
+            $translation['total'],
+            count($translation['mismatches'])
+        ).\PHP_EOL;
+
+        textColorNormal();
+
+        $shouldBeClosed = false;
+        if (true === $verboseOutput && count($translation['missingKeys']) > 0) {
+            echo '|    Missing Translations:'.\PHP_EOL;
+
+            foreach ($translation['missingKeys'] as $id => $content) {
+                echo sprintf('|      (id=%s) %s', $id, $content).\PHP_EOL;
+            }
+            $shouldBeClosed = true;
+        }
+        if (true === $verboseOutput && count($translation['mismatches']) > 0) {
+            echo '|    Mismatches between trans-unit id and source:'.\PHP_EOL;
+
+            foreach ($translation['mismatches'] as $id => $content) {
+                echo sprintf('|      (id=%s) Expected: %s', $id, $content['expected']).\PHP_EOL;
+                echo sprintf('|              Found:    %s', $content['found']).\PHP_EOL;
+            }
+            $shouldBeClosed = true;
+        }
+        if ($shouldBeClosed) {
+            echo str_repeat('-', 80).\PHP_EOL;
+        }
+    }
+}
+
+function textColorGreen()
+{
+    echo "\033[32m";
+}
+
+function textColorRed()
+{
+    echo "\033[31m";
+}
+
+function textColorNormal()
+{
+    echo "\033[0m";
+}
diff --git a/htdocs/vendor/symfony/translation/Resources/data/parents.json b/htdocs/vendor/symfony/translation/Resources/data/parents.json
new file mode 100644
index 00000000..32a33cda
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/data/parents.json
@@ -0,0 +1,141 @@
+{
+    "az_Cyrl": "root",
+    "bs_Cyrl": "root",
+    "en_150": "en_001",
+    "en_AG": "en_001",
+    "en_AI": "en_001",
+    "en_AT": "en_150",
+    "en_AU": "en_001",
+    "en_BB": "en_001",
+    "en_BE": "en_150",
+    "en_BM": "en_001",
+    "en_BS": "en_001",
+    "en_BW": "en_001",
+    "en_BZ": "en_001",
+    "en_CC": "en_001",
+    "en_CH": "en_150",
+    "en_CK": "en_001",
+    "en_CM": "en_001",
+    "en_CX": "en_001",
+    "en_CY": "en_001",
+    "en_DE": "en_150",
+    "en_DG": "en_001",
+    "en_DK": "en_150",
+    "en_DM": "en_001",
+    "en_ER": "en_001",
+    "en_FI": "en_150",
+    "en_FJ": "en_001",
+    "en_FK": "en_001",
+    "en_FM": "en_001",
+    "en_GB": "en_001",
+    "en_GD": "en_001",
+    "en_GG": "en_001",
+    "en_GH": "en_001",
+    "en_GI": "en_001",
+    "en_GM": "en_001",
+    "en_GY": "en_001",
+    "en_HK": "en_001",
+    "en_IE": "en_001",
+    "en_IL": "en_001",
+    "en_IM": "en_001",
+    "en_IN": "en_001",
+    "en_IO": "en_001",
+    "en_JE": "en_001",
+    "en_JM": "en_001",
+    "en_KE": "en_001",
+    "en_KI": "en_001",
+    "en_KN": "en_001",
+    "en_KY": "en_001",
+    "en_LC": "en_001",
+    "en_LR": "en_001",
+    "en_LS": "en_001",
+    "en_MG": "en_001",
+    "en_MO": "en_001",
+    "en_MS": "en_001",
+    "en_MT": "en_001",
+    "en_MU": "en_001",
+    "en_MV": "en_001",
+    "en_MW": "en_001",
+    "en_MY": "en_001",
+    "en_NA": "en_001",
+    "en_NF": "en_001",
+    "en_NG": "en_001",
+    "en_NL": "en_150",
+    "en_NR": "en_001",
+    "en_NU": "en_001",
+    "en_NZ": "en_001",
+    "en_PG": "en_001",
+    "en_PK": "en_001",
+    "en_PN": "en_001",
+    "en_PW": "en_001",
+    "en_RW": "en_001",
+    "en_SB": "en_001",
+    "en_SC": "en_001",
+    "en_SD": "en_001",
+    "en_SE": "en_150",
+    "en_SG": "en_001",
+    "en_SH": "en_001",
+    "en_SI": "en_150",
+    "en_SL": "en_001",
+    "en_SS": "en_001",
+    "en_SX": "en_001",
+    "en_SZ": "en_001",
+    "en_TC": "en_001",
+    "en_TK": "en_001",
+    "en_TO": "en_001",
+    "en_TT": "en_001",
+    "en_TV": "en_001",
+    "en_TZ": "en_001",
+    "en_UG": "en_001",
+    "en_VC": "en_001",
+    "en_VG": "en_001",
+    "en_VU": "en_001",
+    "en_WS": "en_001",
+    "en_ZA": "en_001",
+    "en_ZM": "en_001",
+    "en_ZW": "en_001",
+    "es_AR": "es_419",
+    "es_BO": "es_419",
+    "es_BR": "es_419",
+    "es_BZ": "es_419",
+    "es_CL": "es_419",
+    "es_CO": "es_419",
+    "es_CR": "es_419",
+    "es_CU": "es_419",
+    "es_DO": "es_419",
+    "es_EC": "es_419",
+    "es_GT": "es_419",
+    "es_HN": "es_419",
+    "es_MX": "es_419",
+    "es_NI": "es_419",
+    "es_PA": "es_419",
+    "es_PE": "es_419",
+    "es_PR": "es_419",
+    "es_PY": "es_419",
+    "es_SV": "es_419",
+    "es_US": "es_419",
+    "es_UY": "es_419",
+    "es_VE": "es_419",
+    "ff_Adlm": "root",
+    "hi_Latn": "en_IN",
+    "ks_Deva": "root",
+    "nb": "no",
+    "nn": "no",
+    "pa_Arab": "root",
+    "pt_AO": "pt_PT",
+    "pt_CH": "pt_PT",
+    "pt_CV": "pt_PT",
+    "pt_GQ": "pt_PT",
+    "pt_GW": "pt_PT",
+    "pt_LU": "pt_PT",
+    "pt_MO": "pt_PT",
+    "pt_MZ": "pt_PT",
+    "pt_ST": "pt_PT",
+    "pt_TL": "pt_PT",
+    "sd_Deva": "root",
+    "sr_Latn": "root",
+    "uz_Arab": "root",
+    "uz_Cyrl": "root",
+    "zh_Hant": "root",
+    "zh_Hant_MO": "zh_Hant_HK"
+}
diff --git a/htdocs/vendor/symfony/translation/Resources/functions.php b/htdocs/vendor/symfony/translation/Resources/functions.php
new file mode 100644
index 00000000..901d2f87
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/functions.php
@@ -0,0 +1,22 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+if (!\function_exists(t::class)) {
+    /**
+     * @author Nate Wiebe <nate@northern.co>
+     */
+    function t(string $message, array $parameters = [], string $domain = null): TranslatableMessage
+    {
+        return new TranslatableMessage($message, $parameters, $domain);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd b/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd
new file mode 100644
index 00000000..1f38de72
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd
@@ -0,0 +1,2261 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+May-19-2004:
+- Changed the <choice> for ElemType_header, moving minOccurs="0" maxOccurs="unbounded" from its elements
+to <choice> itself.
+- Added <choice> for ElemType_trans-unit to allow "any order" for <context-group>, <count-group>, <prop-group>, <note>, and
+<alt-trans>.
+
+Oct-2005
+- updated version info to 1.2
+- equiv-trans attribute to <trans-unit> element
+- merged-trans attribute for <group> element
+- Add the <seg-source> element as optional in the <trans-unit> and <alt-trans> content models, at the same level as <source>
+- Create a new value "seg" for the mtype attribute of the <mrk> element
+- Add mid as an optional attribute for the <alt-trans> element
+
+Nov-14-2005
+- Changed name attribute for <context-group> from required to optional
+- Added extension point at <xliff>
+
+Jan-9-2006
+- Added alttranstype type attribute to <alt-trans>, and values
+
+Jan-10-2006
+- Corrected error with overwritten purposeValueList
+- Corrected name="AttrType_Version",  attribute should have been "name"
+
+-->
+<xsd:schema xmlns:xlf="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:oasis:names:tc:xliff:document:1.2" xml:lang="en">
+  <!-- Import for xml:lang and xml:space -->
+  <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+  <!-- Attributes Lists -->
+  <xsd:simpleType name="XTend">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="x-[^\s]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="context-typeValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'context-type'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="database">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a database content.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="element">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the content of an element within an XML document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="elementtitle">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the name of an element within an XML document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="linenumber">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the line number from the sourcefile (see context-type="sourcefile") where the &lt;source&gt; is found.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="numparams">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a the number of parameters contained within the &lt;source&gt;.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="paramnotes">
+        <xsd:annotation>
+          <xsd:documentation>Indicates notes pertaining to the parameters in the &lt;source&gt;.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="record">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the content of a record within a database.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="recordtitle">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the name of a record within a database.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="sourcefile">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the original source file in the case that multiple files are merged to form the original file from which the XLIFF file is created. This differs from the original &lt;file&gt; attribute in that this sourcefile is one of many that make up that file.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="count-typeValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'count-type'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="num-usages">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the count units are items that are used X times in a certain context; example: this is a reusable text unit which is used 42 times in other texts.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="repetition">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the count units are translation units existing already in the same document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="total">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a total count.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="InlineDelimitersValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'ctype' when used other elements than &lt;ph&gt; or &lt;x&gt;.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="bold">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a run of bolded text.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="italic">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a run of text in italics.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="underlined">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a run of underlined text.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="link">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a run of hyper-text.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="InlinePlaceholdersValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'ctype' when used with &lt;ph&gt; or &lt;x&gt;.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="image">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a inline image.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pb">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a page break.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="lb">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a line break.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="mime-typeValueList">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="(text|multipart|message|application|image|audio|video|model)(/.+)*"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="datatypeValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'datatype'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="asp">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Active Server Page data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="c">
+        <xsd:annotation>
+          <xsd:documentation>Indicates C source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cdf">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Channel Definition Format (CDF) data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cfm">
+        <xsd:annotation>
+          <xsd:documentation>Indicates ColdFusion data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cpp">
+        <xsd:annotation>
+          <xsd:documentation>Indicates C++ source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="csharp">
+        <xsd:annotation>
+          <xsd:documentation>Indicates C-Sharp data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cstring">
+        <xsd:annotation>
+          <xsd:documentation>Indicates strings from C, ASM, and driver files data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="csv">
+        <xsd:annotation>
+          <xsd:documentation>Indicates comma-separated values data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="database">
+        <xsd:annotation>
+          <xsd:documentation>Indicates database data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="documentfooter">
+        <xsd:annotation>
+          <xsd:documentation>Indicates portions of document that follows data and contains metadata.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="documentheader">
+        <xsd:annotation>
+          <xsd:documentation>Indicates portions of document that precedes data and contains metadata.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="filedialog">
+        <xsd:annotation>
+          <xsd:documentation>Indicates data from standard UI file operations dialogs (e.g., Open, Save, Save As, Export, Import).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="form">
+        <xsd:annotation>
+          <xsd:documentation>Indicates standard user input screen data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="html">
+        <xsd:annotation>
+          <xsd:documentation>Indicates HyperText Markup Language (HTML) data - document instance.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="htmlbody">
+        <xsd:annotation>
+          <xsd:documentation>Indicates content within an HTML document’s &lt;body&gt; element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="ini">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Windows INI file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="interleaf">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Interleaf data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="javaclass">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Java source file data (extension '.java').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="javapropertyresourcebundle">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Java property resource bundle data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="javalistresourcebundle">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Java list resource bundle data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="javascript">
+        <xsd:annotation>
+          <xsd:documentation>Indicates JavaScript source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="jscript">
+        <xsd:annotation>
+          <xsd:documentation>Indicates JScript source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="layout">
+        <xsd:annotation>
+          <xsd:documentation>Indicates information relating to formatting.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="lisp">
+        <xsd:annotation>
+          <xsd:documentation>Indicates LISP source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="margin">
+        <xsd:annotation>
+          <xsd:documentation>Indicates information relating to margin formats.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="menufile">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a file containing menu.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="messagefile">
+        <xsd:annotation>
+          <xsd:documentation>Indicates numerically identified string table.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="mif">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Maker Interchange Format (MIF) data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="mimetype">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the datatype attribute value is a MIME Type value and is defined in the mime-type attribute.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="mo">
+        <xsd:annotation>
+          <xsd:documentation>Indicates GNU Machine Object data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="msglib">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Message Librarian strings created by Novell's Message Librarian Tool.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pagefooter">
+        <xsd:annotation>
+          <xsd:documentation>Indicates information to be displayed at the bottom of each page of a document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pageheader">
+        <xsd:annotation>
+          <xsd:documentation>Indicates information to be displayed at the top of each page of a document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="parameters">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a list of property values (e.g., settings within INI files or preferences dialog).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pascal">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Pascal source file data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="php">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Hypertext Preprocessor data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="plaintext">
+        <xsd:annotation>
+          <xsd:documentation>Indicates plain text file (no formatting other than, possibly, wrapping).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="po">
+        <xsd:annotation>
+          <xsd:documentation>Indicates GNU Portable Object file.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="report">
+        <xsd:annotation>
+          <xsd:documentation>Indicates dynamically generated user defined document. e.g. Oracle Report, Crystal Report, etc.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="resources">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Windows .NET binary resources.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="resx">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Windows .NET Resources.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rtf">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Rich Text Format (RTF) data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="sgml">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - document instance.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="sgmldtd">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Standard Generalized Markup Language (SGML) data - Document Type Definition (DTD).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="svg">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Scalable Vector Graphic (SVG) data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="vbscript">
+        <xsd:annotation>
+          <xsd:documentation>Indicates VisualBasic Script source file.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="warning">
+        <xsd:annotation>
+          <xsd:documentation>Indicates warning message.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="winres">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Windows (Win32) resources (i.e. resources extracted from an RC script, a message file, or a compiled file).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="xhtml">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Extensible HyperText Markup Language (XHTML) data - document instance.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="xml">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Extensible Markup Language (XML) data - document instance.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="xmldtd">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Extensible Markup Language (XML) data - Document Type Definition (DTD).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="xsl">
+        <xsd:annotation>
+          <xsd:documentation>Indicates Extensible Stylesheet Language (XSL) data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="xul">
+        <xsd:annotation>
+          <xsd:documentation>Indicates XUL elements.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="mtypeValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'mtype'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="abbrev">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text is an abbreviation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="abbreviated-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8: A term resulting from the omission of any part of the full term while designating the same concept.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="abbreviation">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8.1: An abbreviated form of a simple term resulting from the omission of some of its letters (e.g. 'adj.' for 'adjective').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="acronym">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8.4: An abbreviated form of a term made up of letters from the full form of a multiword term strung together into a sequence pronounced only syllabically (e.g. 'radar' for 'radio detecting and ranging').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="appellation">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620: A proper-name term, such as the name of an agency or other proper entity.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="collocation">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.18.1: A recurrent word combination characterized by cohesion in that the components of the collocation must co-occur within an utterance or series of utterances, even though they do not necessarily have to maintain immediate proximity to one another.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="common-name">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.5: A synonym for an international scientific term that is used in general discourse in a given language.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="datetime">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text is a date and/or time.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="equation">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.15: An expression used to represent a concept based on a statement that two mathematical expressions are, for instance, equal as identified by the equal sign (=), or assigned to one another by a similar sign.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="expanded-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.7: The complete representation of a term for which there is an abbreviated form.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="formula">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.14: Figures, symbols or the like used to express a concept briefly, such as a mathematical or chemical formula.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="head-term">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.1: The concept designation that has been chosen to head a terminological record.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="initialism">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8.3: An abbreviated form of a term consisting of some of the initial letters of the words making up a multiword term or the term elements making up a compound term when these letters are pronounced individually (e.g. 'BSE' for 'bovine spongiform encephalopathy').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="international-scientific-term">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.4: A term that is part of an international scientific nomenclature as adopted by an appropriate scientific body.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="internationalism">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.6: A term that has the same or nearly identical orthographic or phonemic form in many languages.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="logical-expression">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.16: An expression used to represent a concept based on mathematical or logical relations, such as statements of inequality, set relationships, Boolean operations, and the like.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="materials-management-unit">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.17: A unit to track object.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="name">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text is a name.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="near-synonym">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.3: A term that represents the same or a very similar concept as another term in the same language, but for which interchangeability is limited to some contexts and inapplicable in others.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="part-number">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.17.2: A unique alphanumeric designation assigned to an object in a manufacturing system.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="phrase">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text is a phrase.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="phraseological-unit">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.18: Any group of two or more words that form a unit, the meaning of which frequently cannot be deduced based on the combined sense of the words making up the phrase.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="protected">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text should not be translated.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="romanized-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.12: A form of a term resulting from an operation whereby non-Latin writing systems are converted to the Latin alphabet.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="seg">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the marked text represents a segment.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="set-phrase">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.18.2: A fixed, lexicalized phrase.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="short-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8.2: A variant of a multiword term that includes fewer words than the full form of the term (e.g. 'Group of Twenty-four' for 'Intergovernmental Group of Twenty-four on International Monetary Affairs').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="sku">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.17.1: Stock keeping unit, an inventory item identified by a unique alphanumeric designation assigned to an object in an inventory control system.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="standard-text">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.19: A fixed chunk of recurring text.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="symbol">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.13: A designation of a concept by letters, numerals, pictograms or any combination thereof.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="synonym">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.2: Any term that represents the same or a very similar concept as the main entry term in a term entry.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="synonymous-phrase">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.18.3: Phraseological unit in a language that expresses the same semantic content as another phrase in that same language.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="term">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the marked text is a term.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="transcribed-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.11: A form of a term resulting from an operation whereby the characters of one writing system are represented by characters from another writing system, taking into account the pronunciation of the characters converted.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="transliterated-form">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.10: A form of a term resulting from an operation whereby the characters of an alphabetic writing system are represented by characters from another alphabetic writing system.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="truncated-term">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.8.5: An abbreviated form of a term resulting from the omission of one or more term elements or syllables (e.g. 'flu' for 'influenza').</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="variant">
+        <xsd:annotation>
+          <xsd:documentation>ISO-12620 2.1.9: One of the alternate forms of a term.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="restypeValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'restype'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="auto3state">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC AUTO3STATE control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="autocheckbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC AUTOCHECKBOX control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="autoradiobutton">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC AUTORADIOBUTTON control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="bedit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC BEDIT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="bitmap">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a bitmap, for example a BITMAP resource in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="button">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a button object, for example a BUTTON control Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="caption">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a caption, such as the caption of a dialog box.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cell">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the cell in a table, for example the content of the &lt;td&gt; element in HTML.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="checkbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates check box object, for example a CHECKBOX control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="checkboxmenuitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a menu item with an associated checkbox.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="checkedlistbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a list box, but with a check-box for each item.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="colorchooser">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a color selection dialog.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="combobox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a combination of edit box and listbox object, for example a COMBOBOX control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="comboboxexitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an initialization entry of an extended combobox DLGINIT resource block. (code 0x1234).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="comboboxitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an initialization entry of a combobox DLGINIT resource block (code 0x0403).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="component">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a UI base class element that cannot be represented by any other element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="contextmenu">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a context menu.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="ctext">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC CTEXT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cursor">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a cursor, for example a CURSOR resource in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="datetimepicker">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a date/time picker.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="defpushbutton">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC DEFPUSHBUTTON control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="dialog">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a dialog box.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="dlginit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC DLGINIT resource block.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="edit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an edit box object, for example an EDIT control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="file">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a filename.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="filechooser">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a file dialog.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="fn">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a footnote.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="font">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a font name.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="footer">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a footer.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="frame">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a frame object.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="grid">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a XUL grid element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="groupbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a groupbox object, for example a GROUPBOX control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="header">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a header item.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="heading">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a heading, such has the content of &lt;h1&gt;, &lt;h2&gt;, etc. in HTML.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="hedit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC HEDIT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="hscrollbar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a horizontal scrollbar.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="icon">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an icon, for example an ICON resource in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="iedit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC IEDIT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="keywords">
+        <xsd:annotation>
+          <xsd:documentation>Indicates keyword list, such as the content of the Keywords meta-data in HTML, or a K footnote in WinHelp RTF.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="label">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a label object.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="linklabel">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a label that is also a HTML link (not necessarily a URL).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="list">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a list (a group of list-items, for example an &lt;ol&gt; or &lt;ul&gt; element in HTML).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="listbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a listbox object, for example an LISTBOX control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="listitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an list item (an entry in a list).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="ltext">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC LTEXT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="menu">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a menu (a group of menu-items).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="menubar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a toolbar containing one or more tope level menus.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="menuitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a menu item (an entry in a menu).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="menuseparator">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a XUL menuseparator element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="message">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a message, for example an entry in a MESSAGETABLE resource in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="monthcalendar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a calendar control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="numericupdown">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an edit box beside a spin control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="panel">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a catch all for rectangular areas.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="popupmenu">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a standalone menu not necessarily associated with a menubar.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pushbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a pushbox object, for example a PUSHBOX control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pushbutton">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC PUSHBUTTON control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="radio">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a radio button object.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="radiobuttonmenuitem">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a menuitem with associated radio button.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rcdata">
+        <xsd:annotation>
+          <xsd:documentation>Indicates raw data resources for an application.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="row">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a row in a table.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rtext">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC RTEXT control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="scrollpane">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a user navigable container used to show a portion of a document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="separator">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a generic divider object (e.g. menu group separator).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="shortcut">
+        <xsd:annotation>
+          <xsd:documentation>Windows accelerators, shortcuts in resource or property files.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="spinner">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a UI control to indicate process activity but not progress.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="splitter">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a splitter bar.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="state3">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC STATE3 control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="statusbar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a window for providing feedback to the users, like 'read-only', etc.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="string">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a string, for example an entry in a STRINGTABLE resource in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="tabcontrol">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a layers of controls with a tab to select layers.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="table">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a display and edits regular two-dimensional tables of cells.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="textbox">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a XUL textbox element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="togglebutton">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a UI button that can be toggled to on or off state.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="toolbar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an array of controls, usually buttons.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="tooltip">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a pop up tool tip text.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="trackbar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a bar with a pointer indicating a position within a certain range.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="tree">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a control that displays a set of hierarchical data.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="uri">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a URI (URN or URL).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="userbutton">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a Windows RC USERBUTTON control.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="usercontrol">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a user-defined control like CONTROL control in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="var">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the text of a variable.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="versioninfo">
+        <xsd:annotation>
+          <xsd:documentation>Indicates version information about a resource like VERSIONINFO in Windows.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="vscrollbar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a vertical scrollbar.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="window">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a graphical window.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="size-unitValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'size-unit'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="byte">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in 8-bit bytes.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="char">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in Unicode characters.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="col">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in columns. Used for HTML text area.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="cm">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in centimeters.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="dlgunit">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in dialog units, as defined in Windows resources.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="em">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in 'font-size' units (as defined in CSS).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="ex">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in 'x-height' units (as defined in CSS).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="glyph">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in glyphs. A glyph is considered to be one or more combined Unicode characters that represent a single displayable text character. Sometimes referred to as a 'grapheme cluster'</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="in">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in inches.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="mm">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in millimeters.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="percent">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in percentage.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="pixel">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in pixels.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="point">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in point.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="row">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a size in rows. Used for HTML text area.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="stateValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'state'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="final">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the terminating state.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-adaptation">
+        <xsd:annotation>
+          <xsd:documentation>Indicates only non-textual information needs adaptation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-l10n">
+        <xsd:annotation>
+          <xsd:documentation>Indicates both text and non-textual information needs adaptation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-review-adaptation">
+        <xsd:annotation>
+          <xsd:documentation>Indicates only non-textual information needs review.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-review-l10n">
+        <xsd:annotation>
+          <xsd:documentation>Indicates both text and non-textual information needs review.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-review-translation">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that only the text of the item needs to be reviewed.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="needs-translation">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item needs to be translated.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="new">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item is new. For example, translation units that were not in a previous version of the document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="signed-off">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that changes are reviewed and approved.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="translated">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item has been translated.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="state-qualifierValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'state-qualifier'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="exact-match">
+        <xsd:annotation>
+          <xsd:documentation>Indicates an exact match. An exact match occurs when a source text of a segment is exactly the same as the source text of a segment that was translated previously.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="fuzzy-match">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a fuzzy match. A fuzzy match occurs when a source text of a segment is very similar to the source text of a segment that was translated previously (e.g. when the difference is casing, a few changed words, white-space discripancy, etc.).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="id-match">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a match based on matching IDs (in addition to matching text).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="leveraged-glossary">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a translation derived from a glossary.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="leveraged-inherited">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a translation derived from existing translation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="leveraged-mt">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a translation derived from machine translation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="leveraged-repository">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a translation derived from a translation repository.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="leveraged-tm">
+        <xsd:annotation>
+          <xsd:documentation>Indicates a translation derived from a translation memory.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="mt-suggestion">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the translation is suggested by machine translation.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rejected-grammar">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item has been rejected because of incorrect grammar.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rejected-inaccurate">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item has been rejected because it is incorrect.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rejected-length">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item has been rejected because it is too long or too short.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rejected-spelling">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the item has been rejected because of incorrect spelling.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="tm-suggestion">
+        <xsd:annotation>
+          <xsd:documentation>Indicates the translation is suggested by translation memory.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="unitValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'unit'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="word">
+        <xsd:annotation>
+          <xsd:documentation>Refers to words.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="page">
+        <xsd:annotation>
+          <xsd:documentation>Refers to pages.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="trans-unit">
+        <xsd:annotation>
+          <xsd:documentation>Refers to &lt;trans-unit&gt; elements.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="bin-unit">
+        <xsd:annotation>
+          <xsd:documentation>Refers to &lt;bin-unit&gt; elements.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="glyph">
+        <xsd:annotation>
+          <xsd:documentation>Refers to glyphs.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="item">
+        <xsd:annotation>
+          <xsd:documentation>Refers to &lt;trans-unit&gt; and/or &lt;bin-unit&gt; elements.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="instance">
+        <xsd:annotation>
+          <xsd:documentation>Refers to the occurrences of instances defined by the count-type value.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="character">
+        <xsd:annotation>
+          <xsd:documentation>Refers to characters.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="line">
+        <xsd:annotation>
+          <xsd:documentation>Refers to lines.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="sentence">
+        <xsd:annotation>
+          <xsd:documentation>Refers to sentences.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="paragraph">
+        <xsd:annotation>
+          <xsd:documentation>Refers to paragraphs.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="segment">
+        <xsd:annotation>
+          <xsd:documentation>Refers to segments.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="placeable">
+        <xsd:annotation>
+          <xsd:documentation>Refers to placeables (inline elements).</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="priorityValueList">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'priority'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:positiveInteger">
+      <xsd:enumeration value="1">
+        <xsd:annotation>
+          <xsd:documentation>Highest priority.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="2">
+        <xsd:annotation>
+          <xsd:documentation>High priority.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="3">
+        <xsd:annotation>
+          <xsd:documentation>High priority, but not as important as 2.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="4">
+        <xsd:annotation>
+          <xsd:documentation>High priority, but not as important as 3.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="5">
+        <xsd:annotation>
+          <xsd:documentation>Medium priority, but more important than 6.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="6">
+        <xsd:annotation>
+          <xsd:documentation>Medium priority, but less important than 5.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="7">
+        <xsd:annotation>
+          <xsd:documentation>Low priority, but more important than 8.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="8">
+        <xsd:annotation>
+          <xsd:documentation>Low priority, but more important than 9.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="9">
+        <xsd:annotation>
+          <xsd:documentation>Low priority.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="10">
+        <xsd:annotation>
+          <xsd:documentation>Lowest priority.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="reformatValueYesNo">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="yes">
+        <xsd:annotation>
+          <xsd:documentation>This value indicates that all properties can be reformatted. This value must be used alone.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="no">
+        <xsd:annotation>
+          <xsd:documentation>This value indicates that no properties should be reformatted. This value must be used alone.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="reformatValueList">
+    <xsd:list>
+      <xsd:simpleType>
+        <xsd:union memberTypes="xlf:XTend">
+          <xsd:simpleType>
+            <xsd:restriction base="xsd:string">
+              <xsd:enumeration value="coord">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that all information in the coord attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="coord-x">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the x information in the coord attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="coord-y">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the y information in the coord attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="coord-cx">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the cx information in the coord attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="coord-cy">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the cy information in the coord attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="font">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that all the information in the font attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="font-name">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the name information in the font attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="font-size">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the size information in the font attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="font-weight">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the weight information in the font attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="css-style">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the information in the css-style attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="style">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the information in the style attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+              <xsd:enumeration value="ex-style">
+                <xsd:annotation>
+                  <xsd:documentation>This value indicates that the information in the exstyle attribute can be modified.</xsd:documentation>
+                </xsd:annotation>
+              </xsd:enumeration>
+            </xsd:restriction>
+          </xsd:simpleType>
+        </xsd:union>
+      </xsd:simpleType>
+    </xsd:list>
+  </xsd:simpleType>
+  <xsd:simpleType name="purposeValueList">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="information">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the context is informational in nature, specifying for example, how a term should be translated. Thus, should be displayed to anyone editing the XLIFF document.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="location">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the context-group is used to specify where the term was found in the translatable source. Thus, it is not displayed.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="match">
+        <xsd:annotation>
+          <xsd:documentation>Indicates that the context information should be used during translation memory lookups. Thus, it is not displayed.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="alttranstypeValueList">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="proposal">
+        <xsd:annotation>
+          <xsd:documentation>Represents a translation proposal from a translation memory or other resource.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="previous-version">
+        <xsd:annotation>
+          <xsd:documentation>Represents a previous version of the target element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="rejected">
+        <xsd:annotation>
+          <xsd:documentation>Represents a rejected version of the target element.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="reference">
+        <xsd:annotation>
+          <xsd:documentation>Represents a translation to be used for reference purposes only, for example from a related product or a different language.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+      <xsd:enumeration value="accepted">
+        <xsd:annotation>
+          <xsd:documentation>Represents a proposed translation that was used for the translation of the trans-unit, possibly modified.</xsd:documentation>
+        </xsd:annotation>
+      </xsd:enumeration>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <!-- Other Types -->
+  <xsd:complexType name="ElemType_ExternalReference">
+    <xsd:choice>
+      <xsd:element ref="xlf:internal-file"/>
+      <xsd:element ref="xlf:external-file"/>
+    </xsd:choice>
+  </xsd:complexType>
+  <xsd:simpleType name="AttrType_purpose">
+    <xsd:list>
+      <xsd:simpleType>
+        <xsd:union memberTypes="xlf:purposeValueList xlf:XTend"/>
+      </xsd:simpleType>
+    </xsd:list>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_datatype">
+    <xsd:union memberTypes="xlf:datatypeValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_restype">
+    <xsd:union memberTypes="xlf:restypeValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_alttranstype">
+    <xsd:union memberTypes="xlf:alttranstypeValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_context-type">
+    <xsd:union memberTypes="xlf:context-typeValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_state">
+    <xsd:union memberTypes="xlf:stateValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_state-qualifier">
+    <xsd:union memberTypes="xlf:state-qualifierValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_count-type">
+    <xsd:union memberTypes="xlf:restypeValueList xlf:count-typeValueList xlf:datatypeValueList xlf:stateValueList xlf:state-qualifierValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_InlineDelimiters">
+    <xsd:union memberTypes="xlf:InlineDelimitersValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_InlinePlaceholders">
+    <xsd:union memberTypes="xlf:InlinePlaceholdersValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_size-unit">
+    <xsd:union memberTypes="xlf:size-unitValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_mtype">
+    <xsd:union memberTypes="xlf:mtypeValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_unit">
+    <xsd:union memberTypes="xlf:unitValueList xlf:XTend"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_priority">
+    <xsd:union memberTypes="xlf:priorityValueList"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_reformat">
+    <xsd:union memberTypes="xlf:reformatValueYesNo xlf:reformatValueList"/>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_YesNo">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="yes"/>
+      <xsd:enumeration value="no"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_Position">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="open"/>
+      <xsd:enumeration value="close"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_assoc">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="preceding"/>
+      <xsd:enumeration value="following"/>
+      <xsd:enumeration value="both"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_annotates">
+    <xsd:restriction base="xsd:NMTOKEN">
+      <xsd:enumeration value="source"/>
+      <xsd:enumeration value="target"/>
+      <xsd:enumeration value="general"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_Coordinates">
+    <xsd:annotation>
+      <xsd:documentation>Values for the attribute 'coord'.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="(-?\d+|#);(-?\d+|#);(-?\d+|#);(-?\d+|#)"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:simpleType name="AttrType_Version">
+    <xsd:annotation>
+      <xsd:documentation>Version values: 1.0 and 1.1 are allowed for backward compatibility.</xsd:documentation>
+    </xsd:annotation>
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="1.2"/>
+      <xsd:enumeration value="1.1"/>
+      <xsd:enumeration value="1.0"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <!-- Groups -->
+  <xsd:group name="ElemGroup_TextContent">
+    <xsd:choice>
+      <xsd:element ref="xlf:g"/>
+      <xsd:element ref="xlf:bpt"/>
+      <xsd:element ref="xlf:ept"/>
+      <xsd:element ref="xlf:ph"/>
+      <xsd:element ref="xlf:it"/>
+      <xsd:element ref="xlf:mrk"/>
+      <xsd:element ref="xlf:x"/>
+      <xsd:element ref="xlf:bx"/>
+      <xsd:element ref="xlf:ex"/>
+    </xsd:choice>
+  </xsd:group>
+  <xsd:attributeGroup name="AttrGroup_TextContent">
+    <xsd:attribute name="id" type="xsd:string" use="required"/>
+    <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+    <xsd:attribute name="xid" type="xsd:string" use="optional"/>
+    <xsd:attribute name="equiv-text" type="xsd:string" use="optional"/>
+    <xsd:anyAttribute namespace="##any" processContents="skip"/>
+  </xsd:attributeGroup>
+  <!-- XLIFF Structure -->
+  <xsd:element name="xliff">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded">
+        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+        <xsd:element ref="xlf:file"/>
+      </xsd:sequence>
+      <xsd:attribute name="version" type="xlf:AttrType_Version" use="required"/>
+      <xsd:attribute ref="xml:lang" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="file">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element minOccurs="0" ref="xlf:header"/>
+        <xsd:element ref="xlf:body"/>
+      </xsd:sequence>
+      <xsd:attribute name="original" type="xsd:string" use="required"/>
+      <xsd:attribute name="source-language" type="xsd:language" use="required"/>
+      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="required"/>
+      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
+      <xsd:attribute default="manual" name="tool" type="xsd:string" use="optional"/>
+      <xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
+      <xsd:attribute ref="xml:space" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="category" type="xsd:string" use="optional"/>
+      <xsd:attribute name="target-language" type="xsd:language" use="optional"/>
+      <xsd:attribute name="product-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="product-version" type="xsd:string" use="optional"/>
+      <xsd:attribute name="build-num" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_group_id">
+      <xsd:selector xpath=".//xlf:group"/>
+      <xsd:field xpath="@id"/>
+    </xsd:unique>
+    <xsd:key name="K_unit_id">
+      <xsd:selector xpath=".//xlf:trans-unit|.//xlf:bin-unit"/>
+      <xsd:field xpath="@id"/>
+    </xsd:key>
+    <xsd:keyref name="KR_unit_id" refer="xlf:K_unit_id">
+      <xsd:selector xpath=".//bpt|.//ept|.//it|.//ph|.//g|.//x|.//bx|.//ex|.//sub"/>
+      <xsd:field xpath="@xid"/>
+    </xsd:keyref>
+    <xsd:key name="K_tool-id">
+      <xsd:selector xpath="xlf:header/xlf:tool"/>
+      <xsd:field xpath="@tool-id"/>
+    </xsd:key>
+    <xsd:keyref name="KR_file_tool-id" refer="xlf:K_tool-id">
+      <xsd:selector xpath="."/>
+      <xsd:field xpath="@tool-id"/>
+    </xsd:keyref>
+    <xsd:keyref name="KR_phase_tool-id" refer="xlf:K_tool-id">
+      <xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
+      <xsd:field xpath="@tool-id"/>
+    </xsd:keyref>
+    <xsd:keyref name="KR_alt-trans_tool-id" refer="xlf:K_tool-id">
+      <xsd:selector xpath=".//xlf:trans-unit/xlf:alt-trans"/>
+      <xsd:field xpath="@tool-id"/>
+    </xsd:keyref>
+    <xsd:key name="K_count-group_name">
+      <xsd:selector xpath=".//xlf:count-group"/>
+      <xsd:field xpath="@name"/>
+    </xsd:key>
+    <xsd:unique name="U_context-group_name">
+      <xsd:selector xpath=".//xlf:context-group"/>
+      <xsd:field xpath="@name"/>
+    </xsd:unique>
+    <xsd:key name="K_phase-name">
+      <xsd:selector xpath="xlf:header/xlf:phase-group/xlf:phase"/>
+      <xsd:field xpath="@phase-name"/>
+    </xsd:key>
+    <xsd:keyref name="KR_phase-name" refer="xlf:K_phase-name">
+      <xsd:selector xpath=".//xlf:count|.//xlf:trans-unit|.//xlf:target|.//bin-unit|.//bin-target"/>
+      <xsd:field xpath="@phase-name"/>
+    </xsd:keyref>
+    <xsd:unique name="U_uid">
+      <xsd:selector xpath=".//xlf:external-file"/>
+      <xsd:field xpath="@uid"/>
+    </xsd:unique>
+  </xsd:element>
+  <xsd:element name="header">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element minOccurs="0" name="skl" type="xlf:ElemType_ExternalReference"/>
+        <xsd:element minOccurs="0" ref="xlf:phase-group"/>
+        <xsd:choice maxOccurs="unbounded" minOccurs="0">
+          <xsd:element name="glossary" type="xlf:ElemType_ExternalReference"/>
+          <xsd:element name="reference" type="xlf:ElemType_ExternalReference"/>
+          <xsd:element ref="xlf:count-group"/>
+          <xsd:element ref="xlf:prop-group"/>
+          <xsd:element ref="xlf:note"/>
+          <xsd:element ref="xlf:tool"/>
+        </xsd:choice>
+        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="internal-file">
+    <xsd:complexType>
+      <xsd:simpleContent>
+        <xsd:extension base="xsd:string">
+          <xsd:attribute name="form" type="xsd:string"/>
+          <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
+        </xsd:extension>
+      </xsd:simpleContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="external-file">
+    <xsd:complexType>
+      <xsd:attribute name="href" type="xsd:string" use="required"/>
+      <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
+      <xsd:attribute name="uid" type="xsd:NMTOKEN"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="note">
+    <xsd:complexType>
+      <xsd:simpleContent>
+        <xsd:extension base="xsd:string">
+          <xsd:attribute ref="xml:lang" use="optional"/>
+          <xsd:attribute default="1" name="priority" type="xlf:AttrType_priority" use="optional"/>
+          <xsd:attribute name="from" type="xsd:string" use="optional"/>
+          <xsd:attribute default="general" name="annotates" type="xlf:AttrType_annotates" use="optional"/>
+        </xsd:extension>
+      </xsd:simpleContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="phase-group">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded">
+        <xsd:element ref="xlf:phase"/>
+      </xsd:sequence>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="phase">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:note"/>
+      </xsd:sequence>
+      <xsd:attribute name="phase-name" type="xsd:string" use="required"/>
+      <xsd:attribute name="process-name" type="xsd:string" use="required"/>
+      <xsd:attribute name="company-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
+      <xsd:attribute name="tool" type="xsd:string" use="optional"/>
+      <xsd:attribute name="date" type="xsd:dateTime" use="optional"/>
+      <xsd:attribute name="job-id" type="xsd:string" use="optional"/>
+      <xsd:attribute name="contact-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="contact-email" type="xsd:string" use="optional"/>
+      <xsd:attribute name="contact-phone" type="xsd:string" use="optional"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="count-group">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:count"/>
+      </xsd:sequence>
+      <xsd:attribute name="name" type="xsd:string" use="required"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="count">
+    <xsd:complexType>
+      <xsd:simpleContent>
+        <xsd:extension base="xsd:string">
+          <xsd:attribute name="count-type" type="xlf:AttrType_count-type" use="optional"/>
+          <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
+          <xsd:attribute default="word" name="unit" type="xlf:AttrType_unit" use="optional"/>
+        </xsd:extension>
+      </xsd:simpleContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="context-group">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded">
+        <xsd:element ref="xlf:context"/>
+      </xsd:sequence>
+      <xsd:attribute name="name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="purpose" type="xlf:AttrType_purpose" use="optional"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="context">
+    <xsd:complexType>
+      <xsd:simpleContent>
+        <xsd:extension base="xsd:string">
+          <xsd:attribute name="context-type" type="xlf:AttrType_context-type" use="required"/>
+          <xsd:attribute default="no" name="match-mandatory" type="xlf:AttrType_YesNo" use="optional"/>
+          <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
+        </xsd:extension>
+      </xsd:simpleContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="prop-group">
+    <xsd:complexType>
+      <xsd:sequence maxOccurs="unbounded">
+        <xsd:element ref="xlf:prop"/>
+      </xsd:sequence>
+      <xsd:attribute name="name" type="xsd:string" use="optional"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="prop">
+    <xsd:complexType>
+      <xsd:simpleContent>
+        <xsd:extension base="xsd:string">
+          <xsd:attribute name="prop-type" type="xsd:string" use="required"/>
+          <xsd:attribute ref="xml:lang" use="optional"/>
+        </xsd:extension>
+      </xsd:simpleContent>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="tool">
+    <xsd:complexType mixed="true">
+      <xsd:sequence>
+        <xsd:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+      <xsd:attribute name="tool-id" type="xsd:string" use="required"/>
+      <xsd:attribute name="tool-name" type="xsd:string" use="required"/>
+      <xsd:attribute name="tool-version" type="xsd:string" use="optional"/>
+      <xsd:attribute name="tool-company" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="body">
+    <xsd:complexType>
+      <xsd:choice maxOccurs="unbounded" minOccurs="0">
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
+      </xsd:choice>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="group">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:count-group"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:prop-group"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
+          <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+        </xsd:sequence>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:group"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:trans-unit"/>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:bin-unit"/>
+        </xsd:choice>
+      </xsd:sequence>
+      <xsd:attribute name="id" type="xsd:string" use="optional"/>
+      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
+      <xsd:attribute default="default" ref="xml:space" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
+      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
+      <xsd:attribute name="font" type="xsd:string" use="optional"/>
+      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
+      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
+      <xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
+      <xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="charclass" type="xsd:string" use="optional"/>
+      <xsd:attribute default="no" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="trans-unit">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element ref="xlf:source"/>
+        <xsd:element minOccurs="0" ref="xlf:seg-source"/>
+        <xsd:element minOccurs="0" ref="xlf:target"/>
+        <xsd:choice maxOccurs="unbounded" minOccurs="0">
+          <xsd:element ref="xlf:context-group"/>
+          <xsd:element ref="xlf:count-group"/>
+          <xsd:element ref="xlf:prop-group"/>
+          <xsd:element ref="xlf:note"/>
+          <xsd:element ref="xlf:alt-trans"/>
+        </xsd:choice>
+        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+      </xsd:sequence>
+      <xsd:attribute name="id" type="xsd:string" use="required"/>
+      <xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
+      <xsd:attribute default="default" ref="xml:space" use="optional"/>
+      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
+      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
+      <xsd:attribute name="font" type="xsd:string" use="optional"/>
+      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
+      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute default="pixel" name="size-unit" type="xlf:AttrType_size-unit" use="optional"/>
+      <xsd:attribute name="maxwidth" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minwidth" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="maxheight" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minheight" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="maxbytes" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="minbytes" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="charclass" type="xsd:string" use="optional"/>
+      <xsd:attribute default="yes" name="merged-trans" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_tu_segsrc_mid">
+      <xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
+      <xsd:field xpath="@mid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_tu_segsrc_mid" refer="xlf:U_tu_segsrc_mid">
+      <xsd:selector xpath="./xlf:target/xlf:mrk|./xlf:alt-trans"/>
+      <xsd:field xpath="@mid"/>
+    </xsd:keyref>
+  </xsd:element>
+  <xsd:element name="source">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute ref="xml:lang" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_source_bpt_rid">
+      <xsd:selector xpath=".//xlf:bpt"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_source_ept_rid" refer="xlf:U_source_bpt_rid">
+      <xsd:selector xpath=".//xlf:ept"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+    <xsd:unique name="U_source_bx_rid">
+      <xsd:selector xpath=".//xlf:bx"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_source_ex_rid" refer="xlf:U_source_bx_rid">
+      <xsd:selector xpath=".//xlf:ex"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+  </xsd:element>
+  <xsd:element name="seg-source">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute ref="xml:lang" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_segsrc_bpt_rid">
+      <xsd:selector xpath=".//xlf:bpt"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_segsrc_ept_rid" refer="xlf:U_segsrc_bpt_rid">
+      <xsd:selector xpath=".//xlf:ept"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+    <xsd:unique name="U_segsrc_bx_rid">
+      <xsd:selector xpath=".//xlf:bx"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_segsrc_ex_rid" refer="xlf:U_segsrc_bx_rid">
+      <xsd:selector xpath=".//xlf:ex"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+  </xsd:element>
+  <xsd:element name="target">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
+      <xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
+      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute ref="xml:lang" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
+      <xsd:attribute name="font" type="xsd:string" use="optional"/>
+      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
+      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute default="yes" name="equiv-trans" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_target_bpt_rid">
+      <xsd:selector xpath=".//xlf:bpt"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_target_ept_rid" refer="xlf:U_target_bpt_rid">
+      <xsd:selector xpath=".//xlf:ept"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+    <xsd:unique name="U_target_bx_rid">
+      <xsd:selector xpath=".//xlf:bx"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_target_ex_rid" refer="xlf:U_target_bx_rid">
+      <xsd:selector xpath=".//xlf:ex"/>
+      <xsd:field xpath="@rid"/>
+    </xsd:keyref>
+  </xsd:element>
+  <xsd:element name="alt-trans">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element minOccurs="0" ref="xlf:source"/>
+        <xsd:element minOccurs="0" ref="xlf:seg-source"/>
+        <xsd:element maxOccurs="unbounded" ref="xlf:target"/>
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:context-group"/>
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:prop-group"/>
+        <xsd:element maxOccurs="unbounded" minOccurs="0" ref="xlf:note"/>
+        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+      </xsd:sequence>
+      <xsd:attribute name="match-quality" type="xsd:string" use="optional"/>
+      <xsd:attribute name="tool-id" type="xsd:string" use="optional"/>
+      <xsd:attribute name="tool" type="xsd:string" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute ref="xml:lang" use="optional"/>
+      <xsd:attribute name="origin" type="xsd:string" use="optional"/>
+      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
+      <xsd:attribute default="default" ref="xml:space" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extradata" type="xsd:string" use="optional"/>
+      <xsd:attribute name="extype" type="xsd:string" use="optional"/>
+      <xsd:attribute name="help-id" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="menu" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-option" type="xsd:string" use="optional"/>
+      <xsd:attribute name="menu-name" type="xsd:string" use="optional"/>
+      <xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="coord" type="xlf:AttrType_Coordinates" use="optional"/>
+      <xsd:attribute name="font" type="xsd:string" use="optional"/>
+      <xsd:attribute name="css-style" type="xsd:string" use="optional"/>
+      <xsd:attribute name="style" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="exstyle" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute default="proposal" name="alttranstype" type="xlf:AttrType_alttranstype" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+    <xsd:unique name="U_at_segsrc_mid">
+      <xsd:selector xpath="./xlf:seg-source/xlf:mrk"/>
+      <xsd:field xpath="@mid"/>
+    </xsd:unique>
+    <xsd:keyref name="KR_at_segsrc_mid" refer="xlf:U_at_segsrc_mid">
+      <xsd:selector xpath="./xlf:target/xlf:mrk"/>
+      <xsd:field xpath="@mid"/>
+    </xsd:keyref>
+  </xsd:element>
+  <xsd:element name="bin-unit">
+    <xsd:complexType>
+      <xsd:sequence>
+        <xsd:element ref="xlf:bin-source"/>
+        <xsd:element minOccurs="0" ref="xlf:bin-target"/>
+        <xsd:choice maxOccurs="unbounded" minOccurs="0">
+          <xsd:element ref="xlf:context-group"/>
+          <xsd:element ref="xlf:count-group"/>
+          <xsd:element ref="xlf:prop-group"/>
+          <xsd:element ref="xlf:note"/>
+          <xsd:element ref="xlf:trans-unit"/>
+        </xsd:choice>
+        <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="skip"/>
+      </xsd:sequence>
+      <xsd:attribute name="id" type="xsd:string" use="required"/>
+      <xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="required"/>
+      <xsd:attribute name="approved" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attribute default="yes" name="translate" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attribute default="yes" name="reformat" type="xlf:AttrType_reformat" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:attribute name="phase-name" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="bin-source">
+    <xsd:complexType>
+      <xsd:choice>
+        <xsd:element ref="xlf:internal-file"/>
+        <xsd:element ref="xlf:external-file"/>
+      </xsd:choice>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="bin-target">
+    <xsd:complexType>
+      <xsd:choice>
+        <xsd:element ref="xlf:internal-file"/>
+        <xsd:element ref="xlf:external-file"/>
+      </xsd:choice>
+      <xsd:attribute name="mime-type" type="xlf:mime-typeValueList" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:attribute name="state" type="xlf:AttrType_state" use="optional"/>
+      <xsd:attribute name="state-qualifier" type="xlf:AttrType_state-qualifier" use="optional"/>
+      <xsd:attribute name="phase-name" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="restype" type="xlf:AttrType_restype" use="optional"/>
+      <xsd:attribute name="resname" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+  <!-- Element for inline codes -->
+  <xsd:element name="g">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
+      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="x">
+    <xsd:complexType>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
+      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="bx">
+    <xsd:complexType>
+      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
+      <xsd:attribute default="yes" name="clone" type="xlf:AttrType_YesNo" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="ex">
+    <xsd:complexType>
+      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="ph">
+    <xsd:complexType mixed="true">
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:sub"/>
+      </xsd:sequence>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlinePlaceholders" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
+      <xsd:attribute name="assoc" type="xlf:AttrType_assoc" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="bpt">
+    <xsd:complexType mixed="true">
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:sub"/>
+      </xsd:sequence>
+      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="ept">
+    <xsd:complexType mixed="true">
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:sub"/>
+      </xsd:sequence>
+      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="it">
+    <xsd:complexType mixed="true">
+      <xsd:sequence maxOccurs="unbounded" minOccurs="0">
+        <xsd:element ref="xlf:sub"/>
+      </xsd:sequence>
+      <xsd:attribute name="pos" type="xlf:AttrType_Position" use="required"/>
+      <xsd:attribute name="rid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
+      <xsd:attribute name="crc" type="xsd:string" use="optional"/>
+      <xsd:attributeGroup ref="xlf:AttrGroup_TextContent"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="sub">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute name="datatype" type="xlf:AttrType_datatype" use="optional"/>
+      <xsd:attribute name="ctype" type="xlf:AttrType_InlineDelimiters" use="optional"/>
+      <xsd:attribute name="xid" type="xsd:string" use="optional"/>
+    </xsd:complexType>
+  </xsd:element>
+  <xsd:element name="mrk">
+    <xsd:complexType mixed="true">
+      <xsd:group maxOccurs="unbounded" minOccurs="0" ref="xlf:ElemGroup_TextContent"/>
+      <xsd:attribute name="mtype" type="xlf:AttrType_mtype" use="required"/>
+      <xsd:attribute name="mid" type="xsd:NMTOKEN" use="optional"/>
+      <xsd:attribute name="comment" type="xsd:string" use="optional"/>
+      <xsd:attribute name="ts" type="xsd:string" use="optional"/>
+      <xsd:anyAttribute namespace="##any" processContents="skip"/>
+    </xsd:complexType>
+  </xsd:element>
+</xsd:schema>
diff --git a/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd b/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd
new file mode 100644
index 00000000..963232f9
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    XLIFF Version 2.0
+    OASIS Standard
+    05 August 2014
+    Copyright (c) OASIS Open 2014. All rights reserved.
+    Source: http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/
+     -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+    elementFormDefault="qualified"
+    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
+    targetNamespace="urn:oasis:names:tc:xliff:document:2.0">
+
+  <!-- Import -->
+
+  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+      schemaLocation="informativeCopiesOf3rdPartySchemas/w3c/xml.xsd"/>
+
+  <!-- Element Group -->
+
+  <xs:group name="inline">
+    <xs:choice>
+      <xs:element ref="xlf:cp"/>
+      <xs:element ref="xlf:ph"/>
+      <xs:element ref="xlf:pc"/>
+      <xs:element ref="xlf:sc"/>
+      <xs:element ref="xlf:ec"/>
+      <xs:element ref="xlf:mrk"/>
+      <xs:element ref="xlf:sm"/>
+      <xs:element ref="xlf:em"/>
+    </xs:choice>
+  </xs:group>
+
+  <!-- Attribute Types -->
+
+  <xs:simpleType name="yesNo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="no"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="yesNoFirstNo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="yes"/>
+      <xs:enumeration value="firstNo"/>
+      <xs:enumeration value="no"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="dirValue">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="ltr"/>
+      <xs:enumeration value="rtl"/>
+      <xs:enumeration value="auto"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="appliesTo">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="source"/>
+      <xs:enumeration value="target"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="userDefinedValue">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[^\s:]+:[^\s:]+"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="attrType_type">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="fmt"/>
+      <xs:enumeration value="ui"/>
+      <xs:enumeration value="quote"/>
+      <xs:enumeration value="link"/>
+      <xs:enumeration value="image"/>
+      <xs:enumeration value="other"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="typeForMrkValues">
+    <xs:restriction base="xs:NMTOKEN">
+      <xs:enumeration value="generic"/>
+      <xs:enumeration value="comment"/>
+      <xs:enumeration value="term"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="attrType_typeForMrk">
+    <xs:union memberTypes="xlf:typeForMrkValues xlf:userDefinedValue"/>
+  </xs:simpleType>
+
+  <xs:simpleType name="priorityValue">
+    <xs:restriction base="xs:positiveInteger">
+      <xs:minInclusive value="1"/>
+      <xs:maxInclusive value="10"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <xs:simpleType name="stateType">
+    <xs:restriction base="xs:string">
+      <xs:enumeration value="initial"/>
+      <xs:enumeration value="translated"/>
+      <xs:enumeration value="reviewed"/>
+      <xs:enumeration value="final"/>
+    </xs:restriction>
+  </xs:simpleType>
+
+  <!-- Structural Elements -->
+
+  <xs:element name="xliff">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:file"/>
+      </xs:sequence>
+      <xs:attribute name="version" use="required"/>
+      <xs:attribute name="srcLang" use="required"/>
+      <xs:attribute name="trgLang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional" default="default"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="file">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:skeleton"/>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:choice minOccurs="1" maxOccurs="unbounded">
+          <xs:element ref="xlf:unit"/>
+          <xs:element ref="xlf:group"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="original" use="optional"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="skeleton">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+      </xs:sequence>
+      <xs:attribute name="href" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="group">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:choice minOccurs="0" maxOccurs="unbounded">
+          <xs:element ref="xlf:unit"/>
+          <xs:element ref="xlf:group"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="name" use="optional"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="unit">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
+            processContents="lax"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:originalData"/>
+        <xs:choice minOccurs="1" maxOccurs="unbounded">
+          <xs:element ref="xlf:segment"/>
+          <xs:element ref="xlf:ignorable"/>
+        </xs:choice>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="name" use="optional"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:attribute name="type" use="optional" type="xlf:userDefinedValue"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="segment">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="state" use="optional" type="xlf:stateType" default="initial"/>
+      <xs:attribute name="subState" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ignorable">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/>
+        <xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="notes">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:note"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="note">
+    <xs:complexType mixed="true">
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="appliesTo" use="optional" type="xlf:appliesTo"/>
+      <xs:attribute name="category" use="optional"/>
+      <xs:attribute name="priority" use="optional" type="xlf:priorityValue" default="1"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="originalData">
+    <xs:complexType mixed="false">
+      <xs:sequence>
+        <xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:data"/>
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="data">
+    <xs:complexType mixed="true">
+      <xs:sequence>
+        <xs:element minOccurs="0" maxOccurs="unbounded" ref="xlf:cp"/>
+      </xs:sequence>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue" default="auto"/>
+      <xs:attribute ref="xml:space" use="optional" fixed="preserve"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="source">
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute ref="xml:lang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="target">
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute ref="xml:lang" use="optional"/>
+      <xs:attribute ref="xml:space" use="optional"/>
+      <xs:attribute name="order" use="optional" type="xs:positiveInteger"/>
+    </xs:complexType>
+  </xs:element>
+
+  <!-- Inline Elements -->
+
+  <xs:element name="cp">
+    <!-- Code Point -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="hex" use="required" type="xs:hexBinary"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ph">
+    <!-- Placeholder -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="pc">
+    <!-- Paired Code -->
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dispEnd" use="optional"/>
+      <xs:attribute name="dispStart" use="optional"/>
+      <xs:attribute name="equivEnd" use="optional"/>
+      <xs:attribute name="equivStart" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRefEnd" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRefStart" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlowsEnd" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subFlowsStart" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="sc">
+    <!-- Start Code -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="ec">
+    <!-- End Code -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="canCopy" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canDelete" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canOverlap" use="optional" type="xlf:yesNo" default="yes"/>
+      <xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/>
+      <xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="dir" use="optional" type="xlf:dirValue"/>
+      <xs:attribute name="disp" use="optional"/>
+      <xs:attribute name="equiv" use="optional"/>
+      <xs:attribute name="id" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="isolated" use="optional" type="xlf:yesNo" default="no"/>
+      <xs:attribute name="startRef" use="optional" type="xs:NMTOKEN"/>
+      <xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/>
+      <xs:attribute name="subType" use="optional" type="xlf:userDefinedValue"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_type"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="mrk">
+    <!-- Annotation Marker -->
+    <xs:complexType mixed="true">
+      <xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/>
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
+      <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
+      <xs:attribute name="value" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="sm">
+    <!-- Start Annotation Marker -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="id" use="required" type="xs:NMTOKEN"/>
+      <xs:attribute name="translate" use="optional" type="xlf:yesNo"/>
+      <xs:attribute name="type" use="optional" type="xlf:attrType_typeForMrk"/>
+      <xs:attribute name="ref" use="optional" type="xs:anyURI"/>
+      <xs:attribute name="value" use="optional"/>
+      <xs:anyAttribute namespace="##other" processContents="lax"/>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:element name="em">
+    <!-- End Annotation Marker -->
+    <xs:complexType mixed="false">
+      <xs:attribute name="startRef" use="required" type="xs:NMTOKEN"/>
+    </xs:complexType>
+  </xs:element>
+
+</xs:schema>
diff --git a/htdocs/vendor/symfony/translation/Resources/schemas/xml.xsd b/htdocs/vendor/symfony/translation/Resources/schemas/xml.xsd
new file mode 100644
index 00000000..a46162a7
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Resources/schemas/xml.xsd
@@ -0,0 +1,309 @@
+<?xml version='1.0'?>
+<?xml-stylesheet href="../2008/09/xsd.xsl" type="text/xsl"?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" 
+  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
+  xmlns ="http://www.w3.org/1999/xhtml"
+  xml:lang="en">
+
+ <xs:annotation>
+  <xs:documentation>
+   <div>
+    <h1>About the XML namespace</h1>
+
+    <div class="bodytext">
+     <p>
+
+      This schema document describes the XML namespace, in a form
+      suitable for import by other schema documents.
+     </p>
+     <p>
+      See <a href="http://www.w3.org/XML/1998/namespace.html">
+      http://www.w3.org/XML/1998/namespace.html</a> and
+      <a href="http://www.w3.org/TR/REC-xml">
+      http://www.w3.org/TR/REC-xml</a> for information 
+      about this namespace.
+     </p>
+
+     <p>
+      Note that local names in this namespace are intended to be
+      defined only by the World Wide Web Consortium or its subgroups.
+      The names currently defined in this namespace are listed below.
+      They should not be used with conflicting semantics by any Working
+      Group, specification, or document instance.
+     </p>
+     <p>   
+      See further below in this document for more information about <a
+      href="#usage">how to refer to this schema document from your own
+      XSD schema documents</a> and about <a href="#nsversioning">the
+      namespace-versioning policy governing this schema document</a>.
+     </p>
+    </div>
+   </div>
+
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>lang (as an attribute name)</h3>
+      <p>
+
+       denotes an attribute whose value
+       is a language code for the natural language of the content of
+       any element; its value is inherited.  This name is reserved
+       by virtue of its definition in the XML specification.</p>
+     
+    </div>
+    <div>
+     <h4>Notes</h4>
+     <p>
+      Attempting to install the relevant ISO 2- and 3-letter
+      codes as the enumerated possible values is probably never
+      going to be a realistic possibility.  
+     </p>
+     <p>
+
+      See BCP 47 at <a href="http://www.rfc-editor.org/rfc/bcp/bcp47.txt">
+       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>
+      and the IANA language subtag registry at
+      <a href="http://www.iana.org/assignments/language-subtag-registry">
+       http://www.iana.org/assignments/language-subtag-registry</a>
+      for further information.
+     </p>
+     <p>
+
+      The union allows for the 'un-declaration' of xml:lang with
+      the empty string.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+   <xs:union memberTypes="xs:language">
+    <xs:simpleType>    
+     <xs:restriction base="xs:string">
+      <xs:enumeration value=""/>
+
+     </xs:restriction>
+    </xs:simpleType>
+   </xs:union>
+  </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+  <xs:annotation>
+   <xs:documentation>
+
+    <div>
+     
+      <h3>space (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose
+       value is a keyword indicating what whitespace processing
+       discipline is intended for the content of the element; its
+       value is inherited.  This name is reserved by virtue of its
+       definition in the XML specification.</p>
+     
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+  <xs:simpleType>
+
+   <xs:restriction base="xs:NCName">
+    <xs:enumeration value="default"/>
+    <xs:enumeration value="preserve"/>
+   </xs:restriction>
+  </xs:simpleType>
+ </xs:attribute>
+ 
+ <xs:attribute name="base" type="xs:anyURI"> <xs:annotation>
+   <xs:documentation>
+
+    <div>
+     
+      <h3>base (as an attribute name)</h3>
+      <p>
+       denotes an attribute whose value
+       provides a URI to be used as the base for interpreting any
+       relative URIs in the scope of the element on which it
+       appears; its value is inherited.  This name is reserved
+       by virtue of its definition in the XML Base specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a>
+      for information about this attribute.
+     </p>
+
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+ </xs:attribute>
+ 
+ <xs:attribute name="id" type="xs:ID">
+  <xs:annotation>
+   <xs:documentation>
+    <div>
+     
+      <h3>id (as an attribute name)</h3> 
+      <p>
+
+       denotes an attribute whose value
+       should be interpreted as if declared to be of type ID.
+       This name is reserved by virtue of its definition in the
+       xml:id specification.</p>
+     
+     <p>
+      See <a
+      href="http://www.w3.org/TR/xml-id/">http://www.w3.org/TR/xml-id/</a>
+      for information about this attribute.
+     </p>
+    </div>
+   </xs:documentation>
+  </xs:annotation>
+
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+  <xs:attribute ref="xml:base"/>
+  <xs:attribute ref="xml:lang"/>
+  <xs:attribute ref="xml:space"/>
+  <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+ <xs:annotation>
+
+  <xs:documentation>
+   <div>
+   
+    <h3>Father (in any context at all)</h3> 
+
+    <div class="bodytext">
+     <p>
+      denotes Jon Bosak, the chair of 
+      the original XML Working Group.  This name is reserved by 
+      the following decision of the W3C XML Plenary and 
+      XML Coordination groups:
+     </p>
+     <blockquote>
+       <p>
+
+	In appreciation for his vision, leadership and
+	dedication the W3C XML Plenary on this 10th day of
+	February, 2000, reserves for Jon Bosak in perpetuity
+	the XML name "xml:Father".
+       </p>
+     </blockquote>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+
+   <div xml:id="usage" id="usage">
+    <h2><a name="usage">About this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      This schema defines attributes and an attribute group suitable
+      for use by schemas wishing to allow <code>xml:base</code>,
+      <code>xml:lang</code>, <code>xml:space</code> or
+      <code>xml:id</code> attributes on elements they define.
+     </p>
+
+     <p>
+      To enable this, such a schema must import this schema for
+      the XML namespace, e.g. as follows:
+     </p>
+     <pre>
+          &lt;schema.. .>
+          .. .
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+     </pre>
+     <p>
+      or
+     </p>
+     <pre>
+
+           &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+                      schemaLocation="http://www.w3.org/2009/01/xml.xsd"/>
+     </pre>
+     <p>
+      Subsequently, qualified reference to any of the attributes or the
+      group defined below will have the desired effect, e.g.
+     </p>
+     <pre>
+          &lt;type.. .>
+          .. .
+           &lt;attributeGroup ref="xml:specialAttrs"/>
+     </pre>
+     <p>
+      will define a type which will schema-validate an instance element
+      with any of those attributes.
+     </p>
+
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+  <xs:documentation>
+   <div id="nsversioning" xml:id="nsversioning">
+    <h2><a name="nsversioning">Versioning policy for this schema document</a></h2>
+
+    <div class="bodytext">
+     <p>
+      In keeping with the XML Schema WG's standard versioning
+      policy, this schema document will persist at
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd</a>.
+     </p>
+     <p>
+      At the date of issue it can also be found at
+      <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd</a>.
+     </p>
+
+     <p>
+      The schema document at that URI may however change in the future,
+      in order to remain compatible with the latest version of XML
+      Schema itself, or with the XML namespace itself.  In other words,
+      if the XML Schema or XML namespaces change, the version of this
+      document at <a href="http://www.w3.org/2001/xml.xsd">
+       http://www.w3.org/2001/xml.xsd 
+      </a> 
+      will change accordingly; the version at 
+      <a href="http://www.w3.org/2009/01/xml.xsd">
+       http://www.w3.org/2009/01/xml.xsd 
+      </a> 
+      will not change.
+     </p>
+     <p>
+
+      Previous dated (and unchanging) versions of this schema 
+      document are at:
+     </p>
+     <ul>
+      <li><a href="http://www.w3.org/2009/01/xml.xsd">
+	http://www.w3.org/2009/01/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2007/08/xml.xsd">
+	http://www.w3.org/2007/08/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2004/10/xml.xsd">
+
+	http://www.w3.org/2004/10/xml.xsd</a></li>
+      <li><a href="http://www.w3.org/2001/03/xml.xsd">
+	http://www.w3.org/2001/03/xml.xsd</a></li>
+     </ul>
+    </div>
+   </div>
+  </xs:documentation>
+ </xs:annotation>
+
+</xs:schema>
diff --git a/htdocs/vendor/symfony/translation/Test/ProviderFactoryTestCase.php b/htdocs/vendor/symfony/translation/Test/ProviderFactoryTestCase.php
new file mode 100644
index 00000000..d1259c7e
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Test/ProviderFactoryTestCase.php
@@ -0,0 +1,155 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Test;
+
+use PHPUnit\Framework\MockObject\MockObject;
+use PHPUnit\Framework\TestCase;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\HttpClient\MockHttpClient;
+use Symfony\Component\Translation\Dumper\XliffFileDumper;
+use Symfony\Component\Translation\Exception\IncompleteDsnException;
+use Symfony\Component\Translation\Exception\UnsupportedSchemeException;
+use Symfony\Component\Translation\Loader\LoaderInterface;
+use Symfony\Component\Translation\Provider\Dsn;
+use Symfony\Component\Translation\Provider\ProviderFactoryInterface;
+use Symfony\Component\Translation\TranslatorBagInterface;
+use Symfony\Contracts\HttpClient\HttpClientInterface;
+
+/**
+ * A test case to ease testing a translation provider factory.
+ *
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ *
+ * @internal
+ */
+abstract class ProviderFactoryTestCase extends TestCase
+{
+    protected HttpClientInterface $client;
+    protected LoggerInterface|MockObject $logger;
+    protected string $defaultLocale;
+    protected LoaderInterface|MockObject $loader;
+    protected XliffFileDumper|MockObject $xliffFileDumper;
+    protected TranslatorBagInterface|MockObject $translatorBag;
+
+    abstract public function createFactory(): ProviderFactoryInterface;
+
+    /**
+     * @return iterable<array{0: bool, 1: string}>
+     */
+    abstract public function supportsProvider(): iterable;
+
+    /**
+     * @return iterable<array{0: string, 1: string, 2: TransportInterface}>
+     */
+    abstract public function createProvider(): iterable;
+
+    /**
+     * @return iterable<array{0: string, 1: string|null}>
+     */
+    public function unsupportedSchemeProvider(): iterable
+    {
+        return [];
+    }
+
+    /**
+     * @return iterable<array{0: string, 1: string|null}>
+     */
+    public function incompleteDsnProvider(): iterable
+    {
+        return [];
+    }
+
+    /**
+     * @dataProvider supportsProvider
+     */
+    public function testSupports(bool $expected, string $dsn)
+    {
+        $factory = $this->createFactory();
+
+        $this->assertSame($expected, $factory->supports(new Dsn($dsn)));
+    }
+
+    /**
+     * @dataProvider createProvider
+     */
+    public function testCreate(string $expected, string $dsn)
+    {
+        $factory = $this->createFactory();
+        $provider = $factory->create(new Dsn($dsn));
+
+        $this->assertSame($expected, (string) $provider);
+    }
+
+    /**
+     * @dataProvider unsupportedSchemeProvider
+     */
+    public function testUnsupportedSchemeException(string $dsn, string $message = null)
+    {
+        $factory = $this->createFactory();
+
+        $dsn = new Dsn($dsn);
+
+        $this->expectException(UnsupportedSchemeException::class);
+        if (null !== $message) {
+            $this->expectExceptionMessage($message);
+        }
+
+        $factory->create($dsn);
+    }
+
+    /**
+     * @dataProvider incompleteDsnProvider
+     */
+    public function testIncompleteDsnException(string $dsn, string $message = null)
+    {
+        $factory = $this->createFactory();
+
+        $dsn = new Dsn($dsn);
+
+        $this->expectException(IncompleteDsnException::class);
+        if (null !== $message) {
+            $this->expectExceptionMessage($message);
+        }
+
+        $factory->create($dsn);
+    }
+
+    protected function getClient(): HttpClientInterface
+    {
+        return $this->client ??= new MockHttpClient();
+    }
+
+    protected function getLogger(): LoggerInterface
+    {
+        return $this->logger ??= $this->createMock(LoggerInterface::class);
+    }
+
+    protected function getDefaultLocale(): string
+    {
+        return $this->defaultLocale ??= 'en';
+    }
+
+    protected function getLoader(): LoaderInterface
+    {
+        return $this->loader ??= $this->createMock(LoaderInterface::class);
+    }
+
+    protected function getXliffFileDumper(): XliffFileDumper
+    {
+        return $this->xliffFileDumper ??= $this->createMock(XliffFileDumper::class);
+    }
+
+    protected function getTranslatorBag(): TranslatorBagInterface
+    {
+        return $this->translatorBag ??= $this->createMock(TranslatorBagInterface::class);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Test/ProviderTestCase.php b/htdocs/vendor/symfony/translation/Test/ProviderTestCase.php
new file mode 100644
index 00000000..6de24ac3
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Test/ProviderTestCase.php
@@ -0,0 +1,84 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Test;
+
+use PHPUnit\Framework\MockObject\MockObject;
+use PHPUnit\Framework\TestCase;
+use Psr\Log\LoggerInterface;
+use Symfony\Component\HttpClient\MockHttpClient;
+use Symfony\Component\Translation\Dumper\XliffFileDumper;
+use Symfony\Component\Translation\Loader\LoaderInterface;
+use Symfony\Component\Translation\Provider\ProviderInterface;
+use Symfony\Component\Translation\TranslatorBagInterface;
+use Symfony\Contracts\HttpClient\HttpClientInterface;
+
+/**
+ * A test case to ease testing a translation provider.
+ *
+ * @author Mathieu Santostefano <msantostefano@protonmail.com>
+ *
+ * @internal
+ */
+abstract class ProviderTestCase extends TestCase
+{
+    protected HttpClientInterface $client;
+    protected LoggerInterface|MockObject $logger;
+    protected string $defaultLocale;
+    protected LoaderInterface|MockObject $loader;
+    protected XliffFileDumper|MockObject $xliffFileDumper;
+    protected TranslatorBagInterface|MockObject $translatorBag;
+
+    abstract public function createProvider(HttpClientInterface $client, LoaderInterface $loader, LoggerInterface $logger, string $defaultLocale, string $endpoint): ProviderInterface;
+
+    /**
+     * @return iterable<array{0: string, 1: ProviderInterface}>
+     */
+    abstract public function toStringProvider(): iterable;
+
+    /**
+     * @dataProvider toStringProvider
+     */
+    public function testToString(ProviderInterface $provider, string $expected)
+    {
+        $this->assertSame($expected, (string) $provider);
+    }
+
+    protected function getClient(): MockHttpClient
+    {
+        return $this->client ??= new MockHttpClient();
+    }
+
+    protected function getLoader(): LoaderInterface
+    {
+        return $this->loader ??= $this->createMock(LoaderInterface::class);
+    }
+
+    protected function getLogger(): LoggerInterface
+    {
+        return $this->logger ??= $this->createMock(LoggerInterface::class);
+    }
+
+    protected function getDefaultLocale(): string
+    {
+        return $this->defaultLocale ??= 'en';
+    }
+
+    protected function getXliffFileDumper(): XliffFileDumper
+    {
+        return $this->xliffFileDumper ??= $this->createMock(XliffFileDumper::class);
+    }
+
+    protected function getTranslatorBag(): TranslatorBagInterface
+    {
+        return $this->translatorBag ??= $this->createMock(TranslatorBagInterface::class);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/TranslatableMessage.php b/htdocs/vendor/symfony/translation/TranslatableMessage.php
new file mode 100644
index 00000000..b1a3b6b1
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/TranslatableMessage.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Contracts\Translation\TranslatableInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+/**
+ * @author Nate Wiebe <nate@northern.co>
+ */
+class TranslatableMessage implements TranslatableInterface
+{
+    private string $message;
+    private array $parameters;
+    private ?string $domain;
+
+    public function __construct(string $message, array $parameters = [], string $domain = null)
+    {
+        $this->message = $message;
+        $this->parameters = $parameters;
+        $this->domain = $domain;
+    }
+
+    public function __toString(): string
+    {
+        return $this->getMessage();
+    }
+
+    public function getMessage(): string
+    {
+        return $this->message;
+    }
+
+    public function getParameters(): array
+    {
+        return $this->parameters;
+    }
+
+    public function getDomain(): ?string
+    {
+        return $this->domain;
+    }
+
+    public function trans(TranslatorInterface $translator, string $locale = null): string
+    {
+        return $translator->trans($this->getMessage(), array_map(
+            static function ($parameter) use ($translator, $locale) {
+                return $parameter instanceof TranslatableInterface ? $parameter->trans($translator, $locale) : $parameter;
+            },
+            $this->getParameters()
+        ), $this->getDomain(), $locale);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Translator.php b/htdocs/vendor/symfony/translation/Translator.php
new file mode 100644
index 00000000..d2e5c73f
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Translator.php
@@ -0,0 +1,474 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Config\ConfigCacheFactory;
+use Symfony\Component\Config\ConfigCacheFactoryInterface;
+use Symfony\Component\Config\ConfigCacheInterface;
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\NotFoundResourceException;
+use Symfony\Component\Translation\Exception\RuntimeException;
+use Symfony\Component\Translation\Formatter\IntlFormatterInterface;
+use Symfony\Component\Translation\Formatter\MessageFormatter;
+use Symfony\Component\Translation\Formatter\MessageFormatterInterface;
+use Symfony\Component\Translation\Loader\LoaderInterface;
+use Symfony\Contracts\Translation\LocaleAwareInterface;
+use Symfony\Contracts\Translation\TranslatableInterface;
+use Symfony\Contracts\Translation\TranslatorInterface;
+
+// Help opcache.preload discover always-needed symbols
+class_exists(MessageCatalogue::class);
+
+/**
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class Translator implements TranslatorInterface, TranslatorBagInterface, LocaleAwareInterface
+{
+    /**
+     * @var MessageCatalogueInterface[]
+     */
+    protected $catalogues = [];
+
+    private string $locale;
+
+    /**
+     * @var string[]
+     */
+    private array $fallbackLocales = [];
+
+    /**
+     * @var LoaderInterface[]
+     */
+    private array $loaders = [];
+
+    private array $resources = [];
+
+    private MessageFormatterInterface $formatter;
+
+    private ?string $cacheDir;
+
+    private bool $debug;
+
+    private array $cacheVary;
+
+    private ?ConfigCacheFactoryInterface $configCacheFactory;
+
+    private array $parentLocales;
+
+    private bool $hasIntlFormatter;
+
+    /**
+     * @throws InvalidArgumentException If a locale contains invalid characters
+     */
+    public function __construct(string $locale, MessageFormatterInterface $formatter = null, string $cacheDir = null, bool $debug = false, array $cacheVary = [])
+    {
+        $this->setLocale($locale);
+
+        if (null === $formatter) {
+            $formatter = new MessageFormatter();
+        }
+
+        $this->formatter = $formatter;
+        $this->cacheDir = $cacheDir;
+        $this->debug = $debug;
+        $this->cacheVary = $cacheVary;
+        $this->hasIntlFormatter = $formatter instanceof IntlFormatterInterface;
+    }
+
+    public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory)
+    {
+        $this->configCacheFactory = $configCacheFactory;
+    }
+
+    /**
+     * Adds a Loader.
+     *
+     * @param string $format The name of the loader (@see addResource())
+     */
+    public function addLoader(string $format, LoaderInterface $loader)
+    {
+        $this->loaders[$format] = $loader;
+    }
+
+    /**
+     * Adds a Resource.
+     *
+     * @param string $format   The name of the loader (@see addLoader())
+     * @param mixed  $resource The resource name
+     *
+     * @throws InvalidArgumentException If the locale contains invalid characters
+     */
+    public function addResource(string $format, mixed $resource, string $locale, string $domain = null)
+    {
+        if (null === $domain) {
+            $domain = 'messages';
+        }
+
+        $this->assertValidLocale($locale);
+        $locale ?: $locale = class_exists(\Locale::class) ? \Locale::getDefault() : 'en';
+
+        $this->resources[$locale][] = [$format, $resource, $domain];
+
+        if (\in_array($locale, $this->fallbackLocales)) {
+            $this->catalogues = [];
+        } else {
+            unset($this->catalogues[$locale]);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function setLocale(string $locale)
+    {
+        $this->assertValidLocale($locale);
+        $this->locale = $locale;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getLocale(): string
+    {
+        return $this->locale ?: (class_exists(\Locale::class) ? \Locale::getDefault() : 'en');
+    }
+
+    /**
+     * Sets the fallback locales.
+     *
+     * @param string[] $locales
+     *
+     * @throws InvalidArgumentException If a locale contains invalid characters
+     */
+    public function setFallbackLocales(array $locales)
+    {
+        // needed as the fallback locales are linked to the already loaded catalogues
+        $this->catalogues = [];
+
+        foreach ($locales as $locale) {
+            $this->assertValidLocale($locale);
+        }
+
+        $this->fallbackLocales = $this->cacheVary['fallback_locales'] = $locales;
+    }
+
+    /**
+     * Gets the fallback locales.
+     *
+     * @internal
+     */
+    public function getFallbackLocales(): array
+    {
+        return $this->fallbackLocales;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function trans(?string $id, array $parameters = [], string $domain = null, string $locale = null): string
+    {
+        if (null === $id || '' === $id) {
+            return '';
+        }
+
+        if (null === $domain) {
+            $domain = 'messages';
+        }
+
+        $catalogue = $this->getCatalogue($locale);
+        $locale = $catalogue->getLocale();
+        while (!$catalogue->defines($id, $domain)) {
+            if ($cat = $catalogue->getFallbackCatalogue()) {
+                $catalogue = $cat;
+                $locale = $catalogue->getLocale();
+            } else {
+                break;
+            }
+        }
+
+        $parameters = array_map(function ($parameter) use ($locale) {
+            return $parameter instanceof TranslatableInterface ? $parameter->trans($this, $locale) : $parameter;
+        }, $parameters);
+
+        $len = \strlen(MessageCatalogue::INTL_DOMAIN_SUFFIX);
+        if ($this->hasIntlFormatter
+            && ($catalogue->defines($id, $domain.MessageCatalogue::INTL_DOMAIN_SUFFIX)
+            || (\strlen($domain) > $len && 0 === substr_compare($domain, MessageCatalogue::INTL_DOMAIN_SUFFIX, -$len, $len)))
+        ) {
+            return $this->formatter->formatIntl($catalogue->get($id, $domain), $locale, $parameters);
+        }
+
+        return $this->formatter->format($catalogue->get($id, $domain), $locale, $parameters);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogue(string $locale = null): MessageCatalogueInterface
+    {
+        if (!$locale) {
+            $locale = $this->getLocale();
+        } else {
+            $this->assertValidLocale($locale);
+        }
+
+        if (!isset($this->catalogues[$locale])) {
+            $this->loadCatalogue($locale);
+        }
+
+        return $this->catalogues[$locale];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogues(): array
+    {
+        return array_values($this->catalogues);
+    }
+
+    /**
+     * Gets the loaders.
+     *
+     * @return LoaderInterface[]
+     */
+    protected function getLoaders(): array
+    {
+        return $this->loaders;
+    }
+
+    protected function loadCatalogue(string $locale)
+    {
+        if (null === $this->cacheDir) {
+            $this->initializeCatalogue($locale);
+        } else {
+            $this->initializeCacheCatalogue($locale);
+        }
+    }
+
+    protected function initializeCatalogue(string $locale)
+    {
+        $this->assertValidLocale($locale);
+
+        try {
+            $this->doLoadCatalogue($locale);
+        } catch (NotFoundResourceException $e) {
+            if (!$this->computeFallbackLocales($locale)) {
+                throw $e;
+            }
+        }
+        $this->loadFallbackCatalogues($locale);
+    }
+
+    private function initializeCacheCatalogue(string $locale): void
+    {
+        if (isset($this->catalogues[$locale])) {
+            /* Catalogue already initialized. */
+            return;
+        }
+
+        $this->assertValidLocale($locale);
+        $cache = $this->getConfigCacheFactory()->cache($this->getCatalogueCachePath($locale),
+            function (ConfigCacheInterface $cache) use ($locale) {
+                $this->dumpCatalogue($locale, $cache);
+            }
+        );
+
+        if (isset($this->catalogues[$locale])) {
+            /* Catalogue has been initialized as it was written out to cache. */
+            return;
+        }
+
+        /* Read catalogue from cache. */
+        $this->catalogues[$locale] = include $cache->getPath();
+    }
+
+    private function dumpCatalogue(string $locale, ConfigCacheInterface $cache): void
+    {
+        $this->initializeCatalogue($locale);
+        $fallbackContent = $this->getFallbackContent($this->catalogues[$locale]);
+
+        $content = sprintf(<<<EOF
+<?php
+
+use Symfony\Component\Translation\MessageCatalogue;
+
+\$catalogue = new MessageCatalogue('%s', %s);
+
+%s
+return \$catalogue;
+
+EOF
+            ,
+            $locale,
+            var_export($this->getAllMessages($this->catalogues[$locale]), true),
+            $fallbackContent
+        );
+
+        $cache->write($content, $this->catalogues[$locale]->getResources());
+    }
+
+    private function getFallbackContent(MessageCatalogue $catalogue): string
+    {
+        $fallbackContent = '';
+        $current = '';
+        $replacementPattern = '/[^a-z0-9_]/i';
+        $fallbackCatalogue = $catalogue->getFallbackCatalogue();
+        while ($fallbackCatalogue) {
+            $fallback = $fallbackCatalogue->getLocale();
+            $fallbackSuffix = ucfirst(preg_replace($replacementPattern, '_', $fallback));
+            $currentSuffix = ucfirst(preg_replace($replacementPattern, '_', $current));
+
+            $fallbackContent .= sprintf(<<<'EOF'
+$catalogue%s = new MessageCatalogue('%s', %s);
+$catalogue%s->addFallbackCatalogue($catalogue%s);
+
+EOF
+                ,
+                $fallbackSuffix,
+                $fallback,
+                var_export($this->getAllMessages($fallbackCatalogue), true),
+                $currentSuffix,
+                $fallbackSuffix
+            );
+            $current = $fallbackCatalogue->getLocale();
+            $fallbackCatalogue = $fallbackCatalogue->getFallbackCatalogue();
+        }
+
+        return $fallbackContent;
+    }
+
+    private function getCatalogueCachePath(string $locale): string
+    {
+        return $this->cacheDir.'/catalogue.'.$locale.'.'.strtr(substr(base64_encode(hash('sha256', serialize($this->cacheVary), true)), 0, 7), '/', '_').'.php';
+    }
+
+    /**
+     * @internal
+     */
+    protected function doLoadCatalogue(string $locale): void
+    {
+        $this->catalogues[$locale] = new MessageCatalogue($locale);
+
+        if (isset($this->resources[$locale])) {
+            foreach ($this->resources[$locale] as $resource) {
+                if (!isset($this->loaders[$resource[0]])) {
+                    if (\is_string($resource[1])) {
+                        throw new RuntimeException(sprintf('No loader is registered for the "%s" format when loading the "%s" resource.', $resource[0], $resource[1]));
+                    }
+
+                    throw new RuntimeException(sprintf('No loader is registered for the "%s" format.', $resource[0]));
+                }
+                $this->catalogues[$locale]->addCatalogue($this->loaders[$resource[0]]->load($resource[1], $locale, $resource[2]));
+            }
+        }
+    }
+
+    private function loadFallbackCatalogues(string $locale): void
+    {
+        $current = $this->catalogues[$locale];
+
+        foreach ($this->computeFallbackLocales($locale) as $fallback) {
+            if (!isset($this->catalogues[$fallback])) {
+                $this->initializeCatalogue($fallback);
+            }
+
+            $fallbackCatalogue = new MessageCatalogue($fallback, $this->getAllMessages($this->catalogues[$fallback]));
+            foreach ($this->catalogues[$fallback]->getResources() as $resource) {
+                $fallbackCatalogue->addResource($resource);
+            }
+            $current->addFallbackCatalogue($fallbackCatalogue);
+            $current = $fallbackCatalogue;
+        }
+    }
+
+    protected function computeFallbackLocales(string $locale)
+    {
+        $this->parentLocales ??= json_decode(file_get_contents(__DIR__.'/Resources/data/parents.json'), true);
+
+        $originLocale = $locale;
+        $locales = [];
+
+        while ($locale) {
+            $parent = $this->parentLocales[$locale] ?? null;
+
+            if ($parent) {
+                $locale = 'root' !== $parent ? $parent : null;
+            } elseif (\function_exists('locale_parse')) {
+                $localeSubTags = locale_parse($locale);
+                $locale = null;
+                if (1 < \count($localeSubTags)) {
+                    array_pop($localeSubTags);
+                    $locale = locale_compose($localeSubTags) ?: null;
+                }
+            } elseif ($i = strrpos($locale, '_') ?: strrpos($locale, '-')) {
+                $locale = substr($locale, 0, $i);
+            } else {
+                $locale = null;
+            }
+
+            if (null !== $locale) {
+                $locales[] = $locale;
+            }
+        }
+
+        foreach ($this->fallbackLocales as $fallback) {
+            if ($fallback === $originLocale) {
+                continue;
+            }
+
+            $locales[] = $fallback;
+        }
+
+        return array_unique($locales);
+    }
+
+    /**
+     * Asserts that the locale is valid, throws an Exception if not.
+     *
+     * @throws InvalidArgumentException If the locale contains invalid characters
+     */
+    protected function assertValidLocale(string $locale)
+    {
+        if (!preg_match('/^[a-z0-9@_\\.\\-]*$/i', $locale)) {
+            throw new InvalidArgumentException(sprintf('Invalid "%s" locale.', $locale));
+        }
+    }
+
+    /**
+     * Provides the ConfigCache factory implementation, falling back to a
+     * default implementation if necessary.
+     */
+    private function getConfigCacheFactory(): ConfigCacheFactoryInterface
+    {
+        $this->configCacheFactory ??= new ConfigCacheFactory($this->debug);
+
+        return $this->configCacheFactory;
+    }
+
+    private function getAllMessages(MessageCatalogueInterface $catalogue): array
+    {
+        $allMessages = [];
+
+        foreach ($catalogue->all() as $domain => $messages) {
+            if ($intlMessages = $catalogue->all($domain.MessageCatalogue::INTL_DOMAIN_SUFFIX)) {
+                $allMessages[$domain.MessageCatalogue::INTL_DOMAIN_SUFFIX] = $intlMessages;
+                $messages = array_diff_key($messages, $intlMessages);
+            }
+            if ($messages) {
+                $allMessages[$domain] = $messages;
+            }
+        }
+
+        return $allMessages;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/TranslatorBag.php b/htdocs/vendor/symfony/translation/TranslatorBag.php
new file mode 100644
index 00000000..9be3458c
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/TranslatorBag.php
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Translation\Catalogue\AbstractOperation;
+use Symfony\Component\Translation\Catalogue\TargetOperation;
+
+final class TranslatorBag implements TranslatorBagInterface
+{
+    /** @var MessageCatalogue[] */
+    private array $catalogues = [];
+
+    public function addCatalogue(MessageCatalogue $catalogue): void
+    {
+        if (null !== $existingCatalogue = $this->getCatalogue($catalogue->getLocale())) {
+            $catalogue->addCatalogue($existingCatalogue);
+        }
+
+        $this->catalogues[$catalogue->getLocale()] = $catalogue;
+    }
+
+    public function addBag(TranslatorBagInterface $bag): void
+    {
+        foreach ($bag->getCatalogues() as $catalogue) {
+            $this->addCatalogue($catalogue);
+        }
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogue(string $locale = null): MessageCatalogueInterface
+    {
+        if (null === $locale || !isset($this->catalogues[$locale])) {
+            $this->catalogues[$locale] = new MessageCatalogue($locale);
+        }
+
+        return $this->catalogues[$locale];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function getCatalogues(): array
+    {
+        return array_values($this->catalogues);
+    }
+
+    public function diff(TranslatorBagInterface $diffBag): self
+    {
+        $diff = new self();
+
+        foreach ($this->catalogues as $locale => $catalogue) {
+            if (null === $diffCatalogue = $diffBag->getCatalogue($locale)) {
+                $diff->addCatalogue($catalogue);
+
+                continue;
+            }
+
+            $operation = new TargetOperation($diffCatalogue, $catalogue);
+            $operation->moveMessagesToIntlDomainsIfPossible(AbstractOperation::NEW_BATCH);
+            $newCatalogue = new MessageCatalogue($locale);
+
+            foreach ($operation->getDomains() as $domain) {
+                $newCatalogue->add($operation->getNewMessages($domain), $domain);
+            }
+
+            $diff->addCatalogue($newCatalogue);
+        }
+
+        return $diff;
+    }
+
+    public function intersect(TranslatorBagInterface $intersectBag): self
+    {
+        $diff = new self();
+
+        foreach ($this->catalogues as $locale => $catalogue) {
+            if (null === $intersectCatalogue = $intersectBag->getCatalogue($locale)) {
+                continue;
+            }
+
+            $operation = new TargetOperation($catalogue, $intersectCatalogue);
+            $operation->moveMessagesToIntlDomainsIfPossible(AbstractOperation::OBSOLETE_BATCH);
+            $obsoleteCatalogue = new MessageCatalogue($locale);
+
+            foreach ($operation->getDomains() as $domain) {
+                $obsoleteCatalogue->add(
+                    array_diff($operation->getMessages($domain), $operation->getNewMessages($domain)),
+                    $domain
+                );
+            }
+
+            $diff->addCatalogue($obsoleteCatalogue);
+        }
+
+        return $diff;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/TranslatorBagInterface.php b/htdocs/vendor/symfony/translation/TranslatorBagInterface.php
new file mode 100644
index 00000000..a787acf1
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/TranslatorBagInterface.php
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+
+/**
+ * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
+ */
+interface TranslatorBagInterface
+{
+    /**
+     * Gets the catalogue by locale.
+     *
+     * @param string|null $locale The locale or null to use the default
+     *
+     * @throws InvalidArgumentException If the locale contains invalid characters
+     */
+    public function getCatalogue(string $locale = null): MessageCatalogueInterface;
+
+    /**
+     * Returns all catalogues of the instance.
+     *
+     * @return MessageCatalogueInterface[]
+     */
+    public function getCatalogues(): array;
+}
diff --git a/htdocs/vendor/symfony/translation/Util/ArrayConverter.php b/htdocs/vendor/symfony/translation/Util/ArrayConverter.php
new file mode 100644
index 00000000..60b8be6e
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Util/ArrayConverter.php
@@ -0,0 +1,97 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Util;
+
+/**
+ * ArrayConverter generates tree like structure from a message catalogue.
+ * e.g. this
+ *   'foo.bar1' => 'test1',
+ *   'foo.bar2' => 'test2'
+ * converts to follows:
+ *   foo:
+ *     bar1: test1
+ *     bar2: test2.
+ *
+ * @author Gennady Telegin <gtelegin@gmail.com>
+ */
+class ArrayConverter
+{
+    /**
+     * Converts linear messages array to tree-like array.
+     * For example this array('foo.bar' => 'value') will be converted to ['foo' => ['bar' => 'value']].
+     *
+     * @param array $messages Linear messages array
+     */
+    public static function expandToTree(array $messages): array
+    {
+        $tree = [];
+
+        foreach ($messages as $id => $value) {
+            $referenceToElement = &self::getElementByPath($tree, explode('.', $id));
+
+            $referenceToElement = $value;
+
+            unset($referenceToElement);
+        }
+
+        return $tree;
+    }
+
+    private static function &getElementByPath(array &$tree, array $parts)
+    {
+        $elem = &$tree;
+        $parentOfElem = null;
+
+        foreach ($parts as $i => $part) {
+            if (isset($elem[$part]) && \is_string($elem[$part])) {
+                /* Process next case:
+                 *    'foo': 'test1',
+                 *    'foo.bar': 'test2'
+                 *
+                 * $tree['foo'] was string before we found array {bar: test2}.
+                 *  Treat new element as string too, e.g. add $tree['foo.bar'] = 'test2';
+                 */
+                $elem = &$elem[implode('.', \array_slice($parts, $i))];
+                break;
+            }
+            $parentOfElem = &$elem;
+            $elem = &$elem[$part];
+        }
+
+        if ($elem && \is_array($elem) && $parentOfElem) {
+            /* Process next case:
+             *    'foo.bar': 'test1'
+             *    'foo': 'test2'
+             *
+             * $tree['foo'] was array = {bar: 'test1'} before we found string constant `foo`.
+             * Cancel treating $tree['foo'] as array and cancel back it expansion,
+             *  e.g. make it $tree['foo.bar'] = 'test1' again.
+             */
+            self::cancelExpand($parentOfElem, $part, $elem);
+        }
+
+        return $elem;
+    }
+
+    private static function cancelExpand(array &$tree, string $prefix, array $node)
+    {
+        $prefix .= '.';
+
+        foreach ($node as $id => $value) {
+            if (\is_string($value)) {
+                $tree[$prefix.$id] = $value;
+            } else {
+                self::cancelExpand($tree, $prefix.$id, $value);
+            }
+        }
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Util/XliffUtils.php b/htdocs/vendor/symfony/translation/Util/XliffUtils.php
new file mode 100644
index 00000000..335c34be
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Util/XliffUtils.php
@@ -0,0 +1,191 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Util;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\InvalidResourceException;
+
+/**
+ * Provides some utility methods for XLIFF translation files, such as validating
+ * their contents according to the XSD schema.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class XliffUtils
+{
+    /**
+     * Gets xliff file version based on the root "version" attribute.
+     *
+     * Defaults to 1.2 for backwards compatibility.
+     *
+     * @throws InvalidArgumentException
+     */
+    public static function getVersionNumber(\DOMDocument $dom): string
+    {
+        /** @var \DOMNode $xliff */
+        foreach ($dom->getElementsByTagName('xliff') as $xliff) {
+            $version = $xliff->attributes->getNamedItem('version');
+            if ($version) {
+                return $version->nodeValue;
+            }
+
+            $namespace = $xliff->attributes->getNamedItem('xmlns');
+            if ($namespace) {
+                if (0 !== substr_compare('urn:oasis:names:tc:xliff:document:', $namespace->nodeValue, 0, 34)) {
+                    throw new InvalidArgumentException(sprintf('Not a valid XLIFF namespace "%s".', $namespace));
+                }
+
+                return substr($namespace, 34);
+            }
+        }
+
+        // Falls back to v1.2
+        return '1.2';
+    }
+
+    /**
+     * Validates and parses the given file into a DOMDocument.
+     *
+     * @throws InvalidResourceException
+     */
+    public static function validateSchema(\DOMDocument $dom): array
+    {
+        $xliffVersion = static::getVersionNumber($dom);
+        $internalErrors = libxml_use_internal_errors(true);
+        if ($shouldEnable = self::shouldEnableEntityLoader()) {
+            $disableEntities = libxml_disable_entity_loader(false);
+        }
+        try {
+            $isValid = @$dom->schemaValidateSource(self::getSchema($xliffVersion));
+            if (!$isValid) {
+                return self::getXmlErrors($internalErrors);
+            }
+        } finally {
+            if ($shouldEnable) {
+                libxml_disable_entity_loader($disableEntities);
+            }
+        }
+
+        $dom->normalizeDocument();
+
+        libxml_clear_errors();
+        libxml_use_internal_errors($internalErrors);
+
+        return [];
+    }
+
+    private static function shouldEnableEntityLoader(): bool
+    {
+        static $dom, $schema;
+        if (null === $dom) {
+            $dom = new \DOMDocument();
+            $dom->loadXML('<?xml version="1.0"?><test/>');
+
+            $tmpfile = tempnam(sys_get_temp_dir(), 'symfony');
+            register_shutdown_function(static function () use ($tmpfile) {
+                @unlink($tmpfile);
+            });
+            $schema = '<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:include schemaLocation="file:///'.str_replace('\\', '/', $tmpfile).'" />
+</xsd:schema>';
+            file_put_contents($tmpfile, '<?xml version="1.0" encoding="utf-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+  <xsd:element name="test" type="testType" />
+  <xsd:complexType name="testType"/>
+</xsd:schema>');
+        }
+
+        return !@$dom->schemaValidateSource($schema);
+    }
+
+    public static function getErrorsAsString(array $xmlErrors): string
+    {
+        $errorsAsString = '';
+
+        foreach ($xmlErrors as $error) {
+            $errorsAsString .= sprintf("[%s %s] %s (in %s - line %d, column %d)\n",
+                \LIBXML_ERR_WARNING === $error['level'] ? 'WARNING' : 'ERROR',
+                $error['code'],
+                $error['message'],
+                $error['file'],
+                $error['line'],
+                $error['column']
+            );
+        }
+
+        return $errorsAsString;
+    }
+
+    private static function getSchema(string $xliffVersion): string
+    {
+        if ('1.2' === $xliffVersion) {
+            $schemaSource = file_get_contents(__DIR__.'/../Resources/schemas/xliff-core-1.2-transitional.xsd');
+            $xmlUri = 'http://www.w3.org/2001/xml.xsd';
+        } elseif ('2.0' === $xliffVersion) {
+            $schemaSource = file_get_contents(__DIR__.'/../Resources/schemas/xliff-core-2.0.xsd');
+            $xmlUri = 'informativeCopiesOf3rdPartySchemas/w3c/xml.xsd';
+        } else {
+            throw new InvalidArgumentException(sprintf('No support implemented for loading XLIFF version "%s".', $xliffVersion));
+        }
+
+        return self::fixXmlLocation($schemaSource, $xmlUri);
+    }
+
+    /**
+     * Internally changes the URI of a dependent xsd to be loaded locally.
+     */
+    private static function fixXmlLocation(string $schemaSource, string $xmlUri): string
+    {
+        $newPath = str_replace('\\', '/', __DIR__).'/../Resources/schemas/xml.xsd';
+        $parts = explode('/', $newPath);
+        $locationstart = 'file:///';
+        if (0 === stripos($newPath, 'phar://')) {
+            $tmpfile = tempnam(sys_get_temp_dir(), 'symfony');
+            if ($tmpfile) {
+                copy($newPath, $tmpfile);
+                $parts = explode('/', str_replace('\\', '/', $tmpfile));
+            } else {
+                array_shift($parts);
+                $locationstart = 'phar:///';
+            }
+        }
+
+        $drive = '\\' === \DIRECTORY_SEPARATOR ? array_shift($parts).'/' : '';
+        $newPath = $locationstart.$drive.implode('/', array_map('rawurlencode', $parts));
+
+        return str_replace($xmlUri, $newPath, $schemaSource);
+    }
+
+    /**
+     * Returns the XML errors of the internal XML parser.
+     */
+    private static function getXmlErrors(bool $internalErrors): array
+    {
+        $errors = [];
+        foreach (libxml_get_errors() as $error) {
+            $errors[] = [
+                'level' => \LIBXML_ERR_WARNING == $error->level ? 'WARNING' : 'ERROR',
+                'code' => $error->code,
+                'message' => trim($error->message),
+                'file' => $error->file ?: 'n/a',
+                'line' => $error->line,
+                'column' => $error->column,
+            ];
+        }
+
+        libxml_clear_errors();
+        libxml_use_internal_errors($internalErrors);
+
+        return $errors;
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Writer/TranslationWriter.php b/htdocs/vendor/symfony/translation/Writer/TranslationWriter.php
new file mode 100644
index 00000000..5dd3a5c4
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Writer/TranslationWriter.php
@@ -0,0 +1,71 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Writer;
+
+use Symfony\Component\Translation\Dumper\DumperInterface;
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\Exception\RuntimeException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * TranslationWriter writes translation messages.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+class TranslationWriter implements TranslationWriterInterface
+{
+    /**
+     * @var array<string, DumperInterface>
+     */
+    private array $dumpers = [];
+
+    /**
+     * Adds a dumper to the writer.
+     */
+    public function addDumper(string $format, DumperInterface $dumper)
+    {
+        $this->dumpers[$format] = $dumper;
+    }
+
+    /**
+     * Obtains the list of supported formats.
+     */
+    public function getFormats(): array
+    {
+        return array_keys($this->dumpers);
+    }
+
+    /**
+     * Writes translation from the catalogue according to the selected format.
+     *
+     * @param string $format  The format to use to dump the messages
+     * @param array  $options Options that are passed to the dumper
+     *
+     * @throws InvalidArgumentException
+     */
+    public function write(MessageCatalogue $catalogue, string $format, array $options = [])
+    {
+        if (!isset($this->dumpers[$format])) {
+            throw new InvalidArgumentException(sprintf('There is no dumper associated with format "%s".', $format));
+        }
+
+        // get the right dumper
+        $dumper = $this->dumpers[$format];
+
+        if (isset($options['path']) && !is_dir($options['path']) && !@mkdir($options['path'], 0777, true) && !is_dir($options['path'])) {
+            throw new RuntimeException(sprintf('Translation Writer was not able to create directory "%s".', $options['path']));
+        }
+
+        // save
+        $dumper->dump($catalogue, $options);
+    }
+}
diff --git a/htdocs/vendor/symfony/translation/Writer/TranslationWriterInterface.php b/htdocs/vendor/symfony/translation/Writer/TranslationWriterInterface.php
new file mode 100644
index 00000000..43213097
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/Writer/TranslationWriterInterface.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Translation\Writer;
+
+use Symfony\Component\Translation\Exception\InvalidArgumentException;
+use Symfony\Component\Translation\MessageCatalogue;
+
+/**
+ * TranslationWriter writes translation messages.
+ *
+ * @author Michel Salib <michelsalib@hotmail.com>
+ */
+interface TranslationWriterInterface
+{
+    /**
+     * Writes translation from the catalogue according to the selected format.
+     *
+     * @param string $format  The format to use to dump the messages
+     * @param array  $options Options that are passed to the dumper
+     *
+     * @throws InvalidArgumentException
+     */
+    public function write(MessageCatalogue $catalogue, string $format, array $options = []);
+}
diff --git a/htdocs/vendor/symfony/translation/composer.json b/htdocs/vendor/symfony/translation/composer.json
new file mode 100644
index 00000000..e25f09ef
--- /dev/null
+++ b/htdocs/vendor/symfony/translation/composer.json
@@ -0,0 +1,61 @@
+{
+    "name": "symfony/translation",
+    "type": "library",
+    "description": "Provides tools to internationalize your application",
+    "keywords": [],
+    "homepage": "https://symfony.com",
+    "license": "MIT",
+    "authors": [
+        {
+            "name": "Fabien Potencier",
+            "email": "fabien@symfony.com"
+        },
+        {
+            "name": "Symfony Community",
+            "homepage": "https://symfony.com/contributors"
+        }
+    ],
+    "require": {
+        "php": ">=8.1",
+        "symfony/polyfill-mbstring": "~1.0",
+        "symfony/translation-contracts": "^2.3|^3.0"
+    },
+    "require-dev": {
+        "symfony/config": "^5.4|^6.0",
+        "symfony/console": "^5.4|^6.0",
+        "symfony/dependency-injection": "^5.4|^6.0",
+        "symfony/http-client-contracts": "^1.1|^2.0|^3.0",
+        "symfony/http-kernel": "^5.4|^6.0",
+        "symfony/intl": "^5.4|^6.0",
+        "symfony/polyfill-intl-icu": "^1.21",
+        "symfony/routing": "^5.4|^6.0",
+        "symfony/service-contracts": "^1.1.2|^2|^3",
+        "symfony/yaml": "^5.4|^6.0",
+        "symfony/finder": "^5.4|^6.0",
+        "psr/log": "^1|^2|^3"
+    },
+    "conflict": {
+        "symfony/config": "<5.4",
+        "symfony/dependency-injection": "<5.4",
+        "symfony/http-kernel": "<5.4",
+        "symfony/twig-bundle": "<5.4",
+        "symfony/yaml": "<5.4",
+        "symfony/console": "<5.4"
+    },
+    "provide": {
+        "symfony/translation-implementation": "2.3|3.0"
+    },
+    "suggest": {
+        "symfony/config": "",
+        "symfony/yaml": "",
+        "psr/log-implementation": "To use logging capability in translator"
+    },
+    "autoload": {
+        "files": [ "Resources/functions.php" ],
+        "psr-4": { "Symfony\\Component\\Translation\\": "" },
+        "exclude-from-classmap": [
+            "/Tests/"
+        ]
+    },
+    "minimum-stability": "dev"
+}
-- 
GitLab