Commit Graph

18326 Commits

Author SHA1 Message Date
skafandri
7d6fbd99a2 [Console][Command][LogicException] The command name cannot be empty. #11991 2014-09-23 11:01:06 +02:00
Fabien Potencier
d059b1edae fixed CS 2014-09-23 08:31:13 +02:00
Fabien Potencier
0da03cf98b feature #8291 [Form] Add allow_html5 option to date and time FormType to disable HTML5 input type (csanquer)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Form] Add allow_html5 option to date and time FormType to disable HTML5 input type

[Form] added allow_html5 option to date and time FormType to disable HTML5 input type when widget is set to single_text

| Q                    | A
| --------------------- | ---
| Bug fix?          | no
| New feature?   | yes
| BC breaks?     | no
| Deprecations? | no
| Tests pass?    | yes
| Fixed tickets   | #6927 #7123
| License           | MIT
| Doc PR           |

With this little patch we can have a single text widget without HTML5 date input type which is required when using some javascript date or time picker .

Commits
-------

392d6c7 add allow_html5 option to date and time FormType to disable HTML5 date input when widget is set to single_text
2014-09-23 08:30:39 +02:00
Fabien Potencier
8ac12257f3 fixed CS 2014-09-23 08:15:49 +02:00
Fabien Potencier
8e8488092f feature #11815 Added some methods to improve the handling of auto_mapping feature (goetas)
This PR was squashed before being merged into the 2.6-dev branch (closes #11815).

Discussion
----------

Added some methods to improve the handling of auto_mapping feature

| Q             | A
| ------------- | ---
| Bug fix?      |no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?  | yes
| Fixed tickets | https://github.com/doctrine/DoctrineBundle/issues/60
| License       | MIT

This PR is a part that is required by:
* https://github.com/doctrine/DoctrineMongoDBBundle/pull/267
* https://github.com/doctrine/DoctrineBundle/pull/321

The proposed PRs are an alternative to https://github.com/symfony/symfony/pull/11650 and https://github.com/doctrine/DoctrineBundle/pull/322

Commits
-------

2e30a43 Added some methods to improve the handling of auto_mapping feature
2014-09-23 08:15:19 +02:00
Asmir Mustafic
2e30a431d0 Added some methods to improve the handling of auto_mapping feature 2014-09-23 08:15:16 +02:00
Fabien Potencier
ef399b1071 fixed some unit tests 2014-09-23 07:29:08 +02:00
Fabien Potencier
7096c8d769 Merge branch '2.5'
* 2.5:
  typo fixed in AbstractProcessTest (getoutput() => getOutput())
  Avoid question mark and asterisk in folder names to prevent windows filesystem issues.
  [Translation] [Config] Clear libxml errors after parsing XML file
  check for the Validator if forms are enabled
  Clear json_last_error
  Fix JsonSerializable namespace
  Catch exceptions to restore the error handler
  [HttpFoundation] Silent only JSON errors
2014-09-23 07:25:18 +02:00
Fabien Potencier
1c254a4f09 Merge branch '2.4' into 2.5
* 2.4:
  typo fixed in AbstractProcessTest (getoutput() => getOutput())
  Avoid question mark and asterisk in folder names to prevent windows filesystem issues.
  [Translation] [Config] Clear libxml errors after parsing XML file
2014-09-23 07:25:11 +02:00
Fabien Potencier
924d06adf6 Merge branch '2.3' into 2.4
* 2.3:
  typo fixed in AbstractProcessTest (getoutput() => getOutput())
  Avoid question mark and asterisk in folder names to prevent windows filesystem issues.
  [Translation] [Config] Clear libxml errors after parsing XML file

Conflicts:
	src/Symfony/Component/Config/Util/XmlUtils.php
2014-09-23 07:24:59 +02:00
Fabien Potencier
e47e4fa56d bug #11989 [Finder][Urgent] Remove asterisk and question mark from folder name in test to prevent windows file system issues. (Adam)
This PR was merged into the 2.3 branch.

Discussion
----------

[Finder][Urgent] Remove asterisk and question mark from folder name in test to prevent windows file system issues.

Bugfix: Yes
Fixed tickets: #11984 , #11985
Related tickets: #11970

Commit #11970 prevented Symphony from being checked out via windows due to invalid characters in a folder name within the tests.

The issue was reported in #11984  and was attempted to be fixed in #11985 but wasn't due to still including the question mark.

Please accept this ASAP as it entirely breaks any composer that relies on it.

Commits
-------

5fbb278 Avoid question mark and asterisk in folder names to prevent windows filesystem issues.
2014-09-23 07:24:00 +02:00
Fabien Potencier
3a67de274b minor #11986 typo fixed in AbstractProcessTest (getoutput() => getOutput()) (YevKov)
This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #11986).

Discussion
----------

typo fixed in AbstractProcessTest (getoutput() => getOutput())

Commits
-------

36998bb typo fixed in AbstractProcessTest (getoutput() => getOutput())
2014-09-23 07:16:08 +02:00
Yevgen Kovalienia
36998bb629 typo fixed in AbstractProcessTest (getoutput() => getOutput()) 2014-09-23 07:16:08 +02:00
Fabien Potencier
3a3fb05cdf bug #11908 [Translation] [Config] Clear libxml errors after parsing xliff file (pulzarraider)
This PR was merged into the 2.3 branch.

Discussion
----------

[Translation] [Config] Clear libxml errors after parsing xliff file

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

If libxml_use_internal_errors is set to `true` before parsing xliff file, the libxml errors are not cleared correctly. An error `Validation failed: no DTD found !` occurs in libxml errors after parsing and it's available outside the xliff parser (can break other functionality that use `libxml_get_errors` function).

Commits
-------

fab61ef [Translation] [Config] Clear libxml errors after parsing XML file
2014-09-23 07:15:05 +02:00
Adam
5fbb278b7a Avoid question mark and asterisk in folder names to prevent windows filesystem issues.
A previous commit introduced a folder with a question mark and an asterisk which are invalid NTFS folder name characters and prevented checkout on those systems.
2014-09-23 03:52:24 +00:00
Andrej Hudec
fab61effaf [Translation] [Config] Clear libxml errors after parsing XML file 2014-09-22 20:11:23 +02:00
Fabien Potencier
33b30a839f bug #11839 [FrameworkBundle] check if the Validator component is present when forms are enabled (xabbuh)
This PR was merged into the 2.5 branch.

Discussion
----------

[FrameworkBundle] check if the Validator component is present when forms are enabled

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

The `Symfony\Component\Validator\Validation` class is used in the
`FrameworkExtension` class. Therefore, it is required to have the
Validator component installed in production as well but not only when
being in a development environment.

Commits
-------

ed41da1 check for the Validator if forms are enabled
2014-09-22 18:56:03 +02:00
Christian Flothmann
ed41da1c9c check for the Validator if forms are enabled
When the Form component is enabled, the container extension class
automatically enables the Validator component which therefore has to
be enabled. The container extension now throws an exception when forms
are enabled, but the Validator component is not present.
2014-09-22 18:53:46 +02:00
Fabien Potencier
9752a7600a feature #11078 [WIP] [TwigBundle] [Exception] Make return value similar to error.json.twig (clemens-tolboom)
This PR was squashed before being merged into the 2.6-dev branch (closes #11078).

Discussion
----------

[WIP] [TwigBundle] [Exception] Make return value similar to error.json.twig

| Q             | A
| ------------- | ---
| Bug fix?      | I guess this is a bug
| New feature?  | The exception structure changes for the default
| BC breaks?    | The exception structure changes for the default
| Deprecations? | [yes|no]
| Tests pass?   | [yes|no]
| Fixed tickets |
| License       | MIT
| Doc PR        |

The result for `error.json.twig` and `exception.json.twig` differ making the client forced to check for it's result.

We think the structure should be the same to make the ie a javascript client try to respond similar for --env=dev|prod

Commits
-------

4a59f98 [WIP] [TwigBundle] [Exception] Make return value similar to error.json.twig
2014-09-22 18:01:06 +02:00
Clemens Tolboom
4a59f989a9 [WIP] [TwigBundle] [Exception] Make return value similar to error.json.twig 2014-09-22 18:01:04 +02:00
Fabien Potencier
6a435cd28e bug #11418 [JsonResponse] Silent only JSON errors (GromNaN)
This PR was submitted for the master branch but it was merged into the 2.5 branch instead (closes #11418).

Discussion
----------

[JsonResponse] Silent only JSON errors

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | maybe
| Fixed tickets | #11415
| License       | MIT
| Doc PR        | n/a

Commits
-------

6d6a3af Clear json_last_error
ef91f71 Fix JsonSerializable namespace
d952f90 Catch exceptions to restore the error handler
ddf95c7 [HttpFoundation] Silent only JSON errors
2014-09-22 17:58:59 +02:00
Jérôme Tamarelle
6d6a3af4ff Clear json_last_error 2014-09-22 17:58:58 +02:00
Jerome TAMARELLE
ef91f710e3 Fix JsonSerializable namespace 2014-09-22 17:58:58 +02:00
Jerome TAMARELLE
d952f9049e Catch exceptions to restore the error handler 2014-09-22 17:58:58 +02:00
Jerome TAMARELLE
ddf95c7adc [HttpFoundation] Silent only JSON errors 2014-09-22 17:58:58 +02:00
Fabien Potencier
e5e6f4d86d feature #11857 [Filesystem] Check number of bytes copied. (skigun)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Filesystem] Check number of bytes copied.

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10838
| License       | MIT
| Doc PR        | n/a

This only test local files (because of `filesize`), wonder if we should include the remote files using `get_headers` in order to get the Content-length for example. However, it will perform an additional request...

Here's a little benchmark for 500 copy from a remote origin file :
- Standard without check -> Time: 47.34 seconds, Memory: 3.75Mb
- Check with `get_headers` ->Time: 1.32 minutes, Memory: 3.75Mb

Commits
-------

81eca38 [Filesystem] Check number of bytes copied.
2014-09-22 17:54:44 +02:00
Fabien Potencier
a1f8d99a7e fixed CS 2014-09-22 17:52:38 +02:00
Fabien Potencier
2a9a342591 feature #11858 [DependencyInjection] Added exception to avoid fatal during compile in a frozen dumped container (ClementGautier)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[DependencyInjection] Added exception to avoid fatal during compile in a frozen dumped container

Q | A
------------- | ------------- | -----
Bug fix? | yes
New feature? | no
BC breaks? | no
Deprecations? | no
Tests pass? | yes
Fixed tickets | #10428
License | MIT
Doc PR | N/A

Commits
-------

2356eaa [DependencyInjection] Added exception to avoid fatal during compile in a frozen dumped container
2014-09-22 17:51:56 +02:00
Fabien Potencier
2104813ca2 Merge branch '2.5'
* 2.5:
  [2.3] Add missing development dependencies
  Fix @return docs on HttpCache::restoreResponseBody()
  [Finder] Escape location for regex searches
  Make sure HttpCache is a trusted proxy

Conflicts:
	src/Symfony/Component/Form/composer.json
2014-09-22 17:29:07 +02:00
Fabien Potencier
4fa670bfae Merge branch '2.4' into 2.5
* 2.4:
  [2.3] Add missing development dependencies
  Fix @return docs on HttpCache::restoreResponseBody()
  [Finder] Escape location for regex searches
  Make sure HttpCache is a trusted proxy
2014-09-22 17:28:36 +02:00
Fabien Potencier
8efff1b464 Merge branch '2.3' into 2.4
* 2.3:
  [2.3] Add missing development dependencies
  Fix @return docs on HttpCache::restoreResponseBody()
  [Finder] Escape location for regex searches
  Make sure HttpCache is a trusted proxy

Conflicts:
	src/Symfony/Bridge/Doctrine/composer.json
	src/Symfony/Bundle/FrameworkBundle/composer.json
	src/Symfony/Bundle/SecurityBundle/composer.json
	src/Symfony/Component/Form/composer.json
2014-09-22 17:28:09 +02:00
Fabien Potencier
4ac8adde5d minor #11340 [2.3] Add missing development dependencies (romainneutron)
This PR was squashed before being merged into the 2.3 branch (closes #11340).

Discussion
----------

[2.3] Add missing development dependencies

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT

I've also added a run of the test suite in every component scope.

Commits
-------

3b02af9 [2.3] Add missing development dependencies
2014-09-22 17:12:11 +02:00
Romain Neutron
3b02af9f79 [2.3] Add missing development dependencies 2014-09-22 17:11:59 +02:00
Fabien Potencier
995da74f35 feature #11312 Make assets:install smarter with symlinks (Roy Van Ginneken)
This PR was squashed before being merged into the 2.6-dev branch (closes #11312).

Discussion
----------

Make assets:install smarter with symlinks

| Q             | A
| ------------- | ---
| Bug fix?   | no
| New feature?      | yes
| BC breaks?      | no
| Deprecations?      | no
| Tests pass?      | -
| Fixed tickets     | #11297
| License     | MIT
| Doc PR | -

Commits
-------

6537333 Make assets:install smarter with symlinks
2014-09-22 15:51:42 +02:00
Roy Van Ginneken
6537333647 Make assets:install smarter with symlinks 2014-09-22 15:51:40 +02:00
Fabien Potencier
0811b29b63 feature #11852 [Console] add overwrite flag to ProgressBar helper to allow non-decorated output (kbond)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Console] add overwrite flag to ProgressBar helper to allow non-decorated output

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes, but not critical
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11542, #10011
| License       | MIT
| Doc PR        | symfony/symfony-docs#4206

By default, the `ProgressBar` helper overwrites the output to give the nice progress bar look.  To prevent the output from blowing up in non-decorated environments, the output was hidden in these environments (see #9846).

This PR enables using the `ProgressBar` in non-decorated environments by adding an `overwrite` flag.  When `false`, instead of overwriting the bar, it is rendered on a new line.  To prevent flooding the output, you can adjust the `redrawFrequency`.

By default, when using the `ProgressBar` in a non-decorated environment, the `overwrite` flag is set to false.  If a `max` is set, the `redrawFrequency` is set to a sensible default (10% of the max).  If a `max` isn't set, the bar is output for every advance so to prevent flooding, a sensible `redrawFrequency` should be manually set.

The only BC break is that output will now display where it didn't before.

Commits
-------

cdee6f6 add overwrite flag to allow non-decorated output
2014-09-22 15:46:08 +02:00
Fabien Potencier
902efb8a84 bug #11937 [HttpKernel] Make sure HttpCache is a trusted proxy (thewilkybarkid)
This PR was merged into the 2.3 branch.

Discussion
----------

[HttpKernel] Make sure HttpCache is a trusted proxy

| Q             | A
| ------------- | ---
| Bug fix?      | yes (of sorts)
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9292
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/4239

Fixes #9292 by adding `127.0.0.1` as a trusted proxy when using `HttpCache` (assuming it hasn't been already).

Commits
-------

ca65362 Make sure HttpCache is a trusted proxy
2014-09-22 15:44:41 +02:00
Fabien Potencier
74cc625df1 minor #11980 [FrameworkBundle] Added link on server:* commands (lyrixx)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[FrameworkBundle] Added link on server:* commands

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        |

Commits
-------

ce62ccf [FrameworkBundle] Added link on server:* commands
2014-09-22 15:30:00 +02:00
Grégoire Pineau
ce62ccfcdd [FrameworkBundle] Added link on server:* commands 2014-09-22 15:27:18 +02:00
Fabien Potencier
13139d759c minor #11981 Fix @return docs on HttpCache::restoreResponseBody() (znerol)
This PR was submitted for the master branch but it was merged into the 2.3 branch instead (closes #11981).

Discussion
----------

Fix @return docs on HttpCache::restoreResponseBody()

Commits
-------

37dc57b Fix @return docs on HttpCache::restoreResponseBody()
2014-09-22 15:25:53 +02:00
znerol
37dc57bda2 Fix @return docs on HttpCache::restoreResponseBody() 2014-09-22 15:25:52 +02:00
Fabien Potencier
677aefbbaa bug #11970 [Finder] Escape location for regex searches (ymc-dabe)
This PR was squashed before being merged into the 2.3 branch (closes #11970).

Discussion
----------

[Finder] Escape location for regex searches

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

If the location to start searching in contains a regex special char
like + or ? and the path restriction is a regular expresion with a start
limitation. No results will be found wtih at least GnuFindAdapter - e.g.:
```
use Symfony\Component\Finder\Finder;
use Symfony\Component\Finder\Adapter;

mkdir('/tmp/reg+ex/dir/subdir', 0777, true);

$finder = Finder::create()
    ->removeAdapters()
    ->addAdapter(new Adapter\GnuFindAdapter());
$finder->in('/tmp/reg+ex')->path('/^dir/');

print count($finder)."\n";
```

Expected result: 2
Actual result is: 0

This pull request consists of:
* a new test checking for this bug (0e81086a49425d0e12cff4f479fabeb97e9ed757)
* the actual fix (6595b6b2b71afc57ef08686b4584713c0e4e48ed)
* changes to comply with the coding standard (7f199c5b53b3c1f38b36dcc286d3b20ae877425b)

## How to reproduce
### Fastest way
1. Move or copy your local symfony clone into a location containing special regex chars:
  * `mv symfony symfony+regex`
2. Run tests in there
  * `cd symfony+regex && phpunit`

> Result: Some tests in the finder component will fail.

### Alternative: A new clone
1. Clone symfony in a directory containing at least one regex special char
  * `git clone https://github.com/symfony/symfony.git /tmp/symfony+regexchar`
2. As usual get composer, install dependencies and get phpunit
  * You might simply want to follow [this guide](http://symfony.com/doc/current/contributing/code/tests.html)
3. Run tests in there
   * `cd /tmp/symfony+regexchar && phpunit`

> Result: Some tests in the finder component will fail.

### Alternative: Apply the new test
1. Apply commit a29d1207ced2949c918357cf271200523960caef to your symfony clone
2. Run tests

> Result: The new test will fail.

Commits
-------

b63926b [Finder] Escape location for regex searches
2014-09-22 14:44:11 +02:00
Daniel Beyer
b63926b246 [Finder] Escape location for regex searches 2014-09-22 14:44:08 +02:00
Fabien Potencier
c85bed20e9 feature #10475 [Filesystem] Added a LockHandler (lyrixx)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[Filesystem] Added a LockHandler

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #9357 , #3586
| License       | MIT
| Doc PR        | https://github.com/symfony/symfony-docs/pull/3956/files

Code sample:

```php
    /**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $lockHelper = new LockHandler('/tmp/acme/hello.lock');
        if (!$lockHelper->lock()) {
            $output->writeln('The command is already running in another process.');

            return 0;
        }

        $output->writeln(sprintf('Hello <comment>%s</comment>!', $input->getArgument('who')));

        for (;;) {
        }

        $output->writeln(sprintf('bye <comment>%s</comment>!', $input->getArgument('who')));

        $lockHelper->unlock();
    }
```

![process-lock](https://f.cloud.github.com/assets/408368/2443205/4f0bf3e8-ae30-11e3-9bd4-78e09e2973ad.png)

Commits
-------

9ad8957 [Filesystem] Added a lock handler
2014-09-22 14:37:50 +02:00
Fabien Potencier
aeef2bc5da feature #11961 [FrameworkBundle] Determine templating.engine.php scope as late as possible (lyrixx)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[FrameworkBundle] Determine templating.engine.php scope as late as possible

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11653
| License       | MIT
| Doc PR        | -

Commits
-------

169dadd [FrameworkBundle] Determine templating.engine.php scope as late as possible
2014-09-22 14:32:47 +02:00
Fabien Potencier
1a55995e89 feature #11311 [FrameworkBundle] Additional helper commands to control PHP's built-in web server (xabbuh)
This PR was merged into the 2.6-dev branch.

Discussion
----------

[FrameworkBundle] Additional helper commands to control PHP's built-in web server

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #10827
| License       | MIT
| Doc PR        | symfony/symfony-docs#4005

Basically, both the ``server:status`` and ``server:stop`` wouldn't be really reliable if you had stopped the web server by, for example, killing the process. But honestly I don't know how to platform-independently determine if a process is still running given its PID. Maybe such a way could be a good improvement for the Process component.

Commits
-------

b601454 new helper commands for PHP's built-in server
2014-09-22 14:29:55 +02:00
Fabien Potencier
05815adb22 Merge branch '2.5'
* 2.5:
  added missing use statements
  added missing use statement
  added missing use statement
  fixed CS
  [Process] fixed some volatile tests
  [HttpKernel] fixed a volatile test
  [HttpFoundation] fixed some volatile tests
  [Tests] PHPUnit Optimizations
  Use getPathname() instead of string casting to get BinaryFileReponse file path

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
	src/Symfony/Bundle/TwigBundle/Tests/DependencyInjection/Fixtures/php/full.php
	src/Symfony/Component/Debug/Tests/Exception/FlattenExceptionTest.php
	src/Symfony/Component/HttpFoundation/Tests/BinaryFileResponseTest.php
	src/Symfony/Component/Process/Process.php
	src/Symfony/Component/Stopwatch/Stopwatch.php
	src/Symfony/Component/Validator/Constraints/AbstractComparisonValidator.php
	src/Symfony/Component/Validator/Tests/Constraints/GreaterThanOrEqualValidatorTest.php
	src/Symfony/Component/Yaml/Parser.php
	src/Symfony/Component/Yaml/Tests/InlineTest.php
2014-09-22 13:59:59 +02:00
Fabien Potencier
405d8f9862 added missing use statements 2014-09-22 12:18:36 +02:00
Fabien Potencier
12711fda63 added missing use statement 2014-09-22 12:10:16 +02:00
Fabien Potencier
24c7aef6dd added missing use statement 2014-09-22 11:21:49 +02:00