diff --git a/README.md b/README.md
new file mode 100644
index 0000000..834f94b
--- /dev/null
+++ b/README.md
@@ -0,0 +1,4 @@
+test-update-doctrine-command
+============================
+
+A Symfony project created on January 26, 2016, 1:51 pm.
diff --git a/app/.htaccess b/app/.htaccess
new file mode 100644
index 0000000..fb1de45
--- /dev/null
+++ b/app/.htaccess
@@ -0,0 +1,7 @@
+
+ Require all denied
+
+
+ Order deny,allow
+ Deny from all
+
diff --git a/app/AppCache.php b/app/AppCache.php
new file mode 100644
index 0000000..639ec2c
--- /dev/null
+++ b/app/AppCache.php
@@ -0,0 +1,7 @@
+getEnvironment(), ['dev', 'test'], true)) {
+ $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
+ $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
+ $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
+ $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
+ }
+
+ return $bundles;
+ }
+
+ public function getRootDir()
+ {
+ return __DIR__;
+ }
+
+ public function getCacheDir()
+ {
+ return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
+ }
+
+ public function getLogDir()
+ {
+ return dirname(__DIR__).'/var/logs';
+ }
+
+ public function registerContainerConfiguration(LoaderInterface $loader)
+ {
+ $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
+ }
+}
diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig
new file mode 100644
index 0000000..bafd28d
--- /dev/null
+++ b/app/Resources/views/base.html.twig
@@ -0,0 +1,13 @@
+
+
+
+
+ {% block title %}Welcome!{% endblock %}
+ {% block stylesheets %}{% endblock %}
+
+
+
+ {% block body %}{% endblock %}
+ {% block javascripts %}{% endblock %}
+
+
diff --git a/app/Resources/views/default/index.html.twig b/app/Resources/views/default/index.html.twig
new file mode 100644
index 0000000..75842eb
--- /dev/null
+++ b/app/Resources/views/default/index.html.twig
@@ -0,0 +1,76 @@
+{% extends 'base.html.twig' %}
+
+{% block body %}
+
+
+
+
Welcome to Symfony {{ constant('Symfony\\Component\\HttpKernel\\Kernel::VERSION') }}
+
+
+
+
+
+
+ Your application is ready to start working on it at:
+ {{ base_dir }}/
+
+
+
+
+
+
+
+{% endblock %}
+
+{% block stylesheets %}
+
+{% endblock %}
diff --git a/app/autoload.php b/app/autoload.php
new file mode 100644
index 0000000..fa582ec
--- /dev/null
+++ b/app/autoload.php
@@ -0,0 +1,13 @@
+getParameterOption(['--env', '-e'], getenv('SYMFONY_ENV') ?: 'dev');
+$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(['--no-debug', '']) && $env !== 'prod';
+
+if ($debug) {
+ Debug::enable();
+}
+
+$kernel = new AppKernel($env, $debug);
+$application = new Application($kernel);
+$application->run($input);
diff --git a/bin/symfony_requirements b/bin/symfony_requirements
new file mode 100755
index 0000000..1eca671
--- /dev/null
+++ b/bin/symfony_requirements
@@ -0,0 +1,143 @@
+#!/usr/bin/env php
+getPhpIniConfigPath();
+
+echo_title('Symfony2 Requirements Checker');
+
+echo '> PHP is using the following php.ini file:'.PHP_EOL;
+if ($iniPath) {
+ echo_style('green', ' '.$iniPath);
+} else {
+ echo_style('warning', ' WARNING: No configuration file (php.ini) used by PHP!');
+}
+
+echo PHP_EOL.PHP_EOL;
+
+echo '> Checking Symfony requirements:'.PHP_EOL.' ';
+
+$messages = array();
+foreach ($symfonyRequirements->getRequirements() as $req) {
+ /** @var $req Requirement */
+ if ($helpText = get_error_message($req, $lineSize)) {
+ echo_style('red', 'E');
+ $messages['error'][] = $helpText;
+ } else {
+ echo_style('green', '.');
+ }
+}
+
+$checkPassed = empty($messages['error']);
+
+foreach ($symfonyRequirements->getRecommendations() as $req) {
+ if ($helpText = get_error_message($req, $lineSize)) {
+ echo_style('yellow', 'W');
+ $messages['warning'][] = $helpText;
+ } else {
+ echo_style('green', '.');
+ }
+}
+
+if ($checkPassed) {
+ echo_block('success', 'OK', 'Your system is ready to run Symfony2 projects');
+} else {
+ echo_block('error', 'ERROR', 'Your system is not ready to run Symfony2 projects');
+
+ echo_title('Fix the following mandatory requirements', 'red');
+
+ foreach ($messages['error'] as $helpText) {
+ echo ' * '.$helpText.PHP_EOL;
+ }
+}
+
+if (!empty($messages['warning'])) {
+ echo_title('Optional recommendations to improve your setup', 'yellow');
+
+ foreach ($messages['warning'] as $helpText) {
+ echo ' * '.$helpText.PHP_EOL;
+ }
+}
+
+echo PHP_EOL;
+echo_style('title', 'Note');
+echo ' The command console could use a different php.ini file'.PHP_EOL;
+echo_style('title', '~~~~');
+echo ' than the one used with your web server. To be on the'.PHP_EOL;
+echo ' safe side, please check the requirements from your web'.PHP_EOL;
+echo ' server using the ';
+echo_style('yellow', 'web/config.php');
+echo ' script.'.PHP_EOL;
+echo PHP_EOL;
+
+exit($checkPassed ? 0 : 1);
+
+function get_error_message(Requirement $requirement, $lineSize)
+{
+ if ($requirement->isFulfilled()) {
+ return;
+ }
+
+ $errorMessage = wordwrap($requirement->getTestMessage(), $lineSize - 3, PHP_EOL.' ').PHP_EOL;
+ $errorMessage .= ' > '.wordwrap($requirement->getHelpText(), $lineSize - 5, PHP_EOL.' > ').PHP_EOL;
+
+ return $errorMessage;
+}
+
+function echo_title($title, $style = null)
+{
+ $style = $style ?: 'title';
+
+ echo PHP_EOL;
+ echo_style($style, $title.PHP_EOL);
+ echo_style($style, str_repeat('~', strlen($title)).PHP_EOL);
+ echo PHP_EOL;
+}
+
+function echo_style($style, $message)
+{
+ // ANSI color codes
+ $styles = array(
+ 'reset' => "\033[0m",
+ 'red' => "\033[31m",
+ 'green' => "\033[32m",
+ 'yellow' => "\033[33m",
+ 'error' => "\033[37;41m",
+ 'success' => "\033[37;42m",
+ 'title' => "\033[34m",
+ );
+ $supports = has_color_support();
+
+ echo($supports ? $styles[$style] : '').$message.($supports ? $styles['reset'] : '');
+}
+
+function echo_block($style, $title, $message)
+{
+ $message = ' '.trim($message).' ';
+ $width = strlen($message);
+
+ echo PHP_EOL.PHP_EOL;
+
+ echo_style($style, str_repeat(' ', $width).PHP_EOL);
+ echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL);
+ echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL);
+ echo_style($style, str_repeat(' ', $width).PHP_EOL);
+}
+
+function has_color_support()
+{
+ static $support;
+
+ if (null === $support) {
+ if (DIRECTORY_SEPARATOR == '\\') {
+ $support = false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI');
+ } else {
+ $support = function_exists('posix_isatty') && @posix_isatty(STDOUT);
+ }
+ }
+
+ return $support;
+}
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..0a5a7e5
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,64 @@
+{
+ "name": "senaria/test.update.doctrine.command",
+ "license": "proprietary",
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "": "src/"
+ },
+ "classmap": [
+ "app/AppKernel.php",
+ "app/AppCache.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\": "tests/"
+ }
+ },
+ "require": {
+ "php": ">=5.5.9",
+ "symfony/symfony": "3.0.*",
+ "doctrine/orm": "^2.5",
+ "doctrine/doctrine-bundle": "^1.6",
+ "doctrine/doctrine-cache-bundle": "^1.2",
+ "symfony/swiftmailer-bundle": "^2.3",
+ "symfony/monolog-bundle": "^2.8",
+ "sensio/distribution-bundle": "^5.0",
+ "sensio/framework-extra-bundle": "^3.0.2",
+ "incenteev/composer-parameter-handler": "^2.0"
+ },
+ "require-dev": {
+ "sensio/generator-bundle": "^3.0",
+ "symfony/phpunit-bridge": "^2.7"
+ },
+ "scripts": {
+ "post-install-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
+ ],
+ "post-update-cmd": [
+ "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
+ "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
+ ]
+ },
+ "extra": {
+ "symfony-app-dir": "app",
+ "symfony-bin-dir": "bin",
+ "symfony-var-dir": "var",
+ "symfony-web-dir": "web",
+ "symfony-tests-dir": "tests",
+ "symfony-assets-install": "relative",
+ "incenteev-parameters": {
+ "file": "app/config/parameters.yml"
+ }
+ }
+}
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..5a9600b
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,1949 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "hash": "93501e777053cbbced9d2432e3970393",
+ "content-hash": "2719813e18d1d68c78504382e9e81fb8",
+ "packages": [
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.2.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Annotations\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "time": "2015-08-31 12:32:49"
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.5.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/47cdc76ceb95cc591d9c79a36dc3794975b5d136",
+ "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "predis/predis": "~1.0",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2015-12-19 05:03:47"
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ],
+ "time": "2015-04-14 22:21:58"
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": "~5.5|~7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ],
+ "time": "2015-12-25 13:18:31"
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "v2.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/2fbcea96eae34a53183377cdbb0b9bec33974648",
+ "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": ">=2.4,<2.7-dev",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "symfony/console": "2.*"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\DBAL\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Database Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "persistence",
+ "queryobject"
+ ],
+ "time": "2015-12-25 16:28:24"
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "1.6.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b",
+ "reference": "c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "~2.3",
+ "doctrine/doctrine-cache-bundle": "~1.0",
+ "jdorn/sql-formatter": "~1.1",
+ "php": ">=5.3.2",
+ "symfony/console": "~2.3|~3.0",
+ "symfony/doctrine-bridge": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.3",
+ "phpunit/phpunit": "~4",
+ "satooshi/php-coveralls": "~0.6.1",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0",
+ "twig/twig": "~1.10"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "to use the data collector"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ],
+ "time": "2015-11-16 17:11:46"
+ },
+ {
+ "name": "doctrine/doctrine-cache-bundle",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
+ "reference": "030ff41ef1db66370b36467086bfb817a661fe6a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/030ff41ef1db66370b36467086bfb817a661fe6a",
+ "reference": "030ff41ef1db66370b36467086bfb817a661fe6a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "^1.4.2",
+ "doctrine/inflector": "~1.0",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2|~3.0"
+ },
+ "require-dev": {
+ "instaclick/coding-standard": "~1.1",
+ "instaclick/object-calisthenics-sniffs": "dev-master",
+ "instaclick/symfony2-coding-standard": "dev-remaster",
+ "phpunit/phpunit": "~4",
+ "satooshi/php-coveralls": "~0.6.1",
+ "squizlabs/php_codesniffer": "~1.5",
+ "symfony/console": "~2.2|~3.0",
+ "symfony/finder": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.2|~3.0",
+ "symfony/phpunit-bridge": "~2.7|~3.0",
+ "symfony/security-acl": "~2.3|~3.0",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0"
+ },
+ "suggest": {
+ "symfony/security-acl": "For using this bundle to cache ACLs"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Fabio B. Silva",
+ "email": "fabio.bat.silva@gmail.com"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@hotmail.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Bundle for Doctrine Cache",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ],
+ "time": "2015-11-27 04:59:07"
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ],
+ "time": "2015-11-06 14:35:42"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2015-06-14 21:17:01"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ],
+ "time": "2014-09-09 13:34:57"
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "v2.5.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/doctrine2.git",
+ "reference": "d9fc5388f1aa1751a0e148e76b4569bd207338e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d9fc5388f1aa1751a0e148e76b4569bd207338e9",
+ "reference": "d9fc5388f1aa1751a0e148e76b4569bd207338e9",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "~1.4",
+ "doctrine/collections": "~1.2",
+ "doctrine/common": ">=2.5-dev,<2.7-dev",
+ "doctrine/dbal": ">=2.5-dev,<2.6-dev",
+ "doctrine/instantiator": "~1.0.1",
+ "ext-pdo": "*",
+ "php": ">=5.4",
+ "symfony/console": "~2.5|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "dev-master",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "bin": [
+ "bin/doctrine",
+ "bin/doctrine.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ORM\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "orm"
+ ],
+ "time": "2015-12-25 15:50:05"
+ },
+ {
+ "name": "incenteev/composer-parameter-handler",
+ "version": "v2.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Incenteev/ParameterHandler.git",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpspec/prophecy-phpunit": "~1.0",
+ "symfony/filesystem": "~2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Incenteev\\ParameterHandler\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Composer script handling your ignored parameter file",
+ "homepage": "https://github.com/Incenteev/ParameterHandler",
+ "keywords": [
+ "parameters management"
+ ],
+ "time": "2015-11-10 17:04:01"
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ],
+ "time": "2014-01-12 16:20:24"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.17.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
+ "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "raven/raven": "^0.13",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "swiftmailer/swiftmailer": "~5.3",
+ "videlalvaro/php-amqplib": "~2.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "raven/raven": "Allow sending log messages to a Sentry server",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2015-10-14 12:51:02"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "d762ee5b099a29044603cd4649851e81aa66cb47"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/d762ee5b099a29044603cd4649851e81aa66cb47",
+ "reference": "d762ee5b099a29044603cd4649851e81aa66cb47",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ],
+ "time": "2015-12-10 14:48:13"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2012-12-21 11:40:51"
+ },
+ {
+ "name": "sensio/distribution-bundle",
+ "version": "v5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
+ "reference": "419c1824af940e2be0f833aca2327e1181a6b503"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/419c1824af940e2be0f833aca2327e1181a6b503",
+ "reference": "419c1824af940e2be0f833aca2327e1181a6b503",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9",
+ "sensiolabs/security-checker": "~3.0",
+ "symfony/class-loader": "~2.3|~3.0",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/filesystem": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/process": "~2.3|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\DistributionBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Base bundle for Symfony Distributions",
+ "keywords": [
+ "configuration",
+ "distribution"
+ ],
+ "time": "2015-12-18 17:44:11"
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v3.0.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "3e8936fe13aa4086644977d334d8fcd275f50357"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357",
+ "reference": "3e8936fe13aa4086644977d334d8fcd275f50357",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.4|~3.0",
+ "symfony/security-bundle": "~2.4|~3.0"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
+ "symfony/security-bundle": ""
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ],
+ "time": "2015-12-18 17:39:27"
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.0|~3.0"
+ },
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock",
+ "time": "2015-11-07 08:07:40"
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v5.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421",
+ "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9.1,<0.9.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.4-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "http://swiftmailer.org",
+ "keywords": [
+ "email",
+ "mail",
+ "mailer"
+ ],
+ "time": "2015-06-06 14:19:39"
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v2.8.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/84785c4d44801c4dd82829fa2e1820cacfe2c46f",
+ "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.8",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/monolog-bridge": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/console": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ],
+ "time": "2015-11-17 10:02:29"
+ },
+ {
+ "name": "symfony/polyfill-intl-icu",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-icu.git",
+ "reference": "2deb44160e1c886241c06602b12b98779f728177"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2deb44160e1c886241c06602b12b98779f728177",
+ "reference": "2deb44160e1c886241c06602b12b98779f728177",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/intl": "~2.3|~3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's ICU-related data and classes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "icu",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2015-11-04 20:28:58"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/49ff736bd5d41f45240cec77b44967d76e0c3d25",
+ "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2015-11-20 09:19:13"
+ },
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "e2e77609a9e2328eb370fbb0e0d8b2000ebb488f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e2e77609a9e2328eb370fbb0e0d8b2000ebb488f",
+ "reference": "e2e77609a9e2328eb370fbb0e0d8b2000ebb488f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-util": "~1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php56\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2015-12-18 15:10:25"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/7f7f3c9c2b9f17722e0cd64fdb4f957330c53146",
+ "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2015-11-04 20:28:58"
+ },
+ {
+ "name": "symfony/polyfill-util",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-util.git",
+ "reference": "4271c55cbc0a77b2641f861b978123e46b3da969"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4271c55cbc0a77b2641f861b978123e46b3da969",
+ "reference": "4271c55cbc0a77b2641f861b978123e46b3da969",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Util\\": ""
+ }
+ },
+ "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 utilities for portability of PHP codes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compat",
+ "compatibility",
+ "polyfill",
+ "shim"
+ ],
+ "time": "2015-11-04 20:28:58"
+ },
+ {
+ "name": "symfony/swiftmailer-bundle",
+ "version": "v2.3.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/swiftmailer-bundle.git",
+ "reference": "3d21ada19f23631f558ad6df653b168e35362e78"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/3d21ada19f23631f558ad6df653b168e35362e78",
+ "reference": "3d21ada19f23631f558ad6df653b168e35362e78",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2",
+ "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7|~3.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SwiftmailerBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony SwiftmailerBundle",
+ "homepage": "http://symfony.com",
+ "time": "2015-11-28 10:59:29"
+ },
+ {
+ "name": "symfony/symfony",
+ "version": "v3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/symfony.git",
+ "reference": "979d7323716fec847508eac3e62d59b117612a6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/979d7323716fec847508eac3e62d59b117612a6e",
+ "reference": "979d7323716fec847508eac3e62d59b117612a6e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.4",
+ "php": ">=5.5.9",
+ "psr/log": "~1.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php56": "~1.0",
+ "symfony/polyfill-php70": "~1.0",
+ "symfony/polyfill-util": "~1.0",
+ "twig/twig": "~1.23|~2.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection": "<1.0.7"
+ },
+ "replace": {
+ "symfony/asset": "self.version",
+ "symfony/browser-kit": "self.version",
+ "symfony/class-loader": "self.version",
+ "symfony/config": "self.version",
+ "symfony/console": "self.version",
+ "symfony/css-selector": "self.version",
+ "symfony/debug": "self.version",
+ "symfony/debug-bundle": "self.version",
+ "symfony/dependency-injection": "self.version",
+ "symfony/doctrine-bridge": "self.version",
+ "symfony/dom-crawler": "self.version",
+ "symfony/event-dispatcher": "self.version",
+ "symfony/expression-language": "self.version",
+ "symfony/filesystem": "self.version",
+ "symfony/finder": "self.version",
+ "symfony/form": "self.version",
+ "symfony/framework-bundle": "self.version",
+ "symfony/http-foundation": "self.version",
+ "symfony/http-kernel": "self.version",
+ "symfony/intl": "self.version",
+ "symfony/ldap": "self.version",
+ "symfony/monolog-bridge": "self.version",
+ "symfony/options-resolver": "self.version",
+ "symfony/process": "self.version",
+ "symfony/property-access": "self.version",
+ "symfony/property-info": "self.version",
+ "symfony/proxy-manager-bridge": "self.version",
+ "symfony/routing": "self.version",
+ "symfony/security": "self.version",
+ "symfony/security-bundle": "self.version",
+ "symfony/security-core": "self.version",
+ "symfony/security-csrf": "self.version",
+ "symfony/security-guard": "self.version",
+ "symfony/security-http": "self.version",
+ "symfony/serializer": "self.version",
+ "symfony/stopwatch": "self.version",
+ "symfony/templating": "self.version",
+ "symfony/translation": "self.version",
+ "symfony/twig-bridge": "self.version",
+ "symfony/twig-bundle": "self.version",
+ "symfony/validator": "self.version",
+ "symfony/var-dumper": "self.version",
+ "symfony/web-profiler-bundle": "self.version",
+ "symfony/yaml": "self.version"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.4",
+ "doctrine/doctrine-bundle": "~1.4",
+ "doctrine/orm": "~2.4,>=2.4.5",
+ "egulias/email-validator": "~1.2",
+ "monolog/monolog": "~1.11",
+ "ocramius/proxy-manager": "~0.4|~1.0",
+ "phpdocumentor/reflection": "^1.0.7",
+ "symfony/security-acl": "~2.8|~3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
+ "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
+ "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
+ "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
+ "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
+ "Symfony\\Bundle\\": "src/Symfony/Bundle/",
+ "Symfony\\Component\\": "src/Symfony/Component/"
+ },
+ "classmap": [
+ "src/Symfony/Component/Intl/Resources/stubs"
+ ],
+ "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": "The Symfony PHP framework",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "framework"
+ ],
+ "time": "2015-12-26 16:49:48"
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+ "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.7"
+ },
+ "require-dev": {
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.23-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "http://twig.sensiolabs.org/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ],
+ "time": "2015-11-05 12:49:06"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "sensio/generator-bundle",
+ "version": "v3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
+ "reference": "525e078ff7d5e9f19b0ef912bb6d6753673b3c66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/525e078ff7d5e9f19b0ef912bb6d6753673b3c66",
+ "reference": "525e078ff7d5e9f19b0ef912bb6d6753673b3c66",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.7|~3.0",
+ "symfony/framework-bundle": "~2.7|~3.0",
+ "symfony/process": "~2.7|~3.0",
+ "symfony/yaml": "~2.7|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.4",
+ "symfony/doctrine-bridge": "~2.7|~3.0",
+ "twig/twig": "~1.18"
+ },
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\GeneratorBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle generates code for you",
+ "time": "2015-12-20 20:01:41"
+ },
+ {
+ "name": "symfony/phpunit-bridge",
+ "version": "v2.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/phpunit-bridge.git",
+ "reference": "2deb2ccbe184948ae4e85e7b99e962738d3d2d69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2deb2ccbe184948ae4e85e7b99e962738d3d2d69",
+ "reference": "2deb2ccbe184948ae4e85e7b99e962738d3d2d69",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Bridge\\PhpUnit\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony PHPUnit Bridge",
+ "homepage": "https://symfony.com",
+ "time": "2015-12-11 08:57:52"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=5.5.9"
+ },
+ "platform-dev": []
+}
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
new file mode 100644
index 0000000..a2a0910
--- /dev/null
+++ b/phpunit.xml.dist
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+ tests
+
+
+
+
+
+
+
+
+
+ src
+
+ src/*Bundle/Resources
+ src/*/*Bundle/Resources
+ src/*/Bundle/*Bundle/Resources
+
+
+
+
diff --git a/src/.htaccess b/src/.htaccess
new file mode 100644
index 0000000..fb1de45
--- /dev/null
+++ b/src/.htaccess
@@ -0,0 +1,7 @@
+
+ Require all denied
+
+
+ Order deny,allow
+ Deny from all
+
diff --git a/src/AppBundle/AppBundle.php b/src/AppBundle/AppBundle.php
new file mode 100644
index 0000000..05123b6
--- /dev/null
+++ b/src/AppBundle/AppBundle.php
@@ -0,0 +1,9 @@
+render('default/index.html.twig', [
+ 'base_dir' => realpath($this->container->getParameter('kernel.root_dir').'/..'),
+ ]);
+ }
+}
diff --git a/src/AppBundle/Entity/FkIndexNameTest.php b/src/AppBundle/Entity/FkIndexNameTest.php
new file mode 100644
index 0000000..44e584f
--- /dev/null
+++ b/src/AppBundle/Entity/FkIndexNameTest.php
@@ -0,0 +1,26 @@
+request('GET', '/');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+ $this->assertContains('Welcome to Symfony', $crawler->filter('#container h1')->text());
+ }
+}
diff --git a/var/SymfonyRequirements.php b/var/SymfonyRequirements.php
new file mode 100644
index 0000000..28b0dcd
--- /dev/null
+++ b/var/SymfonyRequirements.php
@@ -0,0 +1,764 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/*
+ * Users of PHP 5.2 should be able to run the requirements checks.
+ * This is why the file and all classes must be compatible with PHP 5.2+
+ * (e.g. not using namespaces and closures).
+ *
+ * ************** CAUTION **************
+ *
+ * DO NOT EDIT THIS FILE as it will be overridden by Composer as part of
+ * the installation/update process. The original file resides in the
+ * SensioDistributionBundle.
+ *
+ * ************** CAUTION **************
+ */
+
+/**
+ * Represents a single PHP requirement, e.g. an installed extension.
+ * It can be a mandatory requirement or an optional recommendation.
+ * There is a special subclass, named PhpIniRequirement, to check a php.ini configuration.
+ *
+ * @author Tobias Schultze
+ */
+class Requirement
+{
+ private $fulfilled;
+ private $testMessage;
+ private $helpText;
+ private $helpHtml;
+ private $optional;
+
+ /**
+ * Constructor that initializes the requirement.
+ *
+ * @param bool $fulfilled Whether the requirement is fulfilled
+ * @param string $testMessage The message for testing the requirement
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
+ */
+ public function __construct($fulfilled, $testMessage, $helpHtml, $helpText = null, $optional = false)
+ {
+ $this->fulfilled = (bool) $fulfilled;
+ $this->testMessage = (string) $testMessage;
+ $this->helpHtml = (string) $helpHtml;
+ $this->helpText = null === $helpText ? strip_tags($this->helpHtml) : (string) $helpText;
+ $this->optional = (bool) $optional;
+ }
+
+ /**
+ * Returns whether the requirement is fulfilled.
+ *
+ * @return bool true if fulfilled, otherwise false
+ */
+ public function isFulfilled()
+ {
+ return $this->fulfilled;
+ }
+
+ /**
+ * Returns the message for testing the requirement.
+ *
+ * @return string The test message
+ */
+ public function getTestMessage()
+ {
+ return $this->testMessage;
+ }
+
+ /**
+ * Returns the help text for resolving the problem.
+ *
+ * @return string The help text
+ */
+ public function getHelpText()
+ {
+ return $this->helpText;
+ }
+
+ /**
+ * Returns the help text formatted in HTML.
+ *
+ * @return string The HTML help
+ */
+ public function getHelpHtml()
+ {
+ return $this->helpHtml;
+ }
+
+ /**
+ * Returns whether this is only an optional recommendation and not a mandatory requirement.
+ *
+ * @return bool true if optional, false if mandatory
+ */
+ public function isOptional()
+ {
+ return $this->optional;
+ }
+}
+
+/**
+ * Represents a PHP requirement in form of a php.ini configuration.
+ *
+ * @author Tobias Schultze
+ */
+class PhpIniRequirement extends Requirement
+{
+ /**
+ * Constructor that initializes the requirement.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string|null $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string|null $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ * @param bool $optional Whether this is only an optional recommendation not a mandatory requirement
+ */
+ public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null, $optional = false)
+ {
+ $cfgValue = ini_get($cfgName);
+
+ if (is_callable($evaluation)) {
+ if (null === $testMessage || null === $helpHtml) {
+ throw new InvalidArgumentException('You must provide the parameters testMessage and helpHtml for a callback evaluation.');
+ }
+
+ $fulfilled = call_user_func($evaluation, $cfgValue);
+ } else {
+ if (null === $testMessage) {
+ $testMessage = sprintf('%s %s be %s in php.ini',
+ $cfgName,
+ $optional ? 'should' : 'must',
+ $evaluation ? 'enabled' : 'disabled'
+ );
+ }
+
+ if (null === $helpHtml) {
+ $helpHtml = sprintf('Set %s to %s in php.ini*.',
+ $cfgName,
+ $evaluation ? 'on' : 'off'
+ );
+ }
+
+ $fulfilled = $evaluation == $cfgValue;
+ }
+
+ parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional);
+ }
+}
+
+/**
+ * A RequirementCollection represents a set of Requirement instances.
+ *
+ * @author Tobias Schultze
+ */
+class RequirementCollection implements IteratorAggregate
+{
+ private $requirements = array();
+
+ /**
+ * Gets the current RequirementCollection as an Iterator.
+ *
+ * @return Traversable A Traversable interface
+ */
+ public function getIterator()
+ {
+ return new ArrayIterator($this->requirements);
+ }
+
+ /**
+ * Adds a Requirement.
+ *
+ * @param Requirement $requirement A Requirement instance
+ */
+ public function add(Requirement $requirement)
+ {
+ $this->requirements[] = $requirement;
+ }
+
+ /**
+ * Adds a mandatory requirement.
+ *
+ * @param bool $fulfilled Whether the requirement is fulfilled
+ * @param string $testMessage The message for testing the requirement
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addRequirement($fulfilled, $testMessage, $helpHtml, $helpText = null)
+ {
+ $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, false));
+ }
+
+ /**
+ * Adds an optional recommendation.
+ *
+ * @param bool $fulfilled Whether the recommendation is fulfilled
+ * @param string $testMessage The message for testing the recommendation
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText = null)
+ {
+ $this->add(new Requirement($fulfilled, $testMessage, $helpHtml, $helpText, true));
+ }
+
+ /**
+ * Adds a mandatory requirement in form of a php.ini configuration.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+ {
+ $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, false));
+ }
+
+ /**
+ * Adds an optional recommendation in form of a php.ini configuration.
+ *
+ * @param string $cfgName The configuration name used for ini_get()
+ * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false,
+ * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement
+ * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false.
+ * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin.
+ * Example: You require a config to be true but PHP later removes this config and defaults it to true internally.
+ * @param string $testMessage The message for testing the requirement (when null and $evaluation is a boolean a default message is derived)
+ * @param string $helpHtml The help text formatted in HTML for resolving the problem (when null and $evaluation is a boolean a default help is derived)
+ * @param string|null $helpText The help text (when null, it will be inferred from $helpHtml, i.e. stripped from HTML tags)
+ */
+ public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsence = false, $testMessage = null, $helpHtml = null, $helpText = null)
+ {
+ $this->add(new PhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence, $testMessage, $helpHtml, $helpText, true));
+ }
+
+ /**
+ * Adds a requirement collection to the current set of requirements.
+ *
+ * @param RequirementCollection $collection A RequirementCollection instance
+ */
+ public function addCollection(RequirementCollection $collection)
+ {
+ $this->requirements = array_merge($this->requirements, $collection->all());
+ }
+
+ /**
+ * Returns both requirements and recommendations.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function all()
+ {
+ return $this->requirements;
+ }
+
+ /**
+ * Returns all mandatory requirements.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getRequirements()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns the mandatory requirements that were not met.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getFailedRequirements()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && !$req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns all optional recommendations.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getRecommendations()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if ($req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns the recommendations that were not met.
+ *
+ * @return array Array of Requirement instances
+ */
+ public function getFailedRecommendations()
+ {
+ $array = array();
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && $req->isOptional()) {
+ $array[] = $req;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * Returns whether a php.ini configuration is not correct.
+ *
+ * @return bool php.ini configuration problem?
+ */
+ public function hasPhpIniConfigIssue()
+ {
+ foreach ($this->requirements as $req) {
+ if (!$req->isFulfilled() && $req instanceof PhpIniRequirement) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Returns the PHP configuration file (php.ini) path.
+ *
+ * @return string|false php.ini file path
+ */
+ public function getPhpIniConfigPath()
+ {
+ return get_cfg_var('cfg_file_path');
+ }
+}
+
+/**
+ * This class specifies all requirements and optional recommendations that
+ * are necessary to run the Symfony Standard Edition.
+ *
+ * @author Tobias Schultze
+ * @author Fabien Potencier
+ */
+class SymfonyRequirements extends RequirementCollection
+{
+ const REQUIRED_PHP_VERSION = '5.3.3';
+
+ /**
+ * Constructor that initializes the requirements.
+ */
+ public function __construct()
+ {
+ /* mandatory requirements follow */
+
+ $installedPhpVersion = phpversion();
+
+ $this->addRequirement(
+ version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='),
+ sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion),
+ sprintf('You are running PHP version "%s", but Symfony needs at least PHP "%s" to run.
+ Before using Symfony, upgrade your PHP installation, preferably to the latest version.',
+ $installedPhpVersion, self::REQUIRED_PHP_VERSION),
+ sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion)
+ );
+
+ $this->addRequirement(
+ version_compare($installedPhpVersion, '5.3.16', '!='),
+ 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it',
+ 'Install PHP 5.3.17 or newer (or downgrade to an earlier PHP version)'
+ );
+
+ $this->addRequirement(
+ is_dir(__DIR__.'/../vendor/composer'),
+ 'Vendor libraries must be installed',
+ 'Vendor libraries are missing. Install composer following instructions from http://getcomposer.org/. '.
+ 'Then run "php composer.phar install" to install them.'
+ );
+
+ $cacheDir = is_dir(__DIR__.'/../var/cache') ? __DIR__.'/../var/cache' : __DIR__.'/cache';
+
+ $this->addRequirement(
+ is_writable($cacheDir),
+ 'app/cache/ or var/cache/ directory must be writable',
+ 'Change the permissions of either "app/cache/" or "var/cache/" directory so that the web server can write into it.'
+ );
+
+ $logsDir = is_dir(__DIR__.'/../var/logs') ? __DIR__.'/../var/logs' : __DIR__.'/logs';
+
+ $this->addRequirement(
+ is_writable($logsDir),
+ 'app/logs/ or var/logs/ directory must be writable',
+ 'Change the permissions of either "app/logs/" or "var/logs/" directory so that the web server can write into it.'
+ );
+
+ $this->addPhpIniRequirement(
+ 'date.timezone', true, false,
+ 'date.timezone setting must be set',
+ 'Set the "date.timezone" setting in php.ini* (like Europe/Paris).'
+ );
+
+ if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) {
+ $timezones = array();
+ foreach (DateTimeZone::listAbbreviations() as $abbreviations) {
+ foreach ($abbreviations as $abbreviation) {
+ $timezones[$abbreviation['timezone_id']] = true;
+ }
+ }
+
+ $this->addRequirement(
+ isset($timezones[@date_default_timezone_get()]),
+ sprintf('Configured default timezone "%s" must be supported by your installation of PHP', @date_default_timezone_get()),
+ 'Your default timezone is not supported by PHP. Check for typos in your php.ini file and have a look at the list of deprecated timezones at http://php.net/manual/en/timezones.others.php.'
+ );
+ }
+
+ $this->addRequirement(
+ function_exists('iconv'),
+ 'iconv() must be available',
+ 'Install and enable the iconv extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('json_encode'),
+ 'json_encode() must be available',
+ 'Install and enable the JSON extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('session_start'),
+ 'session_start() must be available',
+ 'Install and enable the session extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('ctype_alpha'),
+ 'ctype_alpha() must be available',
+ 'Install and enable the ctype extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('token_get_all'),
+ 'token_get_all() must be available',
+ 'Install and enable the Tokenizer extension.'
+ );
+
+ $this->addRequirement(
+ function_exists('simplexml_import_dom'),
+ 'simplexml_import_dom() must be available',
+ 'Install and enable the SimpleXML extension.'
+ );
+
+ if (function_exists('apc_store') && ini_get('apc.enabled')) {
+ if (version_compare($installedPhpVersion, '5.4.0', '>=')) {
+ $this->addRequirement(
+ version_compare(phpversion('apc'), '3.1.13', '>='),
+ 'APC version must be at least 3.1.13 when using PHP 5.4',
+ 'Upgrade your APC extension (3.1.13+).'
+ );
+ } else {
+ $this->addRequirement(
+ version_compare(phpversion('apc'), '3.0.17', '>='),
+ 'APC version must be at least 3.0.17',
+ 'Upgrade your APC extension (3.0.17+).'
+ );
+ }
+ }
+
+ $this->addPhpIniRequirement('detect_unicode', false);
+
+ if (extension_loaded('suhosin')) {
+ $this->addPhpIniRequirement(
+ 'suhosin.executor.include.whitelist',
+ create_function('$cfgValue', 'return false !== stripos($cfgValue, "phar");'),
+ false,
+ 'suhosin.executor.include.whitelist must be configured correctly in php.ini',
+ 'Add "phar" to suhosin.executor.include.whitelist in php.ini*.'
+ );
+ }
+
+ if (extension_loaded('xdebug')) {
+ $this->addPhpIniRequirement(
+ 'xdebug.show_exception_trace', false, true
+ );
+
+ $this->addPhpIniRequirement(
+ 'xdebug.scream', false, true
+ );
+
+ $this->addPhpIniRecommendation(
+ 'xdebug.max_nesting_level',
+ create_function('$cfgValue', 'return $cfgValue > 100;'),
+ true,
+ 'xdebug.max_nesting_level should be above 100 in php.ini',
+ 'Set "xdebug.max_nesting_level" to e.g. "250" in php.ini* to stop Xdebug\'s infinite recursion protection erroneously throwing a fatal error in your project.'
+ );
+ }
+
+ $pcreVersion = defined('PCRE_VERSION') ? (float) PCRE_VERSION : null;
+
+ $this->addRequirement(
+ null !== $pcreVersion,
+ 'PCRE extension must be available',
+ 'Install the PCRE extension (version 8.0+).'
+ );
+
+ if (extension_loaded('mbstring')) {
+ $this->addPhpIniRequirement(
+ 'mbstring.func_overload',
+ create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
+ true,
+ 'string functions should not be overloaded',
+ 'Set "mbstring.func_overload" to 0 in php.ini* to disable function overloading by the mbstring extension.'
+ );
+ }
+
+ /* optional recommendations follow */
+
+ if (file_exists(__DIR__.'/../vendor/composer')) {
+ require_once __DIR__.'/../vendor/autoload.php';
+
+ try {
+ $r = new ReflectionClass('Sensio\Bundle\DistributionBundle\SensioDistributionBundle');
+
+ $contents = file_get_contents(dirname($r->getFileName()).'/Resources/skeleton/app/SymfonyRequirements.php');
+ } catch (ReflectionException $e) {
+ $contents = '';
+ }
+ $this->addRecommendation(
+ file_get_contents(__FILE__) === $contents,
+ 'Requirements file should be up-to-date',
+ 'Your requirements file is outdated. Run composer install and re-check your configuration.'
+ );
+ }
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.3.4', '>='),
+ 'You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions',
+ 'Your project might malfunction randomly due to PHP bug #52083 ("Notice: Trying to get property of non-object"). Install PHP 5.3.4 or newer.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.3.8', '>='),
+ 'When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156',
+ 'Install PHP 5.3.8 or newer if your project uses annotations.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.4.0', '!='),
+ 'You should not use PHP 5.4.0 due to the PHP bug #61453',
+ 'Your project might not work properly due to the PHP bug #61453 ("Cannot dump definitions which have method calls"). Install PHP 5.4.1 or newer.'
+ );
+
+ $this->addRecommendation(
+ version_compare($installedPhpVersion, '5.4.11', '>='),
+ 'When using the logout handler from the Symfony Security Component, you should have at least PHP 5.4.11 due to PHP bug #63379 (as a workaround, you can also set invalidate_session to false in the security logout handler configuration)',
+ 'Install PHP 5.4.11 or newer if your project uses the logout handler from the Symfony Security Component.'
+ );
+
+ $this->addRecommendation(
+ (version_compare($installedPhpVersion, '5.3.18', '>=') && version_compare($installedPhpVersion, '5.4.0', '<'))
+ ||
+ version_compare($installedPhpVersion, '5.4.8', '>='),
+ 'You should use PHP 5.3.18+ or PHP 5.4.8+ to always get nice error messages for fatal errors in the development environment due to PHP bug #61767/#60909',
+ 'Install PHP 5.3.18+ or PHP 5.4.8+ if you want nice error messages for all fatal errors in the development environment.'
+ );
+
+ if (null !== $pcreVersion) {
+ $this->addRecommendation(
+ $pcreVersion >= 8.0,
+ sprintf('PCRE extension should be at least version 8.0 (%s installed)', $pcreVersion),
+ 'PCRE 8.0+ is preconfigured in PHP since 5.3.2 but you are using an outdated version of it. Symfony probably works anyway but it is recommended to upgrade your PCRE extension.'
+ );
+ }
+
+ $this->addRecommendation(
+ class_exists('DomDocument'),
+ 'PHP-DOM and PHP-XML modules should be installed',
+ 'Install and enable the PHP-DOM and the PHP-XML modules.'
+ );
+
+ $this->addRecommendation(
+ function_exists('mb_strlen'),
+ 'mb_strlen() should be available',
+ 'Install and enable the mbstring extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('iconv'),
+ 'iconv() should be available',
+ 'Install and enable the iconv extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('utf8_decode'),
+ 'utf8_decode() should be available',
+ 'Install and enable the XML extension.'
+ );
+
+ $this->addRecommendation(
+ function_exists('filter_var'),
+ 'filter_var() should be available',
+ 'Install and enable the filter extension.'
+ );
+
+ if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
+ $this->addRecommendation(
+ function_exists('posix_isatty'),
+ 'posix_isatty() should be available',
+ 'Install and enable the php_posix extension (used to colorize the CLI output).'
+ );
+ }
+
+ $this->addRecommendation(
+ extension_loaded('intl'),
+ 'intl extension should be available',
+ 'Install and enable the intl extension (used for validators).'
+ );
+
+ if (extension_loaded('intl')) {
+ // in some WAMP server installations, new Collator() returns null
+ $this->addRecommendation(
+ null !== new Collator('fr_FR'),
+ 'intl extension should be correctly configured',
+ 'The intl extension does not behave properly. This problem is typical on PHP 5.3.X x64 WIN builds.'
+ );
+
+ // check for compatible ICU versions (only done when you have the intl extension)
+ if (defined('INTL_ICU_VERSION')) {
+ $version = INTL_ICU_VERSION;
+ } else {
+ $reflector = new ReflectionExtension('intl');
+
+ ob_start();
+ $reflector->info();
+ $output = strip_tags(ob_get_clean());
+
+ preg_match('/^ICU version +(?:=> )?(.*)$/m', $output, $matches);
+ $version = $matches[1];
+ }
+
+ $this->addRecommendation(
+ version_compare($version, '4.0', '>='),
+ 'intl ICU version should be at least 4+',
+ 'Upgrade your intl extension with a newer ICU version (4+).'
+ );
+
+ $this->addPhpIniRecommendation(
+ 'intl.error_level',
+ create_function('$cfgValue', 'return (int) $cfgValue === 0;'),
+ true,
+ 'intl.error_level should be 0 in php.ini',
+ 'Set "intl.error_level" to "0" in php.ini* to inhibit the messages when an error occurs in ICU functions.'
+ );
+ }
+
+ $accelerator =
+ (extension_loaded('eaccelerator') && ini_get('eaccelerator.enable'))
+ ||
+ (extension_loaded('apc') && ini_get('apc.enabled'))
+ ||
+ (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.enable'))
+ ||
+ (extension_loaded('Zend OPcache') && ini_get('opcache.enable'))
+ ||
+ (extension_loaded('xcache') && ini_get('xcache.cacher'))
+ ||
+ (extension_loaded('wincache') && ini_get('wincache.ocenabled'))
+ ;
+
+ $this->addRecommendation(
+ $accelerator,
+ 'a PHP accelerator should be installed',
+ 'Install and/or enable a PHP accelerator (highly recommended).'
+ );
+
+ if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+ $this->addRecommendation(
+ $this->getRealpathCacheSize() > 1000,
+ 'realpath_cache_size should be above 1024 in php.ini',
+ 'Set "realpath_cache_size" to e.g. "1024" in php.ini* to improve performance on windows.'
+ );
+ }
+
+ $this->addPhpIniRecommendation('short_open_tag', false);
+
+ $this->addPhpIniRecommendation('magic_quotes_gpc', false, true);
+
+ $this->addPhpIniRecommendation('register_globals', false, true);
+
+ $this->addPhpIniRecommendation('session.auto_start', false);
+
+ $this->addRecommendation(
+ class_exists('PDO'),
+ 'PDO should be installed',
+ 'Install PDO (mandatory for Doctrine).'
+ );
+
+ if (class_exists('PDO')) {
+ $drivers = PDO::getAvailableDrivers();
+ $this->addRecommendation(
+ count($drivers) > 0,
+ sprintf('PDO should have some drivers installed (currently available: %s)', count($drivers) ? implode(', ', $drivers) : 'none'),
+ 'Install PDO drivers (mandatory for Doctrine).'
+ );
+ }
+ }
+
+ /**
+ * Loads realpath_cache_size from php.ini and converts it to int.
+ *
+ * (e.g. 16k is converted to 16384 int)
+ *
+ * @return int
+ */
+ protected function getRealpathCacheSize()
+ {
+ $size = ini_get('realpath_cache_size');
+ $size = trim($size);
+ $unit = strtolower(substr($size, -1, 1));
+ switch ($unit) {
+ case 'g':
+ return $size * 1024 * 1024 * 1024;
+ case 'm':
+ return $size * 1024 * 1024;
+ case 'k':
+ return $size * 1024;
+ default:
+ return (int) $size;
+ }
+ }
+}
diff --git a/var/bootstrap.php.cache b/var/bootstrap.php.cache
new file mode 100644
index 0000000..ac47d9a
--- /dev/null
+++ b/var/bootstrap.php.cache
@@ -0,0 +1,3057 @@
+parameters = $parameters;
+}
+public function all()
+{
+return $this->parameters;
+}
+public function keys()
+{
+return array_keys($this->parameters);
+}
+public function replace(array $parameters = array())
+{
+$this->parameters = $parameters;
+}
+public function add(array $parameters = array())
+{
+$this->parameters = array_replace($this->parameters, $parameters);
+}
+public function get($key, $default = null)
+{
+return array_key_exists($key, $this->parameters) ? $this->parameters[$key] : $default;
+}
+public function set($key, $value)
+{
+$this->parameters[$key] = $value;
+}
+public function has($key)
+{
+return array_key_exists($key, $this->parameters);
+}
+public function remove($key)
+{
+unset($this->parameters[$key]);
+}
+public function getAlpha($key, $default ='')
+{
+return preg_replace('/[^[:alpha:]]/','', $this->get($key, $default));
+}
+public function getAlnum($key, $default ='')
+{
+return preg_replace('/[^[:alnum:]]/','', $this->get($key, $default));
+}
+public function getDigits($key, $default ='')
+{
+return str_replace(array('-','+'),'', $this->filter($key, $default, FILTER_SANITIZE_NUMBER_INT));
+}
+public function getInt($key, $default = 0)
+{
+return (int) $this->get($key, $default);
+}
+public function getBoolean($key, $default = false)
+{
+return $this->filter($key, $default, FILTER_VALIDATE_BOOLEAN);
+}
+public function filter($key, $default = null, $filter = FILTER_DEFAULT, $options = array())
+{
+$value = $this->get($key, $default);
+if (!is_array($options) && $options) {
+$options = array('flags'=> $options);
+}
+if (is_array($value) && !isset($options['flags'])) {
+$options['flags'] = FILTER_REQUIRE_ARRAY;
+}
+return filter_var($value, $filter, $options);
+}
+public function getIterator()
+{
+return new \ArrayIterator($this->parameters);
+}
+public function count()
+{
+return count($this->parameters);
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class HeaderBag implements \IteratorAggregate, \Countable
+{
+protected $headers = array();
+protected $cacheControl = array();
+public function __construct(array $headers = array())
+{
+foreach ($headers as $key => $values) {
+$this->set($key, $values);
+}
+}
+public function __toString()
+{
+if (!$this->headers) {
+return'';
+}
+$max = max(array_map('strlen', array_keys($this->headers))) + 1;
+$content ='';
+ksort($this->headers);
+foreach ($this->headers as $name => $values) {
+$name = implode('-', array_map('ucfirst', explode('-', $name)));
+foreach ($values as $value) {
+$content .= sprintf("%-{$max}s %s\r\n", $name.':', $value);
+}
+}
+return $content;
+}
+public function all()
+{
+return $this->headers;
+}
+public function keys()
+{
+return array_keys($this->headers);
+}
+public function replace(array $headers = array())
+{
+$this->headers = array();
+$this->add($headers);
+}
+public function add(array $headers)
+{
+foreach ($headers as $key => $values) {
+$this->set($key, $values);
+}
+}
+public function get($key, $default = null, $first = true)
+{
+$key = strtr(strtolower($key),'_','-');
+if (!array_key_exists($key, $this->headers)) {
+if (null === $default) {
+return $first ? null : array();
+}
+return $first ? $default : array($default);
+}
+if ($first) {
+return count($this->headers[$key]) ? $this->headers[$key][0] : $default;
+}
+return $this->headers[$key];
+}
+public function set($key, $values, $replace = true)
+{
+$key = strtr(strtolower($key),'_','-');
+$values = array_values((array) $values);
+if (true === $replace || !isset($this->headers[$key])) {
+$this->headers[$key] = $values;
+} else {
+$this->headers[$key] = array_merge($this->headers[$key], $values);
+}
+if ('cache-control'=== $key) {
+$this->cacheControl = $this->parseCacheControl($values[0]);
+}
+}
+public function has($key)
+{
+return array_key_exists(strtr(strtolower($key),'_','-'), $this->headers);
+}
+public function contains($key, $value)
+{
+return in_array($value, $this->get($key, null, false));
+}
+public function remove($key)
+{
+$key = strtr(strtolower($key),'_','-');
+unset($this->headers[$key]);
+if ('cache-control'=== $key) {
+$this->cacheControl = array();
+}
+}
+public function getDate($key, \DateTime $default = null)
+{
+if (null === $value = $this->get($key)) {
+return $default;
+}
+if (false === $date = \DateTime::createFromFormat(DATE_RFC2822, $value)) {
+throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value));
+}
+return $date;
+}
+public function addCacheControlDirective($key, $value = true)
+{
+$this->cacheControl[$key] = $value;
+$this->set('Cache-Control', $this->getCacheControlHeader());
+}
+public function hasCacheControlDirective($key)
+{
+return array_key_exists($key, $this->cacheControl);
+}
+public function getCacheControlDirective($key)
+{
+return array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null;
+}
+public function removeCacheControlDirective($key)
+{
+unset($this->cacheControl[$key]);
+$this->set('Cache-Control', $this->getCacheControlHeader());
+}
+public function getIterator()
+{
+return new \ArrayIterator($this->headers);
+}
+public function count()
+{
+return count($this->headers);
+}
+protected function getCacheControlHeader()
+{
+$parts = array();
+ksort($this->cacheControl);
+foreach ($this->cacheControl as $key => $value) {
+if (true === $value) {
+$parts[] = $key;
+} else {
+if (preg_match('#[^a-zA-Z0-9._-]#', $value)) {
+$value ='"'.$value.'"';
+}
+$parts[] = "$key=$value";
+}
+}
+return implode(', ', $parts);
+}
+protected function parseCacheControl($header)
+{
+$cacheControl = array();
+preg_match_all('#([a-zA-Z][a-zA-Z_-]*)\s*(?:=(?:"([^"]*)"|([^ \t",;]*)))?#', $header, $matches, PREG_SET_ORDER);
+foreach ($matches as $match) {
+$cacheControl[strtolower($match[1])] = isset($match[3]) ? $match[3] : (isset($match[2]) ? $match[2] : true);
+}
+return $cacheControl;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+use Symfony\Component\HttpFoundation\File\UploadedFile;
+class FileBag extends ParameterBag
+{
+private static $fileKeys = array('error','name','size','tmp_name','type');
+public function __construct(array $parameters = array())
+{
+$this->replace($parameters);
+}
+public function replace(array $files = array())
+{
+$this->parameters = array();
+$this->add($files);
+}
+public function set($key, $value)
+{
+if (!is_array($value) && !$value instanceof UploadedFile) {
+throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.');
+}
+parent::set($key, $this->convertFileInformation($value));
+}
+public function add(array $files = array())
+{
+foreach ($files as $key => $file) {
+$this->set($key, $file);
+}
+}
+protected function convertFileInformation($file)
+{
+if ($file instanceof UploadedFile) {
+return $file;
+}
+$file = $this->fixPhpFilesArray($file);
+if (is_array($file)) {
+$keys = array_keys($file);
+sort($keys);
+if ($keys == self::$fileKeys) {
+if (UPLOAD_ERR_NO_FILE == $file['error']) {
+$file = null;
+} else {
+$file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']);
+}
+} else {
+$file = array_map(array($this,'convertFileInformation'), $file);
+}
+}
+return $file;
+}
+protected function fixPhpFilesArray($data)
+{
+if (!is_array($data)) {
+return $data;
+}
+$keys = array_keys($data);
+sort($keys);
+if (self::$fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) {
+return $data;
+}
+$files = $data;
+foreach (self::$fileKeys as $k) {
+unset($files[$k]);
+}
+foreach ($data['name'] as $key => $name) {
+$files[$key] = $this->fixPhpFilesArray(array('error'=> $data['error'][$key],'name'=> $name,'type'=> $data['type'][$key],'tmp_name'=> $data['tmp_name'][$key],'size'=> $data['size'][$key],
+));
+}
+return $files;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class ServerBag extends ParameterBag
+{
+public function getHeaders()
+{
+$headers = array();
+$contentHeaders = array('CONTENT_LENGTH'=> true,'CONTENT_MD5'=> true,'CONTENT_TYPE'=> true);
+foreach ($this->parameters as $key => $value) {
+if (0 === strpos($key,'HTTP_')) {
+$headers[substr($key, 5)] = $value;
+}
+elseif (isset($contentHeaders[$key])) {
+$headers[$key] = $value;
+}
+}
+if (isset($this->parameters['PHP_AUTH_USER'])) {
+$headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
+$headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] :'';
+} else {
+$authorizationHeader = null;
+if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
+$authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
+} elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
+$authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
+}
+if (null !== $authorizationHeader) {
+if (0 === stripos($authorizationHeader,'basic ')) {
+$exploded = explode(':', base64_decode(substr($authorizationHeader, 6)), 2);
+if (count($exploded) == 2) {
+list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
+}
+} elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && (0 === stripos($authorizationHeader,'digest '))) {
+$headers['PHP_AUTH_DIGEST'] = $authorizationHeader;
+$this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader;
+} elseif (0 === stripos($authorizationHeader,'bearer ')) {
+$headers['AUTHORIZATION'] = $authorizationHeader;
+}
+}
+}
+if (isset($headers['PHP_AUTH_USER'])) {
+$headers['AUTHORIZATION'] ='Basic '.base64_encode($headers['PHP_AUTH_USER'].':'.$headers['PHP_AUTH_PW']);
+} elseif (isset($headers['PHP_AUTH_DIGEST'])) {
+$headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST'];
+}
+return $headers;
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+use Symfony\Component\HttpFoundation\Session\SessionInterface;
+class Request
+{
+const HEADER_FORWARDED ='forwarded';
+const HEADER_CLIENT_IP ='client_ip';
+const HEADER_CLIENT_HOST ='client_host';
+const HEADER_CLIENT_PROTO ='client_proto';
+const HEADER_CLIENT_PORT ='client_port';
+const METHOD_HEAD ='HEAD';
+const METHOD_GET ='GET';
+const METHOD_POST ='POST';
+const METHOD_PUT ='PUT';
+const METHOD_PATCH ='PATCH';
+const METHOD_DELETE ='DELETE';
+const METHOD_PURGE ='PURGE';
+const METHOD_OPTIONS ='OPTIONS';
+const METHOD_TRACE ='TRACE';
+const METHOD_CONNECT ='CONNECT';
+protected static $trustedProxies = array();
+protected static $trustedHostPatterns = array();
+protected static $trustedHosts = array();
+protected static $trustedHeaders = array(
+self::HEADER_FORWARDED =>'FORWARDED',
+self::HEADER_CLIENT_IP =>'X_FORWARDED_FOR',
+self::HEADER_CLIENT_HOST =>'X_FORWARDED_HOST',
+self::HEADER_CLIENT_PROTO =>'X_FORWARDED_PROTO',
+self::HEADER_CLIENT_PORT =>'X_FORWARDED_PORT',
+);
+protected static $httpMethodParameterOverride = false;
+public $attributes;
+public $request;
+public $query;
+public $server;
+public $files;
+public $cookies;
+public $headers;
+protected $content;
+protected $languages;
+protected $charsets;
+protected $encodings;
+protected $acceptableContentTypes;
+protected $pathInfo;
+protected $requestUri;
+protected $baseUrl;
+protected $basePath;
+protected $method;
+protected $format;
+protected $session;
+protected $locale;
+protected $defaultLocale ='en';
+protected static $formats;
+protected static $requestFactory;
+public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
+{
+$this->initialize($query, $request, $attributes, $cookies, $files, $server, $content);
+}
+public function initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
+{
+$this->request = new ParameterBag($request);
+$this->query = new ParameterBag($query);
+$this->attributes = new ParameterBag($attributes);
+$this->cookies = new ParameterBag($cookies);
+$this->files = new FileBag($files);
+$this->server = new ServerBag($server);
+$this->headers = new HeaderBag($this->server->getHeaders());
+$this->content = $content;
+$this->languages = null;
+$this->charsets = null;
+$this->encodings = null;
+$this->acceptableContentTypes = null;
+$this->pathInfo = null;
+$this->requestUri = null;
+$this->baseUrl = null;
+$this->basePath = null;
+$this->method = null;
+$this->format = null;
+}
+public static function createFromGlobals()
+{
+$server = $_SERVER;
+if ('cli-server'=== php_sapi_name()) {
+if (array_key_exists('HTTP_CONTENT_LENGTH', $_SERVER)) {
+$server['CONTENT_LENGTH'] = $_SERVER['HTTP_CONTENT_LENGTH'];
+}
+if (array_key_exists('HTTP_CONTENT_TYPE', $_SERVER)) {
+$server['CONTENT_TYPE'] = $_SERVER['HTTP_CONTENT_TYPE'];
+}
+}
+$request = self::createRequestFromFactory($_GET, $_POST, array(), $_COOKIE, $_FILES, $server);
+if (0 === strpos($request->headers->get('CONTENT_TYPE'),'application/x-www-form-urlencoded')
+&& in_array(strtoupper($request->server->get('REQUEST_METHOD','GET')), array('PUT','DELETE','PATCH'))
+) {
+parse_str($request->getContent(), $data);
+$request->request = new ParameterBag($data);
+}
+return $request;
+}
+public static function create($uri, $method ='GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $content = null)
+{
+$server = array_replace(array('SERVER_NAME'=>'localhost','SERVER_PORT'=> 80,'HTTP_HOST'=>'localhost','HTTP_USER_AGENT'=>'Symfony/2.X','HTTP_ACCEPT'=>'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','HTTP_ACCEPT_LANGUAGE'=>'en-us,en;q=0.5','HTTP_ACCEPT_CHARSET'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7','REMOTE_ADDR'=>'127.0.0.1','SCRIPT_NAME'=>'','SCRIPT_FILENAME'=>'','SERVER_PROTOCOL'=>'HTTP/1.1','REQUEST_TIME'=> time(),
+), $server);
+$server['PATH_INFO'] ='';
+$server['REQUEST_METHOD'] = strtoupper($method);
+$components = parse_url($uri);
+if (isset($components['host'])) {
+$server['SERVER_NAME'] = $components['host'];
+$server['HTTP_HOST'] = $components['host'];
+}
+if (isset($components['scheme'])) {
+if ('https'=== $components['scheme']) {
+$server['HTTPS'] ='on';
+$server['SERVER_PORT'] = 443;
+} else {
+unset($server['HTTPS']);
+$server['SERVER_PORT'] = 80;
+}
+}
+if (isset($components['port'])) {
+$server['SERVER_PORT'] = $components['port'];
+$server['HTTP_HOST'] = $server['HTTP_HOST'].':'.$components['port'];
+}
+if (isset($components['user'])) {
+$server['PHP_AUTH_USER'] = $components['user'];
+}
+if (isset($components['pass'])) {
+$server['PHP_AUTH_PW'] = $components['pass'];
+}
+if (!isset($components['path'])) {
+$components['path'] ='/';
+}
+switch (strtoupper($method)) {
+case'POST':
+case'PUT':
+case'DELETE':
+if (!isset($server['CONTENT_TYPE'])) {
+$server['CONTENT_TYPE'] ='application/x-www-form-urlencoded';
+}
+case'PATCH':
+$request = $parameters;
+$query = array();
+break;
+default:
+$request = array();
+$query = $parameters;
+break;
+}
+$queryString ='';
+if (isset($components['query'])) {
+parse_str(html_entity_decode($components['query']), $qs);
+if ($query) {
+$query = array_replace($qs, $query);
+$queryString = http_build_query($query,'','&');
+} else {
+$query = $qs;
+$queryString = $components['query'];
+}
+} elseif ($query) {
+$queryString = http_build_query($query,'','&');
+}
+$server['REQUEST_URI'] = $components['path'].(''!== $queryString ?'?'.$queryString :'');
+$server['QUERY_STRING'] = $queryString;
+return self::createRequestFromFactory($query, $request, array(), $cookies, $files, $server, $content);
+}
+public static function setFactory($callable)
+{
+self::$requestFactory = $callable;
+}
+public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null)
+{
+$dup = clone $this;
+if ($query !== null) {
+$dup->query = new ParameterBag($query);
+}
+if ($request !== null) {
+$dup->request = new ParameterBag($request);
+}
+if ($attributes !== null) {
+$dup->attributes = new ParameterBag($attributes);
+}
+if ($cookies !== null) {
+$dup->cookies = new ParameterBag($cookies);
+}
+if ($files !== null) {
+$dup->files = new FileBag($files);
+}
+if ($server !== null) {
+$dup->server = new ServerBag($server);
+$dup->headers = new HeaderBag($dup->server->getHeaders());
+}
+$dup->languages = null;
+$dup->charsets = null;
+$dup->encodings = null;
+$dup->acceptableContentTypes = null;
+$dup->pathInfo = null;
+$dup->requestUri = null;
+$dup->baseUrl = null;
+$dup->basePath = null;
+$dup->method = null;
+$dup->format = null;
+if (!$dup->get('_format') && $this->get('_format')) {
+$dup->attributes->set('_format', $this->get('_format'));
+}
+if (!$dup->getRequestFormat(null)) {
+$dup->setRequestFormat($this->getRequestFormat(null));
+}
+return $dup;
+}
+public function __clone()
+{
+$this->query = clone $this->query;
+$this->request = clone $this->request;
+$this->attributes = clone $this->attributes;
+$this->cookies = clone $this->cookies;
+$this->files = clone $this->files;
+$this->server = clone $this->server;
+$this->headers = clone $this->headers;
+}
+public function __toString()
+{
+try {
+$content = $this->getContent();
+} catch (\LogicException $e) {
+return trigger_error($e, E_USER_ERROR);
+}
+return
+sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL'))."\r\n".
+$this->headers."\r\n".
+$content;
+}
+public function overrideGlobals()
+{
+$this->server->set('QUERY_STRING', static::normalizeQueryString(http_build_query($this->query->all(), null,'&')));
+$_GET = $this->query->all();
+$_POST = $this->request->all();
+$_SERVER = $this->server->all();
+$_COOKIE = $this->cookies->all();
+foreach ($this->headers->all() as $key => $value) {
+$key = strtoupper(str_replace('-','_', $key));
+if (in_array($key, array('CONTENT_TYPE','CONTENT_LENGTH'))) {
+$_SERVER[$key] = implode(', ', $value);
+} else {
+$_SERVER['HTTP_'.$key] = implode(', ', $value);
+}
+}
+$request = array('g'=> $_GET,'p'=> $_POST,'c'=> $_COOKIE);
+$requestOrder = ini_get('request_order') ?: ini_get('variables_order');
+$requestOrder = preg_replace('#[^cgp]#','', strtolower($requestOrder)) ?:'gp';
+$_REQUEST = array();
+foreach (str_split($requestOrder) as $order) {
+$_REQUEST = array_merge($_REQUEST, $request[$order]);
+}
+}
+public static function setTrustedProxies(array $proxies)
+{
+self::$trustedProxies = $proxies;
+}
+public static function getTrustedProxies()
+{
+return self::$trustedProxies;
+}
+public static function setTrustedHosts(array $hostPatterns)
+{
+self::$trustedHostPatterns = array_map(function ($hostPattern) {
+return sprintf('#%s#i', $hostPattern);
+}, $hostPatterns);
+self::$trustedHosts = array();
+}
+public static function getTrustedHosts()
+{
+return self::$trustedHostPatterns;
+}
+public static function setTrustedHeaderName($key, $value)
+{
+if (!array_key_exists($key, self::$trustedHeaders)) {
+throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for key "%s".', $key));
+}
+self::$trustedHeaders[$key] = $value;
+}
+public static function getTrustedHeaderName($key)
+{
+if (!array_key_exists($key, self::$trustedHeaders)) {
+throw new \InvalidArgumentException(sprintf('Unable to get the trusted header name for key "%s".', $key));
+}
+return self::$trustedHeaders[$key];
+}
+public static function normalizeQueryString($qs)
+{
+if (''== $qs) {
+return'';
+}
+$parts = array();
+$order = array();
+foreach (explode('&', $qs) as $param) {
+if (''=== $param ||'='=== $param[0]) {
+continue;
+}
+$keyValuePair = explode('=', $param, 2);
+$parts[] = isset($keyValuePair[1]) ?
+rawurlencode(urldecode($keyValuePair[0])).'='.rawurlencode(urldecode($keyValuePair[1])) :
+rawurlencode(urldecode($keyValuePair[0]));
+$order[] = urldecode($keyValuePair[0]);
+}
+array_multisort($order, SORT_ASC, $parts);
+return implode('&', $parts);
+}
+public static function enableHttpMethodParameterOverride()
+{
+self::$httpMethodParameterOverride = true;
+}
+public static function getHttpMethodParameterOverride()
+{
+return self::$httpMethodParameterOverride;
+}
+public function get($key, $default = null)
+{
+if ($this !== $result = $this->attributes->get($key, $this)) {
+return $result;
+}
+if ($this !== $result = $this->query->get($key, $this)) {
+return $result;
+}
+if ($this !== $result = $this->request->get($key, $this)) {
+return $result;
+}
+return $default;
+}
+public function getSession()
+{
+return $this->session;
+}
+public function hasPreviousSession()
+{
+return $this->hasSession() && $this->cookies->has($this->session->getName());
+}
+public function hasSession()
+{
+return null !== $this->session;
+}
+public function setSession(SessionInterface $session)
+{
+$this->session = $session;
+}
+public function getClientIps()
+{
+$clientIps = array();
+$ip = $this->server->get('REMOTE_ADDR');
+if (!$this->isFromTrustedProxy()) {
+return array($ip);
+}
+if (self::$trustedHeaders[self::HEADER_FORWARDED] && $this->headers->has(self::$trustedHeaders[self::HEADER_FORWARDED])) {
+$forwardedHeader = $this->headers->get(self::$trustedHeaders[self::HEADER_FORWARDED]);
+preg_match_all('{(for)=("?\[?)([a-z0-9\.:_\-/]*)}', $forwardedHeader, $matches);
+$clientIps = $matches[3];
+} elseif (self::$trustedHeaders[self::HEADER_CLIENT_IP] && $this->headers->has(self::$trustedHeaders[self::HEADER_CLIENT_IP])) {
+$clientIps = array_map('trim', explode(',', $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_IP])));
+}
+$clientIps[] = $ip; $ip = $clientIps[0];
+foreach ($clientIps as $key => $clientIp) {
+if (preg_match('{((?:\d+\.){3}\d+)\:\d+}', $clientIp, $match)) {
+$clientIps[$key] = $clientIp = $match[1];
+}
+if (IpUtils::checkIp($clientIp, self::$trustedProxies)) {
+unset($clientIps[$key]);
+}
+}
+return $clientIps ? array_reverse($clientIps) : array($ip);
+}
+public function getClientIp()
+{
+$ipAddresses = $this->getClientIps();
+return $ipAddresses[0];
+}
+public function getScriptName()
+{
+return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME',''));
+}
+public function getPathInfo()
+{
+if (null === $this->pathInfo) {
+$this->pathInfo = $this->preparePathInfo();
+}
+return $this->pathInfo;
+}
+public function getBasePath()
+{
+if (null === $this->basePath) {
+$this->basePath = $this->prepareBasePath();
+}
+return $this->basePath;
+}
+public function getBaseUrl()
+{
+if (null === $this->baseUrl) {
+$this->baseUrl = $this->prepareBaseUrl();
+}
+return $this->baseUrl;
+}
+public function getScheme()
+{
+return $this->isSecure() ?'https':'http';
+}
+public function getPort()
+{
+if ($this->isFromTrustedProxy()) {
+if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && $port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT])) {
+return $port;
+}
+if (self::$trustedHeaders[self::HEADER_CLIENT_PROTO] &&'https'=== $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO],'http')) {
+return 443;
+}
+}
+if ($host = $this->headers->get('HOST')) {
+if ($host[0] ==='[') {
+$pos = strpos($host,':', strrpos($host,']'));
+} else {
+$pos = strrpos($host,':');
+}
+if (false !== $pos) {
+return (int) substr($host, $pos + 1);
+}
+return'https'=== $this->getScheme() ? 443 : 80;
+}
+return $this->server->get('SERVER_PORT');
+}
+public function getUser()
+{
+return $this->headers->get('PHP_AUTH_USER');
+}
+public function getPassword()
+{
+return $this->headers->get('PHP_AUTH_PW');
+}
+public function getUserInfo()
+{
+$userinfo = $this->getUser();
+$pass = $this->getPassword();
+if (''!= $pass) {
+$userinfo .= ":$pass";
+}
+return $userinfo;
+}
+public function getHttpHost()
+{
+$scheme = $this->getScheme();
+$port = $this->getPort();
+if (('http'== $scheme && $port == 80) || ('https'== $scheme && $port == 443)) {
+return $this->getHost();
+}
+return $this->getHost().':'.$port;
+}
+public function getRequestUri()
+{
+if (null === $this->requestUri) {
+$this->requestUri = $this->prepareRequestUri();
+}
+return $this->requestUri;
+}
+public function getSchemeAndHttpHost()
+{
+return $this->getScheme().'://'.$this->getHttpHost();
+}
+public function getUri()
+{
+if (null !== $qs = $this->getQueryString()) {
+$qs ='?'.$qs;
+}
+return $this->getSchemeAndHttpHost().$this->getBaseUrl().$this->getPathInfo().$qs;
+}
+public function getUriForPath($path)
+{
+return $this->getSchemeAndHttpHost().$this->getBaseUrl().$path;
+}
+public function getRelativeUriForPath($path)
+{
+if (!isset($path[0]) ||'/'!== $path[0]) {
+return $path;
+}
+if ($path === $basePath = $this->getPathInfo()) {
+return'';
+}
+$sourceDirs = explode('/', isset($basePath[0]) &&'/'=== $basePath[0] ? substr($basePath, 1) : $basePath);
+$targetDirs = explode('/', isset($path[0]) &&'/'=== $path[0] ? substr($path, 1) : $path);
+array_pop($sourceDirs);
+$targetFile = array_pop($targetDirs);
+foreach ($sourceDirs as $i => $dir) {
+if (isset($targetDirs[$i]) && $dir === $targetDirs[$i]) {
+unset($sourceDirs[$i], $targetDirs[$i]);
+} else {
+break;
+}
+}
+$targetDirs[] = $targetFile;
+$path = str_repeat('../', count($sourceDirs)).implode('/', $targetDirs);
+return !isset($path[0]) ||'/'=== $path[0]
+|| false !== ($colonPos = strpos($path,':')) && ($colonPos < ($slashPos = strpos($path,'/')) || false === $slashPos)
+? "./$path" : $path;
+}
+public function getQueryString()
+{
+$qs = static::normalizeQueryString($this->server->get('QUERY_STRING'));
+return''=== $qs ? null : $qs;
+}
+public function isSecure()
+{
+if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && $proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO])) {
+return in_array(strtolower(current(explode(',', $proto))), array('https','on','ssl','1'));
+}
+$https = $this->server->get('HTTPS');
+return !empty($https) &&'off'!== strtolower($https);
+}
+public function getHost()
+{
+if ($this->isFromTrustedProxy() && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && $host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST])) {
+$elements = explode(',', $host);
+$host = $elements[count($elements) - 1];
+} elseif (!$host = $this->headers->get('HOST')) {
+if (!$host = $this->server->get('SERVER_NAME')) {
+$host = $this->server->get('SERVER_ADDR','');
+}
+}
+$host = strtolower(preg_replace('/:\d+$/','', trim($host)));
+if ($host &&''!== preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/','', $host)) {
+throw new \UnexpectedValueException(sprintf('Invalid Host "%s"', $host));
+}
+if (count(self::$trustedHostPatterns) > 0) {
+if (in_array($host, self::$trustedHosts)) {
+return $host;
+}
+foreach (self::$trustedHostPatterns as $pattern) {
+if (preg_match($pattern, $host)) {
+self::$trustedHosts[] = $host;
+return $host;
+}
+}
+throw new \UnexpectedValueException(sprintf('Untrusted Host "%s"', $host));
+}
+return $host;
+}
+public function setMethod($method)
+{
+$this->method = null;
+$this->server->set('REQUEST_METHOD', $method);
+}
+public function getMethod()
+{
+if (null === $this->method) {
+$this->method = strtoupper($this->server->get('REQUEST_METHOD','GET'));
+if ('POST'=== $this->method) {
+if ($method = $this->headers->get('X-HTTP-METHOD-OVERRIDE')) {
+$this->method = strtoupper($method);
+} elseif (self::$httpMethodParameterOverride) {
+$this->method = strtoupper($this->request->get('_method', $this->query->get('_method','POST')));
+}
+}
+}
+return $this->method;
+}
+public function getRealMethod()
+{
+return strtoupper($this->server->get('REQUEST_METHOD','GET'));
+}
+public function getMimeType($format)
+{
+if (null === static::$formats) {
+static::initializeFormats();
+}
+return isset(static::$formats[$format]) ? static::$formats[$format][0] : null;
+}
+public function getFormat($mimeType)
+{
+if (false !== $pos = strpos($mimeType,';')) {
+$mimeType = substr($mimeType, 0, $pos);
+}
+if (null === static::$formats) {
+static::initializeFormats();
+}
+foreach (static::$formats as $format => $mimeTypes) {
+if (in_array($mimeType, (array) $mimeTypes)) {
+return $format;
+}
+}
+}
+public function setFormat($format, $mimeTypes)
+{
+if (null === static::$formats) {
+static::initializeFormats();
+}
+static::$formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes);
+}
+public function getRequestFormat($default ='html')
+{
+if (null === $this->format) {
+$this->format = $this->attributes->get('_format', $default);
+}
+return $this->format;
+}
+public function setRequestFormat($format)
+{
+$this->format = $format;
+}
+public function getContentType()
+{
+return $this->getFormat($this->headers->get('CONTENT_TYPE'));
+}
+public function setDefaultLocale($locale)
+{
+$this->defaultLocale = $locale;
+if (null === $this->locale) {
+$this->setPhpDefaultLocale($locale);
+}
+}
+public function getDefaultLocale()
+{
+return $this->defaultLocale;
+}
+public function setLocale($locale)
+{
+$this->setPhpDefaultLocale($this->locale = $locale);
+}
+public function getLocale()
+{
+return null === $this->locale ? $this->defaultLocale : $this->locale;
+}
+public function isMethod($method)
+{
+return $this->getMethod() === strtoupper($method);
+}
+public function isMethodSafe()
+{
+return in_array($this->getMethod(), array('GET','HEAD'));
+}
+public function getContent($asResource = false)
+{
+$currentContentIsResource = is_resource($this->content);
+if (PHP_VERSION_ID < 50600 && false === $this->content) {
+throw new \LogicException('getContent() can only be called once when using the resource return type and PHP below 5.6.');
+}
+if (true === $asResource) {
+if ($currentContentIsResource) {
+rewind($this->content);
+return $this->content;
+}
+if (is_string($this->content)) {
+$resource = fopen('php://temp','r+');
+fwrite($resource, $this->content);
+rewind($resource);
+return $resource;
+}
+$this->content = false;
+return fopen('php://input','rb');
+}
+if ($currentContentIsResource) {
+rewind($this->content);
+return stream_get_contents($this->content);
+}
+if (null === $this->content) {
+$this->content = file_get_contents('php://input');
+}
+return $this->content;
+}
+public function getETags()
+{
+return preg_split('/\s*,\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY);
+}
+public function isNoCache()
+{
+return $this->headers->hasCacheControlDirective('no-cache') ||'no-cache'== $this->headers->get('Pragma');
+}
+public function getPreferredLanguage(array $locales = null)
+{
+$preferredLanguages = $this->getLanguages();
+if (empty($locales)) {
+return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null;
+}
+if (!$preferredLanguages) {
+return $locales[0];
+}
+$extendedPreferredLanguages = array();
+foreach ($preferredLanguages as $language) {
+$extendedPreferredLanguages[] = $language;
+if (false !== $position = strpos($language,'_')) {
+$superLanguage = substr($language, 0, $position);
+if (!in_array($superLanguage, $preferredLanguages)) {
+$extendedPreferredLanguages[] = $superLanguage;
+}
+}
+}
+$preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales));
+return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0];
+}
+public function getLanguages()
+{
+if (null !== $this->languages) {
+return $this->languages;
+}
+$languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all();
+$this->languages = array();
+foreach ($languages as $lang => $acceptHeaderItem) {
+if (false !== strpos($lang,'-')) {
+$codes = explode('-', $lang);
+if ('i'=== $codes[0]) {
+if (count($codes) > 1) {
+$lang = $codes[1];
+}
+} else {
+for ($i = 0, $max = count($codes); $i < $max; ++$i) {
+if ($i === 0) {
+$lang = strtolower($codes[0]);
+} else {
+$lang .='_'.strtoupper($codes[$i]);
+}
+}
+}
+}
+$this->languages[] = $lang;
+}
+return $this->languages;
+}
+public function getCharsets()
+{
+if (null !== $this->charsets) {
+return $this->charsets;
+}
+return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all());
+}
+public function getEncodings()
+{
+if (null !== $this->encodings) {
+return $this->encodings;
+}
+return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all());
+}
+public function getAcceptableContentTypes()
+{
+if (null !== $this->acceptableContentTypes) {
+return $this->acceptableContentTypes;
+}
+return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all());
+}
+public function isXmlHttpRequest()
+{
+return'XMLHttpRequest'== $this->headers->get('X-Requested-With');
+}
+protected function prepareRequestUri()
+{
+$requestUri ='';
+if ($this->headers->has('X_ORIGINAL_URL')) {
+$requestUri = $this->headers->get('X_ORIGINAL_URL');
+$this->headers->remove('X_ORIGINAL_URL');
+$this->server->remove('HTTP_X_ORIGINAL_URL');
+$this->server->remove('UNENCODED_URL');
+$this->server->remove('IIS_WasUrlRewritten');
+} elseif ($this->headers->has('X_REWRITE_URL')) {
+$requestUri = $this->headers->get('X_REWRITE_URL');
+$this->headers->remove('X_REWRITE_URL');
+} elseif ($this->server->get('IIS_WasUrlRewritten') =='1'&& $this->server->get('UNENCODED_URL') !='') {
+$requestUri = $this->server->get('UNENCODED_URL');
+$this->server->remove('UNENCODED_URL');
+$this->server->remove('IIS_WasUrlRewritten');
+} elseif ($this->server->has('REQUEST_URI')) {
+$requestUri = $this->server->get('REQUEST_URI');
+$schemeAndHttpHost = $this->getSchemeAndHttpHost();
+if (strpos($requestUri, $schemeAndHttpHost) === 0) {
+$requestUri = substr($requestUri, strlen($schemeAndHttpHost));
+}
+} elseif ($this->server->has('ORIG_PATH_INFO')) {
+$requestUri = $this->server->get('ORIG_PATH_INFO');
+if (''!= $this->server->get('QUERY_STRING')) {
+$requestUri .='?'.$this->server->get('QUERY_STRING');
+}
+$this->server->remove('ORIG_PATH_INFO');
+}
+$this->server->set('REQUEST_URI', $requestUri);
+return $requestUri;
+}
+protected function prepareBaseUrl()
+{
+$filename = basename($this->server->get('SCRIPT_FILENAME'));
+if (basename($this->server->get('SCRIPT_NAME')) === $filename) {
+$baseUrl = $this->server->get('SCRIPT_NAME');
+} elseif (basename($this->server->get('PHP_SELF')) === $filename) {
+$baseUrl = $this->server->get('PHP_SELF');
+} elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) {
+$baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); } else {
+$path = $this->server->get('PHP_SELF','');
+$file = $this->server->get('SCRIPT_FILENAME','');
+$segs = explode('/', trim($file,'/'));
+$segs = array_reverse($segs);
+$index = 0;
+$last = count($segs);
+$baseUrl ='';
+do {
+$seg = $segs[$index];
+$baseUrl ='/'.$seg.$baseUrl;
+++$index;
+} while ($last > $index && (false !== $pos = strpos($path, $baseUrl)) && 0 != $pos);
+}
+$requestUri = $this->getRequestUri();
+if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl)) {
+return $prefix;
+}
+if ($baseUrl && false !== $prefix = $this->getUrlencodedPrefix($requestUri, rtrim(dirname($baseUrl),'/'.DIRECTORY_SEPARATOR).'/')) {
+return rtrim($prefix,'/'.DIRECTORY_SEPARATOR);
+}
+$truncatedRequestUri = $requestUri;
+if (false !== $pos = strpos($requestUri,'?')) {
+$truncatedRequestUri = substr($requestUri, 0, $pos);
+}
+$basename = basename($baseUrl);
+if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) {
+return'';
+}
+if (strlen($requestUri) >= strlen($baseUrl) && (false !== $pos = strpos($requestUri, $baseUrl)) && $pos !== 0) {
+$baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl));
+}
+return rtrim($baseUrl,'/'.DIRECTORY_SEPARATOR);
+}
+protected function prepareBasePath()
+{
+$filename = basename($this->server->get('SCRIPT_FILENAME'));
+$baseUrl = $this->getBaseUrl();
+if (empty($baseUrl)) {
+return'';
+}
+if (basename($baseUrl) === $filename) {
+$basePath = dirname($baseUrl);
+} else {
+$basePath = $baseUrl;
+}
+if ('\\'=== DIRECTORY_SEPARATOR) {
+$basePath = str_replace('\\','/', $basePath);
+}
+return rtrim($basePath,'/');
+}
+protected function preparePathInfo()
+{
+$baseUrl = $this->getBaseUrl();
+if (null === ($requestUri = $this->getRequestUri())) {
+return'/';
+}
+$pathInfo ='/';
+if ($pos = strpos($requestUri,'?')) {
+$requestUri = substr($requestUri, 0, $pos);
+}
+$pathInfo = substr($requestUri, strlen($baseUrl));
+if (null !== $baseUrl && (false === $pathInfo ||''=== $pathInfo)) {
+return'/';
+} elseif (null === $baseUrl) {
+return $requestUri;
+}
+return (string) $pathInfo;
+}
+protected static function initializeFormats()
+{
+static::$formats = array('html'=> array('text/html','application/xhtml+xml'),'txt'=> array('text/plain'),'js'=> array('application/javascript','application/x-javascript','text/javascript'),'css'=> array('text/css'),'json'=> array('application/json','application/x-json'),'xml'=> array('text/xml','application/xml','application/x-xml'),'rdf'=> array('application/rdf+xml'),'atom'=> array('application/atom+xml'),'rss'=> array('application/rss+xml'),'form'=> array('application/x-www-form-urlencoded'),
+);
+}
+private function setPhpDefaultLocale($locale)
+{
+try {
+if (class_exists('Locale', false)) {
+\Locale::setDefault($locale);
+}
+} catch (\Exception $e) {
+}
+}
+private function getUrlencodedPrefix($string, $prefix)
+{
+if (0 !== strpos(rawurldecode($string), $prefix)) {
+return false;
+}
+$len = strlen($prefix);
+if (preg_match(sprintf('#^(%%[[:xdigit:]]{2}|.){%d}#', $len), $string, $match)) {
+return $match[0];
+}
+return false;
+}
+private static function createRequestFromFactory(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
+{
+if (self::$requestFactory) {
+$request = call_user_func(self::$requestFactory, $query, $request, $attributes, $cookies, $files, $server, $content);
+if (!$request instanceof self) {
+throw new \LogicException('The Request factory must return an instance of Symfony\Component\HttpFoundation\Request.');
+}
+return $request;
+}
+return new static($query, $request, $attributes, $cookies, $files, $server, $content);
+}
+private function isFromTrustedProxy()
+{
+return self::$trustedProxies && IpUtils::checkIp($this->server->get('REMOTE_ADDR'), self::$trustedProxies);
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class Response
+{
+const HTTP_CONTINUE = 100;
+const HTTP_SWITCHING_PROTOCOLS = 101;
+const HTTP_PROCESSING = 102; const HTTP_OK = 200;
+const HTTP_CREATED = 201;
+const HTTP_ACCEPTED = 202;
+const HTTP_NON_AUTHORITATIVE_INFORMATION = 203;
+const HTTP_NO_CONTENT = 204;
+const HTTP_RESET_CONTENT = 205;
+const HTTP_PARTIAL_CONTENT = 206;
+const HTTP_MULTI_STATUS = 207; const HTTP_ALREADY_REPORTED = 208; const HTTP_IM_USED = 226; const HTTP_MULTIPLE_CHOICES = 300;
+const HTTP_MOVED_PERMANENTLY = 301;
+const HTTP_FOUND = 302;
+const HTTP_SEE_OTHER = 303;
+const HTTP_NOT_MODIFIED = 304;
+const HTTP_USE_PROXY = 305;
+const HTTP_RESERVED = 306;
+const HTTP_TEMPORARY_REDIRECT = 307;
+const HTTP_PERMANENTLY_REDIRECT = 308; const HTTP_BAD_REQUEST = 400;
+const HTTP_UNAUTHORIZED = 401;
+const HTTP_PAYMENT_REQUIRED = 402;
+const HTTP_FORBIDDEN = 403;
+const HTTP_NOT_FOUND = 404;
+const HTTP_METHOD_NOT_ALLOWED = 405;
+const HTTP_NOT_ACCEPTABLE = 406;
+const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407;
+const HTTP_REQUEST_TIMEOUT = 408;
+const HTTP_CONFLICT = 409;
+const HTTP_GONE = 410;
+const HTTP_LENGTH_REQUIRED = 411;
+const HTTP_PRECONDITION_FAILED = 412;
+const HTTP_REQUEST_ENTITY_TOO_LARGE = 413;
+const HTTP_REQUEST_URI_TOO_LONG = 414;
+const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
+const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
+const HTTP_EXPECTATION_FAILED = 417;
+const HTTP_I_AM_A_TEAPOT = 418; const HTTP_UNPROCESSABLE_ENTITY = 422; const HTTP_LOCKED = 423; const HTTP_FAILED_DEPENDENCY = 424; const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; const HTTP_UPGRADE_REQUIRED = 426; const HTTP_PRECONDITION_REQUIRED = 428; const HTTP_TOO_MANY_REQUESTS = 429; const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; const HTTP_INTERNAL_SERVER_ERROR = 500;
+const HTTP_NOT_IMPLEMENTED = 501;
+const HTTP_BAD_GATEWAY = 502;
+const HTTP_SERVICE_UNAVAILABLE = 503;
+const HTTP_GATEWAY_TIMEOUT = 504;
+const HTTP_VERSION_NOT_SUPPORTED = 505;
+const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; const HTTP_INSUFFICIENT_STORAGE = 507; const HTTP_LOOP_DETECTED = 508; const HTTP_NOT_EXTENDED = 510; const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511;
+public $headers;
+protected $content;
+protected $version;
+protected $statusCode;
+protected $statusText;
+protected $charset;
+public static $statusTexts = array(
+100 =>'Continue',
+101 =>'Switching Protocols',
+102 =>'Processing', 200 =>'OK',
+201 =>'Created',
+202 =>'Accepted',
+203 =>'Non-Authoritative Information',
+204 =>'No Content',
+205 =>'Reset Content',
+206 =>'Partial Content',
+207 =>'Multi-Status', 208 =>'Already Reported', 226 =>'IM Used', 300 =>'Multiple Choices',
+301 =>'Moved Permanently',
+302 =>'Found',
+303 =>'See Other',
+304 =>'Not Modified',
+305 =>'Use Proxy',
+307 =>'Temporary Redirect',
+308 =>'Permanent Redirect', 400 =>'Bad Request',
+401 =>'Unauthorized',
+402 =>'Payment Required',
+403 =>'Forbidden',
+404 =>'Not Found',
+405 =>'Method Not Allowed',
+406 =>'Not Acceptable',
+407 =>'Proxy Authentication Required',
+408 =>'Request Timeout',
+409 =>'Conflict',
+410 =>'Gone',
+411 =>'Length Required',
+412 =>'Precondition Failed',
+413 =>'Payload Too Large',
+414 =>'URI Too Long',
+415 =>'Unsupported Media Type',
+416 =>'Range Not Satisfiable',
+417 =>'Expectation Failed',
+418 =>'I\'m a teapot', 422 =>'Unprocessable Entity', 423 =>'Locked', 424 =>'Failed Dependency', 425 =>'Reserved for WebDAV advanced collections expired proposal', 426 =>'Upgrade Required', 428 =>'Precondition Required', 429 =>'Too Many Requests', 431 =>'Request Header Fields Too Large', 500 =>'Internal Server Error',
+501 =>'Not Implemented',
+502 =>'Bad Gateway',
+503 =>'Service Unavailable',
+504 =>'Gateway Timeout',
+505 =>'HTTP Version Not Supported',
+506 =>'Variant Also Negotiates (Experimental)', 507 =>'Insufficient Storage', 508 =>'Loop Detected', 510 =>'Not Extended', 511 =>'Network Authentication Required', );
+public function __construct($content ='', $status = 200, $headers = array())
+{
+$this->headers = new ResponseHeaderBag($headers);
+$this->setContent($content);
+$this->setStatusCode($status);
+$this->setProtocolVersion('1.0');
+}
+public static function create($content ='', $status = 200, $headers = array())
+{
+return new static($content, $status, $headers);
+}
+public function __toString()
+{
+return
+sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n".
+$this->headers."\r\n".
+$this->getContent();
+}
+public function __clone()
+{
+$this->headers = clone $this->headers;
+}
+public function prepare(Request $request)
+{
+$headers = $this->headers;
+if ($this->isInformational() || $this->isEmpty()) {
+$this->setContent(null);
+$headers->remove('Content-Type');
+$headers->remove('Content-Length');
+} else {
+if (!$headers->has('Content-Type')) {
+$format = $request->getRequestFormat();
+if (null !== $format && $mimeType = $request->getMimeType($format)) {
+$headers->set('Content-Type', $mimeType);
+}
+}
+$charset = $this->charset ?:'UTF-8';
+if (!$headers->has('Content-Type')) {
+$headers->set('Content-Type','text/html; charset='.$charset);
+} elseif (0 === stripos($headers->get('Content-Type'),'text/') && false === stripos($headers->get('Content-Type'),'charset')) {
+$headers->set('Content-Type', $headers->get('Content-Type').'; charset='.$charset);
+}
+if ($headers->has('Transfer-Encoding')) {
+$headers->remove('Content-Length');
+}
+if ($request->isMethod('HEAD')) {
+$length = $headers->get('Content-Length');
+$this->setContent(null);
+if ($length) {
+$headers->set('Content-Length', $length);
+}
+}
+}
+if ('HTTP/1.0'!= $request->server->get('SERVER_PROTOCOL')) {
+$this->setProtocolVersion('1.1');
+}
+if ('1.0'== $this->getProtocolVersion() &&'no-cache'== $this->headers->get('Cache-Control')) {
+$this->headers->set('pragma','no-cache');
+$this->headers->set('expires', -1);
+}
+$this->ensureIEOverSSLCompatibility($request);
+return $this;
+}
+public function sendHeaders()
+{
+if (headers_sent()) {
+return $this;
+}
+if (!$this->headers->has('Date')) {
+$this->setDate(\DateTime::createFromFormat('U', time()));
+}
+foreach ($this->headers->allPreserveCase() as $name => $values) {
+foreach ($values as $value) {
+header($name.': '.$value, false, $this->statusCode);
+}
+}
+header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode);
+foreach ($this->headers->getCookies() as $cookie) {
+setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
+}
+return $this;
+}
+public function sendContent()
+{
+echo $this->content;
+return $this;
+}
+public function send()
+{
+$this->sendHeaders();
+$this->sendContent();
+if (function_exists('fastcgi_finish_request')) {
+fastcgi_finish_request();
+} elseif ('cli'!== PHP_SAPI) {
+static::closeOutputBuffers(0, true);
+}
+return $this;
+}
+public function setContent($content)
+{
+if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable(array($content,'__toString'))) {
+throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', gettype($content)));
+}
+$this->content = (string) $content;
+return $this;
+}
+public function getContent()
+{
+return $this->content;
+}
+public function setProtocolVersion($version)
+{
+$this->version = $version;
+return $this;
+}
+public function getProtocolVersion()
+{
+return $this->version;
+}
+public function setStatusCode($code, $text = null)
+{
+$this->statusCode = $code = (int) $code;
+if ($this->isInvalid()) {
+throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code));
+}
+if (null === $text) {
+$this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] :'unknown status';
+return $this;
+}
+if (false === $text) {
+$this->statusText ='';
+return $this;
+}
+$this->statusText = $text;
+return $this;
+}
+public function getStatusCode()
+{
+return $this->statusCode;
+}
+public function setCharset($charset)
+{
+$this->charset = $charset;
+return $this;
+}
+public function getCharset()
+{
+return $this->charset;
+}
+public function isCacheable()
+{
+if (!in_array($this->statusCode, array(200, 203, 300, 301, 302, 404, 410))) {
+return false;
+}
+if ($this->headers->hasCacheControlDirective('no-store') || $this->headers->getCacheControlDirective('private')) {
+return false;
+}
+return $this->isValidateable() || $this->isFresh();
+}
+public function isFresh()
+{
+return $this->getTtl() > 0;
+}
+public function isValidateable()
+{
+return $this->headers->has('Last-Modified') || $this->headers->has('ETag');
+}
+public function setPrivate()
+{
+$this->headers->removeCacheControlDirective('public');
+$this->headers->addCacheControlDirective('private');
+return $this;
+}
+public function setPublic()
+{
+$this->headers->addCacheControlDirective('public');
+$this->headers->removeCacheControlDirective('private');
+return $this;
+}
+public function mustRevalidate()
+{
+return $this->headers->hasCacheControlDirective('must-revalidate') || $this->headers->hasCacheControlDirective('proxy-revalidate');
+}
+public function getDate()
+{
+if (!$this->headers->has('Date')) {
+$this->setDate(\DateTime::createFromFormat('U', time()));
+}
+return $this->headers->getDate('Date');
+}
+public function setDate(\DateTime $date)
+{
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Date', $date->format('D, d M Y H:i:s').' GMT');
+return $this;
+}
+public function getAge()
+{
+if (null !== $age = $this->headers->get('Age')) {
+return (int) $age;
+}
+return max(time() - $this->getDate()->format('U'), 0);
+}
+public function expire()
+{
+if ($this->isFresh()) {
+$this->headers->set('Age', $this->getMaxAge());
+}
+return $this;
+}
+public function getExpires()
+{
+try {
+return $this->headers->getDate('Expires');
+} catch (\RuntimeException $e) {
+return \DateTime::createFromFormat(DATE_RFC2822,'Sat, 01 Jan 00 00:00:00 +0000');
+}
+}
+public function setExpires(\DateTime $date = null)
+{
+if (null === $date) {
+$this->headers->remove('Expires');
+} else {
+$date = clone $date;
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Expires', $date->format('D, d M Y H:i:s').' GMT');
+}
+return $this;
+}
+public function getMaxAge()
+{
+if ($this->headers->hasCacheControlDirective('s-maxage')) {
+return (int) $this->headers->getCacheControlDirective('s-maxage');
+}
+if ($this->headers->hasCacheControlDirective('max-age')) {
+return (int) $this->headers->getCacheControlDirective('max-age');
+}
+if (null !== $this->getExpires()) {
+return $this->getExpires()->format('U') - $this->getDate()->format('U');
+}
+}
+public function setMaxAge($value)
+{
+$this->headers->addCacheControlDirective('max-age', $value);
+return $this;
+}
+public function setSharedMaxAge($value)
+{
+$this->setPublic();
+$this->headers->addCacheControlDirective('s-maxage', $value);
+return $this;
+}
+public function getTtl()
+{
+if (null !== $maxAge = $this->getMaxAge()) {
+return $maxAge - $this->getAge();
+}
+}
+public function setTtl($seconds)
+{
+$this->setSharedMaxAge($this->getAge() + $seconds);
+return $this;
+}
+public function setClientTtl($seconds)
+{
+$this->setMaxAge($this->getAge() + $seconds);
+return $this;
+}
+public function getLastModified()
+{
+return $this->headers->getDate('Last-Modified');
+}
+public function setLastModified(\DateTime $date = null)
+{
+if (null === $date) {
+$this->headers->remove('Last-Modified');
+} else {
+$date = clone $date;
+$date->setTimezone(new \DateTimeZone('UTC'));
+$this->headers->set('Last-Modified', $date->format('D, d M Y H:i:s').' GMT');
+}
+return $this;
+}
+public function getEtag()
+{
+return $this->headers->get('ETag');
+}
+public function setEtag($etag = null, $weak = false)
+{
+if (null === $etag) {
+$this->headers->remove('Etag');
+} else {
+if (0 !== strpos($etag,'"')) {
+$etag ='"'.$etag.'"';
+}
+$this->headers->set('ETag', (true === $weak ?'W/':'').$etag);
+}
+return $this;
+}
+public function setCache(array $options)
+{
+if ($diff = array_diff(array_keys($options), array('etag','last_modified','max_age','s_maxage','private','public'))) {
+throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', array_values($diff))));
+}
+if (isset($options['etag'])) {
+$this->setEtag($options['etag']);
+}
+if (isset($options['last_modified'])) {
+$this->setLastModified($options['last_modified']);
+}
+if (isset($options['max_age'])) {
+$this->setMaxAge($options['max_age']);
+}
+if (isset($options['s_maxage'])) {
+$this->setSharedMaxAge($options['s_maxage']);
+}
+if (isset($options['public'])) {
+if ($options['public']) {
+$this->setPublic();
+} else {
+$this->setPrivate();
+}
+}
+if (isset($options['private'])) {
+if ($options['private']) {
+$this->setPrivate();
+} else {
+$this->setPublic();
+}
+}
+return $this;
+}
+public function setNotModified()
+{
+$this->setStatusCode(304);
+$this->setContent(null);
+foreach (array('Allow','Content-Encoding','Content-Language','Content-Length','Content-MD5','Content-Type','Last-Modified') as $header) {
+$this->headers->remove($header);
+}
+return $this;
+}
+public function hasVary()
+{
+return null !== $this->headers->get('Vary');
+}
+public function getVary()
+{
+if (!$vary = $this->headers->get('Vary', null, false)) {
+return array();
+}
+$ret = array();
+foreach ($vary as $item) {
+$ret = array_merge($ret, preg_split('/[\s,]+/', $item));
+}
+return $ret;
+}
+public function setVary($headers, $replace = true)
+{
+$this->headers->set('Vary', $headers, $replace);
+return $this;
+}
+public function isNotModified(Request $request)
+{
+if (!$request->isMethodSafe()) {
+return false;
+}
+$notModified = false;
+$lastModified = $this->headers->get('Last-Modified');
+$modifiedSince = $request->headers->get('If-Modified-Since');
+if ($etags = $request->getETags()) {
+$notModified = in_array($this->getEtag(), $etags) || in_array('*', $etags);
+}
+if ($modifiedSince && $lastModified) {
+$notModified = strtotime($modifiedSince) >= strtotime($lastModified) && (!$etags || $notModified);
+}
+if ($notModified) {
+$this->setNotModified();
+}
+return $notModified;
+}
+public function isInvalid()
+{
+return $this->statusCode < 100 || $this->statusCode >= 600;
+}
+public function isInformational()
+{
+return $this->statusCode >= 100 && $this->statusCode < 200;
+}
+public function isSuccessful()
+{
+return $this->statusCode >= 200 && $this->statusCode < 300;
+}
+public function isRedirection()
+{
+return $this->statusCode >= 300 && $this->statusCode < 400;
+}
+public function isClientError()
+{
+return $this->statusCode >= 400 && $this->statusCode < 500;
+}
+public function isServerError()
+{
+return $this->statusCode >= 500 && $this->statusCode < 600;
+}
+public function isOk()
+{
+return 200 === $this->statusCode;
+}
+public function isForbidden()
+{
+return 403 === $this->statusCode;
+}
+public function isNotFound()
+{
+return 404 === $this->statusCode;
+}
+public function isRedirect($location = null)
+{
+return in_array($this->statusCode, array(201, 301, 302, 303, 307, 308)) && (null === $location ?: $location == $this->headers->get('Location'));
+}
+public function isEmpty()
+{
+return in_array($this->statusCode, array(204, 304));
+}
+public static function closeOutputBuffers($targetLevel, $flush)
+{
+$status = ob_get_status(true);
+$level = count($status);
+$flags = defined('PHP_OUTPUT_HANDLER_REMOVABLE') ? PHP_OUTPUT_HANDLER_REMOVABLE | ($flush ? PHP_OUTPUT_HANDLER_FLUSHABLE : PHP_OUTPUT_HANDLER_CLEANABLE) : -1;
+while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || $flags === ($s['flags'] & $flags) : $s['del'])) {
+if ($flush) {
+ob_end_flush();
+} else {
+ob_end_clean();
+}
+}
+}
+protected function ensureIEOverSSLCompatibility(Request $request)
+{
+if (false !== stripos($this->headers->get('Content-Disposition'),'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) {
+if ((int) preg_replace('/(MSIE )(.*?);/','$2', $match[0]) < 9) {
+$this->headers->remove('Cache-Control');
+}
+}
+}
+}
+}
+namespace Symfony\Component\HttpFoundation
+{
+class ResponseHeaderBag extends HeaderBag
+{
+const COOKIES_FLAT ='flat';
+const COOKIES_ARRAY ='array';
+const DISPOSITION_ATTACHMENT ='attachment';
+const DISPOSITION_INLINE ='inline';
+protected $computedCacheControl = array();
+protected $cookies = array();
+protected $headerNames = array();
+public function __construct(array $headers = array())
+{
+parent::__construct($headers);
+if (!isset($this->headers['cache-control'])) {
+$this->set('Cache-Control','');
+}
+}
+public function __toString()
+{
+$cookies ='';
+foreach ($this->getCookies() as $cookie) {
+$cookies .='Set-Cookie: '.$cookie."\r\n";
+}
+ksort($this->headerNames);
+return parent::__toString().$cookies;
+}
+public function allPreserveCase()
+{
+return array_combine($this->headerNames, $this->headers);
+}
+public function replace(array $headers = array())
+{
+$this->headerNames = array();
+parent::replace($headers);
+if (!isset($this->headers['cache-control'])) {
+$this->set('Cache-Control','');
+}
+}
+public function set($key, $values, $replace = true)
+{
+parent::set($key, $values, $replace);
+$uniqueKey = strtr(strtolower($key),'_','-');
+$this->headerNames[$uniqueKey] = $key;
+if (in_array($uniqueKey, array('cache-control','etag','last-modified','expires'))) {
+$computed = $this->computeCacheControlValue();
+$this->headers['cache-control'] = array($computed);
+$this->headerNames['cache-control'] ='Cache-Control';
+$this->computedCacheControl = $this->parseCacheControl($computed);
+}
+}
+public function remove($key)
+{
+parent::remove($key);
+$uniqueKey = strtr(strtolower($key),'_','-');
+unset($this->headerNames[$uniqueKey]);
+if ('cache-control'=== $uniqueKey) {
+$this->computedCacheControl = array();
+}
+}
+public function hasCacheControlDirective($key)
+{
+return array_key_exists($key, $this->computedCacheControl);
+}
+public function getCacheControlDirective($key)
+{
+return array_key_exists($key, $this->computedCacheControl) ? $this->computedCacheControl[$key] : null;
+}
+public function setCookie(Cookie $cookie)
+{
+$this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie;
+}
+public function removeCookie($name, $path ='/', $domain = null)
+{
+if (null === $path) {
+$path ='/';
+}
+unset($this->cookies[$domain][$path][$name]);
+if (empty($this->cookies[$domain][$path])) {
+unset($this->cookies[$domain][$path]);
+if (empty($this->cookies[$domain])) {
+unset($this->cookies[$domain]);
+}
+}
+}
+public function getCookies($format = self::COOKIES_FLAT)
+{
+if (!in_array($format, array(self::COOKIES_FLAT, self::COOKIES_ARRAY))) {
+throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', array(self::COOKIES_FLAT, self::COOKIES_ARRAY))));
+}
+if (self::COOKIES_ARRAY === $format) {
+return $this->cookies;
+}
+$flattenedCookies = array();
+foreach ($this->cookies as $path) {
+foreach ($path as $cookies) {
+foreach ($cookies as $cookie) {
+$flattenedCookies[] = $cookie;
+}
+}
+}
+return $flattenedCookies;
+}
+public function clearCookie($name, $path ='/', $domain = null, $secure = false, $httpOnly = true)
+{
+$this->setCookie(new Cookie($name, null, 1, $path, $domain, $secure, $httpOnly));
+}
+public function makeDisposition($disposition, $filename, $filenameFallback ='')
+{
+if (!in_array($disposition, array(self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE))) {
+throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE));
+}
+if (''== $filenameFallback) {
+$filenameFallback = $filename;
+}
+if (!preg_match('/^[\x20-\x7e]*$/', $filenameFallback)) {
+throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.');
+}
+if (false !== strpos($filenameFallback,'%')) {
+throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.');
+}
+if (false !== strpos($filename,'/') || false !== strpos($filename,'\\') || false !== strpos($filenameFallback,'/') || false !== strpos($filenameFallback,'\\')) {
+throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.');
+}
+$output = sprintf('%s; filename="%s"', $disposition, str_replace('"','\\"', $filenameFallback));
+if ($filename !== $filenameFallback) {
+$output .= sprintf("; filename*=utf-8''%s", rawurlencode($filename));
+}
+return $output;
+}
+protected function computeCacheControlValue()
+{
+if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) {
+return'no-cache';
+}
+if (!$this->cacheControl) {
+return'private, must-revalidate';
+}
+$header = $this->getCacheControlHeader();
+if (isset($this->cacheControl['public']) || isset($this->cacheControl['private'])) {
+return $header;
+}
+if (!isset($this->cacheControl['s-maxage'])) {
+return $header.', private';
+}
+return $header;
+}
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+interface ContainerAwareInterface
+{
+public function setContainer(ContainerInterface $container = null);
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
+use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
+interface ContainerInterface
+{
+const EXCEPTION_ON_INVALID_REFERENCE = 1;
+const NULL_ON_INVALID_REFERENCE = 2;
+const IGNORE_ON_INVALID_REFERENCE = 3;
+public function set($id, $service);
+public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE);
+public function has($id);
+public function initialized($id);
+public function getParameter($name);
+public function hasParameter($name);
+public function setParameter($name, $value);
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+interface ResettableContainerInterface extends ContainerInterface
+{
+public function reset();
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
+use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
+use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
+use Symfony\Component\DependencyInjection\ParameterBag\FrozenParameterBag;
+class Container implements ResettableContainerInterface
+{
+protected $parameterBag;
+protected $services = array();
+protected $methodMap = array();
+protected $aliases = array();
+protected $loading = array();
+private $underscoreMap = array('_'=>'','.'=>'_','\\'=>'_');
+public function __construct(ParameterBagInterface $parameterBag = null)
+{
+$this->parameterBag = $parameterBag ?: new ParameterBag();
+}
+public function compile()
+{
+$this->parameterBag->resolve();
+$this->parameterBag = new FrozenParameterBag($this->parameterBag->all());
+}
+public function isFrozen()
+{
+return $this->parameterBag instanceof FrozenParameterBag;
+}
+public function getParameterBag()
+{
+return $this->parameterBag;
+}
+public function getParameter($name)
+{
+return $this->parameterBag->get($name);
+}
+public function hasParameter($name)
+{
+return $this->parameterBag->has($name);
+}
+public function setParameter($name, $value)
+{
+$this->parameterBag->set($name, $value);
+}
+public function set($id, $service)
+{
+$id = strtolower($id);
+if ('service_container'=== $id) {
+throw new InvalidArgumentException('You cannot set service "service_container".');
+}
+$this->services[$id] = $service;
+if (null === $service) {
+unset($this->services[$id]);
+}
+}
+public function has($id)
+{
+for ($i = 2;;) {
+if ('service_container'=== $id
+|| isset($this->aliases[$id])
+|| isset($this->services[$id])
+|| array_key_exists($id, $this->services)
+) {
+return true;
+}
+if (--$i && $id !== $lcId = strtolower($id)) {
+$id = $lcId;
+} else {
+return method_exists($this,'get'.strtr($id, $this->underscoreMap).'Service');
+}
+}
+}
+public function get($id, $invalidBehavior = self::EXCEPTION_ON_INVALID_REFERENCE)
+{
+for ($i = 2;;) {
+if ('service_container'=== $id) {
+return $this;
+}
+if (isset($this->aliases[$id])) {
+$id = $this->aliases[$id];
+}
+if (isset($this->services[$id]) || array_key_exists($id, $this->services)) {
+return $this->services[$id];
+}
+if (isset($this->loading[$id])) {
+throw new ServiceCircularReferenceException($id, array_keys($this->loading));
+}
+if (isset($this->methodMap[$id])) {
+$method = $this->methodMap[$id];
+} elseif (--$i && $id !== $lcId = strtolower($id)) {
+$id = $lcId;
+continue;
+} elseif (method_exists($this, $method ='get'.strtr($id, $this->underscoreMap).'Service')) {
+} else {
+if (self::EXCEPTION_ON_INVALID_REFERENCE === $invalidBehavior) {
+if (!$id) {
+throw new ServiceNotFoundException($id);
+}
+$alternatives = array();
+foreach ($this->services as $key => $associatedService) {
+$lev = levenshtein($id, $key);
+if ($lev <= strlen($id) / 3 || false !== strpos($key, $id)) {
+$alternatives[] = $key;
+}
+}
+throw new ServiceNotFoundException($id, null, null, $alternatives);
+}
+return;
+}
+$this->loading[$id] = true;
+try {
+$service = $this->$method();
+} catch (\Exception $e) {
+unset($this->services[$id]);
+throw $e;
+} finally {
+unset($this->loading[$id]);
+}
+return $service;
+}
+}
+public function initialized($id)
+{
+$id = strtolower($id);
+if ('service_container'=== $id) {
+return false;
+}
+if (isset($this->aliases[$id])) {
+$id = $this->aliases[$id];
+}
+return isset($this->services[$id]) || array_key_exists($id, $this->services);
+}
+public function reset()
+{
+$this->services = array();
+}
+public function getServiceIds()
+{
+$ids = array();
+$r = new \ReflectionClass($this);
+foreach ($r->getMethods() as $method) {
+if (preg_match('/^get(.+)Service$/', $method->name, $match)) {
+$ids[] = self::underscore($match[1]);
+}
+}
+$ids[] ='service_container';
+return array_unique(array_merge($ids, array_keys($this->services)));
+}
+public static function camelize($id)
+{
+return strtr(ucwords(strtr($id, array('_'=>' ','.'=>'_ ','\\'=>'_ '))), array(' '=>''));
+}
+public static function underscore($id)
+{
+return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/','/([a-z\d])([A-Z])/'), array('\\1_\\2','\\1_\\2'), strtr($id,'_','.')));
+}
+private function __clone()
+{
+}
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+interface HttpKernelInterface
+{
+const MASTER_REQUEST = 1;
+const SUB_REQUEST = 2;
+public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true);
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\HttpKernel\Bundle\BundleInterface;
+use Symfony\Component\Config\Loader\LoaderInterface;
+interface KernelInterface extends HttpKernelInterface, \Serializable
+{
+public function registerBundles();
+public function registerContainerConfiguration(LoaderInterface $loader);
+public function boot();
+public function shutdown();
+public function getBundles();
+public function getBundle($name, $first = true);
+public function locateResource($name, $dir = null, $first = true);
+public function getName();
+public function getEnvironment();
+public function isDebug();
+public function getRootDir();
+public function getContainer();
+public function getStartTime();
+public function getCacheDir();
+public function getLogDir();
+public function getCharset();
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+interface TerminableInterface
+{
+public function terminate(Request $request, Response $response);
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator;
+use Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
+use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
+use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
+use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
+use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
+use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
+use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\Bundle\BundleInterface;
+use Symfony\Component\HttpKernel\Config\EnvParametersResource;
+use Symfony\Component\HttpKernel\Config\FileLocator;
+use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
+use Symfony\Component\HttpKernel\DependencyInjection\AddClassesToCachePass;
+use Symfony\Component\Config\Loader\LoaderResolver;
+use Symfony\Component\Config\Loader\DelegatingLoader;
+use Symfony\Component\Config\ConfigCache;
+use Symfony\Component\ClassLoader\ClassCollectionLoader;
+abstract class Kernel implements KernelInterface, TerminableInterface
+{
+protected $bundles = array();
+protected $bundleMap;
+protected $container;
+protected $rootDir;
+protected $environment;
+protected $debug;
+protected $booted = false;
+protected $name;
+protected $startTime;
+protected $loadClassCache;
+const VERSION ='3.0.1';
+const VERSION_ID = 30001;
+const MAJOR_VERSION = 3;
+const MINOR_VERSION = 0;
+const RELEASE_VERSION = 1;
+const EXTRA_VERSION ='';
+const END_OF_MAINTENANCE ='07/2016';
+const END_OF_LIFE ='01/2017';
+public function __construct($environment, $debug)
+{
+$this->environment = $environment;
+$this->debug = (bool) $debug;
+$this->rootDir = $this->getRootDir();
+$this->name = $this->getName();
+if ($this->debug) {
+$this->startTime = microtime(true);
+}
+}
+public function __clone()
+{
+if ($this->debug) {
+$this->startTime = microtime(true);
+}
+$this->booted = false;
+$this->container = null;
+}
+public function boot()
+{
+if (true === $this->booted) {
+return;
+}
+if ($this->loadClassCache) {
+$this->doLoadClassCache($this->loadClassCache[0], $this->loadClassCache[1]);
+}
+$this->initializeBundles();
+$this->initializeContainer();
+foreach ($this->getBundles() as $bundle) {
+$bundle->setContainer($this->container);
+$bundle->boot();
+}
+$this->booted = true;
+}
+public function terminate(Request $request, Response $response)
+{
+if (false === $this->booted) {
+return;
+}
+if ($this->getHttpKernel() instanceof TerminableInterface) {
+$this->getHttpKernel()->terminate($request, $response);
+}
+}
+public function shutdown()
+{
+if (false === $this->booted) {
+return;
+}
+$this->booted = false;
+foreach ($this->getBundles() as $bundle) {
+$bundle->shutdown();
+$bundle->setContainer(null);
+}
+$this->container = null;
+}
+public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+{
+if (false === $this->booted) {
+$this->boot();
+}
+return $this->getHttpKernel()->handle($request, $type, $catch);
+}
+protected function getHttpKernel()
+{
+return $this->container->get('http_kernel');
+}
+public function getBundles()
+{
+return $this->bundles;
+}
+public function getBundle($name, $first = true)
+{
+if (!isset($this->bundleMap[$name])) {
+throw new \InvalidArgumentException(sprintf('Bundle "%s" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() method of your %s.php file?', $name, get_class($this)));
+}
+if (true === $first) {
+return $this->bundleMap[$name][0];
+}
+return $this->bundleMap[$name];
+}
+public function locateResource($name, $dir = null, $first = true)
+{
+if ('@'!== $name[0]) {
+throw new \InvalidArgumentException(sprintf('A resource name must start with @ ("%s" given).', $name));
+}
+if (false !== strpos($name,'..')) {
+throw new \RuntimeException(sprintf('File name "%s" contains invalid characters (..).', $name));
+}
+$bundleName = substr($name, 1);
+$path ='';
+if (false !== strpos($bundleName,'/')) {
+list($bundleName, $path) = explode('/', $bundleName, 2);
+}
+$isResource = 0 === strpos($path,'Resources') && null !== $dir;
+$overridePath = substr($path, 9);
+$resourceBundle = null;
+$bundles = $this->getBundle($bundleName, false);
+$files = array();
+foreach ($bundles as $bundle) {
+if ($isResource && file_exists($file = $dir.'/'.$bundle->getName().$overridePath)) {
+if (null !== $resourceBundle) {
+throw new \RuntimeException(sprintf('"%s" resource is hidden by a resource from the "%s" derived bundle. Create a "%s" file to override the bundle resource.',
+$file,
+$resourceBundle,
+$dir.'/'.$bundles[0]->getName().$overridePath
+));
+}
+if ($first) {
+return $file;
+}
+$files[] = $file;
+}
+if (file_exists($file = $bundle->getPath().'/'.$path)) {
+if ($first && !$isResource) {
+return $file;
+}
+$files[] = $file;
+$resourceBundle = $bundle->getName();
+}
+}
+if (count($files) > 0) {
+return $first && $isResource ? $files[0] : $files;
+}
+throw new \InvalidArgumentException(sprintf('Unable to find file "%s".', $name));
+}
+public function getName()
+{
+if (null === $this->name) {
+$this->name = preg_replace('/[^a-zA-Z0-9_]+/','', basename($this->rootDir));
+}
+return $this->name;
+}
+public function getEnvironment()
+{
+return $this->environment;
+}
+public function isDebug()
+{
+return $this->debug;
+}
+public function getRootDir()
+{
+if (null === $this->rootDir) {
+$r = new \ReflectionObject($this);
+$this->rootDir = dirname($r->getFileName());
+}
+return $this->rootDir;
+}
+public function getContainer()
+{
+return $this->container;
+}
+public function loadClassCache($name ='classes', $extension ='.php')
+{
+$this->loadClassCache = array($name, $extension);
+}
+public function setClassCache(array $classes)
+{
+file_put_contents($this->getCacheDir().'/classes.map', sprintf('debug ? $this->startTime : -INF;
+}
+public function getCacheDir()
+{
+return $this->rootDir.'/cache/'.$this->environment;
+}
+public function getLogDir()
+{
+return $this->rootDir.'/logs';
+}
+public function getCharset()
+{
+return'UTF-8';
+}
+protected function doLoadClassCache($name, $extension)
+{
+if (!$this->booted && is_file($this->getCacheDir().'/classes.map')) {
+ClassCollectionLoader::load(include($this->getCacheDir().'/classes.map'), $this->getCacheDir(), $name, $this->debug, false, $extension);
+}
+}
+protected function initializeBundles()
+{
+$this->bundles = array();
+$topMostBundles = array();
+$directChildren = array();
+foreach ($this->registerBundles() as $bundle) {
+$name = $bundle->getName();
+if (isset($this->bundles[$name])) {
+throw new \LogicException(sprintf('Trying to register two bundles with the same name "%s"', $name));
+}
+$this->bundles[$name] = $bundle;
+if ($parentName = $bundle->getParent()) {
+if (isset($directChildren[$parentName])) {
+throw new \LogicException(sprintf('Bundle "%s" is directly extended by two bundles "%s" and "%s".', $parentName, $name, $directChildren[$parentName]));
+}
+if ($parentName == $name) {
+throw new \LogicException(sprintf('Bundle "%s" can not extend itself.', $name));
+}
+$directChildren[$parentName] = $name;
+} else {
+$topMostBundles[$name] = $bundle;
+}
+}
+if (!empty($directChildren) && count($diff = array_diff_key($directChildren, $this->bundles))) {
+$diff = array_keys($diff);
+throw new \LogicException(sprintf('Bundle "%s" extends bundle "%s", which is not registered.', $directChildren[$diff[0]], $diff[0]));
+}
+$this->bundleMap = array();
+foreach ($topMostBundles as $name => $bundle) {
+$bundleMap = array($bundle);
+$hierarchy = array($name);
+while (isset($directChildren[$name])) {
+$name = $directChildren[$name];
+array_unshift($bundleMap, $this->bundles[$name]);
+$hierarchy[] = $name;
+}
+foreach ($hierarchy as $bundle) {
+$this->bundleMap[$bundle] = $bundleMap;
+array_pop($bundleMap);
+}
+}
+}
+protected function getContainerClass()
+{
+return $this->name.ucfirst($this->environment).($this->debug ?'Debug':'').'ProjectContainer';
+}
+protected function getContainerBaseClass()
+{
+return'Container';
+}
+protected function initializeContainer()
+{
+$class = $this->getContainerClass();
+$cache = new ConfigCache($this->getCacheDir().'/'.$class.'.php', $this->debug);
+$fresh = true;
+if (!$cache->isFresh()) {
+$container = $this->buildContainer();
+$container->compile();
+$this->dumpContainer($cache, $container, $class, $this->getContainerBaseClass());
+$fresh = false;
+}
+require_once $cache->getPath();
+$this->container = new $class();
+$this->container->set('kernel', $this);
+if (!$fresh && $this->container->has('cache_warmer')) {
+$this->container->get('cache_warmer')->warmUp($this->container->getParameter('kernel.cache_dir'));
+}
+}
+protected function getKernelParameters()
+{
+$bundles = array();
+foreach ($this->bundles as $name => $bundle) {
+$bundles[$name] = get_class($bundle);
+}
+return array_merge(
+array('kernel.root_dir'=> realpath($this->rootDir) ?: $this->rootDir,'kernel.environment'=> $this->environment,'kernel.debug'=> $this->debug,'kernel.name'=> $this->name,'kernel.cache_dir'=> realpath($this->getCacheDir()) ?: $this->getCacheDir(),'kernel.logs_dir'=> realpath($this->getLogDir()) ?: $this->getLogDir(),'kernel.bundles'=> $bundles,'kernel.charset'=> $this->getCharset(),'kernel.container_class'=> $this->getContainerClass(),
+),
+$this->getEnvParameters()
+);
+}
+protected function getEnvParameters()
+{
+$parameters = array();
+foreach ($_SERVER as $key => $value) {
+if (0 === strpos($key,'SYMFONY__')) {
+$parameters[strtolower(str_replace('__','.', substr($key, 9)))] = $value;
+}
+}
+return $parameters;
+}
+protected function buildContainer()
+{
+foreach (array('cache'=> $this->getCacheDir(),'logs'=> $this->getLogDir()) as $name => $dir) {
+if (!is_dir($dir)) {
+if (false === @mkdir($dir, 0777, true) && !is_dir($dir)) {
+throw new \RuntimeException(sprintf("Unable to create the %s directory (%s)\n", $name, $dir));
+}
+} elseif (!is_writable($dir)) {
+throw new \RuntimeException(sprintf("Unable to write in the %s directory (%s)\n", $name, $dir));
+}
+}
+$container = $this->getContainerBuilder();
+$container->addObjectResource($this);
+$this->prepareContainer($container);
+if (null !== $cont = $this->registerContainerConfiguration($this->getContainerLoader($container))) {
+$container->merge($cont);
+}
+$container->addCompilerPass(new AddClassesToCachePass($this));
+$container->addResource(new EnvParametersResource('SYMFONY__'));
+return $container;
+}
+protected function prepareContainer(ContainerBuilder $container)
+{
+$extensions = array();
+foreach ($this->bundles as $bundle) {
+if ($extension = $bundle->getContainerExtension()) {
+$container->registerExtension($extension);
+$extensions[] = $extension->getAlias();
+}
+if ($this->debug) {
+$container->addObjectResource($bundle);
+}
+}
+foreach ($this->bundles as $bundle) {
+$bundle->build($container);
+}
+$container->getCompilerPassConfig()->setMergePass(new MergeExtensionConfigurationPass($extensions));
+}
+protected function getContainerBuilder()
+{
+$container = new ContainerBuilder(new ParameterBag($this->getKernelParameters()));
+if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\Instantiator\RuntimeInstantiator')) {
+$container->setProxyInstantiator(new RuntimeInstantiator());
+}
+return $container;
+}
+protected function dumpContainer(ConfigCache $cache, ContainerBuilder $container, $class, $baseClass)
+{
+$dumper = new PhpDumper($container);
+if (class_exists('ProxyManager\Configuration') && class_exists('Symfony\Bridge\ProxyManager\LazyProxy\PhpDumper\ProxyDumper')) {
+$dumper->setProxyDumper(new ProxyDumper(md5($cache->getPath())));
+}
+$content = $dumper->dump(array('class'=> $class,'base_class'=> $baseClass,'file'=> $cache->getPath()));
+if (!$this->debug) {
+$content = static::stripComments($content);
+}
+$cache->write($content, $container->getResources());
+}
+protected function getContainerLoader(ContainerInterface $container)
+{
+$locator = new FileLocator($this);
+$resolver = new LoaderResolver(array(
+new XmlFileLoader($container, $locator),
+new YamlFileLoader($container, $locator),
+new IniFileLoader($container, $locator),
+new PhpFileLoader($container, $locator),
+new DirectoryLoader($container, $locator),
+new ClosureLoader($container),
+));
+return new DelegatingLoader($resolver);
+}
+public static function stripComments($source)
+{
+if (!function_exists('token_get_all')) {
+return $source;
+}
+$rawChunk ='';
+$output ='';
+$tokens = token_get_all($source);
+$ignoreSpace = false;
+for (reset($tokens); false !== $token = current($tokens); next($tokens)) {
+if (is_string($token)) {
+$rawChunk .= $token;
+} elseif (T_START_HEREDOC === $token[0]) {
+$output .= $rawChunk.$token[1];
+do {
+$token = next($tokens);
+$output .= $token[1];
+} while ($token[0] !== T_END_HEREDOC);
+$rawChunk ='';
+} elseif (T_WHITESPACE === $token[0]) {
+if ($ignoreSpace) {
+$ignoreSpace = false;
+continue;
+}
+$rawChunk .= preg_replace(array('/\n{2,}/S'),"\n", $token[1]);
+} elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) {
+$ignoreSpace = true;
+} else {
+$rawChunk .= $token[1];
+if (T_OPEN_TAG === $token[0]) {
+$ignoreSpace = true;
+}
+}
+}
+$output .= $rawChunk;
+return $output;
+}
+public function serialize()
+{
+return serialize(array($this->environment, $this->debug));
+}
+public function unserialize($data)
+{
+list($environment, $debug) = unserialize($data);
+$this->__construct($environment, $debug);
+}
+}
+}
+namespace Symfony\Component\ClassLoader
+{
+class ApcClassLoader
+{
+private $prefix;
+protected $decorated;
+public function __construct($prefix, $decorated)
+{
+if (!extension_loaded('apc')) {
+throw new \RuntimeException('Unable to use ApcClassLoader as APC is not enabled.');
+}
+if (!method_exists($decorated,'findFile')) {
+throw new \InvalidArgumentException('The class finder must implement a "findFile" method.');
+}
+$this->prefix = $prefix;
+$this->decorated = $decorated;
+}
+public function register($prepend = false)
+{
+spl_autoload_register(array($this,'loadClass'), true, $prepend);
+}
+public function unregister()
+{
+spl_autoload_unregister(array($this,'loadClass'));
+}
+public function loadClass($class)
+{
+if ($file = $this->findFile($class)) {
+require $file;
+return true;
+}
+}
+public function findFile($class)
+{
+if (false === $file = apc_fetch($this->prefix.$class)) {
+apc_store($this->prefix.$class, $file = $this->decorated->findFile($class));
+}
+return $file;
+}
+public function __call($method, $args)
+{
+return call_user_func_array(array($this->decorated, $method), $args);
+}
+}
+}
+namespace Symfony\Component\HttpKernel\Bundle
+{
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
+interface BundleInterface extends ContainerAwareInterface
+{
+public function boot();
+public function shutdown();
+public function build(ContainerBuilder $container);
+public function getContainerExtension();
+public function getParent();
+public function getName();
+public function getNamespace();
+public function getPath();
+}
+}
+namespace Symfony\Component\DependencyInjection
+{
+trait ContainerAwareTrait
+{
+protected $container;
+public function setContainer(ContainerInterface $container = null)
+{
+$this->container = $container;
+}
+}
+}
+namespace Symfony\Component\HttpKernel\Bundle
+{
+use Symfony\Component\DependencyInjection\ContainerAwareTrait;
+use Symfony\Component\DependencyInjection\ContainerBuilder;
+use Symfony\Component\DependencyInjection\Container;
+use Symfony\Component\Console\Application;
+use Symfony\Component\Finder\Finder;
+use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
+abstract class Bundle implements BundleInterface
+{
+use ContainerAwareTrait;
+protected $name;
+protected $extension;
+protected $path;
+public function boot()
+{
+}
+public function shutdown()
+{
+}
+public function build(ContainerBuilder $container)
+{
+}
+public function getContainerExtension()
+{
+if (null === $this->extension) {
+$extension = $this->createContainerExtension();
+if (null !== $extension) {
+if (!$extension instanceof ExtensionInterface) {
+throw new \LogicException(sprintf('Extension %s must implement Symfony\Component\DependencyInjection\Extension\ExtensionInterface.', get_class($extension)));
+}
+$basename = preg_replace('/Bundle$/','', $this->getName());
+$expectedAlias = Container::underscore($basename);
+if ($expectedAlias != $extension->getAlias()) {
+throw new \LogicException(sprintf('Users will expect the alias of the default extension of a bundle to be the underscored version of the bundle name ("%s"). You can override "Bundle::getContainerExtension()" if you want to use "%s" or another alias.',
+$expectedAlias, $extension->getAlias()
+));
+}
+$this->extension = $extension;
+} else {
+$this->extension = false;
+}
+}
+if ($this->extension) {
+return $this->extension;
+}
+}
+public function getNamespace()
+{
+$class = get_class($this);
+return substr($class, 0, strrpos($class,'\\'));
+}
+public function getPath()
+{
+if (null === $this->path) {
+$reflected = new \ReflectionObject($this);
+$this->path = dirname($reflected->getFileName());
+}
+return $this->path;
+}
+public function getParent()
+{
+}
+final public function getName()
+{
+if (null !== $this->name) {
+return $this->name;
+}
+$name = get_class($this);
+$pos = strrpos($name,'\\');
+return $this->name = false === $pos ? $name : substr($name, $pos + 1);
+}
+public function registerCommands(Application $application)
+{
+if (!is_dir($dir = $this->getPath().'/Command')) {
+return;
+}
+if (!class_exists('Symfony\Component\Finder\Finder')) {
+throw new \RuntimeException('You need the symfony/finder component to register bundle commands.');
+}
+$finder = new Finder();
+$finder->files()->name('*Command.php')->in($dir);
+$prefix = $this->getNamespace().'\\Command';
+foreach ($finder as $file) {
+$ns = $prefix;
+if ($relativePath = $file->getRelativePath()) {
+$ns .='\\'.strtr($relativePath,'/','\\');
+}
+$class = $ns.'\\'.$file->getBasename('.php');
+if ($this->container) {
+$alias ='console.command.'.strtolower(str_replace('\\','_', $class));
+if ($this->container->has($alias)) {
+continue;
+}
+}
+$r = new \ReflectionClass($class);
+if ($r->isSubclassOf('Symfony\\Component\\Console\\Command\\Command') && !$r->isAbstract() && !$r->getConstructor()->getNumberOfRequiredParameters()) {
+$application->add($r->newInstance());
+}
+}
+}
+protected function getContainerExtensionClass()
+{
+$basename = preg_replace('/Bundle$/','', $this->getName());
+return $this->getNamespace().'\\DependencyInjection\\'.$basename.'Extension';
+}
+protected function createContainerExtension()
+{
+if (class_exists($class = $this->getContainerExtensionClass())) {
+return new $class();
+}
+}
+}
+}
+namespace Symfony\Component\Config
+{
+use Symfony\Component\Config\Resource\ResourceInterface;
+interface ConfigCacheInterface
+{
+public function getPath();
+public function isFresh();
+public function write($content, array $metadata = null);
+}
+}
+namespace Symfony\Component\Config
+{
+use Symfony\Component\Config\Resource\ResourceInterface;
+use Symfony\Component\Filesystem\Exception\IOException;
+use Symfony\Component\Filesystem\Filesystem;
+class ResourceCheckerConfigCache implements ConfigCacheInterface
+{
+private $file;
+private $resourceCheckers;
+public function __construct($file, array $resourceCheckers = array())
+{
+$this->file = $file;
+$this->resourceCheckers = $resourceCheckers;
+}
+public function getPath()
+{
+return $this->file;
+}
+public function isFresh()
+{
+if (!is_file($this->file)) {
+return false;
+}
+if (!$this->resourceCheckers) {
+return true; }
+$metadata = $this->getMetaFile();
+if (!is_file($metadata)) {
+return true;
+}
+$time = filemtime($this->file);
+$meta = unserialize(file_get_contents($metadata));
+foreach ($meta as $resource) {
+foreach ($this->resourceCheckers as $checker) {
+if (!$checker->supports($resource)) {
+continue; }
+if ($checker->isFresh($resource, $time)) {
+break; }
+return false; }
+}
+return true;
+}
+public function write($content, array $metadata = null)
+{
+$mode = 0666;
+$umask = umask();
+$filesystem = new Filesystem();
+$filesystem->dumpFile($this->file, $content, null);
+try {
+$filesystem->chmod($this->file, $mode, $umask);
+} catch (IOException $e) {
+}
+if (null !== $metadata) {
+$filesystem->dumpFile($this->getMetaFile(), serialize($metadata), null);
+try {
+$filesystem->chmod($this->getMetaFile(), $mode, $umask);
+} catch (IOException $e) {
+}
+}
+}
+private function getMetaFile()
+{
+return $this->file.'.meta';
+}
+}
+}
+namespace Symfony\Component\Config
+{
+use Symfony\Component\Config\Resource\SelfCheckingResourceChecker;
+class ConfigCache extends ResourceCheckerConfigCache
+{
+private $debug;
+public function __construct($file, $debug)
+{
+parent::__construct($file, array(
+new SelfCheckingResourceChecker(),
+));
+$this->debug = (bool) $debug;
+}
+public function isFresh()
+{
+if (!$this->debug && is_file($this->getPath())) {
+return true;
+}
+return parent::isFresh();
+}
+}
+}
+namespace Symfony\Component\HttpKernel
+{
+use Symfony\Component\HttpKernel\Controller\ControllerResolverInterface;
+use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
+use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
+use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
+use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
+use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
+use Symfony\Component\HttpKernel\Event\PostResponseEvent;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+class HttpKernel implements HttpKernelInterface, TerminableInterface
+{
+protected $dispatcher;
+protected $resolver;
+protected $requestStack;
+public function __construct(EventDispatcherInterface $dispatcher, ControllerResolverInterface $resolver, RequestStack $requestStack = null)
+{
+$this->dispatcher = $dispatcher;
+$this->resolver = $resolver;
+$this->requestStack = $requestStack ?: new RequestStack();
+}
+public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+{
+$request->headers->set('X-Php-Ob-Level', ob_get_level());
+try {
+return $this->handleRaw($request, $type);
+} catch (\Exception $e) {
+if (false === $catch) {
+$this->finishRequest($request, $type);
+throw $e;
+}
+return $this->handleException($e, $request, $type);
+}
+}
+public function terminate(Request $request, Response $response)
+{
+$this->dispatcher->dispatch(KernelEvents::TERMINATE, new PostResponseEvent($this, $request, $response));
+}
+public function terminateWithException(\Exception $exception)
+{
+if (!$request = $this->requestStack->getMasterRequest()) {
+throw new \LogicException('Request stack is empty', 0, $exception);
+}
+$response = $this->handleException($exception, $request, self::MASTER_REQUEST);
+$response->sendHeaders();
+$response->sendContent();
+$this->terminate($request, $response);
+}
+private function handleRaw(Request $request, $type = self::MASTER_REQUEST)
+{
+$this->requestStack->push($request);
+$event = new GetResponseEvent($this, $request, $type);
+$this->dispatcher->dispatch(KernelEvents::REQUEST, $event);
+if ($event->hasResponse()) {
+return $this->filterResponse($event->getResponse(), $request, $type);
+}
+if (false === $controller = $this->resolver->getController($request)) {
+throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". The route is wrongly configured.', $request->getPathInfo()));
+}
+$event = new FilterControllerEvent($this, $controller, $request, $type);
+$this->dispatcher->dispatch(KernelEvents::CONTROLLER, $event);
+$controller = $event->getController();
+$arguments = $this->resolver->getArguments($request, $controller);
+$response = call_user_func_array($controller, $arguments);
+if (!$response instanceof Response) {
+$event = new GetResponseForControllerResultEvent($this, $request, $type, $response);
+$this->dispatcher->dispatch(KernelEvents::VIEW, $event);
+if ($event->hasResponse()) {
+$response = $event->getResponse();
+}
+if (!$response instanceof Response) {
+$msg = sprintf('The controller must return a response (%s given).', $this->varToString($response));
+if (null === $response) {
+$msg .=' Did you forget to add a return statement somewhere in your controller?';
+}
+throw new \LogicException($msg);
+}
+}
+return $this->filterResponse($response, $request, $type);
+}
+private function filterResponse(Response $response, Request $request, $type)
+{
+$event = new FilterResponseEvent($this, $request, $type, $response);
+$this->dispatcher->dispatch(KernelEvents::RESPONSE, $event);
+$this->finishRequest($request, $type);
+return $event->getResponse();
+}
+private function finishRequest(Request $request, $type)
+{
+$this->dispatcher->dispatch(KernelEvents::FINISH_REQUEST, new FinishRequestEvent($this, $request, $type));
+$this->requestStack->pop();
+}
+private function handleException(\Exception $e, $request, $type)
+{
+$event = new GetResponseForExceptionEvent($this, $request, $type, $e);
+$this->dispatcher->dispatch(KernelEvents::EXCEPTION, $event);
+$e = $event->getException();
+if (!$event->hasResponse()) {
+$this->finishRequest($request, $type);
+throw $e;
+}
+$response = $event->getResponse();
+if ($response->headers->has('X-Status-Code')) {
+$response->setStatusCode($response->headers->get('X-Status-Code'));
+$response->headers->remove('X-Status-Code');
+} elseif (!$response->isClientError() && !$response->isServerError() && !$response->isRedirect()) {
+if ($e instanceof HttpExceptionInterface) {
+$response->setStatusCode($e->getStatusCode());
+$response->headers->add($e->getHeaders());
+} else {
+$response->setStatusCode(500);
+}
+}
+try {
+return $this->filterResponse($response, $request, $type);
+} catch (\Exception $e) {
+return $response;
+}
+}
+private function varToString($var)
+{
+if (is_object($var)) {
+return sprintf('Object(%s)', get_class($var));
+}
+if (is_array($var)) {
+$a = array();
+foreach ($var as $k => $v) {
+$a[] = sprintf('%s => %s', $k, $this->varToString($v));
+}
+return sprintf('Array(%s)', implode(', ', $a));
+}
+if (is_resource($var)) {
+return sprintf('Resource(%s)', get_resource_type($var));
+}
+if (null === $var) {
+return'null';
+}
+if (false === $var) {
+return'false';
+}
+if (true === $var) {
+return'true';
+}
+return (string) $var;
+}
+}
+}
diff --git a/var/cache/.gitkeep b/var/cache/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/var/cache/dev/annotations/59/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/59/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..abd1dfe
--- /dev/null
+++ b/var/cache/dev/annotations/59/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+a:2:{i:0;O:27:"Doctrine\ORM\Mapping\Entity":2:{s:15:"repositoryClass";N;s:8:"readOnly";b:0;}i:1;O:26:"Doctrine\ORM\Mapping\Table":5:{s:4:"name";s:8:"test_one";s:6:"schema";N;s:7:"indexes";N;s:17:"uniqueConstraints";N;s:7:"options";a:0:{}}}
\ No newline at end of file
diff --git a/var/cache/dev/annotations/65/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/65/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..7da0e5c
--- /dev/null
+++ b/var/cache/dev/annotations/65/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+a:3:{i:0;O:23:"Doctrine\ORM\Mapping\Id":0:{}i:1;O:27:"Doctrine\ORM\Mapping\Column":9:{s:4:"name";N;s:4:"type";s:7:"integer";s:6:"length";N;s:9:"precision";i:0;s:5:"scale";i:0;s:6:"unique";b:0;s:8:"nullable";b:0;s:7:"options";a:0:{}s:16:"columnDefinition";N;}i:2;O:35:"Doctrine\ORM\Mapping\GeneratedValue":1:{s:8:"strategy";s:4:"AUTO";}}
\ No newline at end of file
diff --git a/var/cache/dev/annotations/6b/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/6b/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..6c7e3ae
--- /dev/null
+++ b/var/cache/dev/annotations/6b/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+i:1453823629;
\ No newline at end of file
diff --git a/var/cache/dev/annotations/6c/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/6c/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..6c7e3ae
--- /dev/null
+++ b/var/cache/dev/annotations/6c/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+i:1453823629;
\ No newline at end of file
diff --git a/var/cache/dev/annotations/72/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/72/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..7da0e5c
--- /dev/null
+++ b/var/cache/dev/annotations/72/5b41707042756e646c655c456e746974795c466b496e6465784e616d6554657374246964405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+a:3:{i:0;O:23:"Doctrine\ORM\Mapping\Id":0:{}i:1;O:27:"Doctrine\ORM\Mapping\Column":9:{s:4:"name";N;s:4:"type";s:7:"integer";s:6:"length";N;s:9:"precision";i:0;s:5:"scale";i:0;s:6:"unique";b:0;s:8:"nullable";b:0;s:7:"options";a:0:{}s:16:"columnDefinition";N;}i:2;O:35:"Doctrine\ORM\Mapping\GeneratedValue":1:{s:8:"strategy";s:4:"AUTO";}}
\ No newline at end of file
diff --git a/var/cache/dev/annotations/7d/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/7d/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..a98a0ea
--- /dev/null
+++ b/var/cache/dev/annotations/7d/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432246964405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+i:1453818640;
\ No newline at end of file
diff --git a/var/cache/dev/annotations/ac/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/ac/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..93fba91
--- /dev/null
+++ b/var/cache/dev/annotations/ac/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+i:1453817023;
\ No newline at end of file
diff --git a/var/cache/dev/annotations/b0/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/b0/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..6c7e3ae
--- /dev/null
+++ b/var/cache/dev/annotations/b0/5b5b435d41707042756e646c655c456e746974795c466b496e6465784e616d6554657374405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+i:1453823629;
\ No newline at end of file
diff --git a/var/cache/dev/annotations/cf/5b41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/cf/5b41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..15ad3c1
--- /dev/null
+++ b/var/cache/dev/annotations/cf/5b41707042756e646c655c456e746974795c466b496e6465784e616d65546573742474657374405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+a:1:{i:0;O:30:"Doctrine\ORM\Mapping\ManyToOne":4:{s:12:"targetEntity";s:16:"FkIndexNameTest2";s:7:"cascade";N;s:5:"fetch";s:4:"LAZY";s:10:"inversedBy";N;}}
\ No newline at end of file
diff --git a/var/cache/dev/annotations/de/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data b/var/cache/dev/annotations/de/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data
new file mode 100644
index 0000000..5fe77a8
--- /dev/null
+++ b/var/cache/dev/annotations/de/5b41707042756e646c655c456e746974795c466b496e6465784e616d655465737432405b416e6e6f745d5d5b315d.doctrinecache.data
@@ -0,0 +1,2 @@
+0
+a:2:{i:0;O:27:"Doctrine\ORM\Mapping\Entity":2:{s:15:"repositoryClass";N;s:8:"readOnly";b:0;}i:1;O:26:"Doctrine\ORM\Mapping\Table":5:{s:4:"name";s:8:"test_two";s:6:"schema";N;s:7:"indexes";N;s:17:"uniqueConstraints";N;s:7:"options";a:0:{}}}
\ No newline at end of file
diff --git a/var/cache/dev/appDevDebugProjectContainer.php b/var/cache/dev/appDevDebugProjectContainer.php
new file mode 100644
index 0000000..81de588
--- /dev/null
+++ b/var/cache/dev/appDevDebugProjectContainer.php
@@ -0,0 +1,3764 @@
+targetDirs[$i] = $dir = dirname($dir);
+ }
+ $this->parameters = $this->getDefaultParameters();
+
+ $this->services = array();
+ $this->methodMap = array(
+ 'annotation_reader' => 'getAnnotationReaderService',
+ 'assets.context' => 'getAssets_ContextService',
+ 'assets.packages' => 'getAssets_PackagesService',
+ 'cache_clearer' => 'getCacheClearerService',
+ 'cache_warmer' => 'getCacheWarmerService',
+ 'config_cache_factory' => 'getConfigCacheFactoryService',
+ 'controller_name_converter' => 'getControllerNameConverterService',
+ 'data_collector.dump' => 'getDataCollector_DumpService',
+ 'data_collector.form' => 'getDataCollector_FormService',
+ 'data_collector.form.extractor' => 'getDataCollector_Form_ExtractorService',
+ 'data_collector.request' => 'getDataCollector_RequestService',
+ 'data_collector.router' => 'getDataCollector_RouterService',
+ 'debug.controller_resolver' => 'getDebug_ControllerResolverService',
+ 'debug.debug_handlers_listener' => 'getDebug_DebugHandlersListenerService',
+ 'debug.dump_listener' => 'getDebug_DumpListenerService',
+ 'debug.event_dispatcher' => 'getDebug_EventDispatcherService',
+ 'debug.stopwatch' => 'getDebug_StopwatchService',
+ 'doctrine' => 'getDoctrineService',
+ 'doctrine.dbal.connection_factory' => 'getDoctrine_Dbal_ConnectionFactoryService',
+ 'doctrine.dbal.default_connection' => 'getDoctrine_Dbal_DefaultConnectionService',
+ 'doctrine.dbal.logger.profiling.default' => 'getDoctrine_Dbal_Logger_Profiling_DefaultService',
+ 'doctrine.orm.default_entity_listener_resolver' => 'getDoctrine_Orm_DefaultEntityListenerResolverService',
+ 'doctrine.orm.default_entity_manager' => 'getDoctrine_Orm_DefaultEntityManagerService',
+ 'doctrine.orm.default_listeners.attach_entity_listeners' => 'getDoctrine_Orm_DefaultListeners_AttachEntityListenersService',
+ 'doctrine.orm.default_manager_configurator' => 'getDoctrine_Orm_DefaultManagerConfiguratorService',
+ 'doctrine.orm.validator.unique' => 'getDoctrine_Orm_Validator_UniqueService',
+ 'doctrine.orm.validator_initializer' => 'getDoctrine_Orm_ValidatorInitializerService',
+ 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService',
+ 'doctrine_cache.providers.doctrine.orm.default_query_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService',
+ 'doctrine_cache.providers.doctrine.orm.default_result_cache' => 'getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService',
+ 'file_locator' => 'getFileLocatorService',
+ 'filesystem' => 'getFilesystemService',
+ 'form.factory' => 'getForm_FactoryService',
+ 'form.registry' => 'getForm_RegistryService',
+ 'form.resolved_type_factory' => 'getForm_ResolvedTypeFactoryService',
+ 'form.type.birthday' => 'getForm_Type_BirthdayService',
+ 'form.type.button' => 'getForm_Type_ButtonService',
+ 'form.type.checkbox' => 'getForm_Type_CheckboxService',
+ 'form.type.choice' => 'getForm_Type_ChoiceService',
+ 'form.type.collection' => 'getForm_Type_CollectionService',
+ 'form.type.country' => 'getForm_Type_CountryService',
+ 'form.type.currency' => 'getForm_Type_CurrencyService',
+ 'form.type.date' => 'getForm_Type_DateService',
+ 'form.type.datetime' => 'getForm_Type_DatetimeService',
+ 'form.type.email' => 'getForm_Type_EmailService',
+ 'form.type.entity' => 'getForm_Type_EntityService',
+ 'form.type.file' => 'getForm_Type_FileService',
+ 'form.type.form' => 'getForm_Type_FormService',
+ 'form.type.hidden' => 'getForm_Type_HiddenService',
+ 'form.type.integer' => 'getForm_Type_IntegerService',
+ 'form.type.language' => 'getForm_Type_LanguageService',
+ 'form.type.locale' => 'getForm_Type_LocaleService',
+ 'form.type.money' => 'getForm_Type_MoneyService',
+ 'form.type.number' => 'getForm_Type_NumberService',
+ 'form.type.password' => 'getForm_Type_PasswordService',
+ 'form.type.percent' => 'getForm_Type_PercentService',
+ 'form.type.radio' => 'getForm_Type_RadioService',
+ 'form.type.range' => 'getForm_Type_RangeService',
+ 'form.type.repeated' => 'getForm_Type_RepeatedService',
+ 'form.type.reset' => 'getForm_Type_ResetService',
+ 'form.type.search' => 'getForm_Type_SearchService',
+ 'form.type.submit' => 'getForm_Type_SubmitService',
+ 'form.type.text' => 'getForm_Type_TextService',
+ 'form.type.textarea' => 'getForm_Type_TextareaService',
+ 'form.type.time' => 'getForm_Type_TimeService',
+ 'form.type.timezone' => 'getForm_Type_TimezoneService',
+ 'form.type.url' => 'getForm_Type_UrlService',
+ 'form.type_extension.csrf' => 'getForm_TypeExtension_CsrfService',
+ 'form.type_extension.form.data_collector' => 'getForm_TypeExtension_Form_DataCollectorService',
+ 'form.type_extension.form.http_foundation' => 'getForm_TypeExtension_Form_HttpFoundationService',
+ 'form.type_extension.form.validator' => 'getForm_TypeExtension_Form_ValidatorService',
+ 'form.type_extension.repeated.validator' => 'getForm_TypeExtension_Repeated_ValidatorService',
+ 'form.type_extension.submit.validator' => 'getForm_TypeExtension_Submit_ValidatorService',
+ 'form.type_guesser.doctrine' => 'getForm_TypeGuesser_DoctrineService',
+ 'form.type_guesser.validator' => 'getForm_TypeGuesser_ValidatorService',
+ 'fragment.handler' => 'getFragment_HandlerService',
+ 'fragment.listener' => 'getFragment_ListenerService',
+ 'fragment.renderer.esi' => 'getFragment_Renderer_EsiService',
+ 'fragment.renderer.hinclude' => 'getFragment_Renderer_HincludeService',
+ 'fragment.renderer.inline' => 'getFragment_Renderer_InlineService',
+ 'fragment.renderer.ssi' => 'getFragment_Renderer_SsiService',
+ 'http_kernel' => 'getHttpKernelService',
+ 'kernel' => 'getKernelService',
+ 'kernel.class_cache.cache_warmer' => 'getKernel_ClassCache_CacheWarmerService',
+ 'locale_listener' => 'getLocaleListenerService',
+ 'logger' => 'getLoggerService',
+ 'monolog.handler.console' => 'getMonolog_Handler_ConsoleService',
+ 'monolog.handler.debug' => 'getMonolog_Handler_DebugService',
+ 'monolog.handler.main' => 'getMonolog_Handler_MainService',
+ 'monolog.logger.doctrine' => 'getMonolog_Logger_DoctrineService',
+ 'monolog.logger.event' => 'getMonolog_Logger_EventService',
+ 'monolog.logger.php' => 'getMonolog_Logger_PhpService',
+ 'monolog.logger.profiler' => 'getMonolog_Logger_ProfilerService',
+ 'monolog.logger.request' => 'getMonolog_Logger_RequestService',
+ 'monolog.logger.router' => 'getMonolog_Logger_RouterService',
+ 'monolog.logger.security' => 'getMonolog_Logger_SecurityService',
+ 'monolog.logger.templating' => 'getMonolog_Logger_TemplatingService',
+ 'monolog.logger.translation' => 'getMonolog_Logger_TranslationService',
+ 'profiler' => 'getProfilerService',
+ 'profiler_listener' => 'getProfilerListenerService',
+ 'property_accessor' => 'getPropertyAccessorService',
+ 'request_stack' => 'getRequestStackService',
+ 'response_listener' => 'getResponseListenerService',
+ 'router' => 'getRouterService',
+ 'router.request_context' => 'getRouter_RequestContextService',
+ 'router_listener' => 'getRouterListenerService',
+ 'routing.loader' => 'getRouting_LoaderService',
+ 'security.access.decision_manager' => 'getSecurity_Access_DecisionManagerService',
+ 'security.authentication.guard_handler' => 'getSecurity_Authentication_GuardHandlerService',
+ 'security.authentication.manager' => 'getSecurity_Authentication_ManagerService',
+ 'security.authentication.trust_resolver' => 'getSecurity_Authentication_TrustResolverService',
+ 'security.authentication_utils' => 'getSecurity_AuthenticationUtilsService',
+ 'security.authorization_checker' => 'getSecurity_AuthorizationCheckerService',
+ 'security.csrf.token_manager' => 'getSecurity_Csrf_TokenManagerService',
+ 'security.encoder_factory' => 'getSecurity_EncoderFactoryService',
+ 'security.firewall' => 'getSecurity_FirewallService',
+ 'security.firewall.map.context.dev' => 'getSecurity_Firewall_Map_Context_DevService',
+ 'security.firewall.map.context.main' => 'getSecurity_Firewall_Map_Context_MainService',
+ 'security.logout_url_generator' => 'getSecurity_LogoutUrlGeneratorService',
+ 'security.password_encoder' => 'getSecurity_PasswordEncoderService',
+ 'security.rememberme.response_listener' => 'getSecurity_Rememberme_ResponseListenerService',
+ 'security.role_hierarchy' => 'getSecurity_RoleHierarchyService',
+ 'security.token_storage' => 'getSecurity_TokenStorageService',
+ 'security.user_checker.main' => 'getSecurity_UserChecker_MainService',
+ 'security.validator.user_password' => 'getSecurity_Validator_UserPasswordService',
+ 'sensio_distribution.security_checker' => 'getSensioDistribution_SecurityCheckerService',
+ 'sensio_distribution.security_checker.command' => 'getSensioDistribution_SecurityChecker_CommandService',
+ 'sensio_framework_extra.cache.listener' => 'getSensioFrameworkExtra_Cache_ListenerService',
+ 'sensio_framework_extra.controller.listener' => 'getSensioFrameworkExtra_Controller_ListenerService',
+ 'sensio_framework_extra.converter.datetime' => 'getSensioFrameworkExtra_Converter_DatetimeService',
+ 'sensio_framework_extra.converter.doctrine.orm' => 'getSensioFrameworkExtra_Converter_Doctrine_OrmService',
+ 'sensio_framework_extra.converter.listener' => 'getSensioFrameworkExtra_Converter_ListenerService',
+ 'sensio_framework_extra.converter.manager' => 'getSensioFrameworkExtra_Converter_ManagerService',
+ 'sensio_framework_extra.security.listener' => 'getSensioFrameworkExtra_Security_ListenerService',
+ 'sensio_framework_extra.view.guesser' => 'getSensioFrameworkExtra_View_GuesserService',
+ 'sensio_framework_extra.view.listener' => 'getSensioFrameworkExtra_View_ListenerService',
+ 'service_container' => 'getServiceContainerService',
+ 'session' => 'getSessionService',
+ 'session.save_listener' => 'getSession_SaveListenerService',
+ 'session.storage.filesystem' => 'getSession_Storage_FilesystemService',
+ 'session.storage.metadata_bag' => 'getSession_Storage_MetadataBagService',
+ 'session.storage.native' => 'getSession_Storage_NativeService',
+ 'session.storage.php_bridge' => 'getSession_Storage_PhpBridgeService',
+ 'session_listener' => 'getSessionListenerService',
+ 'streamed_response_listener' => 'getStreamedResponseListenerService',
+ 'swiftmailer.email_sender.listener' => 'getSwiftmailer_EmailSender_ListenerService',
+ 'swiftmailer.mailer.default' => 'getSwiftmailer_Mailer_DefaultService',
+ 'swiftmailer.mailer.default.plugin.messagelogger' => 'getSwiftmailer_Mailer_Default_Plugin_MessageloggerService',
+ 'swiftmailer.mailer.default.spool' => 'getSwiftmailer_Mailer_Default_SpoolService',
+ 'swiftmailer.mailer.default.transport' => 'getSwiftmailer_Mailer_Default_TransportService',
+ 'swiftmailer.mailer.default.transport.eventdispatcher' => 'getSwiftmailer_Mailer_Default_Transport_EventdispatcherService',
+ 'swiftmailer.mailer.default.transport.real' => 'getSwiftmailer_Mailer_Default_Transport_RealService',
+ 'templating' => 'getTemplatingService',
+ 'templating.filename_parser' => 'getTemplating_FilenameParserService',
+ 'templating.helper.logout_url' => 'getTemplating_Helper_LogoutUrlService',
+ 'templating.helper.security' => 'getTemplating_Helper_SecurityService',
+ 'templating.loader' => 'getTemplating_LoaderService',
+ 'templating.locator' => 'getTemplating_LocatorService',
+ 'templating.name_parser' => 'getTemplating_NameParserService',
+ 'translation.dumper.csv' => 'getTranslation_Dumper_CsvService',
+ 'translation.dumper.ini' => 'getTranslation_Dumper_IniService',
+ 'translation.dumper.json' => 'getTranslation_Dumper_JsonService',
+ 'translation.dumper.mo' => 'getTranslation_Dumper_MoService',
+ 'translation.dumper.php' => 'getTranslation_Dumper_PhpService',
+ 'translation.dumper.po' => 'getTranslation_Dumper_PoService',
+ 'translation.dumper.qt' => 'getTranslation_Dumper_QtService',
+ 'translation.dumper.res' => 'getTranslation_Dumper_ResService',
+ 'translation.dumper.xliff' => 'getTranslation_Dumper_XliffService',
+ 'translation.dumper.yml' => 'getTranslation_Dumper_YmlService',
+ 'translation.extractor' => 'getTranslation_ExtractorService',
+ 'translation.extractor.php' => 'getTranslation_Extractor_PhpService',
+ 'translation.loader' => 'getTranslation_LoaderService',
+ 'translation.loader.csv' => 'getTranslation_Loader_CsvService',
+ 'translation.loader.dat' => 'getTranslation_Loader_DatService',
+ 'translation.loader.ini' => 'getTranslation_Loader_IniService',
+ 'translation.loader.json' => 'getTranslation_Loader_JsonService',
+ 'translation.loader.mo' => 'getTranslation_Loader_MoService',
+ 'translation.loader.php' => 'getTranslation_Loader_PhpService',
+ 'translation.loader.po' => 'getTranslation_Loader_PoService',
+ 'translation.loader.qt' => 'getTranslation_Loader_QtService',
+ 'translation.loader.res' => 'getTranslation_Loader_ResService',
+ 'translation.loader.xliff' => 'getTranslation_Loader_XliffService',
+ 'translation.loader.yml' => 'getTranslation_Loader_YmlService',
+ 'translation.writer' => 'getTranslation_WriterService',
+ 'translator' => 'getTranslatorService',
+ 'translator.default' => 'getTranslator_DefaultService',
+ 'translator.selector' => 'getTranslator_SelectorService',
+ 'translator_listener' => 'getTranslatorListenerService',
+ 'twig' => 'getTwigService',
+ 'twig.controller.exception' => 'getTwig_Controller_ExceptionService',
+ 'twig.controller.preview_error' => 'getTwig_Controller_PreviewErrorService',
+ 'twig.exception_listener' => 'getTwig_ExceptionListenerService',
+ 'twig.loader' => 'getTwig_LoaderService',
+ 'twig.profile' => 'getTwig_ProfileService',
+ 'twig.translation.extractor' => 'getTwig_Translation_ExtractorService',
+ 'uri_signer' => 'getUriSignerService',
+ 'validator' => 'getValidatorService',
+ 'validator.builder' => 'getValidator_BuilderService',
+ 'validator.email' => 'getValidator_EmailService',
+ 'validator.expression' => 'getValidator_ExpressionService',
+ 'var_dumper.cli_dumper' => 'getVarDumper_CliDumperService',
+ 'var_dumper.cloner' => 'getVarDumper_ClonerService',
+ 'web_profiler.controller.exception' => 'getWebProfiler_Controller_ExceptionService',
+ 'web_profiler.controller.profiler' => 'getWebProfiler_Controller_ProfilerService',
+ 'web_profiler.controller.router' => 'getWebProfiler_Controller_RouterService',
+ 'web_profiler.debug_toolbar' => 'getWebProfiler_DebugToolbarService',
+ );
+ $this->aliases = array(
+ 'console.command.sensiolabs_security_command_securitycheckercommand' => 'sensio_distribution.security_checker.command',
+ 'database_connection' => 'doctrine.dbal.default_connection',
+ 'doctrine.orm.default_metadata_cache' => 'doctrine_cache.providers.doctrine.orm.default_metadata_cache',
+ 'doctrine.orm.default_query_cache' => 'doctrine_cache.providers.doctrine.orm.default_query_cache',
+ 'doctrine.orm.default_result_cache' => 'doctrine_cache.providers.doctrine.orm.default_result_cache',
+ 'doctrine.orm.entity_manager' => 'doctrine.orm.default_entity_manager',
+ 'event_dispatcher' => 'debug.event_dispatcher',
+ 'mailer' => 'swiftmailer.mailer.default',
+ 'session.storage' => 'session.storage.native',
+ 'swiftmailer.mailer' => 'swiftmailer.mailer.default',
+ 'swiftmailer.plugin.messagelogger' => 'swiftmailer.mailer.default.plugin.messagelogger',
+ 'swiftmailer.spool' => 'swiftmailer.mailer.default.spool',
+ 'swiftmailer.transport' => 'swiftmailer.mailer.default.transport',
+ 'swiftmailer.transport.real' => 'swiftmailer.mailer.default.transport.real',
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function compile()
+ {
+ throw new LogicException('You cannot compile a dumped frozen container.');
+ }
+
+ /**
+ * Gets the 'annotation_reader' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Common\Annotations\CachedReader A Doctrine\Common\Annotations\CachedReader instance.
+ */
+ protected function getAnnotationReaderService()
+ {
+ return $this->services['annotation_reader'] = new \Doctrine\Common\Annotations\CachedReader(new \Doctrine\Common\Annotations\AnnotationReader(), new \Doctrine\Common\Cache\FilesystemCache((__DIR__.'/annotations')), true);
+ }
+
+ /**
+ * Gets the 'assets.context' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Asset\Context\RequestStackContext A Symfony\Component\Asset\Context\RequestStackContext instance.
+ */
+ protected function getAssets_ContextService()
+ {
+ return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext($this->get('request_stack'));
+ }
+
+ /**
+ * Gets the 'assets.packages' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Asset\Packages A Symfony\Component\Asset\Packages instance.
+ */
+ protected function getAssets_PackagesService()
+ {
+ return $this->services['assets.packages'] = new \Symfony\Component\Asset\Packages(new \Symfony\Component\Asset\PathPackage('', new \Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy(), $this->get('assets.context')), array());
+ }
+
+ /**
+ * Gets the 'cache_clearer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer A Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer instance.
+ */
+ protected function getCacheClearerService()
+ {
+ return $this->services['cache_clearer'] = new \Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer(array());
+ }
+
+ /**
+ * Gets the 'cache_warmer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate A Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate instance.
+ */
+ protected function getCacheWarmerService()
+ {
+ $a = $this->get('kernel');
+ $b = $this->get('templating.filename_parser');
+
+ $c = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplateFinder($a, $b, ($this->targetDirs[3].'/app/Resources'));
+
+ return $this->services['cache_warmer'] = new \Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate(array(0 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TemplatePathsCacheWarmer($c, $this->get('templating.locator')), 1 => $this->get('kernel.class_cache.cache_warmer'), 2 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\TranslationsCacheWarmer($this->get('translator')), 3 => new \Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer($this->get('router')), 4 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheCacheWarmer($this, $c, array()), 5 => new \Symfony\Bundle\TwigBundle\CacheWarmer\TemplateCacheWarmer($this->get('twig'), new \Symfony\Bundle\TwigBundle\TemplateIterator($a, ($this->targetDirs[3].'/app'), array())), 6 => new \Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer($this->get('doctrine'))));
+ }
+
+ /**
+ * Gets the 'config_cache_factory' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Config\ResourceCheckerConfigCacheFactory A Symfony\Component\Config\ResourceCheckerConfigCacheFactory instance.
+ */
+ protected function getConfigCacheFactoryService()
+ {
+ return $this->services['config_cache_factory'] = new \Symfony\Component\Config\ResourceCheckerConfigCacheFactory(array(0 => new \Symfony\Component\Config\Resource\SelfCheckingResourceChecker()));
+ }
+
+ /**
+ * Gets the 'data_collector.dump' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector A Symfony\Component\HttpKernel\DataCollector\DumpDataCollector instance.
+ */
+ protected function getDataCollector_DumpService()
+ {
+ return $this->services['data_collector.dump'] = new \Symfony\Component\HttpKernel\DataCollector\DumpDataCollector($this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE), NULL, 'UTF-8', $this->get('request_stack'), NULL);
+ }
+
+ /**
+ * Gets the 'data_collector.form' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\DataCollector\FormDataCollector A Symfony\Component\Form\Extension\DataCollector\FormDataCollector instance.
+ */
+ protected function getDataCollector_FormService()
+ {
+ return $this->services['data_collector.form'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataCollector($this->get('data_collector.form.extractor'));
+ }
+
+ /**
+ * Gets the 'data_collector.form.extractor' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor A Symfony\Component\Form\Extension\DataCollector\FormDataExtractor instance.
+ */
+ protected function getDataCollector_Form_ExtractorService()
+ {
+ return $this->services['data_collector.form.extractor'] = new \Symfony\Component\Form\Extension\DataCollector\FormDataExtractor();
+ }
+
+ /**
+ * Gets the 'data_collector.request' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\DataCollector\RequestDataCollector A Symfony\Component\HttpKernel\DataCollector\RequestDataCollector instance.
+ */
+ protected function getDataCollector_RequestService()
+ {
+ return $this->services['data_collector.request'] = new \Symfony\Component\HttpKernel\DataCollector\RequestDataCollector();
+ }
+
+ /**
+ * Gets the 'data_collector.router' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector A Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector instance.
+ */
+ protected function getDataCollector_RouterService()
+ {
+ return $this->services['data_collector.router'] = new \Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector();
+ }
+
+ /**
+ * Gets the 'debug.controller_resolver' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver A Symfony\Component\HttpKernel\Controller\TraceableControllerResolver instance.
+ */
+ protected function getDebug_ControllerResolverService()
+ {
+ return $this->services['debug.controller_resolver'] = new \Symfony\Component\HttpKernel\Controller\TraceableControllerResolver(new \Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver($this, $this->get('controller_name_converter'), $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE)), $this->get('debug.stopwatch'));
+ }
+
+ /**
+ * Gets the 'debug.debug_handlers_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener A Symfony\Component\HttpKernel\EventListener\DebugHandlersListener instance.
+ */
+ protected function getDebug_DebugHandlersListenerService()
+ {
+ return $this->services['debug.debug_handlers_listener'] = new \Symfony\Component\HttpKernel\EventListener\DebugHandlersListener(NULL, $this->get('monolog.logger.php', ContainerInterface::NULL_ON_INVALID_REFERENCE), NULL, NULL, true, NULL);
+ }
+
+ /**
+ * Gets the 'debug.dump_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\DumpListener A Symfony\Component\HttpKernel\EventListener\DumpListener instance.
+ */
+ protected function getDebug_DumpListenerService()
+ {
+ return $this->services['debug.dump_listener'] = new \Symfony\Component\HttpKernel\EventListener\DumpListener($this->get('var_dumper.cloner'), $this->get('data_collector.dump'));
+ }
+
+ /**
+ * Gets the 'debug.event_dispatcher' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher A Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher instance.
+ */
+ protected function getDebug_EventDispatcherService()
+ {
+ $this->services['debug.event_dispatcher'] = $instance = new \Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher(new \Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher($this), $this->get('debug.stopwatch'), $this->get('monolog.logger.event', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+
+ $instance->addListenerService('kernel.controller', array(0 => 'data_collector.router', 1 => 'onKernelController'), 0);
+ $instance->addSubscriberService('response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener');
+ $instance->addSubscriberService('streamed_response_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\StreamedResponseListener');
+ $instance->addSubscriberService('locale_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\LocaleListener');
+ $instance->addSubscriberService('translator_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\TranslatorListener');
+ $instance->addSubscriberService('session_listener', 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener');
+ $instance->addSubscriberService('session.save_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\SaveSessionListener');
+ $instance->addSubscriberService('fragment.listener', 'Symfony\\Component\\HttpKernel\\EventListener\\FragmentListener');
+ $instance->addSubscriberService('profiler_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ProfilerListener');
+ $instance->addSubscriberService('data_collector.request', 'Symfony\\Component\\HttpKernel\\DataCollector\\RequestDataCollector');
+ $instance->addSubscriberService('router_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener');
+ $instance->addSubscriberService('debug.debug_handlers_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DebugHandlersListener');
+ $instance->addSubscriberService('security.firewall', 'Symfony\\Component\\Security\\Http\\Firewall');
+ $instance->addSubscriberService('security.rememberme.response_listener', 'Symfony\\Component\\Security\\Http\\RememberMe\\ResponseListener');
+ $instance->addSubscriberService('twig.exception_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\ExceptionListener');
+ $instance->addSubscriberService('monolog.handler.console', 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler');
+ $instance->addSubscriberService('swiftmailer.email_sender.listener', 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener');
+ $instance->addSubscriberService('sensio_framework_extra.controller.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener');
+ $instance->addSubscriberService('sensio_framework_extra.converter.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener');
+ $instance->addSubscriberService('sensio_framework_extra.view.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener');
+ $instance->addSubscriberService('sensio_framework_extra.cache.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener');
+ $instance->addSubscriberService('sensio_framework_extra.security.listener', 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener');
+ $instance->addSubscriberService('debug.dump_listener', 'Symfony\\Component\\HttpKernel\\EventListener\\DumpListener');
+ $instance->addSubscriberService('web_profiler.debug_toolbar', 'Symfony\\Bundle\\WebProfilerBundle\\EventListener\\WebDebugToolbarListener');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'debug.stopwatch' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Stopwatch\Stopwatch A Symfony\Component\Stopwatch\Stopwatch instance.
+ */
+ protected function getDebug_StopwatchService()
+ {
+ return $this->services['debug.stopwatch'] = new \Symfony\Component\Stopwatch\Stopwatch();
+ }
+
+ /**
+ * Gets the 'doctrine' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Bundle\DoctrineBundle\Registry A Doctrine\Bundle\DoctrineBundle\Registry instance.
+ */
+ protected function getDoctrineService()
+ {
+ return $this->services['doctrine'] = new \Doctrine\Bundle\DoctrineBundle\Registry($this, array('default' => 'doctrine.dbal.default_connection'), array('default' => 'doctrine.orm.default_entity_manager'), 'default', 'default');
+ }
+
+ /**
+ * Gets the 'doctrine.dbal.connection_factory' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Bundle\DoctrineBundle\ConnectionFactory A Doctrine\Bundle\DoctrineBundle\ConnectionFactory instance.
+ */
+ protected function getDoctrine_Dbal_ConnectionFactoryService()
+ {
+ return $this->services['doctrine.dbal.connection_factory'] = new \Doctrine\Bundle\DoctrineBundle\ConnectionFactory(array());
+ }
+
+ /**
+ * Gets the 'doctrine.dbal.default_connection' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\DBAL\Connection A Doctrine\DBAL\Connection instance.
+ */
+ protected function getDoctrine_Dbal_DefaultConnectionService()
+ {
+ $a = new \Doctrine\DBAL\Logging\LoggerChain();
+ $a->addLogger(new \Symfony\Bridge\Doctrine\Logger\DbalLogger($this->get('monolog.logger.doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE)));
+ $a->addLogger($this->get('doctrine.dbal.logger.profiling.default'));
+
+ $b = new \Doctrine\DBAL\Configuration();
+ $b->setSQLLogger($a);
+
+ $c = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this);
+ $c->addEventListener(array(0 => 'loadClassMetadata'), $this->get('doctrine.orm.default_listeners.attach_entity_listeners'));
+
+ return $this->services['doctrine.dbal.default_connection'] = $this->get('doctrine.dbal.connection_factory')->createConnection(array('driver' => 'pdo_mysql', 'host' => '127.0.0.1', 'port' => 3306, 'dbname' => 'symfony', 'user' => 'root', 'password' => 'yolo', 'charset' => 'UTF8', 'driverOptions' => array(), 'defaultTableOptions' => array()), $b, $c, array());
+ }
+
+ /**
+ * Gets the 'doctrine.orm.default_entity_listener_resolver' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\ORM\Mapping\DefaultEntityListenerResolver A Doctrine\ORM\Mapping\DefaultEntityListenerResolver instance.
+ */
+ protected function getDoctrine_Orm_DefaultEntityListenerResolverService()
+ {
+ return $this->services['doctrine.orm.default_entity_listener_resolver'] = new \Doctrine\ORM\Mapping\DefaultEntityListenerResolver();
+ }
+
+ /**
+ * Gets the 'doctrine.orm.default_entity_manager' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\ORM\EntityManager A Doctrine\ORM\EntityManager instance.
+ */
+ protected function getDoctrine_Orm_DefaultEntityManagerService()
+ {
+ $a = new \Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain();
+ $a->addDriver(new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($this->get('annotation_reader'), array(0 => ($this->targetDirs[3].'/src/AppBundle/Entity'))), 'AppBundle\\Entity');
+
+ $b = new \Doctrine\ORM\Configuration();
+ $b->setEntityNamespaces(array('AppBundle' => 'AppBundle\\Entity'));
+ $b->setMetadataCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_metadata_cache'));
+ $b->setQueryCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_query_cache'));
+ $b->setResultCacheImpl($this->get('doctrine_cache.providers.doctrine.orm.default_result_cache'));
+ $b->setMetadataDriverImpl($a);
+ $b->setProxyDir((__DIR__.'/doctrine/orm/Proxies'));
+ $b->setProxyNamespace('Proxies');
+ $b->setAutoGenerateProxyClasses(true);
+ $b->setClassMetadataFactoryName('Doctrine\\ORM\\Mapping\\ClassMetadataFactory');
+ $b->setDefaultRepositoryClassName('Doctrine\\ORM\\EntityRepository');
+ $b->setNamingStrategy(new \Doctrine\ORM\Mapping\UnderscoreNamingStrategy());
+ $b->setQuoteStrategy(new \Doctrine\ORM\Mapping\DefaultQuoteStrategy());
+ $b->setEntityListenerResolver($this->get('doctrine.orm.default_entity_listener_resolver'));
+
+ $this->services['doctrine.orm.default_entity_manager'] = $instance = \Doctrine\ORM\EntityManager::create($this->get('doctrine.dbal.default_connection'), $b);
+
+ $this->get('doctrine.orm.default_manager_configurator')->configure($instance);
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'doctrine.orm.default_listeners.attach_entity_listeners' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\ORM\Tools\AttachEntityListenersListener A Doctrine\ORM\Tools\AttachEntityListenersListener instance.
+ */
+ protected function getDoctrine_Orm_DefaultListeners_AttachEntityListenersService()
+ {
+ return $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] = new \Doctrine\ORM\Tools\AttachEntityListenersListener();
+ }
+
+ /**
+ * Gets the 'doctrine.orm.default_manager_configurator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator A Doctrine\Bundle\DoctrineBundle\ManagerConfigurator instance.
+ */
+ protected function getDoctrine_Orm_DefaultManagerConfiguratorService()
+ {
+ return $this->services['doctrine.orm.default_manager_configurator'] = new \Doctrine\Bundle\DoctrineBundle\ManagerConfigurator(array(), array());
+ }
+
+ /**
+ * Gets the 'doctrine.orm.validator.unique' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator A Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator instance.
+ */
+ protected function getDoctrine_Orm_Validator_UniqueService()
+ {
+ return $this->services['doctrine.orm.validator.unique'] = new \Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator($this->get('doctrine'));
+ }
+
+ /**
+ * Gets the 'doctrine.orm.validator_initializer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer A Symfony\Bridge\Doctrine\Validator\DoctrineInitializer instance.
+ */
+ protected function getDoctrine_Orm_ValidatorInitializerService()
+ {
+ return $this->services['doctrine.orm.validator_initializer'] = new \Symfony\Bridge\Doctrine\Validator\DoctrineInitializer($this->get('doctrine'));
+ }
+
+ /**
+ * Gets the 'doctrine_cache.providers.doctrine.orm.default_metadata_cache' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance.
+ */
+ protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultMetadataCacheService()
+ {
+ $this->services['doctrine_cache.providers.doctrine.orm.default_metadata_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache();
+
+ $instance->setNamespace('sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'doctrine_cache.providers.doctrine.orm.default_query_cache' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance.
+ */
+ protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultQueryCacheService()
+ {
+ $this->services['doctrine_cache.providers.doctrine.orm.default_query_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache();
+
+ $instance->setNamespace('sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'doctrine_cache.providers.doctrine.orm.default_result_cache' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Doctrine\Common\Cache\ArrayCache A Doctrine\Common\Cache\ArrayCache instance.
+ */
+ protected function getDoctrineCache_Providers_Doctrine_Orm_DefaultResultCacheService()
+ {
+ $this->services['doctrine_cache.providers.doctrine.orm.default_result_cache'] = $instance = new \Doctrine\Common\Cache\ArrayCache();
+
+ $instance->setNamespace('sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'file_locator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Config\FileLocator A Symfony\Component\HttpKernel\Config\FileLocator instance.
+ */
+ protected function getFileLocatorService()
+ {
+ return $this->services['file_locator'] = new \Symfony\Component\HttpKernel\Config\FileLocator($this->get('kernel'), ($this->targetDirs[3].'/app/Resources'));
+ }
+
+ /**
+ * Gets the 'filesystem' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Filesystem\Filesystem A Symfony\Component\Filesystem\Filesystem instance.
+ */
+ protected function getFilesystemService()
+ {
+ return $this->services['filesystem'] = new \Symfony\Component\Filesystem\Filesystem();
+ }
+
+ /**
+ * Gets the 'form.factory' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\FormFactory A Symfony\Component\Form\FormFactory instance.
+ */
+ protected function getForm_FactoryService()
+ {
+ return $this->services['form.factory'] = new \Symfony\Component\Form\FormFactory($this->get('form.registry'), $this->get('form.resolved_type_factory'));
+ }
+
+ /**
+ * Gets the 'form.registry' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\FormRegistry A Symfony\Component\Form\FormRegistry instance.
+ */
+ protected function getForm_RegistryService()
+ {
+ return $this->services['form.registry'] = new \Symfony\Component\Form\FormRegistry(array(0 => new \Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension($this, array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => 'form.type.form', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\BirthdayType' => 'form.type.birthday', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType' => 'form.type.checkbox', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ChoiceType' => 'form.type.choice', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CollectionType' => 'form.type.collection', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CountryType' => 'form.type.country', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateType' => 'form.type.date', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\DateTimeType' => 'form.type.datetime', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\EmailType' => 'form.type.email', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\FileType' => 'form.type.file', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\HiddenType' => 'form.type.hidden', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\IntegerType' => 'form.type.integer', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\LanguageType' => 'form.type.language', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\LocaleType' => 'form.type.locale', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\MoneyType' => 'form.type.money', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\NumberType' => 'form.type.number', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\PasswordType' => 'form.type.password', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\PercentType' => 'form.type.percent', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RadioType' => 'form.type.radio', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RangeType' => 'form.type.range', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => 'form.type.repeated', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SearchType' => 'form.type.search', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextareaType' => 'form.type.textarea', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TextType' => 'form.type.text', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimeType' => 'form.type.time', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\TimezoneType' => 'form.type.timezone', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\UrlType' => 'form.type.url', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ButtonType' => 'form.type.button', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => 'form.type.submit', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\ResetType' => 'form.type.reset', 'Symfony\\Component\\Form\\Extension\\Core\\Type\\CurrencyType' => 'form.type.currency', 'Symfony\\Bridge\\Doctrine\\Form\\Type\\EntityType' => 'form.type.entity'), array('Symfony\\Component\\Form\\Extension\\Core\\Type\\FormType' => array(0 => 'form.type_extension.form.http_foundation', 1 => 'form.type_extension.form.validator', 2 => 'form.type_extension.csrf', 3 => 'form.type_extension.form.data_collector'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\RepeatedType' => array(0 => 'form.type_extension.repeated.validator'), 'Symfony\\Component\\Form\\Extension\\Core\\Type\\SubmitType' => array(0 => 'form.type_extension.submit.validator')), array(0 => 'form.type_guesser.validator', 1 => 'form.type_guesser.doctrine'))), $this->get('form.resolved_type_factory'));
+ }
+
+ /**
+ * Gets the 'form.resolved_type_factory' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy A Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy instance.
+ */
+ protected function getForm_ResolvedTypeFactoryService()
+ {
+ return $this->services['form.resolved_type_factory'] = new \Symfony\Component\Form\Extension\DataCollector\Proxy\ResolvedTypeFactoryDataCollectorProxy(new \Symfony\Component\Form\ResolvedFormTypeFactory(), $this->get('data_collector.form'));
+ }
+
+ /**
+ * Gets the 'form.type.birthday' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\BirthdayType A Symfony\Component\Form\Extension\Core\Type\BirthdayType instance.
+ */
+ protected function getForm_Type_BirthdayService()
+ {
+ return $this->services['form.type.birthday'] = new \Symfony\Component\Form\Extension\Core\Type\BirthdayType();
+ }
+
+ /**
+ * Gets the 'form.type.button' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\ButtonType A Symfony\Component\Form\Extension\Core\Type\ButtonType instance.
+ */
+ protected function getForm_Type_ButtonService()
+ {
+ return $this->services['form.type.button'] = new \Symfony\Component\Form\Extension\Core\Type\ButtonType();
+ }
+
+ /**
+ * Gets the 'form.type.checkbox' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\CheckboxType A Symfony\Component\Form\Extension\Core\Type\CheckboxType instance.
+ */
+ protected function getForm_Type_CheckboxService()
+ {
+ return $this->services['form.type.checkbox'] = new \Symfony\Component\Form\Extension\Core\Type\CheckboxType();
+ }
+
+ /**
+ * Gets the 'form.type.choice' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\ChoiceType A Symfony\Component\Form\Extension\Core\Type\ChoiceType instance.
+ */
+ protected function getForm_Type_ChoiceService()
+ {
+ return $this->services['form.type.choice'] = new \Symfony\Component\Form\Extension\Core\Type\ChoiceType();
+ }
+
+ /**
+ * Gets the 'form.type.collection' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\CollectionType A Symfony\Component\Form\Extension\Core\Type\CollectionType instance.
+ */
+ protected function getForm_Type_CollectionService()
+ {
+ return $this->services['form.type.collection'] = new \Symfony\Component\Form\Extension\Core\Type\CollectionType();
+ }
+
+ /**
+ * Gets the 'form.type.country' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\CountryType A Symfony\Component\Form\Extension\Core\Type\CountryType instance.
+ */
+ protected function getForm_Type_CountryService()
+ {
+ return $this->services['form.type.country'] = new \Symfony\Component\Form\Extension\Core\Type\CountryType();
+ }
+
+ /**
+ * Gets the 'form.type.currency' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\CurrencyType A Symfony\Component\Form\Extension\Core\Type\CurrencyType instance.
+ */
+ protected function getForm_Type_CurrencyService()
+ {
+ return $this->services['form.type.currency'] = new \Symfony\Component\Form\Extension\Core\Type\CurrencyType();
+ }
+
+ /**
+ * Gets the 'form.type.date' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\DateType A Symfony\Component\Form\Extension\Core\Type\DateType instance.
+ */
+ protected function getForm_Type_DateService()
+ {
+ return $this->services['form.type.date'] = new \Symfony\Component\Form\Extension\Core\Type\DateType();
+ }
+
+ /**
+ * Gets the 'form.type.datetime' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\DateTimeType A Symfony\Component\Form\Extension\Core\Type\DateTimeType instance.
+ */
+ protected function getForm_Type_DatetimeService()
+ {
+ return $this->services['form.type.datetime'] = new \Symfony\Component\Form\Extension\Core\Type\DateTimeType();
+ }
+
+ /**
+ * Gets the 'form.type.email' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\EmailType A Symfony\Component\Form\Extension\Core\Type\EmailType instance.
+ */
+ protected function getForm_Type_EmailService()
+ {
+ return $this->services['form.type.email'] = new \Symfony\Component\Form\Extension\Core\Type\EmailType();
+ }
+
+ /**
+ * Gets the 'form.type.entity' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Doctrine\Form\Type\EntityType A Symfony\Bridge\Doctrine\Form\Type\EntityType instance.
+ */
+ protected function getForm_Type_EntityService()
+ {
+ return $this->services['form.type.entity'] = new \Symfony\Bridge\Doctrine\Form\Type\EntityType($this->get('doctrine'));
+ }
+
+ /**
+ * Gets the 'form.type.file' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\FileType A Symfony\Component\Form\Extension\Core\Type\FileType instance.
+ */
+ protected function getForm_Type_FileService()
+ {
+ return $this->services['form.type.file'] = new \Symfony\Component\Form\Extension\Core\Type\FileType();
+ }
+
+ /**
+ * Gets the 'form.type.form' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\FormType A Symfony\Component\Form\Extension\Core\Type\FormType instance.
+ */
+ protected function getForm_Type_FormService()
+ {
+ return $this->services['form.type.form'] = new \Symfony\Component\Form\Extension\Core\Type\FormType($this->get('property_accessor'));
+ }
+
+ /**
+ * Gets the 'form.type.hidden' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\HiddenType A Symfony\Component\Form\Extension\Core\Type\HiddenType instance.
+ */
+ protected function getForm_Type_HiddenService()
+ {
+ return $this->services['form.type.hidden'] = new \Symfony\Component\Form\Extension\Core\Type\HiddenType();
+ }
+
+ /**
+ * Gets the 'form.type.integer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\IntegerType A Symfony\Component\Form\Extension\Core\Type\IntegerType instance.
+ */
+ protected function getForm_Type_IntegerService()
+ {
+ return $this->services['form.type.integer'] = new \Symfony\Component\Form\Extension\Core\Type\IntegerType();
+ }
+
+ /**
+ * Gets the 'form.type.language' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\LanguageType A Symfony\Component\Form\Extension\Core\Type\LanguageType instance.
+ */
+ protected function getForm_Type_LanguageService()
+ {
+ return $this->services['form.type.language'] = new \Symfony\Component\Form\Extension\Core\Type\LanguageType();
+ }
+
+ /**
+ * Gets the 'form.type.locale' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\LocaleType A Symfony\Component\Form\Extension\Core\Type\LocaleType instance.
+ */
+ protected function getForm_Type_LocaleService()
+ {
+ return $this->services['form.type.locale'] = new \Symfony\Component\Form\Extension\Core\Type\LocaleType();
+ }
+
+ /**
+ * Gets the 'form.type.money' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\MoneyType A Symfony\Component\Form\Extension\Core\Type\MoneyType instance.
+ */
+ protected function getForm_Type_MoneyService()
+ {
+ return $this->services['form.type.money'] = new \Symfony\Component\Form\Extension\Core\Type\MoneyType();
+ }
+
+ /**
+ * Gets the 'form.type.number' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\NumberType A Symfony\Component\Form\Extension\Core\Type\NumberType instance.
+ */
+ protected function getForm_Type_NumberService()
+ {
+ return $this->services['form.type.number'] = new \Symfony\Component\Form\Extension\Core\Type\NumberType();
+ }
+
+ /**
+ * Gets the 'form.type.password' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\PasswordType A Symfony\Component\Form\Extension\Core\Type\PasswordType instance.
+ */
+ protected function getForm_Type_PasswordService()
+ {
+ return $this->services['form.type.password'] = new \Symfony\Component\Form\Extension\Core\Type\PasswordType();
+ }
+
+ /**
+ * Gets the 'form.type.percent' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\PercentType A Symfony\Component\Form\Extension\Core\Type\PercentType instance.
+ */
+ protected function getForm_Type_PercentService()
+ {
+ return $this->services['form.type.percent'] = new \Symfony\Component\Form\Extension\Core\Type\PercentType();
+ }
+
+ /**
+ * Gets the 'form.type.radio' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\RadioType A Symfony\Component\Form\Extension\Core\Type\RadioType instance.
+ */
+ protected function getForm_Type_RadioService()
+ {
+ return $this->services['form.type.radio'] = new \Symfony\Component\Form\Extension\Core\Type\RadioType();
+ }
+
+ /**
+ * Gets the 'form.type.range' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\RangeType A Symfony\Component\Form\Extension\Core\Type\RangeType instance.
+ */
+ protected function getForm_Type_RangeService()
+ {
+ return $this->services['form.type.range'] = new \Symfony\Component\Form\Extension\Core\Type\RangeType();
+ }
+
+ /**
+ * Gets the 'form.type.repeated' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\RepeatedType A Symfony\Component\Form\Extension\Core\Type\RepeatedType instance.
+ */
+ protected function getForm_Type_RepeatedService()
+ {
+ return $this->services['form.type.repeated'] = new \Symfony\Component\Form\Extension\Core\Type\RepeatedType();
+ }
+
+ /**
+ * Gets the 'form.type.reset' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\ResetType A Symfony\Component\Form\Extension\Core\Type\ResetType instance.
+ */
+ protected function getForm_Type_ResetService()
+ {
+ return $this->services['form.type.reset'] = new \Symfony\Component\Form\Extension\Core\Type\ResetType();
+ }
+
+ /**
+ * Gets the 'form.type.search' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\SearchType A Symfony\Component\Form\Extension\Core\Type\SearchType instance.
+ */
+ protected function getForm_Type_SearchService()
+ {
+ return $this->services['form.type.search'] = new \Symfony\Component\Form\Extension\Core\Type\SearchType();
+ }
+
+ /**
+ * Gets the 'form.type.submit' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\SubmitType A Symfony\Component\Form\Extension\Core\Type\SubmitType instance.
+ */
+ protected function getForm_Type_SubmitService()
+ {
+ return $this->services['form.type.submit'] = new \Symfony\Component\Form\Extension\Core\Type\SubmitType();
+ }
+
+ /**
+ * Gets the 'form.type.text' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\TextType A Symfony\Component\Form\Extension\Core\Type\TextType instance.
+ */
+ protected function getForm_Type_TextService()
+ {
+ return $this->services['form.type.text'] = new \Symfony\Component\Form\Extension\Core\Type\TextType();
+ }
+
+ /**
+ * Gets the 'form.type.textarea' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\TextareaType A Symfony\Component\Form\Extension\Core\Type\TextareaType instance.
+ */
+ protected function getForm_Type_TextareaService()
+ {
+ return $this->services['form.type.textarea'] = new \Symfony\Component\Form\Extension\Core\Type\TextareaType();
+ }
+
+ /**
+ * Gets the 'form.type.time' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\TimeType A Symfony\Component\Form\Extension\Core\Type\TimeType instance.
+ */
+ protected function getForm_Type_TimeService()
+ {
+ return $this->services['form.type.time'] = new \Symfony\Component\Form\Extension\Core\Type\TimeType();
+ }
+
+ /**
+ * Gets the 'form.type.timezone' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\TimezoneType A Symfony\Component\Form\Extension\Core\Type\TimezoneType instance.
+ */
+ protected function getForm_Type_TimezoneService()
+ {
+ return $this->services['form.type.timezone'] = new \Symfony\Component\Form\Extension\Core\Type\TimezoneType();
+ }
+
+ /**
+ * Gets the 'form.type.url' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Core\Type\UrlType A Symfony\Component\Form\Extension\Core\Type\UrlType instance.
+ */
+ protected function getForm_Type_UrlService()
+ {
+ return $this->services['form.type.url'] = new \Symfony\Component\Form\Extension\Core\Type\UrlType();
+ }
+
+ /**
+ * Gets the 'form.type_extension.csrf' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension A Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension instance.
+ */
+ protected function getForm_TypeExtension_CsrfService()
+ {
+ return $this->services['form.type_extension.csrf'] = new \Symfony\Component\Form\Extension\Csrf\Type\FormTypeCsrfExtension($this->get('security.csrf.token_manager'), true, '_token', $this->get('translator.default'), 'validators');
+ }
+
+ /**
+ * Gets the 'form.type_extension.form.data_collector' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension A Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension instance.
+ */
+ protected function getForm_TypeExtension_Form_DataCollectorService()
+ {
+ return $this->services['form.type_extension.form.data_collector'] = new \Symfony\Component\Form\Extension\DataCollector\Type\DataCollectorTypeExtension($this->get('data_collector.form'));
+ }
+
+ /**
+ * Gets the 'form.type_extension.form.http_foundation' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension A Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension instance.
+ */
+ protected function getForm_TypeExtension_Form_HttpFoundationService()
+ {
+ return $this->services['form.type_extension.form.http_foundation'] = new \Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension(new \Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler(new \Symfony\Component\Form\Util\ServerParams($this->get('request_stack'))));
+ }
+
+ /**
+ * Gets the 'form.type_extension.form.validator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension instance.
+ */
+ protected function getForm_TypeExtension_Form_ValidatorService()
+ {
+ return $this->services['form.type_extension.form.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension($this->get('validator'));
+ }
+
+ /**
+ * Gets the 'form.type_extension.repeated.validator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension instance.
+ */
+ protected function getForm_TypeExtension_Repeated_ValidatorService()
+ {
+ return $this->services['form.type_extension.repeated.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\RepeatedTypeValidatorExtension();
+ }
+
+ /**
+ * Gets the 'form.type_extension.submit.validator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension A Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension instance.
+ */
+ protected function getForm_TypeExtension_Submit_ValidatorService()
+ {
+ return $this->services['form.type_extension.submit.validator'] = new \Symfony\Component\Form\Extension\Validator\Type\SubmitTypeValidatorExtension();
+ }
+
+ /**
+ * Gets the 'form.type_guesser.doctrine' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser A Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser instance.
+ */
+ protected function getForm_TypeGuesser_DoctrineService()
+ {
+ return $this->services['form.type_guesser.doctrine'] = new \Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser($this->get('doctrine'));
+ }
+
+ /**
+ * Gets the 'form.type_guesser.validator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser A Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser instance.
+ */
+ protected function getForm_TypeGuesser_ValidatorService()
+ {
+ return $this->services['form.type_guesser.validator'] = new \Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser($this->get('validator'));
+ }
+
+ /**
+ * Gets the 'fragment.handler' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler A Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler instance.
+ */
+ protected function getFragment_HandlerService()
+ {
+ $this->services['fragment.handler'] = $instance = new \Symfony\Component\HttpKernel\DependencyInjection\LazyLoadingFragmentHandler($this, $this->get('request_stack'), true);
+
+ $instance->addRendererService('inline', 'fragment.renderer.inline');
+ $instance->addRendererService('hinclude', 'fragment.renderer.hinclude');
+ $instance->addRendererService('hinclude', 'fragment.renderer.hinclude');
+ $instance->addRendererService('esi', 'fragment.renderer.esi');
+ $instance->addRendererService('ssi', 'fragment.renderer.ssi');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'fragment.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\FragmentListener A Symfony\Component\HttpKernel\EventListener\FragmentListener instance.
+ */
+ protected function getFragment_ListenerService()
+ {
+ return $this->services['fragment.listener'] = new \Symfony\Component\HttpKernel\EventListener\FragmentListener($this->get('uri_signer'), '/_fragment');
+ }
+
+ /**
+ * Gets the 'fragment.renderer.esi' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer instance.
+ */
+ protected function getFragment_Renderer_EsiService()
+ {
+ $this->services['fragment.renderer.esi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\EsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer'));
+
+ $instance->setFragmentPath('/_fragment');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'fragment.renderer.hinclude' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer A Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer instance.
+ */
+ protected function getFragment_Renderer_HincludeService()
+ {
+ $this->services['fragment.renderer.hinclude'] = $instance = new \Symfony\Component\HttpKernel\Fragment\HIncludeFragmentRenderer($this->get('twig'), $this->get('uri_signer'), NULL);
+
+ $instance->setFragmentPath('/_fragment');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'fragment.renderer.inline' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer A Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer instance.
+ */
+ protected function getFragment_Renderer_InlineService()
+ {
+ $this->services['fragment.renderer.inline'] = $instance = new \Symfony\Component\HttpKernel\Fragment\InlineFragmentRenderer($this->get('http_kernel'), $this->get('debug.event_dispatcher'));
+
+ $instance->setFragmentPath('/_fragment');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'fragment.renderer.ssi' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer A Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer instance.
+ */
+ protected function getFragment_Renderer_SsiService()
+ {
+ $this->services['fragment.renderer.ssi'] = $instance = new \Symfony\Component\HttpKernel\Fragment\SsiFragmentRenderer(NULL, $this->get('fragment.renderer.inline'), $this->get('uri_signer'));
+
+ $instance->setFragmentPath('/_fragment');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'http_kernel' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\HttpKernel A Symfony\Component\HttpKernel\HttpKernel instance.
+ */
+ protected function getHttpKernelService()
+ {
+ return $this->services['http_kernel'] = new \Symfony\Component\HttpKernel\HttpKernel($this->get('debug.event_dispatcher'), $this->get('debug.controller_resolver'), $this->get('request_stack'));
+ }
+
+ /**
+ * Gets the 'kernel' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @throws RuntimeException always since this service is expected to be injected dynamically
+ */
+ protected function getKernelService()
+ {
+ throw new RuntimeException('You have requested a synthetic service ("kernel"). The DIC does not know how to construct this service.');
+ }
+
+ /**
+ * Gets the 'kernel.class_cache.cache_warmer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer A Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer instance.
+ */
+ protected function getKernel_ClassCache_CacheWarmerService()
+ {
+ return $this->services['kernel.class_cache.cache_warmer'] = new \Symfony\Bundle\FrameworkBundle\CacheWarmer\ClassCacheCacheWarmer();
+ }
+
+ /**
+ * Gets the 'locale_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\LocaleListener A Symfony\Component\HttpKernel\EventListener\LocaleListener instance.
+ */
+ protected function getLocaleListenerService()
+ {
+ return $this->services['locale_listener'] = new \Symfony\Component\HttpKernel\EventListener\LocaleListener($this->get('request_stack'), 'en', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'logger' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getLoggerService()
+ {
+ $this->services['logger'] = $instance = new \Symfony\Bridge\Monolog\Logger('app');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.handler.console' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Handler\ConsoleHandler A Symfony\Bridge\Monolog\Handler\ConsoleHandler instance.
+ */
+ protected function getMonolog_Handler_ConsoleService()
+ {
+ return $this->services['monolog.handler.console'] = new \Symfony\Bridge\Monolog\Handler\ConsoleHandler(NULL, false, array());
+ }
+
+ /**
+ * Gets the 'monolog.handler.debug' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Handler\DebugHandler A Symfony\Bridge\Monolog\Handler\DebugHandler instance.
+ */
+ protected function getMonolog_Handler_DebugService()
+ {
+ return $this->services['monolog.handler.debug'] = new \Symfony\Bridge\Monolog\Handler\DebugHandler(100, true);
+ }
+
+ /**
+ * Gets the 'monolog.handler.main' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Monolog\Handler\StreamHandler A Monolog\Handler\StreamHandler instance.
+ */
+ protected function getMonolog_Handler_MainService()
+ {
+ return $this->services['monolog.handler.main'] = new \Monolog\Handler\StreamHandler(($this->targetDirs[2].'/logs/dev.log'), 100, true, NULL);
+ }
+
+ /**
+ * Gets the 'monolog.logger.doctrine' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_DoctrineService()
+ {
+ $this->services['monolog.logger.doctrine'] = $instance = new \Symfony\Bridge\Monolog\Logger('doctrine');
+
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.event' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_EventService()
+ {
+ $this->services['monolog.logger.event'] = $instance = new \Symfony\Bridge\Monolog\Logger('event');
+
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.php' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_PhpService()
+ {
+ $this->services['monolog.logger.php'] = $instance = new \Symfony\Bridge\Monolog\Logger('php');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.profiler' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_ProfilerService()
+ {
+ $this->services['monolog.logger.profiler'] = $instance = new \Symfony\Bridge\Monolog\Logger('profiler');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.request' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_RequestService()
+ {
+ $this->services['monolog.logger.request'] = $instance = new \Symfony\Bridge\Monolog\Logger('request');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.router' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_RouterService()
+ {
+ $this->services['monolog.logger.router'] = $instance = new \Symfony\Bridge\Monolog\Logger('router');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.security' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_SecurityService()
+ {
+ $this->services['monolog.logger.security'] = $instance = new \Symfony\Bridge\Monolog\Logger('security');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.templating' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_TemplatingService()
+ {
+ $this->services['monolog.logger.templating'] = $instance = new \Symfony\Bridge\Monolog\Logger('templating');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'monolog.logger.translation' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Monolog\Logger A Symfony\Bridge\Monolog\Logger instance.
+ */
+ protected function getMonolog_Logger_TranslationService()
+ {
+ $this->services['monolog.logger.translation'] = $instance = new \Symfony\Bridge\Monolog\Logger('translation');
+
+ $instance->pushHandler($this->get('monolog.handler.console'));
+ $instance->pushHandler($this->get('monolog.handler.main'));
+ $instance->pushHandler($this->get('monolog.handler.debug'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'profiler' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\Profiler\Profiler A Symfony\Component\HttpKernel\Profiler\Profiler instance.
+ */
+ protected function getProfilerService()
+ {
+ $a = $this->get('monolog.logger.profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE);
+ $b = $this->get('kernel', ContainerInterface::NULL_ON_INVALID_REFERENCE);
+
+ $c = new \Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector($this->get('doctrine'));
+ $c->addLogger('default', $this->get('doctrine.dbal.logger.profiling.default'));
+
+ $d = new \Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector();
+ if ($this->has('kernel')) {
+ $d->setKernel($b);
+ }
+
+ $this->services['profiler'] = $instance = new \Symfony\Component\HttpKernel\Profiler\Profiler(new \Symfony\Component\HttpKernel\Profiler\FileProfilerStorage(('file:'.__DIR__.'/profiler')), $a);
+
+ $instance->add($this->get('data_collector.request'));
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\TimeDataCollector($b, $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE)));
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector());
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector());
+ $instance->add($this->get('data_collector.form'));
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector());
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector($a));
+ $instance->add(new \Symfony\Component\HttpKernel\DataCollector\EventDataCollector($this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)));
+ $instance->add($this->get('data_collector.router'));
+ $instance->add(new \Symfony\Bundle\SecurityBundle\DataCollector\SecurityDataCollector($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.role_hierarchy'), $this->get('security.logout_url_generator')));
+ $instance->add(new \Symfony\Bridge\Twig\DataCollector\TwigDataCollector($this->get('twig.profile')));
+ $instance->add($c);
+ $instance->add(new \Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector($this));
+ $instance->add($this->get('data_collector.dump'));
+ $instance->add($d);
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'profiler_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\ProfilerListener A Symfony\Component\HttpKernel\EventListener\ProfilerListener instance.
+ */
+ protected function getProfilerListenerService()
+ {
+ return $this->services['profiler_listener'] = new \Symfony\Component\HttpKernel\EventListener\ProfilerListener($this->get('profiler'), $this->get('request_stack'), NULL, false, false);
+ }
+
+ /**
+ * Gets the 'property_accessor' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\PropertyAccess\PropertyAccessor A Symfony\Component\PropertyAccess\PropertyAccessor instance.
+ */
+ protected function getPropertyAccessorService()
+ {
+ return $this->services['property_accessor'] = new \Symfony\Component\PropertyAccess\PropertyAccessor(false, false);
+ }
+
+ /**
+ * Gets the 'request_stack' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpFoundation\RequestStack A Symfony\Component\HttpFoundation\RequestStack instance.
+ */
+ protected function getRequestStackService()
+ {
+ return $this->services['request_stack'] = new \Symfony\Component\HttpFoundation\RequestStack();
+ }
+
+ /**
+ * Gets the 'response_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\ResponseListener A Symfony\Component\HttpKernel\EventListener\ResponseListener instance.
+ */
+ protected function getResponseListenerService()
+ {
+ return $this->services['response_listener'] = new \Symfony\Component\HttpKernel\EventListener\ResponseListener('UTF-8');
+ }
+
+ /**
+ * Gets the 'router' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Routing\Router A Symfony\Bundle\FrameworkBundle\Routing\Router instance.
+ */
+ protected function getRouterService()
+ {
+ $this->services['router'] = $instance = new \Symfony\Bundle\FrameworkBundle\Routing\Router($this, ($this->targetDirs[3].'/app/config/routing_dev.yml'), array('cache_dir' => __DIR__, 'debug' => true, 'generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator', 'generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper', 'generator_cache_class' => 'appDevUrlGenerator', 'matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher', 'matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper', 'matcher_cache_class' => 'appDevUrlMatcher', 'strict_requirements' => true), $this->get('router.request_context', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('monolog.logger.router', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+
+ $instance->setConfigCacheFactory($this->get('config_cache_factory'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'router_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\RouterListener A Symfony\Component\HttpKernel\EventListener\RouterListener instance.
+ */
+ protected function getRouterListenerService()
+ {
+ return $this->services['router_listener'] = new \Symfony\Component\HttpKernel\EventListener\RouterListener($this->get('router'), $this->get('request_stack'), $this->get('router.request_context', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'routing.loader' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader A Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader instance.
+ */
+ protected function getRouting_LoaderService()
+ {
+ $a = $this->get('file_locator');
+ $b = $this->get('annotation_reader');
+
+ $c = new \Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader($b);
+
+ $d = new \Symfony\Component\Config\Loader\LoaderResolver();
+ $d->addLoader(new \Symfony\Component\Routing\Loader\XmlFileLoader($a));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\YamlFileLoader($a));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\PhpFileLoader($a));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\DirectoryLoader($a));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\DependencyInjection\ServiceRouterLoader($this));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationDirectoryLoader($a, $c));
+ $d->addLoader(new \Symfony\Component\Routing\Loader\AnnotationFileLoader($a, $c));
+ $d->addLoader($c);
+
+ return $this->services['routing.loader'] = new \Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader($this->get('controller_name_converter'), $d);
+ }
+
+ /**
+ * Gets the 'security.authentication.guard_handler' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Guard\GuardAuthenticatorHandler A Symfony\Component\Security\Guard\GuardAuthenticatorHandler instance.
+ */
+ protected function getSecurity_Authentication_GuardHandlerService()
+ {
+ return $this->services['security.authentication.guard_handler'] = new \Symfony\Component\Security\Guard\GuardAuthenticatorHandler($this->get('security.token_storage'), $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'security.authentication_utils' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Http\Authentication\AuthenticationUtils A Symfony\Component\Security\Http\Authentication\AuthenticationUtils instance.
+ */
+ protected function getSecurity_AuthenticationUtilsService()
+ {
+ return $this->services['security.authentication_utils'] = new \Symfony\Component\Security\Http\Authentication\AuthenticationUtils($this->get('request_stack'));
+ }
+
+ /**
+ * Gets the 'security.authorization_checker' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\Authorization\AuthorizationChecker A Symfony\Component\Security\Core\Authorization\AuthorizationChecker instance.
+ */
+ protected function getSecurity_AuthorizationCheckerService()
+ {
+ return $this->services['security.authorization_checker'] = new \Symfony\Component\Security\Core\Authorization\AuthorizationChecker($this->get('security.token_storage'), $this->get('security.authentication.manager'), $this->get('security.access.decision_manager'), false);
+ }
+
+ /**
+ * Gets the 'security.csrf.token_manager' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Csrf\CsrfTokenManager A Symfony\Component\Security\Csrf\CsrfTokenManager instance.
+ */
+ protected function getSecurity_Csrf_TokenManagerService()
+ {
+ return $this->services['security.csrf.token_manager'] = new \Symfony\Component\Security\Csrf\CsrfTokenManager(new \Symfony\Component\Security\Csrf\TokenGenerator\UriSafeTokenGenerator(), new \Symfony\Component\Security\Csrf\TokenStorage\SessionTokenStorage($this->get('session')));
+ }
+
+ /**
+ * Gets the 'security.encoder_factory' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\Encoder\EncoderFactory A Symfony\Component\Security\Core\Encoder\EncoderFactory instance.
+ */
+ protected function getSecurity_EncoderFactoryService()
+ {
+ return $this->services['security.encoder_factory'] = new \Symfony\Component\Security\Core\Encoder\EncoderFactory(array());
+ }
+
+ /**
+ * Gets the 'security.firewall' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Http\Firewall A Symfony\Component\Security\Http\Firewall instance.
+ */
+ protected function getSecurity_FirewallService()
+ {
+ return $this->services['security.firewall'] = new \Symfony\Component\Security\Http\Firewall(new \Symfony\Bundle\SecurityBundle\Security\FirewallMap($this, array('security.firewall.map.context.dev' => new \Symfony\Component\HttpFoundation\RequestMatcher('^/(_(profiler|wdt)|css|images|js)/'), 'security.firewall.map.context.main' => NULL)), $this->get('debug.event_dispatcher'));
+ }
+
+ /**
+ * Gets the 'security.firewall.map.context.dev' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance.
+ */
+ protected function getSecurity_Firewall_Map_Context_DevService()
+ {
+ return $this->services['security.firewall.map.context.dev'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(), NULL);
+ }
+
+ /**
+ * Gets the 'security.firewall.map.context.main' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\SecurityBundle\Security\FirewallContext A Symfony\Bundle\SecurityBundle\Security\FirewallContext instance.
+ */
+ protected function getSecurity_Firewall_Map_Context_MainService()
+ {
+ $a = $this->get('monolog.logger.security', ContainerInterface::NULL_ON_INVALID_REFERENCE);
+ $b = $this->get('security.token_storage');
+ $c = $this->get('security.authentication.manager');
+ $d = $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE);
+
+ $e = new \Symfony\Component\Security\Http\AccessMap();
+
+ return $this->services['security.firewall.map.context.main'] = new \Symfony\Bundle\SecurityBundle\Security\FirewallContext(array(0 => new \Symfony\Component\Security\Http\Firewall\ChannelListener($e, new \Symfony\Component\Security\Http\EntryPoint\RetryAuthenticationEntryPoint(80, 443), $a), 1 => new \Symfony\Component\Security\Http\Firewall\ContextListener($b, array(0 => new \Symfony\Component\Security\Core\User\InMemoryUserProvider()), 'main', $a, $this->get('debug.event_dispatcher', ContainerInterface::NULL_ON_INVALID_REFERENCE)), 2 => new \Symfony\Component\Security\Http\Firewall\AnonymousAuthenticationListener($b, '56a782448eafa8.89273161', $a, $c), 3 => new \Symfony\Component\Security\Http\Firewall\AccessListener($b, $this->get('security.access.decision_manager'), $e, $c)), new \Symfony\Component\Security\Http\Firewall\ExceptionListener($b, $this->get('security.authentication.trust_resolver'), new \Symfony\Component\Security\Http\HttpUtils($d, $d), 'main', NULL, NULL, NULL, $a, false));
+ }
+
+ /**
+ * Gets the 'security.password_encoder' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder A Symfony\Component\Security\Core\Encoder\UserPasswordEncoder instance.
+ */
+ protected function getSecurity_PasswordEncoderService()
+ {
+ return $this->services['security.password_encoder'] = new \Symfony\Component\Security\Core\Encoder\UserPasswordEncoder($this->get('security.encoder_factory'));
+ }
+
+ /**
+ * Gets the 'security.rememberme.response_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Http\RememberMe\ResponseListener A Symfony\Component\Security\Http\RememberMe\ResponseListener instance.
+ */
+ protected function getSecurity_Rememberme_ResponseListenerService()
+ {
+ return $this->services['security.rememberme.response_listener'] = new \Symfony\Component\Security\Http\RememberMe\ResponseListener();
+ }
+
+ /**
+ * Gets the 'security.token_storage' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage A Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage instance.
+ */
+ protected function getSecurity_TokenStorageService()
+ {
+ return $this->services['security.token_storage'] = new \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage();
+ }
+
+ /**
+ * Gets the 'security.user_checker.main' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\User\UserChecker A Symfony\Component\Security\Core\User\UserChecker instance.
+ */
+ protected function getSecurity_UserChecker_MainService()
+ {
+ return $this->services['security.user_checker.main'] = new \Symfony\Component\Security\Core\User\UserChecker();
+ }
+
+ /**
+ * Gets the 'security.validator.user_password' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator A Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator instance.
+ */
+ protected function getSecurity_Validator_UserPasswordService()
+ {
+ return $this->services['security.validator.user_password'] = new \Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator($this->get('security.token_storage'), $this->get('security.encoder_factory'));
+ }
+
+ /**
+ * Gets the 'sensio_distribution.security_checker' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \SensioLabs\Security\SecurityChecker A SensioLabs\Security\SecurityChecker instance.
+ */
+ protected function getSensioDistribution_SecurityCheckerService()
+ {
+ return $this->services['sensio_distribution.security_checker'] = new \SensioLabs\Security\SecurityChecker();
+ }
+
+ /**
+ * Gets the 'sensio_distribution.security_checker.command' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \SensioLabs\Security\Command\SecurityCheckerCommand A SensioLabs\Security\Command\SecurityCheckerCommand instance.
+ */
+ protected function getSensioDistribution_SecurityChecker_CommandService()
+ {
+ return $this->services['sensio_distribution.security_checker.command'] = new \SensioLabs\Security\Command\SecurityCheckerCommand($this->get('sensio_distribution.security_checker'));
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.cache.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener instance.
+ */
+ protected function getSensioFrameworkExtra_Cache_ListenerService()
+ {
+ return $this->services['sensio_framework_extra.cache.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener();
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.controller.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener instance.
+ */
+ protected function getSensioFrameworkExtra_Controller_ListenerService()
+ {
+ return $this->services['sensio_framework_extra.controller.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener($this->get('annotation_reader'));
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.converter.datetime' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter instance.
+ */
+ protected function getSensioFrameworkExtra_Converter_DatetimeService()
+ {
+ return $this->services['sensio_framework_extra.converter.datetime'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter();
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.converter.doctrine.orm' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter instance.
+ */
+ protected function getSensioFrameworkExtra_Converter_Doctrine_OrmService()
+ {
+ return $this->services['sensio_framework_extra.converter.doctrine.orm'] = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter($this->get('doctrine', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.converter.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener instance.
+ */
+ protected function getSensioFrameworkExtra_Converter_ListenerService()
+ {
+ return $this->services['sensio_framework_extra.converter.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener($this->get('sensio_framework_extra.converter.manager'), true);
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.converter.manager' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager A Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager instance.
+ */
+ protected function getSensioFrameworkExtra_Converter_ManagerService()
+ {
+ $this->services['sensio_framework_extra.converter.manager'] = $instance = new \Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager();
+
+ $instance->add($this->get('sensio_framework_extra.converter.doctrine.orm'), 0, 'doctrine.orm');
+ $instance->add($this->get('sensio_framework_extra.converter.datetime'), 0, 'datetime');
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.security.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener instance.
+ */
+ protected function getSensioFrameworkExtra_Security_ListenerService()
+ {
+ return $this->services['sensio_framework_extra.security.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener(NULL, new \Sensio\Bundle\FrameworkExtraBundle\Security\ExpressionLanguage(), $this->get('security.authentication.trust_resolver', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.role_hierarchy', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.view.guesser' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser A Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser instance.
+ */
+ protected function getSensioFrameworkExtra_View_GuesserService()
+ {
+ return $this->services['sensio_framework_extra.view.guesser'] = new \Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser($this->get('kernel'));
+ }
+
+ /**
+ * Gets the 'sensio_framework_extra.view.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener A Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener instance.
+ */
+ protected function getSensioFrameworkExtra_View_ListenerService()
+ {
+ return $this->services['sensio_framework_extra.view.listener'] = new \Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener($this);
+ }
+
+ /**
+ * Gets the 'service_container' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @throws RuntimeException always since this service is expected to be injected dynamically
+ */
+ protected function getServiceContainerService()
+ {
+ throw new RuntimeException('You have requested a synthetic service ("service_container"). The DIC does not know how to construct this service.');
+ }
+
+ /**
+ * Gets the 'session' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpFoundation\Session\Session A Symfony\Component\HttpFoundation\Session\Session instance.
+ */
+ protected function getSessionService()
+ {
+ return $this->services['session'] = new \Symfony\Component\HttpFoundation\Session\Session($this->get('session.storage.native'), new \Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag(), new \Symfony\Component\HttpFoundation\Session\Flash\FlashBag());
+ }
+
+ /**
+ * Gets the 'session.save_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\SaveSessionListener A Symfony\Component\HttpKernel\EventListener\SaveSessionListener instance.
+ */
+ protected function getSession_SaveListenerService()
+ {
+ return $this->services['session.save_listener'] = new \Symfony\Component\HttpKernel\EventListener\SaveSessionListener();
+ }
+
+ /**
+ * Gets the 'session.storage.filesystem' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage instance.
+ */
+ protected function getSession_Storage_FilesystemService()
+ {
+ return $this->services['session.storage.filesystem'] = new \Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage((__DIR__.'/sessions'), 'MOCKSESSID', $this->get('session.storage.metadata_bag'));
+ }
+
+ /**
+ * Gets the 'session.storage.native' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage instance.
+ */
+ protected function getSession_Storage_NativeService()
+ {
+ return $this->services['session.storage.native'] = new \Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage(array('cookie_httponly' => true, 'gc_probability' => 1), NULL, $this->get('session.storage.metadata_bag'));
+ }
+
+ /**
+ * Gets the 'session.storage.php_bridge' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage A Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage instance.
+ */
+ protected function getSession_Storage_PhpBridgeService()
+ {
+ return $this->services['session.storage.php_bridge'] = new \Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage(NULL, $this->get('session.storage.metadata_bag'));
+ }
+
+ /**
+ * Gets the 'session_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener A Symfony\Bundle\FrameworkBundle\EventListener\SessionListener instance.
+ */
+ protected function getSessionListenerService()
+ {
+ return $this->services['session_listener'] = new \Symfony\Bundle\FrameworkBundle\EventListener\SessionListener($this);
+ }
+
+ /**
+ * Gets the 'streamed_response_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener A Symfony\Component\HttpKernel\EventListener\StreamedResponseListener instance.
+ */
+ protected function getStreamedResponseListenerService()
+ {
+ return $this->services['streamed_response_listener'] = new \Symfony\Component\HttpKernel\EventListener\StreamedResponseListener();
+ }
+
+ /**
+ * Gets the 'swiftmailer.email_sender.listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener A Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener instance.
+ */
+ protected function getSwiftmailer_EmailSender_ListenerService()
+ {
+ return $this->services['swiftmailer.email_sender.listener'] = new \Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener($this, $this->get('logger', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Swift_Mailer A Swift_Mailer instance.
+ */
+ protected function getSwiftmailer_Mailer_DefaultService()
+ {
+ return $this->services['swiftmailer.mailer.default'] = new \Swift_Mailer($this->get('swiftmailer.mailer.default.transport'));
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default.plugin.messagelogger' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Swift_Plugins_MessageLogger A Swift_Plugins_MessageLogger instance.
+ */
+ protected function getSwiftmailer_Mailer_Default_Plugin_MessageloggerService()
+ {
+ return $this->services['swiftmailer.mailer.default.plugin.messagelogger'] = new \Swift_Plugins_MessageLogger();
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default.spool' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Swift_MemorySpool A Swift_MemorySpool instance.
+ */
+ protected function getSwiftmailer_Mailer_Default_SpoolService()
+ {
+ return $this->services['swiftmailer.mailer.default.spool'] = new \Swift_MemorySpool();
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default.transport' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Swift_Transport_SpoolTransport A Swift_Transport_SpoolTransport instance.
+ */
+ protected function getSwiftmailer_Mailer_Default_TransportService()
+ {
+ $this->services['swiftmailer.mailer.default.transport'] = $instance = new \Swift_Transport_SpoolTransport($this->get('swiftmailer.mailer.default.transport.eventdispatcher'), $this->get('swiftmailer.mailer.default.spool'));
+
+ $instance->registerPlugin($this->get('swiftmailer.mailer.default.plugin.messagelogger'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default.transport.real' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Swift_Transport_EsmtpTransport A Swift_Transport_EsmtpTransport instance.
+ */
+ protected function getSwiftmailer_Mailer_Default_Transport_RealService()
+ {
+ $a = new \Swift_Transport_Esmtp_AuthHandler(array(0 => new \Swift_Transport_Esmtp_Auth_CramMd5Authenticator(), 1 => new \Swift_Transport_Esmtp_Auth_LoginAuthenticator(), 2 => new \Swift_Transport_Esmtp_Auth_PlainAuthenticator()));
+ $a->setUsername(NULL);
+ $a->setPassword(NULL);
+ $a->setAuthMode(NULL);
+
+ $this->services['swiftmailer.mailer.default.transport.real'] = $instance = new \Swift_Transport_EsmtpTransport(new \Swift_Transport_StreamBuffer(new \Swift_StreamFilters_StringReplacementFilterFactory()), array(0 => $a), $this->get('swiftmailer.mailer.default.transport.eventdispatcher'));
+
+ $instance->setHost('127.0.0.1');
+ $instance->setPort(25);
+ $instance->setEncryption(NULL);
+ $instance->setTimeout(30);
+ $instance->setSourceIp(NULL);
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'templating' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\TwigBundle\TwigEngine A Symfony\Bundle\TwigBundle\TwigEngine instance.
+ */
+ protected function getTemplatingService()
+ {
+ return $this->services['templating'] = new \Symfony\Bundle\TwigBundle\TwigEngine($this->get('twig'), $this->get('templating.name_parser'), $this->get('templating.locator'));
+ }
+
+ /**
+ * Gets the 'templating.filename_parser' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser instance.
+ */
+ protected function getTemplating_FilenameParserService()
+ {
+ return $this->services['templating.filename_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateFilenameParser();
+ }
+
+ /**
+ * Gets the 'templating.helper.logout_url' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper instance.
+ */
+ protected function getTemplating_Helper_LogoutUrlService()
+ {
+ return $this->services['templating.helper.logout_url'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\LogoutUrlHelper($this->get('security.logout_url_generator'));
+ }
+
+ /**
+ * Gets the 'templating.helper.security' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper A Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper instance.
+ */
+ protected function getTemplating_Helper_SecurityService()
+ {
+ return $this->services['templating.helper.security'] = new \Symfony\Bundle\SecurityBundle\Templating\Helper\SecurityHelper($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'templating.loader' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader A Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader instance.
+ */
+ protected function getTemplating_LoaderService()
+ {
+ return $this->services['templating.loader'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\FilesystemLoader($this->get('templating.locator'));
+ }
+
+ /**
+ * Gets the 'templating.name_parser' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser A Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser instance.
+ */
+ protected function getTemplating_NameParserService()
+ {
+ return $this->services['templating.name_parser'] = new \Symfony\Bundle\FrameworkBundle\Templating\TemplateNameParser($this->get('kernel'));
+ }
+
+ /**
+ * Gets the 'translation.dumper.csv' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\CsvFileDumper A Symfony\Component\Translation\Dumper\CsvFileDumper instance.
+ */
+ protected function getTranslation_Dumper_CsvService()
+ {
+ return $this->services['translation.dumper.csv'] = new \Symfony\Component\Translation\Dumper\CsvFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.ini' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\IniFileDumper A Symfony\Component\Translation\Dumper\IniFileDumper instance.
+ */
+ protected function getTranslation_Dumper_IniService()
+ {
+ return $this->services['translation.dumper.ini'] = new \Symfony\Component\Translation\Dumper\IniFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.json' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\JsonFileDumper A Symfony\Component\Translation\Dumper\JsonFileDumper instance.
+ */
+ protected function getTranslation_Dumper_JsonService()
+ {
+ return $this->services['translation.dumper.json'] = new \Symfony\Component\Translation\Dumper\JsonFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.mo' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\MoFileDumper A Symfony\Component\Translation\Dumper\MoFileDumper instance.
+ */
+ protected function getTranslation_Dumper_MoService()
+ {
+ return $this->services['translation.dumper.mo'] = new \Symfony\Component\Translation\Dumper\MoFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.php' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\PhpFileDumper A Symfony\Component\Translation\Dumper\PhpFileDumper instance.
+ */
+ protected function getTranslation_Dumper_PhpService()
+ {
+ return $this->services['translation.dumper.php'] = new \Symfony\Component\Translation\Dumper\PhpFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.po' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\PoFileDumper A Symfony\Component\Translation\Dumper\PoFileDumper instance.
+ */
+ protected function getTranslation_Dumper_PoService()
+ {
+ return $this->services['translation.dumper.po'] = new \Symfony\Component\Translation\Dumper\PoFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.qt' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\QtFileDumper A Symfony\Component\Translation\Dumper\QtFileDumper instance.
+ */
+ protected function getTranslation_Dumper_QtService()
+ {
+ return $this->services['translation.dumper.qt'] = new \Symfony\Component\Translation\Dumper\QtFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.res' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\IcuResFileDumper A Symfony\Component\Translation\Dumper\IcuResFileDumper instance.
+ */
+ protected function getTranslation_Dumper_ResService()
+ {
+ return $this->services['translation.dumper.res'] = new \Symfony\Component\Translation\Dumper\IcuResFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.xliff' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\XliffFileDumper A Symfony\Component\Translation\Dumper\XliffFileDumper instance.
+ */
+ protected function getTranslation_Dumper_XliffService()
+ {
+ return $this->services['translation.dumper.xliff'] = new \Symfony\Component\Translation\Dumper\XliffFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.dumper.yml' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Dumper\YamlFileDumper A Symfony\Component\Translation\Dumper\YamlFileDumper instance.
+ */
+ protected function getTranslation_Dumper_YmlService()
+ {
+ return $this->services['translation.dumper.yml'] = new \Symfony\Component\Translation\Dumper\YamlFileDumper();
+ }
+
+ /**
+ * Gets the 'translation.extractor' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Extractor\ChainExtractor A Symfony\Component\Translation\Extractor\ChainExtractor instance.
+ */
+ protected function getTranslation_ExtractorService()
+ {
+ $this->services['translation.extractor'] = $instance = new \Symfony\Component\Translation\Extractor\ChainExtractor();
+
+ $instance->addExtractor('php', $this->get('translation.extractor.php'));
+ $instance->addExtractor('twig', $this->get('twig.translation.extractor'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'translation.extractor.php' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor A Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor instance.
+ */
+ protected function getTranslation_Extractor_PhpService()
+ {
+ return $this->services['translation.extractor.php'] = new \Symfony\Bundle\FrameworkBundle\Translation\PhpExtractor();
+ }
+
+ /**
+ * Gets the 'translation.loader' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader A Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader instance.
+ */
+ protected function getTranslation_LoaderService()
+ {
+ $a = $this->get('translation.loader.xliff');
+
+ $this->services['translation.loader'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader();
+
+ $instance->addLoader('php', $this->get('translation.loader.php'));
+ $instance->addLoader('yml', $this->get('translation.loader.yml'));
+ $instance->addLoader('xlf', $a);
+ $instance->addLoader('xliff', $a);
+ $instance->addLoader('po', $this->get('translation.loader.po'));
+ $instance->addLoader('mo', $this->get('translation.loader.mo'));
+ $instance->addLoader('ts', $this->get('translation.loader.qt'));
+ $instance->addLoader('csv', $this->get('translation.loader.csv'));
+ $instance->addLoader('res', $this->get('translation.loader.res'));
+ $instance->addLoader('dat', $this->get('translation.loader.dat'));
+ $instance->addLoader('ini', $this->get('translation.loader.ini'));
+ $instance->addLoader('json', $this->get('translation.loader.json'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'translation.loader.csv' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\CsvFileLoader A Symfony\Component\Translation\Loader\CsvFileLoader instance.
+ */
+ protected function getTranslation_Loader_CsvService()
+ {
+ return $this->services['translation.loader.csv'] = new \Symfony\Component\Translation\Loader\CsvFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.dat' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\IcuDatFileLoader A Symfony\Component\Translation\Loader\IcuDatFileLoader instance.
+ */
+ protected function getTranslation_Loader_DatService()
+ {
+ return $this->services['translation.loader.dat'] = new \Symfony\Component\Translation\Loader\IcuDatFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.ini' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\IniFileLoader A Symfony\Component\Translation\Loader\IniFileLoader instance.
+ */
+ protected function getTranslation_Loader_IniService()
+ {
+ return $this->services['translation.loader.ini'] = new \Symfony\Component\Translation\Loader\IniFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.json' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\JsonFileLoader A Symfony\Component\Translation\Loader\JsonFileLoader instance.
+ */
+ protected function getTranslation_Loader_JsonService()
+ {
+ return $this->services['translation.loader.json'] = new \Symfony\Component\Translation\Loader\JsonFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.mo' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\MoFileLoader A Symfony\Component\Translation\Loader\MoFileLoader instance.
+ */
+ protected function getTranslation_Loader_MoService()
+ {
+ return $this->services['translation.loader.mo'] = new \Symfony\Component\Translation\Loader\MoFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.php' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\PhpFileLoader A Symfony\Component\Translation\Loader\PhpFileLoader instance.
+ */
+ protected function getTranslation_Loader_PhpService()
+ {
+ return $this->services['translation.loader.php'] = new \Symfony\Component\Translation\Loader\PhpFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.po' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\PoFileLoader A Symfony\Component\Translation\Loader\PoFileLoader instance.
+ */
+ protected function getTranslation_Loader_PoService()
+ {
+ return $this->services['translation.loader.po'] = new \Symfony\Component\Translation\Loader\PoFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.qt' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\QtFileLoader A Symfony\Component\Translation\Loader\QtFileLoader instance.
+ */
+ protected function getTranslation_Loader_QtService()
+ {
+ return $this->services['translation.loader.qt'] = new \Symfony\Component\Translation\Loader\QtFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.res' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\IcuResFileLoader A Symfony\Component\Translation\Loader\IcuResFileLoader instance.
+ */
+ protected function getTranslation_Loader_ResService()
+ {
+ return $this->services['translation.loader.res'] = new \Symfony\Component\Translation\Loader\IcuResFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.xliff' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\XliffFileLoader A Symfony\Component\Translation\Loader\XliffFileLoader instance.
+ */
+ protected function getTranslation_Loader_XliffService()
+ {
+ return $this->services['translation.loader.xliff'] = new \Symfony\Component\Translation\Loader\XliffFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.loader.yml' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Loader\YamlFileLoader A Symfony\Component\Translation\Loader\YamlFileLoader instance.
+ */
+ protected function getTranslation_Loader_YmlService()
+ {
+ return $this->services['translation.loader.yml'] = new \Symfony\Component\Translation\Loader\YamlFileLoader();
+ }
+
+ /**
+ * Gets the 'translation.writer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\Writer\TranslationWriter A Symfony\Component\Translation\Writer\TranslationWriter instance.
+ */
+ protected function getTranslation_WriterService()
+ {
+ $this->services['translation.writer'] = $instance = new \Symfony\Component\Translation\Writer\TranslationWriter();
+
+ $instance->addDumper('php', $this->get('translation.dumper.php'));
+ $instance->addDumper('xlf', $this->get('translation.dumper.xliff'));
+ $instance->addDumper('po', $this->get('translation.dumper.po'));
+ $instance->addDumper('mo', $this->get('translation.dumper.mo'));
+ $instance->addDumper('yml', $this->get('translation.dumper.yml'));
+ $instance->addDumper('ts', $this->get('translation.dumper.qt'));
+ $instance->addDumper('csv', $this->get('translation.dumper.csv'));
+ $instance->addDumper('ini', $this->get('translation.dumper.ini'));
+ $instance->addDumper('json', $this->get('translation.dumper.json'));
+ $instance->addDumper('res', $this->get('translation.dumper.res'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'translator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Translation\IdentityTranslator A Symfony\Component\Translation\IdentityTranslator instance.
+ */
+ protected function getTranslatorService()
+ {
+ return $this->services['translator'] = new \Symfony\Component\Translation\IdentityTranslator($this->get('translator.selector'));
+ }
+
+ /**
+ * Gets the 'translator.default' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Translation\Translator A Symfony\Bundle\FrameworkBundle\Translation\Translator instance.
+ */
+ protected function getTranslator_DefaultService()
+ {
+ $this->services['translator.default'] = $instance = new \Symfony\Bundle\FrameworkBundle\Translation\Translator($this, $this->get('translator.selector'), array('translation.loader.php' => array(0 => 'php'), 'translation.loader.yml' => array(0 => 'yml'), 'translation.loader.xliff' => array(0 => 'xlf', 1 => 'xliff'), 'translation.loader.po' => array(0 => 'po'), 'translation.loader.mo' => array(0 => 'mo'), 'translation.loader.qt' => array(0 => 'ts'), 'translation.loader.csv' => array(0 => 'csv'), 'translation.loader.res' => array(0 => 'res'), 'translation.loader.dat' => array(0 => 'dat'), 'translation.loader.ini' => array(0 => 'ini'), 'translation.loader.json' => array(0 => 'json')), array('cache_dir' => (__DIR__.'/translations'), 'debug' => true), array());
+
+ $instance->setConfigCacheFactory($this->get('config_cache_factory'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'translator_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\TranslatorListener A Symfony\Component\HttpKernel\EventListener\TranslatorListener instance.
+ */
+ protected function getTranslatorListenerService()
+ {
+ return $this->services['translator_listener'] = new \Symfony\Component\HttpKernel\EventListener\TranslatorListener($this->get('translator'), $this->get('request_stack'));
+ }
+
+ /**
+ * Gets the 'twig' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Twig_Environment A Twig_Environment instance.
+ */
+ protected function getTwigService()
+ {
+ $a = $this->get('debug.stopwatch', ContainerInterface::NULL_ON_INVALID_REFERENCE);
+ $b = $this->get('request_stack');
+
+ $c = new \Symfony\Bridge\Twig\AppVariable();
+ $c->setEnvironment('dev');
+ $c->setDebug(true);
+ if ($this->has('security.token_storage')) {
+ $c->setTokenStorage($this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+ if ($this->has('request_stack')) {
+ $c->setRequestStack($b);
+ }
+
+ $this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), array('debug' => true, 'strict_variables' => true, 'exception_controller' => 'twig.controller.exception:showAction', 'form_themes' => array(0 => 'form_div_layout.html.twig'), 'autoescape' => 'filename', 'cache' => (__DIR__.'/twig'), 'charset' => 'UTF-8', 'paths' => array(), 'date' => array('format' => 'F j, Y H:i', 'interval_format' => '%d days', 'timezone' => NULL), 'number_format' => array('decimals' => 0, 'decimal_point' => '.', 'thousands_separator' => ',')));
+
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\LogoutUrlExtension($this->get('security.logout_url_generator')));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\SecurityExtension($this->get('security.authorization_checker', ContainerInterface::NULL_ON_INVALID_REFERENCE)));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ProfilerExtension($this->get('twig.profile'), $a));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\TranslationExtension($this->get('translator')));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\AssetExtension($this->get('assets.packages')));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\CodeExtension(NULL, ($this->targetDirs[3].'/app'), 'UTF-8'));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\RoutingExtension($this->get('router')));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\YamlExtension());
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\StopwatchExtension($a, true));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\ExpressionExtension());
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpKernelExtension($this->get('fragment.handler')));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\HttpFoundationExtension($b));
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\FormExtension(new \Symfony\Bridge\Twig\Form\TwigRenderer(new \Symfony\Bridge\Twig\Form\TwigRendererEngine(array(0 => 'form_div_layout.html.twig')), $this->get('security.csrf.token_manager', ContainerInterface::NULL_ON_INVALID_REFERENCE))));
+ $instance->addExtension(new \Twig_Extension_Debug());
+ $instance->addExtension(new \Doctrine\Bundle\DoctrineBundle\Twig\DoctrineExtension());
+ $instance->addExtension(new \Symfony\Bridge\Twig\Extension\DumpExtension($this->get('var_dumper.cloner')));
+ $instance->addExtension(new \Symfony\Bundle\WebProfilerBundle\Twig\WebProfilerExtension());
+ $instance->addGlobal('app', $c);
+ call_user_func(array(new \Symfony\Bundle\TwigBundle\DependencyInjection\Configurator\EnvironmentConfigurator('F j, Y H:i', '%d days', NULL, 0, '.', ','), 'configure'), $instance);
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'twig.controller.exception' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\TwigBundle\Controller\ExceptionController A Symfony\Bundle\TwigBundle\Controller\ExceptionController instance.
+ */
+ protected function getTwig_Controller_ExceptionService()
+ {
+ return $this->services['twig.controller.exception'] = new \Symfony\Bundle\TwigBundle\Controller\ExceptionController($this->get('twig'), true);
+ }
+
+ /**
+ * Gets the 'twig.controller.preview_error' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController A Symfony\Bundle\TwigBundle\Controller\PreviewErrorController instance.
+ */
+ protected function getTwig_Controller_PreviewErrorService()
+ {
+ return $this->services['twig.controller.preview_error'] = new \Symfony\Bundle\TwigBundle\Controller\PreviewErrorController($this->get('http_kernel'), 'twig.controller.exception:showAction');
+ }
+
+ /**
+ * Gets the 'twig.exception_listener' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\EventListener\ExceptionListener A Symfony\Component\HttpKernel\EventListener\ExceptionListener instance.
+ */
+ protected function getTwig_ExceptionListenerService()
+ {
+ return $this->services['twig.exception_listener'] = new \Symfony\Component\HttpKernel\EventListener\ExceptionListener('twig.controller.exception:showAction', $this->get('monolog.logger.request', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'twig.loader' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader A Symfony\Bundle\TwigBundle\Loader\FilesystemLoader instance.
+ */
+ protected function getTwig_LoaderService()
+ {
+ $this->services['twig.loader'] = $instance = new \Symfony\Bundle\TwigBundle\Loader\FilesystemLoader($this->get('templating.locator'), $this->get('templating.name_parser'));
+
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views'), 'Framework');
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views'), 'Security');
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views'), 'Twig');
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/swiftmailer-bundle/Resources/views'), 'Swiftmailer');
+ $instance->addPath(($this->targetDirs[3].'/vendor/doctrine/doctrine-bundle/Resources/views'), 'Doctrine');
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views'), 'Debug');
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views'), 'WebProfiler');
+ $instance->addPath(($this->targetDirs[3].'/app/Resources/views'));
+ $instance->addPath(($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'twig.profile' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Twig_Profiler_Profile A Twig_Profiler_Profile instance.
+ */
+ protected function getTwig_ProfileService()
+ {
+ return $this->services['twig.profile'] = new \Twig_Profiler_Profile();
+ }
+
+ /**
+ * Gets the 'twig.translation.extractor' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bridge\Twig\Translation\TwigExtractor A Symfony\Bridge\Twig\Translation\TwigExtractor instance.
+ */
+ protected function getTwig_Translation_ExtractorService()
+ {
+ return $this->services['twig.translation.extractor'] = new \Symfony\Bridge\Twig\Translation\TwigExtractor($this->get('twig'));
+ }
+
+ /**
+ * Gets the 'uri_signer' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\HttpKernel\UriSigner A Symfony\Component\HttpKernel\UriSigner instance.
+ */
+ protected function getUriSignerService()
+ {
+ return $this->services['uri_signer'] = new \Symfony\Component\HttpKernel\UriSigner('a958d119a837605337f0224ff71592384a432e2f');
+ }
+
+ /**
+ * Gets the 'validator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Validator\Validator\ValidatorInterface A Symfony\Component\Validator\Validator\ValidatorInterface instance.
+ */
+ protected function getValidatorService()
+ {
+ return $this->services['validator'] = $this->get('validator.builder')->getValidator();
+ }
+
+ /**
+ * Gets the 'validator.builder' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Validator\ValidatorBuilderInterface A Symfony\Component\Validator\ValidatorBuilderInterface instance.
+ */
+ protected function getValidator_BuilderService()
+ {
+ $this->services['validator.builder'] = $instance = \Symfony\Component\Validator\Validation::createValidatorBuilder();
+
+ $instance->setConstraintValidatorFactory(new \Symfony\Bundle\FrameworkBundle\Validator\ConstraintValidatorFactory($this, array('validator.expression' => 'validator.expression', 'Symfony\\Component\\Validator\\Constraints\\EmailValidator' => 'validator.email', 'security.validator.user_password' => 'security.validator.user_password', 'doctrine.orm.validator.unique' => 'doctrine.orm.validator.unique')));
+ $instance->setTranslator($this->get('translator'));
+ $instance->setTranslationDomain('validators');
+ $instance->addXmlMappings(array(0 => ($this->targetDirs[3].'/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml')));
+ $instance->enableAnnotationMapping($this->get('annotation_reader'));
+ $instance->addMethodMapping('loadValidatorMetadata');
+ $instance->addObjectInitializers(array(0 => $this->get('doctrine.orm.validator_initializer')));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'validator.email' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Validator\Constraints\EmailValidator A Symfony\Component\Validator\Constraints\EmailValidator instance.
+ */
+ protected function getValidator_EmailService()
+ {
+ return $this->services['validator.email'] = new \Symfony\Component\Validator\Constraints\EmailValidator(false);
+ }
+
+ /**
+ * Gets the 'validator.expression' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\Validator\Constraints\ExpressionValidator A Symfony\Component\Validator\Constraints\ExpressionValidator instance.
+ */
+ protected function getValidator_ExpressionService()
+ {
+ return $this->services['validator.expression'] = new \Symfony\Component\Validator\Constraints\ExpressionValidator($this->get('property_accessor'));
+ }
+
+ /**
+ * Gets the 'var_dumper.cli_dumper' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\VarDumper\Dumper\CliDumper A Symfony\Component\VarDumper\Dumper\CliDumper instance.
+ */
+ protected function getVarDumper_CliDumperService()
+ {
+ return $this->services['var_dumper.cli_dumper'] = new \Symfony\Component\VarDumper\Dumper\CliDumper(NULL, 'UTF-8');
+ }
+
+ /**
+ * Gets the 'var_dumper.cloner' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Component\VarDumper\Cloner\VarCloner A Symfony\Component\VarDumper\Cloner\VarCloner instance.
+ */
+ protected function getVarDumper_ClonerService()
+ {
+ $this->services['var_dumper.cloner'] = $instance = new \Symfony\Component\VarDumper\Cloner\VarCloner();
+
+ $instance->setMaxItems(2500);
+ $instance->setMaxString(-1);
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'web_profiler.controller.exception' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController A Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController instance.
+ */
+ protected function getWebProfiler_Controller_ExceptionService()
+ {
+ return $this->services['web_profiler.controller.exception'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ExceptionController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), true);
+ }
+
+ /**
+ * Gets the 'web_profiler.controller.profiler' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController A Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController instance.
+ */
+ protected function getWebProfiler_Controller_ProfilerService()
+ {
+ return $this->services['web_profiler.controller.profiler'] = new \Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController($this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), array('data_collector.request' => array(0 => 'request', 1 => '@WebProfiler/Collector/request.html.twig'), 'data_collector.time' => array(0 => 'time', 1 => '@WebProfiler/Collector/time.html.twig'), 'data_collector.memory' => array(0 => 'memory', 1 => '@WebProfiler/Collector/memory.html.twig'), 'data_collector.ajax' => array(0 => 'ajax', 1 => '@WebProfiler/Collector/ajax.html.twig'), 'data_collector.form' => array(0 => 'form', 1 => '@WebProfiler/Collector/form.html.twig'), 'data_collector.exception' => array(0 => 'exception', 1 => '@WebProfiler/Collector/exception.html.twig'), 'data_collector.logger' => array(0 => 'logger', 1 => '@WebProfiler/Collector/logger.html.twig'), 'data_collector.events' => array(0 => 'events', 1 => '@WebProfiler/Collector/events.html.twig'), 'data_collector.router' => array(0 => 'router', 1 => '@WebProfiler/Collector/router.html.twig'), 'data_collector.security' => array(0 => 'security', 1 => '@Security/Collector/security.html.twig'), 'data_collector.twig' => array(0 => 'twig', 1 => '@WebProfiler/Collector/twig.html.twig'), 'data_collector.doctrine' => array(0 => 'db', 1 => '@Doctrine/Collector/db.html.twig'), 'swiftmailer.data_collector' => array(0 => 'swiftmailer', 1 => '@Swiftmailer/Collector/swiftmailer.html.twig'), 'data_collector.dump' => array(0 => 'dump', 1 => '@Debug/Profiler/dump.html.twig'), 'data_collector.config' => array(0 => 'config', 1 => '@WebProfiler/Collector/config.html.twig')), 'bottom');
+ }
+
+ /**
+ * Gets the 'web_profiler.controller.router' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\WebProfilerBundle\Controller\RouterController A Symfony\Bundle\WebProfilerBundle\Controller\RouterController instance.
+ */
+ protected function getWebProfiler_Controller_RouterService()
+ {
+ return $this->services['web_profiler.controller.router'] = new \Symfony\Bundle\WebProfilerBundle\Controller\RouterController($this->get('profiler', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('twig'), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'web_profiler.debug_toolbar' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * @return \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener A Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener instance.
+ */
+ protected function getWebProfiler_DebugToolbarService()
+ {
+ return $this->services['web_profiler.debug_toolbar'] = new \Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener($this->get('twig'), false, 2, 'bottom', $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), '^/(app(_[\\w]+)?\\.php/)?_wdt');
+ }
+
+ /**
+ * Gets the 'controller_name_converter' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser A Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser instance.
+ */
+ protected function getControllerNameConverterService()
+ {
+ return $this->services['controller_name_converter'] = new \Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser($this->get('kernel'));
+ }
+
+ /**
+ * Gets the 'doctrine.dbal.logger.profiling.default' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Doctrine\DBAL\Logging\DebugStack A Doctrine\DBAL\Logging\DebugStack instance.
+ */
+ protected function getDoctrine_Dbal_Logger_Profiling_DefaultService()
+ {
+ return $this->services['doctrine.dbal.logger.profiling.default'] = new \Doctrine\DBAL\Logging\DebugStack();
+ }
+
+ /**
+ * Gets the 'router.request_context' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Routing\RequestContext A Symfony\Component\Routing\RequestContext instance.
+ */
+ protected function getRouter_RequestContextService()
+ {
+ return $this->services['router.request_context'] = new \Symfony\Component\Routing\RequestContext('', 'GET', 'localhost', 'http', 80, 443);
+ }
+
+ /**
+ * Gets the 'security.access.decision_manager' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Security\Core\Authorization\AccessDecisionManager A Symfony\Component\Security\Core\Authorization\AccessDecisionManager instance.
+ */
+ protected function getSecurity_Access_DecisionManagerService()
+ {
+ $a = $this->get('security.authentication.trust_resolver');
+
+ $this->services['security.access.decision_manager'] = $instance = new \Symfony\Component\Security\Core\Authorization\AccessDecisionManager(array(), 'affirmative', false, true);
+
+ $instance->setVoters(array(0 => new \Symfony\Component\Security\Core\Authorization\Voter\RoleVoter(), 1 => new \Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter(new \Symfony\Component\Security\Core\Authorization\ExpressionLanguage(), $a, $this->get('security.role_hierarchy', ContainerInterface::NULL_ON_INVALID_REFERENCE)), 2 => new \Symfony\Component\Security\Core\Authorization\Voter\AuthenticatedVoter($a)));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'security.authentication.manager' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager A Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager instance.
+ */
+ protected function getSecurity_Authentication_ManagerService()
+ {
+ $this->services['security.authentication.manager'] = $instance = new \Symfony\Component\Security\Core\Authentication\AuthenticationProviderManager(array(0 => new \Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider('56a782448eafa8.89273161')), true);
+
+ $instance->setEventDispatcher($this->get('debug.event_dispatcher'));
+
+ return $instance;
+ }
+
+ /**
+ * Gets the 'security.authentication.trust_resolver' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver A Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver instance.
+ */
+ protected function getSecurity_Authentication_TrustResolverService()
+ {
+ return $this->services['security.authentication.trust_resolver'] = new \Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver('Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken', 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken');
+ }
+
+ /**
+ * Gets the 'security.logout_url_generator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator A Symfony\Component\Security\Http\Logout\LogoutUrlGenerator instance.
+ */
+ protected function getSecurity_LogoutUrlGeneratorService()
+ {
+ return $this->services['security.logout_url_generator'] = new \Symfony\Component\Security\Http\Logout\LogoutUrlGenerator($this->get('request_stack', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('router', ContainerInterface::NULL_ON_INVALID_REFERENCE), $this->get('security.token_storage', ContainerInterface::NULL_ON_INVALID_REFERENCE));
+ }
+
+ /**
+ * Gets the 'security.role_hierarchy' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Security\Core\Role\RoleHierarchy A Symfony\Component\Security\Core\Role\RoleHierarchy instance.
+ */
+ protected function getSecurity_RoleHierarchyService()
+ {
+ return $this->services['security.role_hierarchy'] = new \Symfony\Component\Security\Core\Role\RoleHierarchy(array());
+ }
+
+ /**
+ * Gets the 'session.storage.metadata_bag' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag A Symfony\Component\HttpFoundation\Session\Storage\MetadataBag instance.
+ */
+ protected function getSession_Storage_MetadataBagService()
+ {
+ return $this->services['session.storage.metadata_bag'] = new \Symfony\Component\HttpFoundation\Session\Storage\MetadataBag('_sf2_meta', '0');
+ }
+
+ /**
+ * Gets the 'swiftmailer.mailer.default.transport.eventdispatcher' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Swift_Events_SimpleEventDispatcher A Swift_Events_SimpleEventDispatcher instance.
+ */
+ protected function getSwiftmailer_Mailer_Default_Transport_EventdispatcherService()
+ {
+ return $this->services['swiftmailer.mailer.default.transport.eventdispatcher'] = new \Swift_Events_SimpleEventDispatcher();
+ }
+
+ /**
+ * Gets the 'templating.locator' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator A Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator instance.
+ */
+ protected function getTemplating_LocatorService()
+ {
+ return $this->services['templating.locator'] = new \Symfony\Bundle\FrameworkBundle\Templating\Loader\TemplateLocator($this->get('file_locator'), __DIR__);
+ }
+
+ /**
+ * Gets the 'translator.selector' service.
+ *
+ * This service is shared.
+ * This method always returns the same instance of the service.
+ *
+ * This service is private.
+ * If you want to be able to request this service from the container directly,
+ * make it public, otherwise you might end up with broken code.
+ *
+ * @return \Symfony\Component\Translation\MessageSelector A Symfony\Component\Translation\MessageSelector instance.
+ */
+ protected function getTranslator_SelectorService()
+ {
+ return $this->services['translator.selector'] = new \Symfony\Component\Translation\MessageSelector();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getParameter($name)
+ {
+ $name = strtolower($name);
+
+ if (!(isset($this->parameters[$name]) || array_key_exists($name, $this->parameters))) {
+ throw new InvalidArgumentException(sprintf('The parameter "%s" must be defined.', $name));
+ }
+
+ return $this->parameters[$name];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function hasParameter($name)
+ {
+ $name = strtolower($name);
+
+ return isset($this->parameters[$name]) || array_key_exists($name, $this->parameters);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setParameter($name, $value)
+ {
+ throw new LogicException('Impossible to call set() on a frozen ParameterBag.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getParameterBag()
+ {
+ if (null === $this->parameterBag) {
+ $this->parameterBag = new FrozenParameterBag($this->parameters);
+ }
+
+ return $this->parameterBag;
+ }
+
+ /**
+ * Gets the default parameters.
+ *
+ * @return array An array of the default parameters
+ */
+ protected function getDefaultParameters()
+ {
+ return array(
+ 'kernel.root_dir' => ($this->targetDirs[3].'/app'),
+ 'kernel.environment' => 'dev',
+ 'kernel.debug' => true,
+ 'kernel.name' => 'app',
+ 'kernel.cache_dir' => __DIR__,
+ 'kernel.logs_dir' => ($this->targetDirs[2].'/logs'),
+ 'kernel.bundles' => array(
+ 'FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle',
+ 'SecurityBundle' => 'Symfony\\Bundle\\SecurityBundle\\SecurityBundle',
+ 'TwigBundle' => 'Symfony\\Bundle\\TwigBundle\\TwigBundle',
+ 'MonologBundle' => 'Symfony\\Bundle\\MonologBundle\\MonologBundle',
+ 'SwiftmailerBundle' => 'Symfony\\Bundle\\SwiftmailerBundle\\SwiftmailerBundle',
+ 'DoctrineBundle' => 'Doctrine\\Bundle\\DoctrineBundle\\DoctrineBundle',
+ 'SensioFrameworkExtraBundle' => 'Sensio\\Bundle\\FrameworkExtraBundle\\SensioFrameworkExtraBundle',
+ 'AppBundle' => 'AppBundle\\AppBundle',
+ 'DebugBundle' => 'Symfony\\Bundle\\DebugBundle\\DebugBundle',
+ 'WebProfilerBundle' => 'Symfony\\Bundle\\WebProfilerBundle\\WebProfilerBundle',
+ 'SensioDistributionBundle' => 'Sensio\\Bundle\\DistributionBundle\\SensioDistributionBundle',
+ 'SensioGeneratorBundle' => 'Sensio\\Bundle\\GeneratorBundle\\SensioGeneratorBundle',
+ ),
+ 'kernel.charset' => 'UTF-8',
+ 'kernel.container_class' => 'appDevDebugProjectContainer',
+ 'database_host' => '127.0.0.1',
+ 'database_port' => 3306,
+ 'database_name' => 'symfony',
+ 'database_user' => 'root',
+ 'database_password' => 'yolo',
+ 'mailer_transport' => 'smtp',
+ 'mailer_host' => '127.0.0.1',
+ 'mailer_user' => NULL,
+ 'mailer_password' => NULL,
+ 'secret' => 'a958d119a837605337f0224ff71592384a432e2f',
+ 'locale' => 'en',
+ 'fragment.renderer.hinclude.global_template' => NULL,
+ 'fragment.path' => '/_fragment',
+ 'kernel.secret' => 'a958d119a837605337f0224ff71592384a432e2f',
+ 'kernel.http_method_override' => true,
+ 'kernel.trusted_hosts' => array(
+
+ ),
+ 'kernel.trusted_proxies' => array(
+
+ ),
+ 'kernel.default_locale' => 'en',
+ 'session.metadata.storage_key' => '_sf2_meta',
+ 'session.storage.options' => array(
+ 'cookie_httponly' => true,
+ 'gc_probability' => 1,
+ ),
+ 'session.save_path' => ($this->targetDirs[3].'/app/../var/sessions/dev'),
+ 'session.metadata.update_threshold' => '0',
+ 'form.type_extension.csrf.enabled' => true,
+ 'form.type_extension.csrf.field_name' => '_token',
+ 'templating.helper.code.file_link_format' => NULL,
+ 'templating.loader.cache.path' => NULL,
+ 'templating.engines' => array(
+ 0 => 'twig',
+ ),
+ 'validator.mapping.cache.prefix' => '',
+ 'validator.translation_domain' => 'validators',
+ 'profiler_listener.only_exceptions' => false,
+ 'profiler_listener.only_master_requests' => false,
+ 'profiler.storage.dsn' => ('file:'.__DIR__.'/profiler'),
+ 'router.options.generator_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
+ 'router.options.generator_base_class' => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
+ 'router.options.generator_dumper_class' => 'Symfony\\Component\\Routing\\Generator\\Dumper\\PhpGeneratorDumper',
+ 'router.options.matcher_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher',
+ 'router.options.matcher_base_class' => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher',
+ 'router.options.matcher_dumper_class' => 'Symfony\\Component\\Routing\\Matcher\\Dumper\\PhpMatcherDumper',
+ 'router.options.matcher.cache_class' => 'appDevUrlMatcher',
+ 'router.options.generator.cache_class' => 'appDevUrlGenerator',
+ 'router.request_context.host' => 'localhost',
+ 'router.request_context.scheme' => 'http',
+ 'router.request_context.base_url' => '',
+ 'router.resource' => ($this->targetDirs[3].'/app/config/routing_dev.yml'),
+ 'router.cache_class_prefix' => 'appDev',
+ 'request_listener.http_port' => 80,
+ 'request_listener.https_port' => 443,
+ 'debug.error_handler.throw_at' => -1,
+ 'debug.container.dump' => (__DIR__.'/appDevDebugProjectContainer.xml'),
+ 'security.authentication.trust_resolver.anonymous_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken',
+ 'security.authentication.trust_resolver.rememberme_class' => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken',
+ 'security.role_hierarchy.roles' => array(
+
+ ),
+ 'security.access.denied_url' => NULL,
+ 'security.authentication.manager.erase_credentials' => true,
+ 'security.authentication.session_strategy.strategy' => 'migrate',
+ 'security.access.always_authenticate_before_granting' => false,
+ 'security.authentication.hide_user_not_found' => true,
+ 'twig.exception_listener.controller' => 'twig.controller.exception:showAction',
+ 'twig.form.resources' => array(
+ 0 => 'form_div_layout.html.twig',
+ ),
+ 'monolog.logger.class' => 'Symfony\\Bridge\\Monolog\\Logger',
+ 'monolog.gelf.publisher.class' => 'Gelf\\MessagePublisher',
+ 'monolog.gelfphp.publisher.class' => 'Gelf\\Publisher',
+ 'monolog.handler.stream.class' => 'Monolog\\Handler\\StreamHandler',
+ 'monolog.handler.console.class' => 'Symfony\\Bridge\\Monolog\\Handler\\ConsoleHandler',
+ 'monolog.handler.group.class' => 'Monolog\\Handler\\GroupHandler',
+ 'monolog.handler.buffer.class' => 'Monolog\\Handler\\BufferHandler',
+ 'monolog.handler.rotating_file.class' => 'Monolog\\Handler\\RotatingFileHandler',
+ 'monolog.handler.syslog.class' => 'Monolog\\Handler\\SyslogHandler',
+ 'monolog.handler.syslogudp.class' => 'Monolog\\Handler\\SyslogUdpHandler',
+ 'monolog.handler.null.class' => 'Monolog\\Handler\\NullHandler',
+ 'monolog.handler.test.class' => 'Monolog\\Handler\\TestHandler',
+ 'monolog.handler.gelf.class' => 'Monolog\\Handler\\GelfHandler',
+ 'monolog.handler.rollbar.class' => 'Monolog\\Handler\\RollbarHandler',
+ 'monolog.handler.flowdock.class' => 'Monolog\\Handler\\FlowdockHandler',
+ 'monolog.handler.browser_console.class' => 'Monolog\\Handler\\BrowserConsoleHandler',
+ 'monolog.handler.firephp.class' => 'Symfony\\Bridge\\Monolog\\Handler\\FirePHPHandler',
+ 'monolog.handler.chromephp.class' => 'Symfony\\Bridge\\Monolog\\Handler\\ChromePhpHandler',
+ 'monolog.handler.debug.class' => 'Symfony\\Bridge\\Monolog\\Handler\\DebugHandler',
+ 'monolog.handler.swift_mailer.class' => 'Symfony\\Bridge\\Monolog\\Handler\\SwiftMailerHandler',
+ 'monolog.handler.native_mailer.class' => 'Monolog\\Handler\\NativeMailerHandler',
+ 'monolog.handler.socket.class' => 'Monolog\\Handler\\SocketHandler',
+ 'monolog.handler.pushover.class' => 'Monolog\\Handler\\PushoverHandler',
+ 'monolog.handler.raven.class' => 'Monolog\\Handler\\RavenHandler',
+ 'monolog.handler.newrelic.class' => 'Monolog\\Handler\\NewRelicHandler',
+ 'monolog.handler.hipchat.class' => 'Monolog\\Handler\\HipChatHandler',
+ 'monolog.handler.slack.class' => 'Monolog\\Handler\\SlackHandler',
+ 'monolog.handler.cube.class' => 'Monolog\\Handler\\CubeHandler',
+ 'monolog.handler.amqp.class' => 'Monolog\\Handler\\AmqpHandler',
+ 'monolog.handler.error_log.class' => 'Monolog\\Handler\\ErrorLogHandler',
+ 'monolog.handler.loggly.class' => 'Monolog\\Handler\\LogglyHandler',
+ 'monolog.handler.logentries.class' => 'Monolog\\Handler\\LogEntriesHandler',
+ 'monolog.handler.whatfailuregroup.class' => 'Monolog\\Handler\\WhatFailureGroupHandler',
+ 'monolog.activation_strategy.not_found.class' => 'Symfony\\Bundle\\MonologBundle\\NotFoundActivationStrategy',
+ 'monolog.handler.fingers_crossed.class' => 'Monolog\\Handler\\FingersCrossedHandler',
+ 'monolog.handler.fingers_crossed.error_level_activation_strategy.class' => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy',
+ 'monolog.handler.filter.class' => 'Monolog\\Handler\\FilterHandler',
+ 'monolog.handler.mongo.class' => 'Monolog\\Handler\\MongoDBHandler',
+ 'monolog.mongo.client.class' => 'MongoClient',
+ 'monolog.handler.elasticsearch.class' => 'Monolog\\Handler\\ElasticSearchHandler',
+ 'monolog.elastica.client.class' => 'Elastica\\Client',
+ 'monolog.swift_mailer.handlers' => array(
+
+ ),
+ 'monolog.handlers_to_channels' => array(
+ 'monolog.handler.console' => array(
+ 'type' => 'exclusive',
+ 'elements' => array(
+ 0 => 'event',
+ 1 => 'doctrine',
+ ),
+ ),
+ 'monolog.handler.main' => array(
+ 'type' => 'exclusive',
+ 'elements' => array(
+ 0 => 'event',
+ ),
+ ),
+ ),
+ 'swiftmailer.class' => 'Swift_Mailer',
+ 'swiftmailer.transport.sendmail.class' => 'Swift_Transport_SendmailTransport',
+ 'swiftmailer.transport.mail.class' => 'Swift_Transport_MailTransport',
+ 'swiftmailer.transport.failover.class' => 'Swift_Transport_FailoverTransport',
+ 'swiftmailer.plugin.redirecting.class' => 'Swift_Plugins_RedirectingPlugin',
+ 'swiftmailer.plugin.impersonate.class' => 'Swift_Plugins_ImpersonatePlugin',
+ 'swiftmailer.plugin.messagelogger.class' => 'Swift_Plugins_MessageLogger',
+ 'swiftmailer.plugin.antiflood.class' => 'Swift_Plugins_AntiFloodPlugin',
+ 'swiftmailer.transport.smtp.class' => 'Swift_Transport_EsmtpTransport',
+ 'swiftmailer.plugin.blackhole.class' => 'Swift_Plugins_BlackholePlugin',
+ 'swiftmailer.spool.file.class' => 'Swift_FileSpool',
+ 'swiftmailer.spool.memory.class' => 'Swift_MemorySpool',
+ 'swiftmailer.email_sender.listener.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\EventListener\\EmailSenderListener',
+ 'swiftmailer.data_collector.class' => 'Symfony\\Bundle\\SwiftmailerBundle\\DataCollector\\MessageDataCollector',
+ 'swiftmailer.mailer.default.transport.name' => 'smtp',
+ 'swiftmailer.mailer.default.delivery.enabled' => true,
+ 'swiftmailer.mailer.default.transport.smtp.encryption' => NULL,
+ 'swiftmailer.mailer.default.transport.smtp.port' => 25,
+ 'swiftmailer.mailer.default.transport.smtp.host' => '127.0.0.1',
+ 'swiftmailer.mailer.default.transport.smtp.username' => NULL,
+ 'swiftmailer.mailer.default.transport.smtp.password' => NULL,
+ 'swiftmailer.mailer.default.transport.smtp.auth_mode' => NULL,
+ 'swiftmailer.mailer.default.transport.smtp.timeout' => 30,
+ 'swiftmailer.mailer.default.transport.smtp.source_ip' => NULL,
+ 'swiftmailer.spool.default.memory.path' => (__DIR__.'/swiftmailer/spool/default'),
+ 'swiftmailer.mailer.default.spool.enabled' => true,
+ 'swiftmailer.mailer.default.plugin.impersonate' => NULL,
+ 'swiftmailer.mailer.default.single_address' => NULL,
+ 'swiftmailer.spool.enabled' => true,
+ 'swiftmailer.delivery.enabled' => true,
+ 'swiftmailer.single_address' => NULL,
+ 'swiftmailer.mailers' => array(
+ 'default' => 'swiftmailer.mailer.default',
+ ),
+ 'swiftmailer.default_mailer' => 'default',
+ 'doctrine_cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache',
+ 'doctrine_cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache',
+ 'doctrine_cache.chain.class' => 'Doctrine\\Common\\Cache\\ChainCache',
+ 'doctrine_cache.couchbase.class' => 'Doctrine\\Common\\Cache\\CouchbaseCache',
+ 'doctrine_cache.couchbase.connection.class' => 'Couchbase',
+ 'doctrine_cache.couchbase.hostnames' => 'localhost:8091',
+ 'doctrine_cache.file_system.class' => 'Doctrine\\Common\\Cache\\FilesystemCache',
+ 'doctrine_cache.php_file.class' => 'Doctrine\\Common\\Cache\\PhpFileCache',
+ 'doctrine_cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache',
+ 'doctrine_cache.memcache.connection.class' => 'Memcache',
+ 'doctrine_cache.memcache.host' => 'localhost',
+ 'doctrine_cache.memcache.port' => 11211,
+ 'doctrine_cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache',
+ 'doctrine_cache.memcached.connection.class' => 'Memcached',
+ 'doctrine_cache.memcached.host' => 'localhost',
+ 'doctrine_cache.memcached.port' => 11211,
+ 'doctrine_cache.mongodb.class' => 'Doctrine\\Common\\Cache\\MongoDBCache',
+ 'doctrine_cache.mongodb.collection.class' => 'MongoCollection',
+ 'doctrine_cache.mongodb.connection.class' => 'MongoClient',
+ 'doctrine_cache.mongodb.server' => 'localhost:27017',
+ 'doctrine_cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache',
+ 'doctrine_cache.redis.connection.class' => 'Redis',
+ 'doctrine_cache.redis.host' => 'localhost',
+ 'doctrine_cache.redis.port' => 6379,
+ 'doctrine_cache.riak.class' => 'Doctrine\\Common\\Cache\\RiakCache',
+ 'doctrine_cache.riak.bucket.class' => 'Riak\\Bucket',
+ 'doctrine_cache.riak.connection.class' => 'Riak\\Connection',
+ 'doctrine_cache.riak.bucket_property_list.class' => 'Riak\\BucketPropertyList',
+ 'doctrine_cache.riak.host' => 'localhost',
+ 'doctrine_cache.riak.port' => 8087,
+ 'doctrine_cache.sqlite3.class' => 'Doctrine\\Common\\Cache\\SQLite3Cache',
+ 'doctrine_cache.sqlite3.connection.class' => 'SQLite3',
+ 'doctrine_cache.void.class' => 'Doctrine\\Common\\Cache\\VoidCache',
+ 'doctrine_cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache',
+ 'doctrine_cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache',
+ 'doctrine_cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache',
+ 'doctrine_cache.security.acl.cache.class' => 'Doctrine\\Bundle\\DoctrineCacheBundle\\Acl\\Model\\AclCache',
+ 'doctrine.dbal.logger.chain.class' => 'Doctrine\\DBAL\\Logging\\LoggerChain',
+ 'doctrine.dbal.logger.profiling.class' => 'Doctrine\\DBAL\\Logging\\DebugStack',
+ 'doctrine.dbal.logger.class' => 'Symfony\\Bridge\\Doctrine\\Logger\\DbalLogger',
+ 'doctrine.dbal.configuration.class' => 'Doctrine\\DBAL\\Configuration',
+ 'doctrine.data_collector.class' => 'Doctrine\\Bundle\\DoctrineBundle\\DataCollector\\DoctrineDataCollector',
+ 'doctrine.dbal.connection.event_manager.class' => 'Symfony\\Bridge\\Doctrine\\ContainerAwareEventManager',
+ 'doctrine.dbal.connection_factory.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ConnectionFactory',
+ 'doctrine.dbal.events.mysql_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\MysqlSessionInit',
+ 'doctrine.dbal.events.oracle_session_init.class' => 'Doctrine\\DBAL\\Event\\Listeners\\OracleSessionInit',
+ 'doctrine.class' => 'Doctrine\\Bundle\\DoctrineBundle\\Registry',
+ 'doctrine.entity_managers' => array(
+ 'default' => 'doctrine.orm.default_entity_manager',
+ ),
+ 'doctrine.default_entity_manager' => 'default',
+ 'doctrine.dbal.connection_factory.types' => array(
+
+ ),
+ 'doctrine.connections' => array(
+ 'default' => 'doctrine.dbal.default_connection',
+ ),
+ 'doctrine.default_connection' => 'default',
+ 'doctrine.orm.configuration.class' => 'Doctrine\\ORM\\Configuration',
+ 'doctrine.orm.entity_manager.class' => 'Doctrine\\ORM\\EntityManager',
+ 'doctrine.orm.manager_configurator.class' => 'Doctrine\\Bundle\\DoctrineBundle\\ManagerConfigurator',
+ 'doctrine.orm.cache.array.class' => 'Doctrine\\Common\\Cache\\ArrayCache',
+ 'doctrine.orm.cache.apc.class' => 'Doctrine\\Common\\Cache\\ApcCache',
+ 'doctrine.orm.cache.memcache.class' => 'Doctrine\\Common\\Cache\\MemcacheCache',
+ 'doctrine.orm.cache.memcache_host' => 'localhost',
+ 'doctrine.orm.cache.memcache_port' => 11211,
+ 'doctrine.orm.cache.memcache_instance.class' => 'Memcache',
+ 'doctrine.orm.cache.memcached.class' => 'Doctrine\\Common\\Cache\\MemcachedCache',
+ 'doctrine.orm.cache.memcached_host' => 'localhost',
+ 'doctrine.orm.cache.memcached_port' => 11211,
+ 'doctrine.orm.cache.memcached_instance.class' => 'Memcached',
+ 'doctrine.orm.cache.redis.class' => 'Doctrine\\Common\\Cache\\RedisCache',
+ 'doctrine.orm.cache.redis_host' => 'localhost',
+ 'doctrine.orm.cache.redis_port' => 6379,
+ 'doctrine.orm.cache.redis_instance.class' => 'Redis',
+ 'doctrine.orm.cache.xcache.class' => 'Doctrine\\Common\\Cache\\XcacheCache',
+ 'doctrine.orm.cache.wincache.class' => 'Doctrine\\Common\\Cache\\WinCacheCache',
+ 'doctrine.orm.cache.zenddata.class' => 'Doctrine\\Common\\Cache\\ZendDataCache',
+ 'doctrine.orm.metadata.driver_chain.class' => 'Doctrine\\Common\\Persistence\\Mapping\\Driver\\MappingDriverChain',
+ 'doctrine.orm.metadata.annotation.class' => 'Doctrine\\ORM\\Mapping\\Driver\\AnnotationDriver',
+ 'doctrine.orm.metadata.xml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedXmlDriver',
+ 'doctrine.orm.metadata.yml.class' => 'Doctrine\\ORM\\Mapping\\Driver\\SimplifiedYamlDriver',
+ 'doctrine.orm.metadata.php.class' => 'Doctrine\\ORM\\Mapping\\Driver\\PHPDriver',
+ 'doctrine.orm.metadata.staticphp.class' => 'Doctrine\\ORM\\Mapping\\Driver\\StaticPHPDriver',
+ 'doctrine.orm.proxy_cache_warmer.class' => 'Symfony\\Bridge\\Doctrine\\CacheWarmer\\ProxyCacheWarmer',
+ 'form.type_guesser.doctrine.class' => 'Symfony\\Bridge\\Doctrine\\Form\\DoctrineOrmTypeGuesser',
+ 'doctrine.orm.validator.unique.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\Constraints\\UniqueEntityValidator',
+ 'doctrine.orm.validator_initializer.class' => 'Symfony\\Bridge\\Doctrine\\Validator\\DoctrineInitializer',
+ 'doctrine.orm.security.user.provider.class' => 'Symfony\\Bridge\\Doctrine\\Security\\User\\EntityUserProvider',
+ 'doctrine.orm.listeners.resolve_target_entity.class' => 'Doctrine\\ORM\\Tools\\ResolveTargetEntityListener',
+ 'doctrine.orm.listeners.attach_entity_listeners.class' => 'Doctrine\\ORM\\Tools\\AttachEntityListenersListener',
+ 'doctrine.orm.naming_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultNamingStrategy',
+ 'doctrine.orm.naming_strategy.underscore.class' => 'Doctrine\\ORM\\Mapping\\UnderscoreNamingStrategy',
+ 'doctrine.orm.quote_strategy.default.class' => 'Doctrine\\ORM\\Mapping\\DefaultQuoteStrategy',
+ 'doctrine.orm.quote_strategy.ansi.class' => 'Doctrine\\ORM\\Mapping\\AnsiQuoteStrategy',
+ 'doctrine.orm.entity_listener_resolver.class' => 'Doctrine\\ORM\\Mapping\\DefaultEntityListenerResolver',
+ 'doctrine.orm.second_level_cache.default_cache_factory.class' => 'Doctrine\\ORM\\Cache\\DefaultCacheFactory',
+ 'doctrine.orm.second_level_cache.default_region.class' => 'Doctrine\\ORM\\Cache\\Region\\DefaultRegion',
+ 'doctrine.orm.second_level_cache.filelock_region.class' => 'Doctrine\\ORM\\Cache\\Region\\FileLockRegion',
+ 'doctrine.orm.second_level_cache.logger_chain.class' => 'Doctrine\\ORM\\Cache\\Logging\\CacheLoggerChain',
+ 'doctrine.orm.second_level_cache.logger_statistics.class' => 'Doctrine\\ORM\\Cache\\Logging\\StatisticsCacheLogger',
+ 'doctrine.orm.second_level_cache.cache_configuration.class' => 'Doctrine\\ORM\\Cache\\CacheConfiguration',
+ 'doctrine.orm.second_level_cache.regions_configuration.class' => 'Doctrine\\ORM\\Cache\\RegionsConfiguration',
+ 'doctrine.orm.auto_generate_proxy_classes' => true,
+ 'doctrine.orm.proxy_dir' => (__DIR__.'/doctrine/orm/Proxies'),
+ 'doctrine.orm.proxy_namespace' => 'Proxies',
+ 'sensio_framework_extra.view.guesser.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Templating\\TemplateGuesser',
+ 'sensio_framework_extra.controller.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener',
+ 'sensio_framework_extra.routing.loader.annot_dir.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationDirectoryLoader',
+ 'sensio_framework_extra.routing.loader.annot_file.class' => 'Symfony\\Component\\Routing\\Loader\\AnnotationFileLoader',
+ 'sensio_framework_extra.routing.loader.annot_class.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Routing\\AnnotatedRouteControllerLoader',
+ 'sensio_framework_extra.converter.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener',
+ 'sensio_framework_extra.converter.manager.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager',
+ 'sensio_framework_extra.converter.doctrine.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter',
+ 'sensio_framework_extra.converter.datetime.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter',
+ 'sensio_framework_extra.view.listener.class' => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener',
+ 'web_profiler.debug_toolbar.position' => 'bottom',
+ 'web_profiler.debug_toolbar.intercept_redirects' => false,
+ 'web_profiler.debug_toolbar.mode' => 2,
+ 'data_collector.templates' => array(
+ 'data_collector.request' => array(
+ 0 => 'request',
+ 1 => '@WebProfiler/Collector/request.html.twig',
+ ),
+ 'data_collector.time' => array(
+ 0 => 'time',
+ 1 => '@WebProfiler/Collector/time.html.twig',
+ ),
+ 'data_collector.memory' => array(
+ 0 => 'memory',
+ 1 => '@WebProfiler/Collector/memory.html.twig',
+ ),
+ 'data_collector.ajax' => array(
+ 0 => 'ajax',
+ 1 => '@WebProfiler/Collector/ajax.html.twig',
+ ),
+ 'data_collector.form' => array(
+ 0 => 'form',
+ 1 => '@WebProfiler/Collector/form.html.twig',
+ ),
+ 'data_collector.exception' => array(
+ 0 => 'exception',
+ 1 => '@WebProfiler/Collector/exception.html.twig',
+ ),
+ 'data_collector.logger' => array(
+ 0 => 'logger',
+ 1 => '@WebProfiler/Collector/logger.html.twig',
+ ),
+ 'data_collector.events' => array(
+ 0 => 'events',
+ 1 => '@WebProfiler/Collector/events.html.twig',
+ ),
+ 'data_collector.router' => array(
+ 0 => 'router',
+ 1 => '@WebProfiler/Collector/router.html.twig',
+ ),
+ 'data_collector.security' => array(
+ 0 => 'security',
+ 1 => '@Security/Collector/security.html.twig',
+ ),
+ 'data_collector.twig' => array(
+ 0 => 'twig',
+ 1 => '@WebProfiler/Collector/twig.html.twig',
+ ),
+ 'data_collector.doctrine' => array(
+ 0 => 'db',
+ 1 => '@Doctrine/Collector/db.html.twig',
+ ),
+ 'swiftmailer.data_collector' => array(
+ 0 => 'swiftmailer',
+ 1 => '@Swiftmailer/Collector/swiftmailer.html.twig',
+ ),
+ 'data_collector.dump' => array(
+ 0 => 'dump',
+ 1 => '@Debug/Profiler/dump.html.twig',
+ ),
+ 'data_collector.config' => array(
+ 0 => 'config',
+ 1 => '@WebProfiler/Collector/config.html.twig',
+ ),
+ ),
+ 'console.command.ids' => array(
+ 0 => 'sensio_distribution.security_checker.command',
+ ),
+ );
+ }
+}
diff --git a/var/cache/dev/appDevDebugProjectContainer.php.meta b/var/cache/dev/appDevDebugProjectContainer.php.meta
new file mode 100644
index 0000000..f3b909c
--- /dev/null
+++ b/var/cache/dev/appDevDebugProjectContainer.php.meta
@@ -0,0 +1 @@
+a:188:{i:0;C:46:"Symfony\Component\Config\Resource\FileResource":78:{s:70:"/Users/senaria/Projects/test-update-doctrine-command/app/AppKernel.php";}i:1;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php";}i:2;C:46:"Symfony\Component\Config\Resource\FileResource":139:{s:130:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php";}i:3;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Bundle/Bundle.php";}i:4;C:46:"Symfony\Component\Config\Resource\FileResource":137:{s:128:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/SecurityBundle.php";}i:6;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/TwigBundle.php";}i:8;C:46:"Symfony\Component\Config\Resource\FileResource":109:{s:100:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/MonologBundle.php";}i:10;C:46:"Symfony\Component\Config\Resource\FileResource":117:{s:108:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/SwiftmailerBundle.php";}i:12;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/DoctrineBundle.php";}i:14;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/SensioFrameworkExtraBundle.php";}i:16;C:46:"Symfony\Component\Config\Resource\FileResource":88:{s:80:"/Users/senaria/Projects/test-update-doctrine-command/src/AppBundle/AppBundle.php";}i:18;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DebugBundle.php";}i:20;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/WebProfilerBundle.php";}i:22;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle/SensioDistributionBundle.php";}i:24;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/generator-bundle/SensioGeneratorBundle.php";}i:26;C:46:"Symfony\Component\Config\Resource\FileResource":172:{s:163:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/RoutingResolverPass.php";}i:27;C:46:"Symfony\Component\Config\Resource\FileResource":165:{s:156:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php";}i:28;C:46:"Symfony\Component\Config\Resource\FileResource":168:{s:159:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/EventDispatcher/DependencyInjection/RegisterListenersPass.php";}i:29;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TemplatingPass.php";}i:30;C:46:"Symfony\Component\Config\Resource\FileResource":180:{s:171:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConstraintValidatorsPass.php";}i:31;C:46:"Symfony\Component\Config\Resource\FileResource":181:{s:172:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddValidatorInitializersPass.php";}i:32;C:46:"Symfony\Component\Config\Resource\FileResource":174:{s:165:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddConsoleCommandPass.php";}i:33;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/FormPass.php";}i:34;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslatorPass.php";}i:35;C:46:"Symfony\Component\Config\Resource\FileResource":174:{s:165:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/LoggingTranslatorPass.php";}i:36;C:46:"Symfony\Component\Config\Resource\FileResource":171:{s:162:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheWarmerPass.php";}i:37;C:46:"Symfony\Component\Config\Resource\FileResource":172:{s:163:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddCacheClearerPass.php";}i:38;C:46:"Symfony\Component\Config\Resource\FileResource":187:{s:178:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddExpressionLanguageProvidersPass.php";}i:39;C:46:"Symfony\Component\Config\Resource\FileResource":177:{s:168:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationExtractorPass.php";}i:40;C:46:"Symfony\Component\Config\Resource\FileResource":174:{s:165:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/TranslationDumperPass.php";}i:41;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/FragmentRendererPass.php";}i:42;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php";}i:43;C:46:"Symfony\Component\Config\Resource\FileResource":169:{s:160:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/PropertyInfoPass.php";}i:44;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php";}i:45;C:46:"Symfony\Component\Config\Resource\FileResource":182:{s:173:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ContainerBuilderDebugDumpPass.php";}i:46;C:46:"Symfony\Component\Config\Resource\FileResource":174:{s:165:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CompilerDebugDumpPass.php";}i:47;C:46:"Symfony\Component\Config\Resource\FileResource":168:{s:159:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ConfigCachePass.php";}i:48;C:46:"Symfony\Component\Config\Resource\FileResource":173:{s:164:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Compiler/AddSecurityVotersPass.php";}i:49;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExtensionPass.php";}i:50;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigEnvironmentPass.php";}i:51;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/TwigLoaderPass.php";}i:52;C:46:"Symfony\Component\Config\Resource\FileResource":169:{s:160:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Compiler/ExceptionListenerPass.php";}i:53;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/LoggerChannelPass.php";}i:54;C:46:"Symfony\Component\Config\Resource\FileResource":141:{s:132:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/DebugHandlerPass.php";}i:55;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddProcessorsPass.php";}i:56;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/Compiler/AddSwiftMailerTransportPass.php";}i:57;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/DependencyInjection/Compiler/RegisterPluginsPass.php";}i:58;C:46:"Symfony\Component\Config\Resource\FileResource":190:{s:181:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/RegisterEventListenersAndSubscribersPass.php";}i:59;C:46:"Symfony\Component\Config\Resource\FileResource":172:{s:163:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/CompilerPass/DoctrineValidationPass.php";}i:60;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/DependencyInjection/Compiler/EntityListenerPass.php";}i:61;C:46:"Symfony\Component\Config\Resource\FileResource":153:{s:144:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/AddParamConverterPass.php";}i:62;C:46:"Symfony\Component\Config\Resource\FileResource":142:{s:133:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/DependencyInjection/Compiler/LegacyPass.php";}i:63;C:46:"Symfony\Component\Config\Resource\FileResource":170:{s:161:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/Compiler/DumpDataCollectorPass.php";}i:64;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/Users/senaria/Projects/test-update-doctrine-command/app/config/config_dev.yml";}i:65;C:46:"Symfony\Component\Config\Resource\FileResource":82:{s:74:"/Users/senaria/Projects/test-update-doctrine-command/app/config/config.yml";}i:66;C:46:"Symfony\Component\Config\Resource\FileResource":86:{s:78:"/Users/senaria/Projects/test-update-doctrine-command/app/config/parameters.yml";}i:67;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/Users/senaria/Projects/test-update-doctrine-command/app/config/security.yml";}i:68;C:46:"Symfony\Component\Config\Resource\FileResource":84:{s:76:"/Users/senaria/Projects/test-update-doctrine-command/app/config/services.yml";}i:69;C:46:"Symfony\Component\Config\Resource\FileResource":163:{s:154:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/AddClassesToCachePass.php";}i:70;C:57:"Symfony\Component\HttpKernel\Config\EnvParametersResource":57:{a:2:{s:6:"prefix";s:9:"SYMFONY__";s:9:"variables";a:0:{}}}i:71;C:46:"Symfony\Component\Config\Resource\FileResource":173:{s:164:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/MergeExtensionConfigurationPass.php";}i:72;C:46:"Symfony\Component\Config\Resource\FileResource":171:{s:162:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php";}i:107;C:46:"Symfony\Component\Config\Resource\FileResource":161:{s:152:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ExtensionCompilerPass.php";}i:108;C:46:"Symfony\Component\Config\Resource\FileResource":170:{s:161:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php";}i:109;C:46:"Symfony\Component\Config\Resource\FileResource":160:{s:151:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/DecoratorServicePass.php";}i:110;C:46:"Symfony\Component\Config\Resource\FileResource":172:{s:163:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveParameterPlaceHoldersPass.php";}i:111;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckDefinitionValidityPass.php";}i:112;C:46:"Symfony\Component\Config\Resource\FileResource":170:{s:161:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveReferencesToAliasesPass.php";}i:113;C:46:"Symfony\Component\Config\Resource\FileResource":168:{s:159:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveInvalidReferencesPass.php";}i:114;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php";}i:115;C:46:"Symfony\Component\Config\Resource\FileResource":168:{s:159:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AnalyzeServiceReferencesPass.php";}i:116;C:46:"Symfony\Component\Config\Resource\FileResource":167:{s:158:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckCircularReferencesPass.php";}i:117;C:46:"Symfony\Component\Config\Resource\FileResource":166:{s:157:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckReferenceValidityPass.php";}i:119;C:46:"Symfony\Component\Config\Resource\FileResource":164:{s:155:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemovePrivateAliasesPass.php";}i:120;C:46:"Symfony\Component\Config\Resource\FileResource":169:{s:160:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RemoveAbstractDefinitionsPass.php";}i:121;C:46:"Symfony\Component\Config\Resource\FileResource":174:{s:165:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/ReplaceAliasByActualDefinitionPass.php";}i:122;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/RepeatedPass.php";}i:123;C:46:"Symfony\Component\Config\Resource\FileResource":184:{s:175:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/CheckExceptionOnInvalidReferenceBehaviorPass.php";}i:128;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php";}i:129;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/DependencyInjection/Extension.php";}i:130;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Extension/Extension.php";}i:131;C:46:"Symfony\Component\Config\Resource\FileResource":144:{s:135:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/web.xml";}i:132;C:46:"Symfony\Component\Config\Resource\FileResource":149:{s:140:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/services.xml";}i:133;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_renderer.xml";}i:134;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/translation.xml";}i:135;C:46:"Symfony\Component\Config\Resource\FileResource":156:{s:147:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/property_access.xml";}i:136;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml";}i:137;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form.xml";}i:138;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_csrf.xml";}i:139;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/security_csrf.xml";}i:140;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.xml";}i:141;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml";}i:142;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml";}i:143;C:46:"Symfony\Component\Config\Resource\FileResource":143:{s:134:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml";}i:144;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/fragment_listener.xml";}i:145;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml";}i:146;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml";}i:147;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/form_debug.xml";}i:148;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/routing.xml";}i:149;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/annotations.xml";}i:150;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug_prod.xml";}i:151;C:46:"Symfony\Component\Config\Resource\FileResource":146:{s:137:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/debug.xml";}i:152;C:46:"Symfony\Component\Config\Resource\FileResource":160:{s:151:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php";}i:155;C:46:"Symfony\Component\Config\Resource\FileResource":148:{s:139:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security.xml";}i:156;C:46:"Symfony\Component\Config\Resource\FileResource":158:{s:149:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml";}i:157;C:46:"Symfony\Component\Config\Resource\FileResource":159:{s:150:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml";}i:158;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_php.xml";}i:159;C:46:"Symfony\Component\Config\Resource\FileResource":155:{s:146:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/templating_twig.xml";}i:160;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/collectors.xml";}i:161;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config/guard.xml";}i:162;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/TwigExtension.php";}i:165;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config/twig.xml";}i:166;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/DependencyInjection/Configuration.php";}i:167;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":114:{a:2:{i:0;s:88:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/FrameworkBundle/views";i:1;b:0;}}i:168;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":153:{a:2:{i:0;s:126:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views";i:1;b:1;}}i:169;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":113:{a:2:{i:0;s:87:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/SecurityBundle/views";i:1;b:0;}}i:170;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":152:{a:2:{i:0;s:125:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views";i:1;b:1;}}i:171;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":109:{a:2:{i:0;s:83:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/TwigBundle/views";i:1;b:0;}}i:172;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":148:{a:2:{i:0;s:121:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views";i:1;b:1;}}i:173;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":112:{a:2:{i:0;s:86:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/MonologBundle/views";i:1;b:0;}}i:174;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":124:{a:2:{i:0;s:98:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/Resources/views";i:1;b:0;}}i:175;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":116:{a:2:{i:0;s:90:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/SwiftmailerBundle/views";i:1;b:0;}}i:176;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/Resources/views";i:1;b:1;}}i:177;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":113:{a:2:{i:0;s:87:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/DoctrineBundle/views";i:1;b:0;}}i:178;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":127:{a:2:{i:0;s:100:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/Resources/views";i:1;b:1;}}i:179;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/SensioFrameworkExtraBundle/views";i:1;b:0;}}i:180;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":132:{a:2:{i:0;s:105:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/views";i:1;b:0;}}i:181;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":108:{a:2:{i:0;s:82:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/AppBundle/views";i:1;b:0;}}i:182;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":108:{a:2:{i:0;s:82:"/Users/senaria/Projects/test-update-doctrine-command/src/AppBundle/Resources/views";i:1;b:0;}}i:183;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":110:{a:2:{i:0;s:84:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/DebugBundle/views";i:1;b:0;}}i:184;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":149:{a:2:{i:0;s:122:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views";i:1;b:1;}}i:185;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":116:{a:2:{i:0;s:90:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/WebProfilerBundle/views";i:1;b:0;}}i:186;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":155:{a:2:{i:0;s:128:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views";i:1;b:1;}}i:187;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":123:{a:2:{i:0;s:97:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/SensioDistributionBundle/views";i:1;b:0;}}i:188;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":129:{a:2:{i:0;s:102:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle/Resources/views";i:1;b:0;}}i:189;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":120:{a:2:{i:0;s:94:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/SensioGeneratorBundle/views";i:1;b:0;}}i:190;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":125:{a:2:{i:0;s:99:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/generator-bundle/Resources/views";i:1;b:0;}}i:191;C:55:"Symfony\Component\Config\Resource\FileExistenceResource":98:{a:2:{i:0;s:72:"/Users/senaria/Projects/test-update-doctrine-command/app/Resources/views";i:1;b:1;}}i:192;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/MonologExtension.php";}i:195;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/DependencyInjection/Configuration.php";}i:196;C:46:"Symfony\Component\Config\Resource\FileResource":120:{s:111:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/Resources/config/monolog.xml";}i:197;C:46:"Symfony\Component\Config\Resource\FileResource":140:{s:131:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/DependencyInjection/SwiftmailerExtension.php";}i:200;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/Resources/config/swiftmailer.xml";}i:201;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/DependencyInjection/DoctrineExtension.php";}i:202;C:46:"Symfony\Component\Config\Resource\FileResource":162:{s:153:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php";}i:205;C:46:"Symfony\Component\Config\Resource\FileResource":129:{s:120:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-cache-bundle/Resources/config/services.xml";}i:206;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/Resources/config/dbal.xml";}i:207;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/Resources/config/orm.xml";}i:208;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config";}i:209;C:46:"Symfony\Component\Config\Resource\FileResource":119:{s:110:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle";}i:210;C:46:"Symfony\Component\Config\Resource\FileResource":135:{s:126:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/config";}i:211;C:46:"Symfony\Component\Config\Resource\FileResource":118:{s:109:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle";}i:212;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/config";}i:213;C:46:"Symfony\Component\Config\Resource\FileResource":114:{s:105:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle";}i:214;C:46:"Symfony\Component\Config\Resource\FileResource":107:{s:99:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle/Resources/config";}i:215;C:46:"Symfony\Component\Config\Resource\FileResource":90:{s:82:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/monolog-bundle";}i:216;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/Resources/config";}i:217;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle";}i:218;C:46:"Symfony\Component\Config\Resource\FileResource":110:{s:101:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/Resources/config";}i:219;C:46:"Symfony\Component\Config\Resource\FileResource":92:{s:84:"/Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle";}i:220;C:46:"Symfony\Component\Config\Resource\FileResource":115:{s:106:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config";}i:221;C:46:"Symfony\Component\Config\Resource\FileResource":97:{s:89:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle";}i:222;C:46:"Symfony\Component\Config\Resource\FileResource":74:{s:66:"/Users/senaria/Projects/test-update-doctrine-command/src/AppBundle";}i:223;C:46:"Symfony\Component\Config\Resource\FileResource":132:{s:123:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config";}i:224;C:46:"Symfony\Component\Config\Resource\FileResource":115:{s:106:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle";}i:225;C:46:"Symfony\Component\Config\Resource\FileResource":138:{s:129:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config";}i:226;C:46:"Symfony\Component\Config\Resource\FileResource":121:{s:112:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle";}i:227;C:46:"Symfony\Component\Config\Resource\FileResource":112:{s:103:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle/Resources/config";}i:228;C:46:"Symfony\Component\Config\Resource\FileResource":94:{s:86:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle";}i:229;C:46:"Symfony\Component\Config\Resource\FileResource":101:{s:93:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/generator-bundle/Resources";}i:230;C:46:"Symfony\Component\Config\Resource\FileResource":91:{s:83:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/generator-bundle";}i:231;C:46:"Symfony\Component\Config\Resource\FileResource":152:{s:143:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/DependencyInjection/SensioFrameworkExtraExtension.php";}i:234;C:46:"Symfony\Component\Config\Resource\FileResource":136:{s:127:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/DependencyInjection/Configuration.php";}i:235;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/services.xml";}i:236;C:46:"Symfony\Component\Config\Resource\FileResource":131:{s:122:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/annotations.xml";}i:237;C:46:"Symfony\Component\Config\Resource\FileResource":127:{s:118:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/routing.xml";}i:238;C:46:"Symfony\Component\Config\Resource\FileResource":130:{s:121:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/converters.xml";}i:239;C:46:"Symfony\Component\Config\Resource\FileResource":124:{s:115:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/view.xml";}i:240;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/cache.xml";}i:241;C:46:"Symfony\Component\Config\Resource\FileResource":128:{s:119:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/framework-extra-bundle/Resources/config/security.xml";}i:242;C:46:"Symfony\Component\Config\Resource\FileResource":154:{s:145:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/DependencyInjection/DebugExtension.php";}i:245;C:46:"Symfony\Component\Config\Resource\FileResource":145:{s:136:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/config/services.xml";}i:246;C:46:"Symfony\Component\Config\Resource\FileResource":166:{s:157:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php";}i:249;C:46:"Symfony\Component\Config\Resource\FileResource":159:{s:150:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/Configuration.php";}i:250;C:46:"Symfony\Component\Config\Resource\FileResource":151:{s:142:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/profiler.xml";}i:251;C:46:"Symfony\Component\Config\Resource\FileResource":150:{s:141:"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/config/toolbar.xml";}i:252;C:46:"Symfony\Component\Config\Resource\FileResource":147:{s:138:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle/DependencyInjection/SensioDistributionExtension.php";}i:255;C:46:"Symfony\Component\Config\Resource\FileResource":125:{s:116:"/Users/senaria/Projects/test-update-doctrine-command/vendor/sensio/distribution-bundle/Resources/config/security.xml";}}
\ No newline at end of file
diff --git a/var/cache/dev/appDevDebugProjectContainer.xml b/var/cache/dev/appDevDebugProjectContainer.xml
new file mode 100644
index 0000000..0126e6c
--- /dev/null
+++ b/var/cache/dev/appDevDebugProjectContainer.xml
@@ -0,0 +1,2497 @@
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app
+ dev
+ true
+ app
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev
+ /Users/senaria/Projects/test-update-doctrine-command/var/logs
+
+ Symfony\Bundle\FrameworkBundle\FrameworkBundle
+ Symfony\Bundle\SecurityBundle\SecurityBundle
+ Symfony\Bundle\TwigBundle\TwigBundle
+ Symfony\Bundle\MonologBundle\MonologBundle
+ Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle
+ Doctrine\Bundle\DoctrineBundle\DoctrineBundle
+ Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle
+ AppBundle\AppBundle
+ Symfony\Bundle\DebugBundle\DebugBundle
+ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle
+ Sensio\Bundle\DistributionBundle\SensioDistributionBundle
+ Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle
+
+ UTF-8
+ appDevDebugProjectContainer
+ 127.0.0.1
+ 3306
+ symfony
+ root
+ yolo
+ smtp
+ 127.0.0.1
+ null
+ null
+ a958d119a837605337f0224ff71592384a432e2f
+ en
+ null
+ /_fragment
+ a958d119a837605337f0224ff71592384a432e2f
+ true
+
+
+ en
+ _sf2_meta
+
+ true
+ 1
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/../var/sessions/dev
+ 0
+ true
+ _token
+ null
+ null
+
+ twig
+
+
+ validators
+ false
+ false
+ file:/Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/profiler
+ Symfony\Component\Routing\Generator\UrlGenerator
+ Symfony\Component\Routing\Generator\UrlGenerator
+ Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper
+ Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher
+ Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher
+ Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper
+ appDevUrlMatcher
+ appDevUrlGenerator
+ localhost
+ http
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/config/routing_dev.yml
+ appDev
+ 80
+ 443
+ -1
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/appDevDebugProjectContainer.xml
+ Symfony\Component\Security\Core\Authentication\Token\AnonymousToken
+ Symfony\Component\Security\Core\Authentication\Token\RememberMeToken
+
+ null
+ true
+ migrate
+ false
+ true
+ twig.controller.exception:showAction
+
+ form_div_layout.html.twig
+
+ Symfony\Bridge\Monolog\Logger
+ Gelf\MessagePublisher
+ Gelf\Publisher
+ Monolog\Handler\StreamHandler
+ Symfony\Bridge\Monolog\Handler\ConsoleHandler
+ Monolog\Handler\GroupHandler
+ Monolog\Handler\BufferHandler
+ Monolog\Handler\RotatingFileHandler
+ Monolog\Handler\SyslogHandler
+ Monolog\Handler\SyslogUdpHandler
+ Monolog\Handler\NullHandler
+ Monolog\Handler\TestHandler
+ Monolog\Handler\GelfHandler
+ Monolog\Handler\RollbarHandler
+ Monolog\Handler\FlowdockHandler
+ Monolog\Handler\BrowserConsoleHandler
+ Symfony\Bridge\Monolog\Handler\FirePHPHandler
+ Symfony\Bridge\Monolog\Handler\ChromePhpHandler
+ Symfony\Bridge\Monolog\Handler\DebugHandler
+ Symfony\Bridge\Monolog\Handler\SwiftMailerHandler
+ Monolog\Handler\NativeMailerHandler
+ Monolog\Handler\SocketHandler
+ Monolog\Handler\PushoverHandler
+ Monolog\Handler\RavenHandler
+ Monolog\Handler\NewRelicHandler
+ Monolog\Handler\HipChatHandler
+ Monolog\Handler\SlackHandler
+ Monolog\Handler\CubeHandler
+ Monolog\Handler\AmqpHandler
+ Monolog\Handler\ErrorLogHandler
+ Monolog\Handler\LogglyHandler
+ Monolog\Handler\LogEntriesHandler
+ Monolog\Handler\WhatFailureGroupHandler
+ Symfony\Bundle\MonologBundle\NotFoundActivationStrategy
+ Monolog\Handler\FingersCrossedHandler
+ Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy
+ Monolog\Handler\FilterHandler
+ Monolog\Handler\MongoDBHandler
+ MongoClient
+ Monolog\Handler\ElasticSearchHandler
+ Elastica\Client
+
+
+
+ exclusive
+
+ event
+ doctrine
+
+
+
+ exclusive
+
+ event
+
+
+
+ Swift_Mailer
+ Swift_Transport_SendmailTransport
+ Swift_Transport_MailTransport
+ Swift_Transport_FailoverTransport
+ Swift_Plugins_RedirectingPlugin
+ Swift_Plugins_ImpersonatePlugin
+ Swift_Plugins_MessageLogger
+ Swift_Plugins_AntiFloodPlugin
+ Swift_Transport_EsmtpTransport
+ Swift_Plugins_BlackholePlugin
+ Swift_FileSpool
+ Swift_MemorySpool
+ Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener
+ Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector
+ smtp
+ true
+ null
+ 25
+ 127.0.0.1
+ null
+ null
+ null
+ 30
+ null
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/swiftmailer/spool/default
+ true
+ null
+ null
+ true
+ true
+ null
+
+ swiftmailer.mailer.default
+
+ default
+ Doctrine\Common\Cache\ApcCache
+ Doctrine\Common\Cache\ArrayCache
+ Doctrine\Common\Cache\ChainCache
+ Doctrine\Common\Cache\CouchbaseCache
+ Couchbase
+ localhost:8091
+ Doctrine\Common\Cache\FilesystemCache
+ Doctrine\Common\Cache\PhpFileCache
+ Doctrine\Common\Cache\MemcacheCache
+ Memcache
+ localhost
+ 11211
+ Doctrine\Common\Cache\MemcachedCache
+ Memcached
+ localhost
+ 11211
+ Doctrine\Common\Cache\MongoDBCache
+ MongoCollection
+ MongoClient
+ localhost:27017
+ Doctrine\Common\Cache\RedisCache
+ Redis
+ localhost
+ 6379
+ Doctrine\Common\Cache\RiakCache
+ Riak\Bucket
+ Riak\Connection
+ Riak\BucketPropertyList
+ localhost
+ 8087
+ Doctrine\Common\Cache\SQLite3Cache
+ SQLite3
+ Doctrine\Common\Cache\VoidCache
+ Doctrine\Common\Cache\WinCacheCache
+ Doctrine\Common\Cache\XcacheCache
+ Doctrine\Common\Cache\ZendDataCache
+ Doctrine\Bundle\DoctrineCacheBundle\Acl\Model\AclCache
+ Doctrine\DBAL\Logging\LoggerChain
+ Doctrine\DBAL\Logging\DebugStack
+ Symfony\Bridge\Doctrine\Logger\DbalLogger
+ Doctrine\DBAL\Configuration
+ Doctrine\Bundle\DoctrineBundle\DataCollector\DoctrineDataCollector
+ Symfony\Bridge\Doctrine\ContainerAwareEventManager
+ Doctrine\Bundle\DoctrineBundle\ConnectionFactory
+ Doctrine\DBAL\Event\Listeners\MysqlSessionInit
+ Doctrine\DBAL\Event\Listeners\OracleSessionInit
+ Doctrine\Bundle\DoctrineBundle\Registry
+
+ doctrine.orm.default_entity_manager
+
+ default
+
+
+ doctrine.dbal.default_connection
+
+ default
+ Doctrine\ORM\Configuration
+ Doctrine\ORM\EntityManager
+ Doctrine\Bundle\DoctrineBundle\ManagerConfigurator
+ Doctrine\Common\Cache\ArrayCache
+ Doctrine\Common\Cache\ApcCache
+ Doctrine\Common\Cache\MemcacheCache
+ localhost
+ 11211
+ Memcache
+ Doctrine\Common\Cache\MemcachedCache
+ localhost
+ 11211
+ Memcached
+ Doctrine\Common\Cache\RedisCache
+ localhost
+ 6379
+ Redis
+ Doctrine\Common\Cache\XcacheCache
+ Doctrine\Common\Cache\WinCacheCache
+ Doctrine\Common\Cache\ZendDataCache
+ Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain
+ Doctrine\ORM\Mapping\Driver\AnnotationDriver
+ Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver
+ Doctrine\ORM\Mapping\Driver\SimplifiedYamlDriver
+ Doctrine\ORM\Mapping\Driver\PHPDriver
+ Doctrine\ORM\Mapping\Driver\StaticPHPDriver
+ Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer
+ Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser
+ Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator
+ Symfony\Bridge\Doctrine\Validator\DoctrineInitializer
+ Symfony\Bridge\Doctrine\Security\User\EntityUserProvider
+ Doctrine\ORM\Tools\ResolveTargetEntityListener
+ Doctrine\ORM\Tools\AttachEntityListenersListener
+ Doctrine\ORM\Mapping\DefaultNamingStrategy
+ Doctrine\ORM\Mapping\UnderscoreNamingStrategy
+ Doctrine\ORM\Mapping\DefaultQuoteStrategy
+ Doctrine\ORM\Mapping\AnsiQuoteStrategy
+ Doctrine\ORM\Mapping\DefaultEntityListenerResolver
+ Doctrine\ORM\Cache\DefaultCacheFactory
+ Doctrine\ORM\Cache\Region\DefaultRegion
+ Doctrine\ORM\Cache\Region\FileLockRegion
+ Doctrine\ORM\Cache\Logging\CacheLoggerChain
+ Doctrine\ORM\Cache\Logging\StatisticsCacheLogger
+ Doctrine\ORM\Cache\CacheConfiguration
+ Doctrine\ORM\Cache\RegionsConfiguration
+ true
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/doctrine/orm/Proxies
+ Proxies
+ Sensio\Bundle\FrameworkExtraBundle\Templating\TemplateGuesser
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener
+ Symfony\Component\Routing\Loader\AnnotationDirectoryLoader
+ Symfony\Component\Routing\Loader\AnnotationFileLoader
+ Sensio\Bundle\FrameworkExtraBundle\Routing\AnnotatedRouteControllerLoader
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener
+ Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\ParamConverterManager
+ Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter
+ Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DateTimeParamConverter
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener
+ bottom
+ false
+ 2
+
+
+ request
+ @WebProfiler/Collector/request.html.twig
+
+
+ time
+ @WebProfiler/Collector/time.html.twig
+
+
+ memory
+ @WebProfiler/Collector/memory.html.twig
+
+
+ ajax
+ @WebProfiler/Collector/ajax.html.twig
+
+
+ form
+ @WebProfiler/Collector/form.html.twig
+
+
+ exception
+ @WebProfiler/Collector/exception.html.twig
+
+
+ logger
+ @WebProfiler/Collector/logger.html.twig
+
+
+ events
+ @WebProfiler/Collector/events.html.twig
+
+
+ router
+ @WebProfiler/Collector/router.html.twig
+
+
+ security
+ @Security/Collector/security.html.twig
+
+
+ twig
+ @WebProfiler/Collector/twig.html.twig
+
+
+ db
+ @Doctrine/Collector/db.html.twig
+
+
+ swiftmailer
+ @Swiftmailer/Collector/swiftmailer.html.twig
+
+
+ dump
+ @Debug/Profiler/dump.html.twig
+
+
+ config
+ @WebProfiler/Collector/config.html.twig
+
+
+
+ sensio_distribution.security_checker.command
+
+
+
+
+
+
+
+
+
+ UTF-8
+
+
+
+
+
+
+
+ en
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/Resources
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/Resources
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/Resources
+
+
+ a958d119a837605337f0224ff71592384a432e2f
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ inline
+ fragment.renderer.inline
+
+
+ hinclude
+ fragment.renderer.hinclude
+
+
+ hinclude
+ fragment.renderer.hinclude
+
+
+ esi
+ fragment.renderer.esi
+
+
+ ssi
+ fragment.renderer.ssi
+
+
+
+
+
+
+
+ /_fragment
+
+
+
+
+
+
+
+ null
+
+ /_fragment
+
+
+
+
+ null
+
+
+
+ /_fragment
+
+
+
+
+ null
+
+
+
+ /_fragment
+
+
+
+
+
+
+
+ php
+
+
+ yml
+
+
+ xlf
+ xliff
+
+
+ po
+
+
+ mo
+
+
+ ts
+
+
+ csv
+
+
+ res
+
+
+ dat
+
+
+ ini
+
+
+ json
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/translations
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ php
+
+
+
+ yml
+
+
+
+ xlf
+
+
+
+ xliff
+
+
+
+ po
+
+
+
+ mo
+
+
+
+ ts
+
+
+
+ csv
+
+
+
+ res
+
+
+
+ dat
+
+
+
+ ini
+
+
+
+ json
+
+
+
+
+
+
+ php
+
+
+
+ xlf
+
+
+
+ po
+
+
+
+ mo
+
+
+
+ yml
+
+
+
+ ts
+
+
+
+ csv
+
+
+
+ ini
+
+
+
+ json
+
+
+
+ res
+
+
+
+
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+ _sf2_meta
+ 0
+
+
+
+ true
+ 1
+
+ null
+
+
+
+ null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ form.type.form
+ form.type.birthday
+ form.type.checkbox
+ form.type.choice
+ form.type.collection
+ form.type.country
+ form.type.date
+ form.type.datetime
+ form.type.email
+ form.type.file
+ form.type.hidden
+ form.type.integer
+ form.type.language
+ form.type.locale
+ form.type.money
+ form.type.number
+ form.type.password
+ form.type.percent
+ form.type.radio
+ form.type.range
+ form.type.repeated
+ form.type.search
+ form.type.textarea
+ form.type.text
+ form.type.time
+ form.type.timezone
+ form.type.url
+ form.type.button
+ form.type.submit
+ form.type.reset
+ form.type.currency
+ form.type.entity
+
+
+
+ form.type_extension.form.http_foundation
+ form.type_extension.form.validator
+ form.type_extension.csrf
+ form.type_extension.form.data_collector
+
+
+ form.type_extension.repeated.validator
+
+
+ form.type_extension.submit.validator
+
+
+
+ form.type_guesser.validator
+ form.type_guesser.doctrine
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ _token
+
+ validators
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev
+
+
+
+
+
+
+
+
+
+
+ validator.expression
+ validator.email
+ security.validator.user_password
+ doctrine.orm.validator.unique
+
+
+
+
+
+
+
+
+ validators
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Component/Form/Resources/config/validation.xml
+
+
+
+
+
+
+ loadValidatorMetadata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+ /_fragment
+
+
+
+
+
+ file:/Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/profiler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+ false
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GET
+ localhost
+ http
+ 80
+ 443
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+
+ null
+ null
+ true
+ null
+
+
+
+
+
+
+
+
+
+
+
+
+ kernel.controller
+
+ data_collector.router
+ onKernelController
+
+ 0
+
+
+ response_listener
+ Symfony\Component\HttpKernel\EventListener\ResponseListener
+
+
+ streamed_response_listener
+ Symfony\Component\HttpKernel\EventListener\StreamedResponseListener
+
+
+ locale_listener
+ Symfony\Component\HttpKernel\EventListener\LocaleListener
+
+
+ translator_listener
+ Symfony\Component\HttpKernel\EventListener\TranslatorListener
+
+
+ session_listener
+ Symfony\Bundle\FrameworkBundle\EventListener\SessionListener
+
+
+ session.save_listener
+ Symfony\Component\HttpKernel\EventListener\SaveSessionListener
+
+
+ fragment.listener
+ Symfony\Component\HttpKernel\EventListener\FragmentListener
+
+
+ profiler_listener
+ Symfony\Component\HttpKernel\EventListener\ProfilerListener
+
+
+ data_collector.request
+ Symfony\Component\HttpKernel\DataCollector\RequestDataCollector
+
+
+ router_listener
+ Symfony\Component\HttpKernel\EventListener\RouterListener
+
+
+ debug.debug_handlers_listener
+ Symfony\Component\HttpKernel\EventListener\DebugHandlersListener
+
+
+ security.firewall
+ Symfony\Component\Security\Http\Firewall
+
+
+ security.rememberme.response_listener
+ Symfony\Component\Security\Http\RememberMe\ResponseListener
+
+
+ twig.exception_listener
+ Symfony\Component\HttpKernel\EventListener\ExceptionListener
+
+
+ monolog.handler.console
+ Symfony\Bridge\Monolog\Handler\ConsoleHandler
+
+
+ swiftmailer.email_sender.listener
+ Symfony\Bundle\SwiftmailerBundle\EventListener\EmailSenderListener
+
+
+ sensio_framework_extra.controller.listener
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\ControllerListener
+
+
+ sensio_framework_extra.converter.listener
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\ParamConverterListener
+
+
+ sensio_framework_extra.view.listener
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\TemplateListener
+
+
+ sensio_framework_extra.cache.listener
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\HttpCacheListener
+
+
+ sensio_framework_extra.security.listener
+ Sensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListener
+
+
+ debug.dump_listener
+ Symfony\Component\HttpKernel\EventListener\DumpListener
+
+
+ web_profiler.debug_toolbar
+ Symfony\Bundle\WebProfilerBundle\EventListener\WebDebugToolbarListener
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+ 56a782448eafa8.89273161
+
+
+
+ true
+
+
+
+
+
+ Symfony\Component\Security\Core\Authentication\Token\AnonymousToken
+ Symfony\Component\Security\Core\Authentication\Token\RememberMeToken
+
+
+
+
+
+
+ affirmative
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ^/(_(profiler|wdt)|css|images|js)/
+
+
+ null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+
+
+
+
+
+
+
+
+
+
+
+ 80
+ 443
+
+
+
+
+
+
+
+
+
+
+
+
+
+ main
+
+
+
+
+
+
+
+ 56a782448eafa8.89273161
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ main
+ null
+ null
+ null
+
+ false
+
+
+
+
+
+
+ true
+ true
+ twig.controller.exception:showAction
+
+ form_div_layout.html.twig
+
+ filename
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/twig
+ UTF-8
+
+
+ F j, Y H:i
+ %d days
+ null
+
+
+ 0
+ .
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+ /Users/senaria/Projects/test-update-doctrine-command/app
+ UTF-8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ form_div_layout.html.twig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ app
+
+
+
+ dev
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ F j, Y H:i
+ %d days
+ null
+ 0
+ .
+ ,
+
+
+
+
+
+
+
+
+ twig.controller.exception:showAction
+
+
+
+
+ true
+
+
+
+ twig.controller.exception:showAction
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/logs/dev.log
+ 100
+ true
+ null
+
+
+
+ null
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ doctrine.dbal.default_connection
+
+
+ doctrine.orm.default_entity_manager
+
+ default
+ default
+
+
+
+
+ pdo_mysql
+ 127.0.0.1
+ 3306
+ symfony
+ root
+ yolo
+ UTF8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ loadClassMetadata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142
+
+
+
+
+ sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142
+
+
+
+
+ sf2orm_default_15a331a5c940fc1fc66d9a8757c4c571ce907e1d260fc696d5250e7afd012142
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AppBundle\Entity
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/src/AppBundle/Entity
+
+
+
+ AppBundle\Entity
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/doctrine/orm/Proxies
+
+
+ Proxies
+
+
+ true
+
+
+ Doctrine\ORM\Mapping\ClassMetadataFactory
+
+
+ Doctrine\ORM\EntityRepository
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+ UTF-8
+
+ null
+
+
+
+
+
+
+
+
+ 2500
+
+
+ -1
+
+
+
+ null
+ UTF-8
+
+
+
+
+
+
+
+ request
+ @WebProfiler/Collector/request.html.twig
+
+
+ time
+ @WebProfiler/Collector/time.html.twig
+
+
+ memory
+ @WebProfiler/Collector/memory.html.twig
+
+
+ ajax
+ @WebProfiler/Collector/ajax.html.twig
+
+
+ form
+ @WebProfiler/Collector/form.html.twig
+
+
+ exception
+ @WebProfiler/Collector/exception.html.twig
+
+
+ logger
+ @WebProfiler/Collector/logger.html.twig
+
+
+ events
+ @WebProfiler/Collector/events.html.twig
+
+
+ router
+ @WebProfiler/Collector/router.html.twig
+
+
+ security
+ @Security/Collector/security.html.twig
+
+
+ twig
+ @WebProfiler/Collector/twig.html.twig
+
+
+ db
+ @Doctrine/Collector/db.html.twig
+
+
+ swiftmailer
+ @Swiftmailer/Collector/swiftmailer.html.twig
+
+
+ dump
+ @Debug/Profiler/dump.html.twig
+
+
+ config
+ @WebProfiler/Collector/config.html.twig
+
+
+ bottom
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ false
+ 2
+ bottom
+
+ ^/(app(_[\w]+)?\.php/)?_wdt
+
+
+
+
+
+
+
+ request
+
+
+
+
+
+
+
+
+
+
+
+ translation
+
+
+
+
+
+
+
+
+
+
+
+ templating
+
+
+
+
+
+
+
+
+
+
+
+ profiler
+
+
+
+
+
+
+
+
+
+
+
+ router
+
+
+
+
+
+
+
+
+
+
+
+ php
+
+
+
+
+
+
+
+
+
+
+
+ event
+
+
+
+
+
+ security
+
+
+
+
+
+
+
+
+
+
+
+ doctrine
+
+
+
+
+
+
+
+
+ 100
+ true
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/sessions
+ MOCKSESSID
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/config/routing_dev.yml
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev
+ true
+ Symfony\Component\Routing\Generator\UrlGenerator
+ Symfony\Component\Routing\Generator\UrlGenerator
+ Symfony\Component\Routing\Generator\Dumper\PhpGeneratorDumper
+ appDevUrlGenerator
+ Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher
+ Symfony\Bundle\FrameworkBundle\Routing\RedirectableUrlMatcher
+ Symfony\Component\Routing\Matcher\Dumper\PhpMatcherDumper
+ appDevUrlMatcher
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/var/cache/dev/annotations
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views
+ Framework
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/Resources/views
+ Security
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views
+ Twig
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/swiftmailer-bundle/Resources/views
+ Swiftmailer
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/doctrine/doctrine-bundle/Resources/views
+ Doctrine
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/DebugBundle/Resources/views
+ Debug
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views
+ WebProfiler
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/app/Resources/views
+
+
+ /Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form
+
+
+
+ app
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ null
+
+
+ null
+
+
+ null
+
+
+
+
+
+
+ 127.0.0.1
+
+
+ 25
+
+
+ null
+
+
+ 30
+
+
+ null
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/var/cache/dev/appDevDebugProjectContainerCompiler.log b/var/cache/dev/appDevDebugProjectContainerCompiler.log
new file mode 100644
index 0000000..4bdccfe
--- /dev/null
+++ b/var/cache/dev/appDevDebugProjectContainerCompiler.log
@@ -0,0 +1,379 @@
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "assets._default_package" (parent: assets.path_package).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.form" (parent: security.authentication.listener.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.simple_form" (parent: security.authentication.listener.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.persistent" (parent: security.authentication.rememberme.services.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.rememberme.services.simplehash" (parent: security.authentication.rememberme.services.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.user.provider.concrete.in_memory" (parent: security.user.provider.in_memory).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.dev" (parent: security.firewall.context).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.context_listener.0" (parent: security.context_listener).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.listener.anonymous.main" (parent: security.authentication.listener.anonymous).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.authentication.provider.anonymous.main" (parent: security.authentication.provider.anonymous).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.exception_listener.main" (parent: security.exception_listener).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "security.firewall.map.context.main" (parent: security.firewall.context).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.eventdispatcher" (parent: swiftmailer.transport.eventdispatcher.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.authhandler" (parent: swiftmailer.transport.authhandler.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.buffer" (parent: swiftmailer.transport.buffer.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.smtp" (parent: swiftmailer.transport.smtp.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default" (parent: swiftmailer.mailer.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.spool.memory" (parent: swiftmailer.spool.memory.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.transport.spool" (parent: swiftmailer.transport.spool.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "swiftmailer.mailer.default.plugin.messagelogger" (parent: swiftmailer.plugin.messagelogger.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.configuration" (parent: doctrine.dbal.connection.configuration).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.profiling.default" (parent: doctrine.dbal.logger.profiling).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.logger.chain.default" (parent: doctrine.dbal.logger.chain).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection.event_manager" (parent: doctrine.dbal.connection.event_manager).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.dbal.default_connection" (parent: doctrine.dbal.connection).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_configuration" (parent: doctrine.orm.configuration).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_metadata_cache" (parent: doctrine_cache.abstract.array).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_result_cache" (parent: doctrine_cache.abstract.array).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine_cache.providers.doctrine.orm.default_query_cache" (parent: doctrine_cache.abstract.array).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_manager_configurator" (parent: doctrine.orm.manager_configurator.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "doctrine.orm.default_entity_manager" (parent: doctrine.orm.entity_manager.abstract).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.request" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.translation" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.templating" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.profiler" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.router" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.php" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.event" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.security" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\ResolveDefinitionTemplatesPass: Resolving inheritance for "monolog.logger.doctrine" (parent: monolog.logger_prototype).
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "form.property_accessor"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "validator.mapping.class_metadata_factory"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.dbal.event_manager"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.metadata.annotation_reader"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "doctrine.orm.default_entity_manager.event_manager"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemovePrivateAliasesPass: Removed service "sensio_framework_extra.security.expression_language"; reason: private alias.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.path_package"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.url_package"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "assets.static_version_strategy"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.firewall.context"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.in_memory.user"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.ldap"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.user.provider.chain"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout_listener"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.handler.cookie_clearing"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.logout.success_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.form_entry_point"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_success_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.success_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.custom_failure_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.failure_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.form"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_form"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.simple_success_failure_handler"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.simple_preauth"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.x509"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.remote_user"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.basic"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.digest"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.dao"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.ldap_bind"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.simple"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.pre_authenticated"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.exception_listener"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.switchuser_listener"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.rememberme"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.rememberme"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.persistent"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.rememberme.services.simplehash"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.provider.guard"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "security.authentication.listener.guard"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "monolog.logger_prototype"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.mailer.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.sendmail.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.mail.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.null.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.buffer.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.authhandler.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.eventdispatcher.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.redirecting.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.antiflood.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.impersonate.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.plugin.messagelogger.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.smtp.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.transport.spool.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.file.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "swiftmailer.spool.memory.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.apc"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.array"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.chain"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.couchbase"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.file_system"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.php_file"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcache"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.memcached"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.mongodb"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.redis"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.riak"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.sqlite3"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.void"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.wincache"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.xcache"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine_cache.abstract.zenddata"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.chain"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.logger.profiling"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.event_manager"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.dbal.connection.configuration"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.configuration"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.entity_manager.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.manager_configurator.abstract"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\RemoveAbstractDefinitionsPass: Removed service "doctrine.orm.security.user.provider"; reason: abstract.
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "locale_listener" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router.cache_warmer" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "router_listener" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.logout_url_generator" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.http_utils" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig.extension.routing" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.profiler" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.controller.router" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "web_profiler.debug_toolbar" previously pointing to "router.default" to "router".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "validator.builder" previously pointing to "annotations.cached_reader" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "doctrine.orm.default_annotation_metadata_driver" previously pointing to "annotations.cached_reader" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.controller.listener" previously pointing to "annotations.cached_reader" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "sensio_framework_extra.routing.loader.annot_class" previously pointing to "annotations.cached_reader" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.user_password_encoder.generic" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "security.validator.user_password" previously pointing to "security.encoder_factory.generic" to "security.encoder_factory".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "twig" previously pointing to "twig.loader.filesystem" to "twig.loader".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.email_sender.listener" previously pointing to "monolog.logger" to "logger".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default" previously pointing to "swiftmailer.mailer.default.transport.spool" to "swiftmailer.mailer.default.transport".
+Symfony\Component\DependencyInjection\Compiler\ReplaceAliasByActualDefinitionPass: Changed reference of service "swiftmailer.mailer.default.transport" previously pointing to "swiftmailer.mailer.default.spool.memory" to "swiftmailer.mailer.default.spool".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.cache_warmer.template_paths" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "translation.warmer" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "router.cache_warmer" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.cache_warmer" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_cache_warmer" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.proxy_cache_warmer" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "551040e836ac8aab5035db31d3e5f1b399565fb00ccee2fdb1a6889434d7d5c7_1" to "config_cache_factory".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.attribute_bag" to "session".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "session.flash_bag" to "session".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "1c00b65be2826f0b297ae9b62e2db33ab0ffbc4b3a6cf4673e688e199ce115ab_1" to "form.resolved_type_factory".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.extension" to "form.registry".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.type_extension.form.request_handler" to "form.type_extension.form.http_foundation".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "form.server_params" to "form.type_extension.form.request_handler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_generator" to "security.csrf.token_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.csrf.token_storage" to "security.csrf.token_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets._default_package" to "assets.packages".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "validator.validator_factory" to "validator.builder".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "profiler.storage" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.time" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.memory" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.ajax" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.exception" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.logger" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.events" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.security" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.twig" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.doctrine" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.data_collector" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "data_collector.config" to "profiler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.xml" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.yml" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.php" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.directory" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.loader.service" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_dir" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_file" to "routing.resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "routing.resolver" to "routing.loader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "debug.event_dispatcher.parent" to "debug.event_dispatcher".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "controller_resolver" to "debug.controller_resolver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.provider.anonymous.main" to "security.authentication.manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.simple_role_voter" to "security.access.decision_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.expression_voter" to "security.access.decision_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access.authenticated_voter" to "security.access.decision_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.expression_language" to "security.access.expression_voter".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.firewall.map" to "security.firewall".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d" to "security.firewall.map".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.retry_entry_point" to "security.channel_listener".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.http_utils" to "security.exception_listener.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.channel_listener" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.context_listener.0" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.authentication.listener.anonymous.main" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_listener" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.exception_listener.main" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.logout_url" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.security" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.profiler" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.trans" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.assets" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.code" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.routing" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.yaml" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug.stopwatch" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.expression" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpkernel" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.httpfoundation" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.form" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.debug" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.twig.doctrine_extension" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.dump" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.extension.webprofiler" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.app_variable" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.configurator.environment" to "twig".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.template_iterator" to "twig.template_cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.renderer" to "twig.extension.form".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "twig.form.engine" to "twig.form.renderer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_1" to "swiftmailer.mailer.default.transport.authhandler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_2" to "swiftmailer.mailer.default.transport.authhandler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_3" to "swiftmailer.mailer.default.transport.authhandler".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.transport.replacementfactory" to "swiftmailer.mailer.default.transport.buffer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger.chain.default" to "doctrine.dbal.default_connection.configuration".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.logger" to "doctrine.dbal.logger.chain.default".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.configuration" to "doctrine.dbal.default_connection".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.dbal.default_connection.event_manager" to "doctrine.dbal.default_connection".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_metadata_driver" to "doctrine.orm.default_configuration".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.naming_strategy.underscore" to "doctrine.orm.default_configuration".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.quote_strategy.default" to "doctrine.orm.default_configuration".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_annotation_metadata_driver" to "doctrine.orm.default_metadata_driver".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "doctrine.orm.default_configuration" to "doctrine.orm.default_entity_manager".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.security.expression_language.default" to "sensio_framework_extra.security.listener".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.reader" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "annotations.filesystem_cache" to "annotation_reader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.buffer" to "swiftmailer.mailer.default.transport.real".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "swiftmailer.mailer.default.transport.authhandler" to "swiftmailer.mailer.default.transport.real".
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "controller_resolver"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "551040e836ac8aab5035db31d3e5f1b399565fb00ccee2fdb1a6889434d7d5c7_1"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translator.logging"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "translation.warmer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.flash_bag"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.attribute_bag"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.native_file"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "session.handler.write_check"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.extension"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.type_extension.form.request_handler"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "form.server_params"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_generator"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.csrf.token_storage"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_package"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets._default_package"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.engine.delegating"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.cache_warmer.template_paths"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.cache"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.loader.chain"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.mapping.cache.apc"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "validator.validator_factory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "profiler.storage"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.config"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.ajax"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.exception"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.events"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.logger"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.time"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.memory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "1c00b65be2826f0b297ae9b62e2db33ab0ffbc4b3a6cf4673e688e199ce115ab_1"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.resolver"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.xml"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.yml"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.php"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.directory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "routing.loader.service"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "router.cache_warmer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.reader"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "annotations.filesystem_cache"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "debug.event_dispatcher.parent"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.session_strategy"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.expression_language"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.simple_role_voter"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.authenticated_voter"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access.expression_voter"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.firewall.map"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.http_utils"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.retry_entry_point"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.basic_entry_point"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.digest_entry_point"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.channel_listener"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.logout.handler.session"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_listener"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.rememberme.token.provider.in_memory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.logout_url"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.security"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.security"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.request_matcher.5314eeb91110adf24b9b678372bb11bbe00e8858c519c088bfb65f525181ad3bf573fd1d"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.context_listener.0"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.listener.anonymous.main"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.authentication.provider.anonymous.main"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.exception_listener.main"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.app_variable"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.cache_warmer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_iterator"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.template_cache_warmer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.native_filesystem"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.loader.chain"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.profiler"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.twig"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.trans"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.assets"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.code"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.routing"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.yaml"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug.stopwatch"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.expression"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpkernel"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.httpfoundation"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.form"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.debug"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.engine"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.form.renderer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.configurator.environment"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.chrome_php"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.gelf_message"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.html"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.json"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.line"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.loggly"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.normalizer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.scalar"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.wildfire"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "monolog.formatter.logstash"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_3"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_2"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "04c0e291c8f52b7828f2dbfa1d961d160ef6e559cb1a9c45d42f6770da860910_1"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.failover"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.mailinvoker"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.transport.replacementfactory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.data_collector"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.authhandler"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "swiftmailer.mailer.default.transport.buffer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "data_collector.doctrine"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.twig.doctrine_extension"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.configuration"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.logger.chain.default"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.dbal.default_connection.event_manager"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.proxy_cache_warmer"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.listeners.resolve_target_entity"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.default"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.naming_strategy.underscore"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.default"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.quote_strategy.ansi"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_configuration"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_annotation_metadata_driver"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "doctrine.orm.default_metadata_driver"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_dir"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_file"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.security.expression_language.default"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.dump"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "twig.extension.webprofiler"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "templating.finder" to "cache_warmer".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "assets.empty_version_strategy" to "assets.packages".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "sensio_framework_extra.routing.loader.annot_class" to "routing.loader".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.user.provider.concrete.in_memory" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\InlineServiceDefinitionsPass: Inlined service "security.access_map" to "security.firewall.map.context.main".
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "assets.empty_version_strategy"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "templating.finder"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.access_map"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "security.user.provider.concrete.in_memory"; reason: unused.
+Symfony\Component\DependencyInjection\Compiler\RemoveUnusedDefinitionsPass: Removed service "sensio_framework_extra.routing.loader.annot_class"; reason: unused.
\ No newline at end of file
diff --git a/var/cache/dev/classes.map b/var/cache/dev/classes.map
new file mode 100644
index 0000000..f3ee75b
--- /dev/null
+++ b/var/cache/dev/classes.map
@@ -0,0 +1,86 @@
+ 'Symfony\\Bundle\\FrameworkBundle\\EventListener\\SessionListener',
+ 1 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\NativeSessionStorage',
+ 2 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\PhpBridgeSessionStorage',
+ 3 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Handler\\NativeFileSessionHandler',
+ 4 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\AbstractProxy',
+ 5 => 'Symfony\\Component\\HttpFoundation\\Session\\Storage\\Proxy\\SessionHandlerProxy',
+ 6 => 'Symfony\\Component\\HttpFoundation\\Session\\Session',
+ 8 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\GlobalVariables',
+ 9 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateReference',
+ 10 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\TemplateNameParser',
+ 11 => 'Symfony\\Bundle\\FrameworkBundle\\Templating\\Loader\\TemplateLocator',
+ 12 => 'Symfony\\Component\\Routing\\Generator\\UrlGenerator',
+ 13 => 'Symfony\\Component\\Routing\\RequestContext',
+ 14 => 'Symfony\\Component\\Routing\\Router',
+ 15 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\RedirectableUrlMatcher',
+ 16 => 'Symfony\\Bundle\\FrameworkBundle\\Routing\\Router',
+ 17 => 'Symfony\\Component\\Config\\FileLocator',
+ 18 => 'Symfony\\Component\\Debug\\ErrorHandler',
+ 19 => 'Symfony\\Component\\EventDispatcher\\Event',
+ 20 => 'Symfony\\Component\\EventDispatcher\\ContainerAwareEventDispatcher',
+ 21 => 'Symfony\\Component\\HttpKernel\\EventListener\\ResponseListener',
+ 22 => 'Symfony\\Component\\HttpKernel\\EventListener\\RouterListener',
+ 23 => 'Symfony\\Component\\HttpKernel\\Controller\\ControllerResolver',
+ 24 => 'Symfony\\Component\\HttpKernel\\Event\\KernelEvent',
+ 25 => 'Symfony\\Component\\HttpKernel\\Event\\FilterControllerEvent',
+ 26 => 'Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent',
+ 27 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent',
+ 28 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForControllerResultEvent',
+ 29 => 'Symfony\\Component\\HttpKernel\\Event\\GetResponseForExceptionEvent',
+ 30 => 'Symfony\\Component\\HttpKernel\\KernelEvents',
+ 31 => 'Symfony\\Component\\HttpKernel\\Config\\FileLocator',
+ 32 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerNameParser',
+ 33 => 'Symfony\\Bundle\\FrameworkBundle\\Controller\\ControllerResolver',
+ 34 => 'Symfony\\Component\\Security\\Http\\Firewall',
+ 35 => 'Symfony\\Component\\Security\\Core\\User\\UserProviderInterface',
+ 36 => 'Symfony\\Component\\Security\\Core\\Authentication\\AuthenticationProviderManager',
+ 37 => 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorage',
+ 38 => 'Symfony\\Component\\Security\\Core\\Authorization\\AccessDecisionManager',
+ 39 => 'Symfony\\Component\\Security\\Core\\Authorization\\AuthorizationChecker',
+ 40 => 'Symfony\\Component\\Security\\Core\\Authorization\\Voter\\VoterInterface',
+ 41 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallMap',
+ 42 => 'Symfony\\Bundle\\SecurityBundle\\Security\\FirewallContext',
+ 43 => 'Symfony\\Component\\HttpFoundation\\RequestMatcher',
+ 44 => 'Twig_Environment',
+ 45 => 'Twig_Extension',
+ 46 => 'Twig_Extension_Core',
+ 47 => 'Twig_Extension_Escaper',
+ 48 => 'Twig_Extension_Optimizer',
+ 49 => 'Twig_LoaderInterface',
+ 50 => 'Twig_Markup',
+ 51 => 'Twig_Template',
+ 52 => 'Monolog\\Formatter\\FormatterInterface',
+ 53 => 'Monolog\\Formatter\\LineFormatter',
+ 54 => 'Monolog\\Handler\\HandlerInterface',
+ 55 => 'Monolog\\Handler\\AbstractHandler',
+ 56 => 'Monolog\\Handler\\AbstractProcessingHandler',
+ 57 => 'Monolog\\Handler\\StreamHandler',
+ 58 => 'Monolog\\Handler\\FingersCrossedHandler',
+ 59 => 'Monolog\\Handler\\FilterHandler',
+ 60 => 'Monolog\\Handler\\TestHandler',
+ 61 => 'Monolog\\Logger',
+ 62 => 'Symfony\\Bridge\\Monolog\\Logger',
+ 63 => 'Symfony\\Bridge\\Monolog\\Handler\\DebugHandler',
+ 64 => 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface',
+ 65 => 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy',
+ 66 => 'Doctrine\\Common\\Annotations\\DocLexer',
+ 67 => 'Doctrine\\Common\\Annotations\\FileCacheReader',
+ 68 => 'Doctrine\\Common\\Annotations\\PhpParser',
+ 69 => 'Doctrine\\Common\\Annotations\\Reader',
+ 70 => 'Doctrine\\Common\\Lexer',
+ 71 => 'Doctrine\\Common\\Persistence\\ConnectionRegistry',
+ 72 => 'Doctrine\\Common\\Persistence\\Proxy',
+ 73 => 'Doctrine\\Common\\Util\\ClassUtils',
+ 74 => 'Doctrine\\Bundle\\DoctrineBundle\\Registry',
+ 75 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ControllerListener',
+ 76 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\ParamConverterListener',
+ 77 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DateTimeParamConverter',
+ 78 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\DoctrineParamConverter',
+ 79 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterInterface',
+ 80 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Request\\ParamConverter\\ParamConverterManager',
+ 81 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\TemplateListener',
+ 82 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\HttpCacheListener',
+ 83 => 'Sensio\\Bundle\\FrameworkExtraBundle\\EventListener\\SecurityListener',
+ 84 => 'Sensio\\Bundle\\FrameworkExtraBundle\\Configuration\\ConfigurationAnnotation',
+);
\ No newline at end of file
diff --git a/var/logs/.gitkeep b/var/logs/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/var/logs/dev.log b/var/logs/dev.log
new file mode 100644
index 0000000..660c44b
--- /dev/null
+++ b/var/logs/dev.log
@@ -0,0 +1,212 @@
+[2016-01-26 15:30:40] doctrine.DEBUG: CREATE TABLE test_one (id INT AUTO_INCREMENT NOT NULL, wtf INT NOT NULL, INDEX IDX_3115A36417DDF58 (wtf), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB [] []
+[2016-01-26 15:30:40] doctrine.DEBUG: CREATE TABLE test_two (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB [] []
+[2016-01-26 15:30:40] doctrine.DEBUG: ALTER TABLE test_one ADD CONSTRAINT FK_3115A36417DDF58 FOREIGN KEY (wtf) REFERENCES test_two (id) [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:39:07] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:40:40] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:43:28] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:46:36] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:46:56] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:48:28] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:49:10] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:10] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:49] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:50:49] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:50:49] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:49] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:50:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:50:53] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:51:13] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:51:13] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:51:13] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:51:13] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:51:14] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:51:14] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:51:14] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:51:41] php.DEBUG: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"type":2,"file":"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php","line":59,"level":28928} []
+[2016-01-26 15:54:40] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 15:54:40] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:00:00] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:00:00] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:00:01] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:00:01] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:00:01] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:00:01] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:00:01] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:01:26] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:01:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:02:42] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:03:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:34:45] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:34:45] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:34:46] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:34:46] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:34:46] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:34:46] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:34:46] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:35:06] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:35:38] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:35:58] php.DEBUG: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"type":2,"file":"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php","line":59,"level":28928} []
+[2016-01-26 16:36:18] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:36:18] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:36:18] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:18] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:36:19] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:36:19] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:19] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:30] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:36:49] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:40:36] php.DEBUG: fsockopen(): unable to connect to 127.0.0.1:8000 (Connection refused) {"type":2,"file":"/Users/senaria/Projects/test-update-doctrine-command/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/ServerCommand.php","line":59,"level":28928} []
+[2016-01-26 16:50:15] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:50:15] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:52:36] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:53:49] doctrine.DEBUG: CREATE TABLE test_one (id INT AUTO_INCREMENT NOT NULL, test_id INT DEFAULT NULL, INDEX IDX_3115A361E5D0459 (test_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB [] []
+[2016-01-26 16:53:49] doctrine.DEBUG: CREATE TABLE test_two (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB [] []
+[2016-01-26 16:53:49] doctrine.DEBUG: ALTER TABLE test_one ADD CONSTRAINT FK_3115A361E5D0459 FOREIGN KEY (test_id) REFERENCES test_two (id) [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:54:30] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:56:20] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:58:41] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SHOW FULL TABLES WHERE Table_type = 'BASE TABLE' [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_one' [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_one' */ WHERE k.table_name = 'test_one' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_one' AND TABLE_SCHEMA = 'symfony' [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'symfony' AND TABLE_NAME = 'test_two' [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT DISTINCT k.`CONSTRAINT_NAME`, k.`COLUMN_NAME`, k.`REFERENCED_TABLE_NAME`, k.`REFERENCED_COLUMN_NAME` /*!50116 , c.update_rule, c.delete_rule */ FROM information_schema.key_column_usage k /*!50116 INNER JOIN information_schema.referential_constraints c ON c.constraint_name = k.constraint_name AND c.table_name = 'test_two' */ WHERE k.table_name = 'test_two' AND k.table_schema = 'symfony' /*!50116 AND c.constraint_schema = 'symfony' */ AND k.`REFERENCED_COLUMN_NAME` is not NULL [] []
+[2016-01-26 16:58:50] doctrine.DEBUG: SELECT TABLE_NAME AS `Table`, NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, SEQ_IN_INDEX AS Seq_in_index, COLUMN_NAME AS Column_Name, COLLATION AS Collation, CARDINALITY AS Cardinality, SUB_PART AS Sub_Part, PACKED AS Packed, NULLABLE AS `Null`, INDEX_TYPE AS Index_Type, COMMENT AS Comment FROM information_schema.STATISTICS WHERE TABLE_NAME = 'test_two' AND TABLE_SCHEMA = 'symfony' [] []
diff --git a/var/sessions/.gitkeep b/var/sessions/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/vendor/autoload.php b/vendor/autoload.php
new file mode 100644
index 0000000..8fe2e65
--- /dev/null
+++ b/vendor/autoload.php
@@ -0,0 +1,7 @@
+
+ * Jordi Boggiano
+ *
+ * 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 class loader
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ *
+ * $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
+ * @author Jordi Boggiano
+ */
+class ClassLoader
+{
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+
+ private $classMapAuthoritative = false;
+
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
+ }
+
+ return array();
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ 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 array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ 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 array|string $paths The PSR-0 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ 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 array|string $paths The PSR-0 base directories
+ */
+ 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 array|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ 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
+ */
+ 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
+ */
+ 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;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return bool|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+ }
+
+ /**
+ * 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)
+ {
+ // work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative) {
+ return false;
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if ($file === null && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if ($file === null) {
+ // Remember that this class does not exist.
+ return $this->classMap[$class] = false;
+ }
+
+ return $file;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ 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;
+ }
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE
new file mode 100644
index 0000000..c8d57af
--- /dev/null
+++ b/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) 2015 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/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000..2414d2c
--- /dev/null
+++ b/vendor/composer/autoload_classmap.php
@@ -0,0 +1,22 @@
+ $baseDir . '/app/AppCache.php',
+ 'AppKernel' => $baseDir . '/app/AppKernel.php',
+ 'ArithmeticError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
+ 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
+ 'Collator' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Collator.php',
+ 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
+ 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
+ 'IntlDateFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/IntlDateFormatter.php',
+ 'Locale' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/Locale.php',
+ 'NumberFormatter' => $vendorDir . '/symfony/symfony/src/Symfony/Component/Intl/Resources/stubs/NumberFormatter.php',
+ 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
+ 'SqlFormatter' => $vendorDir . '/jdorn/sql-formatter/lib/SqlFormatter.php',
+ 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
+);
diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php
new file mode 100644
index 0000000..d6d06aa
--- /dev/null
+++ b/vendor/composer/autoload_files.php
@@ -0,0 +1,16 @@
+ array($vendorDir . '/twig/twig/lib'),
+ 'SensioLabs\\Security' => array($vendorDir . '/sensiolabs/security-checker'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log'),
+ 'Doctrine\\ORM\\' => array($vendorDir . '/doctrine/orm/lib'),
+ 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/lib'),
+ 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
+ 'Doctrine\\Common\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib'),
+ 'Doctrine\\Common\\Collections\\' => array($vendorDir . '/doctrine/collections/lib'),
+ 'Doctrine\\Common\\Annotations\\' => array($vendorDir . '/doctrine/annotations/lib'),
+);
diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php
new file mode 100644
index 0000000..9528296
--- /dev/null
+++ b/vendor/composer/autoload_psr4.php
@@ -0,0 +1,35 @@
+ array($baseDir . '/tests'),
+ 'Symfony\\Polyfill\\Util\\' => array($vendorDir . '/symfony/polyfill-util'),
+ 'Symfony\\Polyfill\\Php70\\' => array($vendorDir . '/symfony/polyfill-php70'),
+ 'Symfony\\Polyfill\\Php56\\' => array($vendorDir . '/symfony/polyfill-php56'),
+ 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
+ 'Symfony\\Component\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Component'),
+ 'Symfony\\Bundle\\SwiftmailerBundle\\' => array($vendorDir . '/symfony/swiftmailer-bundle'),
+ 'Symfony\\Bundle\\MonologBundle\\' => array($vendorDir . '/symfony/monolog-bundle'),
+ 'Symfony\\Bundle\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bundle'),
+ 'Symfony\\Bridge\\Twig\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Twig'),
+ 'Symfony\\Bridge\\Swiftmailer\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Swiftmailer'),
+ 'Symfony\\Bridge\\ProxyManager\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/ProxyManager'),
+ 'Symfony\\Bridge\\PhpUnit\\' => array($vendorDir . '/symfony/phpunit-bridge'),
+ 'Symfony\\Bridge\\Monolog\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Monolog'),
+ 'Symfony\\Bridge\\Doctrine\\' => array($vendorDir . '/symfony/symfony/src/Symfony/Bridge/Doctrine'),
+ 'Sensio\\Bundle\\GeneratorBundle\\' => array($vendorDir . '/sensio/generator-bundle'),
+ 'Sensio\\Bundle\\FrameworkExtraBundle\\' => array($vendorDir . '/sensio/framework-extra-bundle'),
+ 'Sensio\\Bundle\\DistributionBundle\\' => array($vendorDir . '/sensio/distribution-bundle'),
+ 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
+ 'Incenteev\\ParameterHandler\\' => array($vendorDir . '/incenteev/composer-parameter-handler'),
+ 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
+ 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'),
+ 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/common/lib/Doctrine/Common'),
+ 'Doctrine\\Bundle\\DoctrineCacheBundle\\' => array($vendorDir . '/doctrine/doctrine-cache-bundle'),
+ 'Doctrine\\Bundle\\DoctrineBundle\\' => array($vendorDir . '/doctrine/doctrine-bundle'),
+ '' => array($baseDir . '/src'),
+);
diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php
new file mode 100644
index 0000000..12bc1d4
--- /dev/null
+++ b/vendor/composer/autoload_real.php
@@ -0,0 +1,55 @@
+ $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+
+ $loader->register(true);
+
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ foreach ($includeFiles as $file) {
+ composerRequiredea5e600c850af581d53037a1c45eafa($file);
+ }
+
+ return $loader;
+ }
+}
+
+function composerRequiredea5e600c850af581d53037a1c45eafa($file)
+{
+ require $file;
+}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
new file mode 100644
index 0000000..f361ddc
--- /dev/null
+++ b/vendor/composer/installed.json
@@ -0,0 +1,1991 @@
+[
+ {
+ "name": "doctrine/lexer",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "time": "2014-09-09 13:34:57",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Lexer\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "lexer",
+ "parser"
+ ]
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "v1.2.7",
+ "version_normalized": "1.2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "time": "2015-08-31 12:32:49",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Annotations\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ]
+ },
+ {
+ "name": "twig/twig",
+ "version": "v1.23.1",
+ "version_normalized": "1.23.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+ "reference": "d9b6333ae8dd2c8e3fd256e127548def0bc614c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.7"
+ },
+ "require-dev": {
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "time": "2015-11-05 12:49:06",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.23-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Twig Team",
+ "homepage": "http://twig.sensiolabs.org/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "http://twig.sensiolabs.org",
+ "keywords": [
+ "templating"
+ ]
+ },
+ {
+ "name": "symfony/polyfill-util",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-util.git",
+ "reference": "4271c55cbc0a77b2641f861b978123e46b3da969"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4271c55cbc0a77b2641f861b978123e46b3da969",
+ "reference": "4271c55cbc0a77b2641f861b978123e46b3da969",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "time": "2015-11-04 20:28:58",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Util\\": ""
+ }
+ },
+ "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 utilities for portability of PHP codes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compat",
+ "compatibility",
+ "polyfill",
+ "shim"
+ ]
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "1.1.4",
+ "version_normalized": "1.1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "d762ee5b099a29044603cd4649851e81aa66cb47"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/d762ee5b099a29044603cd4649851e81aa66cb47",
+ "reference": "d762ee5b099a29044603cd4649851e81aa66cb47",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "time": "2015-12-10 14:48:13",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/random.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "pseudorandom",
+ "random"
+ ]
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/7f7f3c9c2b9f17722e0cd64fdb4f957330c53146",
+ "reference": "7f7f3c9c2b9f17722e0cd64fdb4f957330c53146",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0",
+ "php": ">=5.3.3"
+ },
+ "time": "2015-11-04 20:28:58",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ]
+ },
+ {
+ "name": "symfony/polyfill-php56",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php56.git",
+ "reference": "e2e77609a9e2328eb370fbb0e0d8b2000ebb488f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e2e77609a9e2328eb370fbb0e0d8b2000ebb488f",
+ "reference": "e2e77609a9e2328eb370fbb0e0d8b2000ebb488f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-util": "~1.0"
+ },
+ "time": "2015-12-18 15:10:25",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php56\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ]
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/49ff736bd5d41f45240cec77b44967d76e0c3d25",
+ "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "time": "2015-11-20 09:19:13",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ]
+ },
+ {
+ "name": "symfony/symfony",
+ "version": "v3.0.1",
+ "version_normalized": "3.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/symfony.git",
+ "reference": "979d7323716fec847508eac3e62d59b117612a6e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/symfony/zipball/979d7323716fec847508eac3e62d59b117612a6e",
+ "reference": "979d7323716fec847508eac3e62d59b117612a6e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.4",
+ "php": ">=5.5.9",
+ "psr/log": "~1.0",
+ "symfony/polyfill-intl-icu": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php56": "~1.0",
+ "symfony/polyfill-php70": "~1.0",
+ "symfony/polyfill-util": "~1.0",
+ "twig/twig": "~1.23|~2.0"
+ },
+ "conflict": {
+ "phpdocumentor/reflection": "<1.0.7"
+ },
+ "replace": {
+ "symfony/asset": "self.version",
+ "symfony/browser-kit": "self.version",
+ "symfony/class-loader": "self.version",
+ "symfony/config": "self.version",
+ "symfony/console": "self.version",
+ "symfony/css-selector": "self.version",
+ "symfony/debug": "self.version",
+ "symfony/debug-bundle": "self.version",
+ "symfony/dependency-injection": "self.version",
+ "symfony/doctrine-bridge": "self.version",
+ "symfony/dom-crawler": "self.version",
+ "symfony/event-dispatcher": "self.version",
+ "symfony/expression-language": "self.version",
+ "symfony/filesystem": "self.version",
+ "symfony/finder": "self.version",
+ "symfony/form": "self.version",
+ "symfony/framework-bundle": "self.version",
+ "symfony/http-foundation": "self.version",
+ "symfony/http-kernel": "self.version",
+ "symfony/intl": "self.version",
+ "symfony/ldap": "self.version",
+ "symfony/monolog-bridge": "self.version",
+ "symfony/options-resolver": "self.version",
+ "symfony/process": "self.version",
+ "symfony/property-access": "self.version",
+ "symfony/property-info": "self.version",
+ "symfony/proxy-manager-bridge": "self.version",
+ "symfony/routing": "self.version",
+ "symfony/security": "self.version",
+ "symfony/security-bundle": "self.version",
+ "symfony/security-core": "self.version",
+ "symfony/security-csrf": "self.version",
+ "symfony/security-guard": "self.version",
+ "symfony/security-http": "self.version",
+ "symfony/serializer": "self.version",
+ "symfony/stopwatch": "self.version",
+ "symfony/templating": "self.version",
+ "symfony/translation": "self.version",
+ "symfony/twig-bridge": "self.version",
+ "symfony/twig-bundle": "self.version",
+ "symfony/validator": "self.version",
+ "symfony/var-dumper": "self.version",
+ "symfony/web-profiler-bundle": "self.version",
+ "symfony/yaml": "self.version"
+ },
+ "require-dev": {
+ "doctrine/data-fixtures": "1.0.*",
+ "doctrine/dbal": "~2.4",
+ "doctrine/doctrine-bundle": "~1.4",
+ "doctrine/orm": "~2.4,>=2.4.5",
+ "egulias/email-validator": "~1.2",
+ "monolog/monolog": "~1.11",
+ "ocramius/proxy-manager": "~0.4|~1.0",
+ "phpdocumentor/reflection": "^1.0.7",
+ "symfony/security-acl": "~2.8|~3.0"
+ },
+ "time": "2015-12-26 16:49:48",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/",
+ "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/",
+ "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/",
+ "Symfony\\Bridge\\Swiftmailer\\": "src/Symfony/Bridge/Swiftmailer/",
+ "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/",
+ "Symfony\\Bundle\\": "src/Symfony/Bundle/",
+ "Symfony\\Component\\": "src/Symfony/Component/"
+ },
+ "classmap": [
+ "src/Symfony/Component/Intl/Resources/stubs"
+ ],
+ "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": "The Symfony PHP framework",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "framework"
+ ]
+ },
+ {
+ "name": "symfony/polyfill-intl-icu",
+ "version": "v1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-icu.git",
+ "reference": "2deb44160e1c886241c06602b12b98779f728177"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/2deb44160e1c886241c06602b12b98779f728177",
+ "reference": "2deb44160e1c886241c06602b12b98779f728177",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/intl": "~2.3|~3.0"
+ },
+ "time": "2015-11-04 20:28:58",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's ICU-related data and classes",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "icu",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ]
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
+ "shasum": ""
+ },
+ "time": "2012-12-21 11:40:51",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Psr\\Log\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ]
+ },
+ {
+ "name": "doctrine/inflector",
+ "version": "v1.1.0",
+ "version_normalized": "1.1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/inflector.git",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae",
+ "reference": "90b2128806bfde671b6952ab8bea493942c1fdae",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
+ "time": "2015-11-06 14:35:42",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Inflector\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "inflection",
+ "pluralize",
+ "singularize",
+ "string"
+ ]
+ },
+ {
+ "name": "doctrine/collections",
+ "version": "v1.3.0",
+ "version_normalized": "1.3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/collections.git",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "time": "2015-04-14 22:21:58",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\Common\\Collections\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Collections Abstraction library",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "array",
+ "collections",
+ "iterator"
+ ]
+ },
+ {
+ "name": "doctrine/cache",
+ "version": "v1.5.4",
+ "version_normalized": "1.5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/cache.git",
+ "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/47cdc76ceb95cc591d9c79a36dc3794975b5d136",
+ "reference": "47cdc76ceb95cc591d9c79a36dc3794975b5d136",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "predis/predis": "~1.0",
+ "satooshi/php-coveralls": "~0.6"
+ },
+ "time": "2015-12-19 05:03:47",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ]
+ },
+ {
+ "name": "doctrine/common",
+ "version": "v2.6.1",
+ "version_normalized": "2.6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/common.git",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/a579557bc689580c19fee4e27487a67fe60defc0",
+ "reference": "a579557bc689580c19fee4e27487a67fe60defc0",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/inflector": "1.*",
+ "doctrine/lexer": "1.*",
+ "php": "~5.5|~7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0"
+ },
+ "time": "2015-12-25 13:18:31",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Common Library for Doctrine projects",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "annotations",
+ "collections",
+ "eventmanager",
+ "persistence",
+ "spl"
+ ]
+ },
+ {
+ "name": "jdorn/sql-formatter",
+ "version": "v1.2.17",
+ "version_normalized": "1.2.17.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jdorn/sql-formatter.git",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*"
+ },
+ "time": "2014-01-12 16:20:24",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "lib"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jeremy Dorn",
+ "email": "jeremy@jeremydorn.com",
+ "homepage": "http://jeremydorn.com/"
+ }
+ ],
+ "description": "a PHP SQL highlighting library",
+ "homepage": "https://github.com/jdorn/sql-formatter/",
+ "keywords": [
+ "highlight",
+ "sql"
+ ]
+ },
+ {
+ "name": "doctrine/doctrine-cache-bundle",
+ "version": "1.2.2",
+ "version_normalized": "1.2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineCacheBundle.git",
+ "reference": "030ff41ef1db66370b36467086bfb817a661fe6a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/030ff41ef1db66370b36467086bfb817a661fe6a",
+ "reference": "030ff41ef1db66370b36467086bfb817a661fe6a",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "^1.4.2",
+ "doctrine/inflector": "~1.0",
+ "php": ">=5.3.2",
+ "symfony/doctrine-bridge": "~2.2|~3.0"
+ },
+ "require-dev": {
+ "instaclick/coding-standard": "~1.1",
+ "instaclick/object-calisthenics-sniffs": "dev-master",
+ "instaclick/symfony2-coding-standard": "dev-remaster",
+ "phpunit/phpunit": "~4",
+ "satooshi/php-coveralls": "~0.6.1",
+ "squizlabs/php_codesniffer": "~1.5",
+ "symfony/console": "~2.2|~3.0",
+ "symfony/finder": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.2|~3.0",
+ "symfony/phpunit-bridge": "~2.7|~3.0",
+ "symfony/security-acl": "~2.3|~3.0",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0"
+ },
+ "suggest": {
+ "symfony/security-acl": "For using this bundle to cache ACLs"
+ },
+ "time": "2015-11-27 04:59:07",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineCacheBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Fabio B. Silva",
+ "email": "fabio.bat.silva@gmail.com"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@hotmail.com"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony Bundle for Doctrine Cache",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "cache",
+ "caching"
+ ]
+ },
+ {
+ "name": "doctrine/dbal",
+ "version": "v2.5.3",
+ "version_normalized": "2.5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/dbal.git",
+ "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/2fbcea96eae34a53183377cdbb0b9bec33974648",
+ "reference": "2fbcea96eae34a53183377cdbb0b9bec33974648",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": ">=2.4,<2.7-dev",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*",
+ "symfony/console": "2.*"
+ },
+ "suggest": {
+ "symfony/console": "For helpful console commands such as SQL execution and import of files."
+ },
+ "time": "2015-12-25 16:28:24",
+ "bin": [
+ "bin/doctrine-dbal"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.5.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\DBAL\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Database Abstraction Layer",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "persistence",
+ "queryobject"
+ ]
+ },
+ {
+ "name": "doctrine/doctrine-bundle",
+ "version": "1.6.1",
+ "version_normalized": "1.6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/DoctrineBundle.git",
+ "reference": "c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b",
+ "reference": "c4ffef2b2296e9d0179eb0b5248e5ae25c9bba3b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/dbal": "~2.3",
+ "doctrine/doctrine-cache-bundle": "~1.0",
+ "jdorn/sql-formatter": "~1.1",
+ "php": ">=5.3.2",
+ "symfony/console": "~2.3|~3.0",
+ "symfony/doctrine-bridge": "~2.2|~3.0",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.3",
+ "phpunit/phpunit": "~4",
+ "satooshi/php-coveralls": "~0.6.1",
+ "symfony/validator": "~2.2|~3.0",
+ "symfony/yaml": "~2.2|~3.0",
+ "twig/twig": "~1.10"
+ },
+ "suggest": {
+ "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
+ "symfony/web-profiler-bundle": "to use the data collector"
+ },
+ "time": "2015-11-16 17:11:46",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.6.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Bundle\\DoctrineBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Doctrine Project",
+ "homepage": "http://www.doctrine-project.org/"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony DoctrineBundle",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "dbal",
+ "orm",
+ "persistence"
+ ]
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "version_normalized": "1.0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "time": "2015-06-14 21:17:01",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ]
+ },
+ {
+ "name": "doctrine/orm",
+ "version": "v2.5.3",
+ "version_normalized": "2.5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/doctrine2.git",
+ "reference": "d9fc5388f1aa1751a0e148e76b4569bd207338e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/d9fc5388f1aa1751a0e148e76b4569bd207338e9",
+ "reference": "d9fc5388f1aa1751a0e148e76b4569bd207338e9",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/cache": "~1.4",
+ "doctrine/collections": "~1.2",
+ "doctrine/common": ">=2.5-dev,<2.7-dev",
+ "doctrine/dbal": ">=2.5-dev,<2.6-dev",
+ "doctrine/instantiator": "~1.0.1",
+ "ext-pdo": "*",
+ "php": ">=5.4",
+ "symfony/console": "~2.5|~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "dev-master",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "suggest": {
+ "symfony/yaml": "If you want to use YAML Metadata Mapping Driver"
+ },
+ "time": "2015-12-25 15:50:05",
+ "bin": [
+ "bin/doctrine",
+ "bin/doctrine.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.6.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Doctrine\\ORM\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ }
+ ],
+ "description": "Object-Relational-Mapper for PHP",
+ "homepage": "http://www.doctrine-project.org",
+ "keywords": [
+ "database",
+ "orm"
+ ]
+ },
+ {
+ "name": "incenteev/composer-parameter-handler",
+ "version": "v2.1.2",
+ "version_normalized": "2.1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Incenteev/ParameterHandler.git",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "reference": "d7ce7f06136109e81d1cb9d57066c4d4a99cf1cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "composer/composer": "1.0.*@dev",
+ "phpspec/prophecy-phpunit": "~1.0",
+ "symfony/filesystem": "~2.2"
+ },
+ "time": "2015-11-10 17:04:01",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Incenteev\\ParameterHandler\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Composer script handling your ignored parameter file",
+ "homepage": "https://github.com/Incenteev/ParameterHandler",
+ "keywords": [
+ "parameters management"
+ ]
+ },
+ {
+ "name": "sensiolabs/security-checker",
+ "version": "v3.0.2",
+ "version_normalized": "3.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/security-checker.git",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "reference": "21696b0daa731064c23cfb694c60a2584a7b6e93",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.0|~3.0"
+ },
+ "time": "2015-11-07 08:07:40",
+ "bin": [
+ "security-checker"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "SensioLabs\\Security": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien.potencier@gmail.com"
+ }
+ ],
+ "description": "A security checker for your composer.lock"
+ },
+ {
+ "name": "sensio/distribution-bundle",
+ "version": "v5.0.3",
+ "version_normalized": "5.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioDistributionBundle.git",
+ "reference": "419c1824af940e2be0f833aca2327e1181a6b503"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/419c1824af940e2be0f833aca2327e1181a6b503",
+ "reference": "419c1824af940e2be0f833aca2327e1181a6b503",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9",
+ "sensiolabs/security-checker": "~3.0",
+ "symfony/class-loader": "~2.3|~3.0",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/filesystem": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/process": "~2.3|~3.0"
+ },
+ "time": "2015-12-18 17:44:11",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\DistributionBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Base bundle for Symfony Distributions",
+ "keywords": [
+ "configuration",
+ "distribution"
+ ]
+ },
+ {
+ "name": "sensio/framework-extra-bundle",
+ "version": "v3.0.12",
+ "version_normalized": "3.0.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git",
+ "reference": "3e8936fe13aa4086644977d334d8fcd275f50357"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/3e8936fe13aa4086644977d334d8fcd275f50357",
+ "reference": "3e8936fe13aa4086644977d334d8fcd275f50357",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/common": "~2.2",
+ "symfony/framework-bundle": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/expression-language": "~2.4|~3.0",
+ "symfony/security-bundle": "~2.4|~3.0"
+ },
+ "suggest": {
+ "symfony/expression-language": "",
+ "symfony/psr-http-message-bridge": "To use the PSR-7 converters",
+ "symfony/security-bundle": ""
+ },
+ "time": "2015-12-18 17:39:27",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\FrameworkExtraBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle provides a way to configure your controllers with annotations",
+ "keywords": [
+ "annotations",
+ "controllers"
+ ]
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.17.2",
+ "version_normalized": "1.17.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
+ "reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "raven/raven": "^0.13",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "swiftmailer/swiftmailer": "~5.3",
+ "videlalvaro/php-amqplib": "~2.4"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "raven/raven": "Allow sending log messages to a Sentry server",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib"
+ },
+ "time": "2015-10-14 12:51:02",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.16.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ]
+ },
+ {
+ "name": "symfony/monolog-bundle",
+ "version": "v2.8.2",
+ "version_normalized": "2.8.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/monolog-bundle.git",
+ "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/84785c4d44801c4dd82829fa2e1820cacfe2c46f",
+ "reference": "84785c4d44801c4dd82829fa2e1820cacfe2c46f",
+ "shasum": ""
+ },
+ "require": {
+ "monolog/monolog": "~1.8",
+ "php": ">=5.3.2",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/monolog-bridge": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/console": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "time": "2015-11-17 10:02:29",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\MonologBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony MonologBundle",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "log",
+ "logging"
+ ]
+ },
+ {
+ "name": "swiftmailer/swiftmailer",
+ "version": "v5.4.1",
+ "version_normalized": "5.4.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/swiftmailer/swiftmailer.git",
+ "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/0697e6aa65c83edf97bb0f23d8763f94e3f11421",
+ "reference": "0697e6aa65c83edf97bb0f23d8763f94e3f11421",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "mockery/mockery": "~0.9.1,<0.9.4"
+ },
+ "time": "2015-06-06 14:19:39",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.4-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "lib/swift_required.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Corbyn"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Swiftmailer, free feature-rich PHP mailer",
+ "homepage": "http://swiftmailer.org",
+ "keywords": [
+ "email",
+ "mail",
+ "mailer"
+ ]
+ },
+ {
+ "name": "symfony/swiftmailer-bundle",
+ "version": "v2.3.9",
+ "version_normalized": "2.3.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/swiftmailer-bundle.git",
+ "reference": "3d21ada19f23631f558ad6df653b168e35362e78"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/3d21ada19f23631f558ad6df653b168e35362e78",
+ "reference": "3d21ada19f23631f558ad6df653b168e35362e78",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2",
+ "swiftmailer/swiftmailer": ">=4.2.0,~5.0",
+ "symfony/config": "~2.3|~3.0",
+ "symfony/dependency-injection": "~2.3|~3.0",
+ "symfony/http-kernel": "~2.3|~3.0",
+ "symfony/yaml": "~2.3|~3.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7|~3.0"
+ },
+ "suggest": {
+ "psr/log": "Allows logging"
+ },
+ "time": "2015-11-28 10:59:29",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bundle\\SwiftmailerBundle\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ },
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Symfony SwiftmailerBundle",
+ "homepage": "http://symfony.com"
+ },
+ {
+ "name": "sensio/generator-bundle",
+ "version": "v3.0.3",
+ "version_normalized": "3.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sensiolabs/SensioGeneratorBundle.git",
+ "reference": "525e078ff7d5e9f19b0ef912bb6d6753673b3c66"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sensiolabs/SensioGeneratorBundle/zipball/525e078ff7d5e9f19b0ef912bb6d6753673b3c66",
+ "reference": "525e078ff7d5e9f19b0ef912bb6d6753673b3c66",
+ "shasum": ""
+ },
+ "require": {
+ "symfony/console": "~2.7|~3.0",
+ "symfony/framework-bundle": "~2.7|~3.0",
+ "symfony/process": "~2.7|~3.0",
+ "symfony/yaml": "~2.7|~3.0"
+ },
+ "require-dev": {
+ "doctrine/orm": "~2.4",
+ "symfony/doctrine-bridge": "~2.7|~3.0",
+ "twig/twig": "~1.18"
+ },
+ "time": "2015-12-20 20:01:41",
+ "type": "symfony-bundle",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Sensio\\Bundle\\GeneratorBundle\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "This bundle generates code for you"
+ },
+ {
+ "name": "symfony/phpunit-bridge",
+ "version": "v2.8.1",
+ "version_normalized": "2.8.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/phpunit-bridge.git",
+ "reference": "2deb2ccbe184948ae4e85e7b99e962738d3d2d69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/2deb2ccbe184948ae4e85e7b99e962738d3d2d69",
+ "reference": "2deb2ccbe184948ae4e85e7b99e962738d3d2d69",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader"
+ },
+ "time": "2015-12-11 08:57:52",
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.8-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Bridge\\PhpUnit\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony PHPUnit Bridge",
+ "homepage": "https://symfony.com"
+ }
+]
diff --git a/vendor/doctrine/annotations/LICENSE b/vendor/doctrine/annotations/LICENSE
new file mode 100644
index 0000000..5e781fc
--- /dev/null
+++ b/vendor/doctrine/annotations/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2013 Doctrine Project
+
+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/vendor/doctrine/annotations/README.md b/vendor/doctrine/annotations/README.md
new file mode 100644
index 0000000..ebb30e0
--- /dev/null
+++ b/vendor/doctrine/annotations/README.md
@@ -0,0 +1,19 @@
+# Doctrine Annotations
+
+[![Build Status](https://travis-ci.org/doctrine/annotations.png?branch=master)](https://travis-ci.org/doctrine/annotations)
+
+Docblock Annotations Parser library (extracted from [Doctrine Common](https://github.com/doctrine/common)).
+
+## Changelog
+
+### v1.2.0
+
+ * HHVM support
+ * Allowing dangling comma in annotations
+ * Excluded annotations are no longer autoloaded
+ * Importing namespaces also in traits
+ * Added support for `::class` 5.5-style constant, works also in 5.3 and 5.4
+
+### v1.1
+
+ * Add Exception when ZendOptimizer+ or Opcache is configured to drop comments
diff --git a/vendor/doctrine/annotations/composer.json b/vendor/doctrine/annotations/composer.json
new file mode 100644
index 0000000..1c65f6c
--- /dev/null
+++ b/vendor/doctrine/annotations/composer.json
@@ -0,0 +1,31 @@
+{
+ "name": "doctrine/annotations",
+ "type": "library",
+ "description": "Docblock Annotations Parser",
+ "keywords": ["annotations", "docblock", "parser"],
+ "homepage": "http://www.doctrine-project.org",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": ">=5.3.2",
+ "doctrine/lexer": "1.*"
+ },
+ "require-dev": {
+ "doctrine/cache": "1.*",
+ "phpunit/phpunit": "4.*"
+ },
+ "autoload": {
+ "psr-0": { "Doctrine\\Common\\Annotations\\": "lib/" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
new file mode 100644
index 0000000..a79a0f8
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation.php
@@ -0,0 +1,79 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Annotations class.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class Annotation
+{
+ /**
+ * Value property. Common among all derived classes.
+ *
+ * @var string
+ */
+ public $value;
+
+ /**
+ * Constructor.
+ *
+ * @param array $data Key-value for properties to be defined in this class.
+ */
+ public final function __construct(array $data)
+ {
+ foreach ($data as $key => $value) {
+ $this->$key = $value;
+ }
+ }
+
+ /**
+ * Error handler for unknown property accessor in Annotation class.
+ *
+ * @param string $name Unknown property name.
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __get($name)
+ {
+ throw new \BadMethodCallException(
+ sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
+ );
+ }
+
+ /**
+ * Error handler for unknown property mutator in Annotation class.
+ *
+ * @param string $name Unknown property name.
+ * @param mixed $value Property value.
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __set($name, $value)
+ {
+ throw new \BadMethodCallException(
+ sprintf("Unknown property '%s' on annotation '%s'.", $name, get_class($this))
+ );
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
new file mode 100644
index 0000000..dbef6df
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attribute.php
@@ -0,0 +1,47 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the attribute type during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Attribute
+{
+ /**
+ * @var string
+ */
+ public $name;
+
+ /**
+ * @var string
+ */
+ public $type;
+
+ /**
+ * @var boolean
+ */
+ public $required = false;
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
new file mode 100644
index 0000000..53134e3
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Attributes.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the types of all declared attributes during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Attributes
+{
+ /**
+ * @var array
+ */
+ public $value;
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
new file mode 100644
index 0000000..e122a75
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Enum.php
@@ -0,0 +1,84 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the available values during the parsing process.
+ *
+ * @since 2.4
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ * @Attributes({
+ * @Attribute("value", required = true, type = "array"),
+ * @Attribute("literal", required = false, type = "array")
+ * })
+ */
+final class Enum
+{
+ /**
+ * @var array
+ */
+ public $value;
+
+ /**
+ * Literal target declaration.
+ *
+ * @var array
+ */
+ public $literal;
+
+ /**
+ * Annotation constructor.
+ *
+ * @param array $values
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(array $values)
+ {
+ if ( ! isset($values['literal'])) {
+ $values['literal'] = array();
+ }
+
+ foreach ($values['value'] as $var) {
+ if( ! is_scalar($var)) {
+ throw new \InvalidArgumentException(sprintf(
+ '@Enum supports only scalar values "%s" given.',
+ is_object($var) ? get_class($var) : gettype($var)
+ ));
+ }
+ }
+
+ foreach ($values['literal'] as $key => $var) {
+ if( ! in_array($key, $values['value'])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Undefined enumerator value "%s" for literal "%s".',
+ $key , $var
+ ));
+ }
+ }
+
+ $this->value = $values['value'];
+ $this->literal = $values['literal'];
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
new file mode 100644
index 0000000..175226a
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/IgnoreAnnotation.php
@@ -0,0 +1,54 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser to ignore specific
+ * annotations during the parsing process.
+ *
+ * @Annotation
+ * @author Johannes M. Schmitt
+ */
+final class IgnoreAnnotation
+{
+ /**
+ * @var array
+ */
+ public $names;
+
+ /**
+ * Constructor.
+ *
+ * @param array $values
+ *
+ * @throws \RuntimeException
+ */
+ public function __construct(array $values)
+ {
+ if (is_string($values['value'])) {
+ $values['value'] = array($values['value']);
+ }
+ if (!is_array($values['value'])) {
+ throw new \RuntimeException(sprintf('@IgnoreAnnotation expects either a string name, or an array of strings, but got %s.', json_encode($values['value'])));
+ }
+
+ $this->names = $values['value'];
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
new file mode 100644
index 0000000..d67f960
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Required.php
@@ -0,0 +1,33 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check if that attribute is required during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Required
+{
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
new file mode 100644
index 0000000..f6c5445
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Annotation/Target.php
@@ -0,0 +1,107 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations\Annotation;
+
+/**
+ * Annotation that can be used to signal to the parser
+ * to check the annotation target during the parsing process.
+ *
+ * @author Fabio B. Silva
+ *
+ * @Annotation
+ */
+final class Target
+{
+ const TARGET_CLASS = 1;
+ const TARGET_METHOD = 2;
+ const TARGET_PROPERTY = 4;
+ const TARGET_ANNOTATION = 8;
+ const TARGET_ALL = 15;
+
+ /**
+ * @var array
+ */
+ private static $map = array(
+ 'ALL' => self::TARGET_ALL,
+ 'CLASS' => self::TARGET_CLASS,
+ 'METHOD' => self::TARGET_METHOD,
+ 'PROPERTY' => self::TARGET_PROPERTY,
+ 'ANNOTATION' => self::TARGET_ANNOTATION,
+ );
+
+ /**
+ * @var array
+ */
+ public $value;
+
+ /**
+ * Targets as bitmask.
+ *
+ * @var integer
+ */
+ public $targets;
+
+ /**
+ * Literal target declaration.
+ *
+ * @var integer
+ */
+ public $literal;
+
+ /**
+ * Annotation constructor.
+ *
+ * @param array $values
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(array $values)
+ {
+ if (!isset($values['value'])){
+ $values['value'] = null;
+ }
+ if (is_string($values['value'])){
+ $values['value'] = array($values['value']);
+ }
+ if (!is_array($values['value'])){
+ throw new \InvalidArgumentException(
+ sprintf('@Target expects either a string value, or an array of strings, "%s" given.',
+ is_object($values['value']) ? get_class($values['value']) : gettype($values['value'])
+ )
+ );
+ }
+
+ $bitmask = 0;
+ foreach ($values['value'] as $literal) {
+ if(!isset(self::$map[$literal])){
+ throw new \InvalidArgumentException(
+ sprintf('Invalid Target "%s". Available targets: [%s]',
+ $literal, implode(', ', array_keys(self::$map)))
+ );
+ }
+ $bitmask |= self::$map[$literal];
+ }
+
+ $this->targets = $bitmask;
+ $this->value = $values['value'];
+ $this->literal = implode(', ', $this->value);
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
new file mode 100644
index 0000000..d06fe66
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationException.php
@@ -0,0 +1,197 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Description of AnnotationException
+ *
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class AnnotationException extends \Exception
+{
+ /**
+ * Creates a new AnnotationException describing a Syntax error.
+ *
+ * @param string $message Exception message
+ *
+ * @return AnnotationException
+ */
+ public static function syntaxError($message)
+ {
+ return new self('[Syntax Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a Semantical error.
+ *
+ * @param string $message Exception message
+ *
+ * @return AnnotationException
+ */
+ public static function semanticalError($message)
+ {
+ return new self('[Semantical Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing an error which occurred during
+ * the creation of the annotation.
+ *
+ * @since 2.2
+ *
+ * @param string $message
+ *
+ * @return AnnotationException
+ */
+ public static function creationError($message)
+ {
+ return new self('[Creation Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a type error.
+ *
+ * @since 1.1
+ *
+ * @param string $message
+ *
+ * @return AnnotationException
+ */
+ public static function typeError($message)
+ {
+ return new self('[Type Error] ' . $message);
+ }
+
+ /**
+ * Creates a new AnnotationException describing a constant semantical error.
+ *
+ * @since 2.3
+ *
+ * @param string $identifier
+ * @param string $context
+ *
+ * @return AnnotationException
+ */
+ public static function semanticalErrorConstants($identifier, $context = null)
+ {
+ return self::semanticalError(sprintf(
+ "Couldn't find constant %s%s.",
+ $identifier,
+ $context ? ', ' . $context : ''
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing an type error of an attribute.
+ *
+ * @since 2.2
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param string $expected
+ * @param mixed $actual
+ *
+ * @return AnnotationException
+ */
+ public static function attributeTypeError($attributeName, $annotationName, $context, $expected, $actual)
+ {
+ return self::typeError(sprintf(
+ 'Attribute "%s" of @%s declared on %s expects %s, but got %s.',
+ $attributeName,
+ $annotationName,
+ $context,
+ $expected,
+ is_object($actual) ? 'an instance of ' . get_class($actual) : gettype($actual)
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing an required error of an attribute.
+ *
+ * @since 2.2
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param string $expected
+ *
+ * @return AnnotationException
+ */
+ public static function requiredError($attributeName, $annotationName, $context, $expected)
+ {
+ return self::typeError(sprintf(
+ 'Attribute "%s" of @%s declared on %s expects %s. This value should not be null.',
+ $attributeName,
+ $annotationName,
+ $context,
+ $expected
+ ));
+ }
+
+ /**
+ * Creates a new AnnotationException describing a invalid enummerator.
+ *
+ * @since 2.4
+ *
+ * @param string $attributeName
+ * @param string $annotationName
+ * @param string $context
+ * @param array $available
+ * @param mixed $given
+ *
+ * @return AnnotationException
+ */
+ public static function enumeratorError($attributeName, $annotationName, $context, $available, $given)
+ {
+ return new self(sprintf(
+ '[Enum Error] Attribute "%s" of @%s declared on %s accept only [%s], but got %s.',
+ $attributeName,
+ $annotationName,
+ $context,
+ implode(', ', $available),
+ is_object($given) ? get_class($given) : $given
+ ));
+ }
+
+ /**
+ * @return AnnotationException
+ */
+ public static function optimizerPlusSaveComments()
+ {
+ return new self(
+ "You have to enable opcache.save_comments=1 or zend_optimizerplus.save_comments=1."
+ );
+ }
+
+ /**
+ * @return AnnotationException
+ */
+ public static function optimizerPlusLoadComments()
+ {
+ return new self(
+ "You have to enable opcache.load_comments=1 or zend_optimizerplus.load_comments=1."
+ );
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
new file mode 100644
index 0000000..4ebd1fb
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationReader.php
@@ -0,0 +1,394 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Annotations\Annotation\IgnoreAnnotation;
+use Doctrine\Common\Annotations\Annotation\Target;
+use ReflectionClass;
+use ReflectionMethod;
+use ReflectionProperty;
+
+/**
+ * A reader for docblock annotations.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ */
+class AnnotationReader implements Reader
+{
+ /**
+ * Global map for imports.
+ *
+ * @var array
+ */
+ private static $globalImports = array(
+ 'ignoreannotation' => 'Doctrine\Common\Annotations\Annotation\IgnoreAnnotation',
+ );
+
+ /**
+ * A list with annotations that are not causing exceptions when not resolved to an annotation class.
+ *
+ * The names are case sensitive.
+ *
+ * @var array
+ */
+ private static $globalIgnoredNames = array(
+ // Annotation tags
+ 'Annotation' => true, 'Attribute' => true, 'Attributes' => true,
+ /* Can we enable this? 'Enum' => true, */
+ 'Required' => true,
+ 'Target' => true,
+ // Widely used tags (but not existent in phpdoc)
+ 'fix' => true , 'fixme' => true,
+ 'override' => true,
+ // PHPDocumentor 1 tags
+ 'abstract'=> true, 'access'=> true,
+ 'code' => true,
+ 'deprec'=> true,
+ 'endcode' => true, 'exception'=> true,
+ 'final'=> true,
+ 'ingroup' => true, 'inheritdoc'=> true, 'inheritDoc'=> true,
+ 'magic' => true,
+ 'name'=> true,
+ 'toc' => true, 'tutorial'=> true,
+ 'private' => true,
+ 'static'=> true, 'staticvar'=> true, 'staticVar'=> true,
+ 'throw' => true,
+ // PHPDocumentor 2 tags.
+ 'api' => true, 'author'=> true,
+ 'category'=> true, 'copyright'=> true,
+ 'deprecated'=> true,
+ 'example'=> true,
+ 'filesource'=> true,
+ 'global'=> true,
+ 'ignore'=> true, /* Can we enable this? 'index' => true, */ 'internal'=> true,
+ 'license'=> true, 'link'=> true,
+ 'method' => true,
+ 'package'=> true, 'param'=> true, 'property' => true, 'property-read' => true, 'property-write' => true,
+ 'return'=> true,
+ 'see'=> true, 'since'=> true, 'source' => true, 'subpackage'=> true,
+ 'throws'=> true, 'todo'=> true, 'TODO'=> true,
+ 'usedby'=> true, 'uses' => true,
+ 'var'=> true, 'version'=> true,
+ // PHPUnit tags
+ 'codeCoverageIgnore' => true, 'codeCoverageIgnoreStart' => true, 'codeCoverageIgnoreEnd' => true,
+ // PHPCheckStyle
+ 'SuppressWarnings' => true,
+ // PHPStorm
+ 'noinspection' => true,
+ // PEAR
+ 'package_version' => true,
+ // PlantUML
+ 'startuml' => true, 'enduml' => true,
+ );
+
+ /**
+ * Add a new annotation to the globally ignored annotation names with regard to exception handling.
+ *
+ * @param string $name
+ */
+ static public function addGlobalIgnoredName($name)
+ {
+ self::$globalIgnoredNames[$name] = true;
+ }
+
+ /**
+ * Annotations parser.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private $parser;
+
+ /**
+ * Annotations parser used to collect parsing metadata.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private $preParser;
+
+ /**
+ * PHP parser used to collect imports.
+ *
+ * @var \Doctrine\Common\Annotations\PhpParser
+ */
+ private $phpParser;
+
+ /**
+ * In-memory cache mechanism to store imported annotations per class.
+ *
+ * @var array
+ */
+ private $imports = array();
+
+ /**
+ * In-memory cache mechanism to store ignored annotations per class.
+ *
+ * @var array
+ */
+ private $ignoredAnnotationNames = array();
+
+ /**
+ * Constructor.
+ *
+ * Initializes a new AnnotationReader.
+ */
+ public function __construct()
+ {
+ if (extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.save_comments') === "0" || ini_get('opcache.save_comments') === "0")) {
+ throw AnnotationException::optimizerPlusSaveComments();
+ }
+
+ if (extension_loaded('Zend OPcache') && ini_get('opcache.save_comments') == 0) {
+ throw AnnotationException::optimizerPlusSaveComments();
+ }
+
+ if (PHP_VERSION_ID < 70000) {
+ if (extension_loaded('Zend Optimizer+') && (ini_get('zend_optimizerplus.load_comments') === "0" || ini_get('opcache.load_comments') === "0")) {
+ throw AnnotationException::optimizerPlusLoadComments();
+ }
+
+ if (extension_loaded('Zend OPcache') && ini_get('opcache.load_comments') == 0) {
+ throw AnnotationException::optimizerPlusLoadComments();
+ }
+ }
+
+ AnnotationRegistry::registerFile(__DIR__ . '/Annotation/IgnoreAnnotation.php');
+
+ $this->parser = new DocParser;
+ $this->preParser = new DocParser;
+
+ $this->preParser->setImports(self::$globalImports);
+ $this->preParser->setIgnoreNotImportedAnnotations(true);
+
+ $this->phpParser = new PhpParser;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(ReflectionClass $class)
+ {
+ $this->parser->setTarget(Target::TARGET_CLASS);
+ $this->parser->setImports($this->getClassImports($class));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+
+ return $this->parser->parse($class->getDocComment(), 'class ' . $class->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(ReflectionClass $class, $annotationName)
+ {
+ $annotations = $this->getClassAnnotations($class);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $context = 'property ' . $class->getName() . "::\$" . $property->getName();
+
+ $this->parser->setTarget(Target::TARGET_PROPERTY);
+ $this->parser->setImports($this->getPropertyImports($property));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+
+ return $this->parser->parse($property->getDocComment(), $context);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(ReflectionProperty $property, $annotationName)
+ {
+ $annotations = $this->getPropertyAnnotations($property);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $context = 'method ' . $class->getName() . '::' . $method->getName() . '()';
+
+ $this->parser->setTarget(Target::TARGET_METHOD);
+ $this->parser->setImports($this->getMethodImports($method));
+ $this->parser->setIgnoredAnnotationNames($this->getIgnoredAnnotationNames($class));
+
+ return $this->parser->parse($method->getDocComment(), $context);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(ReflectionMethod $method, $annotationName)
+ {
+ $annotations = $this->getMethodAnnotations($method);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns the ignored annotations for the given class.
+ *
+ * @param \ReflectionClass $class
+ *
+ * @return array
+ */
+ private function getIgnoredAnnotationNames(ReflectionClass $class)
+ {
+ if (isset($this->ignoredAnnotationNames[$name = $class->getName()])) {
+ return $this->ignoredAnnotationNames[$name];
+ }
+
+ $this->collectParsingMetadata($class);
+
+ return $this->ignoredAnnotationNames[$name];
+ }
+
+ /**
+ * Retrieves imports.
+ *
+ * @param \ReflectionClass $class
+ *
+ * @return array
+ */
+ private function getClassImports(ReflectionClass $class)
+ {
+ if (isset($this->imports[$name = $class->getName()])) {
+ return $this->imports[$name];
+ }
+
+ $this->collectParsingMetadata($class);
+
+ return $this->imports[$name];
+ }
+
+ /**
+ * Retrieves imports for methods.
+ *
+ * @param \ReflectionMethod $method
+ *
+ * @return array
+ */
+ private function getMethodImports(ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $classImports = $this->getClassImports($class);
+ if (!method_exists($class, 'getTraits')) {
+ return $classImports;
+ }
+
+ $traitImports = array();
+
+ foreach ($class->getTraits() as $trait) {
+ if ($trait->hasMethod($method->getName())
+ && $trait->getFileName() === $method->getFileName()
+ ) {
+ $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
+ }
+ }
+
+ return array_merge($classImports, $traitImports);
+ }
+
+ /**
+ * Retrieves imports for properties.
+ *
+ * @param \ReflectionProperty $property
+ *
+ * @return array
+ */
+ private function getPropertyImports(ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $classImports = $this->getClassImports($class);
+ if (!method_exists($class, 'getTraits')) {
+ return $classImports;
+ }
+
+ $traitImports = array();
+
+ foreach ($class->getTraits() as $trait) {
+ if ($trait->hasProperty($property->getName())) {
+ $traitImports = array_merge($traitImports, $this->phpParser->parseClass($trait));
+ }
+ }
+
+ return array_merge($classImports, $traitImports);
+ }
+
+ /**
+ * Collects parsing metadata for a given class.
+ *
+ * @param \ReflectionClass $class
+ */
+ private function collectParsingMetadata(ReflectionClass $class)
+ {
+ $ignoredAnnotationNames = self::$globalIgnoredNames;
+ $annotations = $this->preParser->parse($class->getDocComment(), 'class ' . $class->name);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof IgnoreAnnotation) {
+ foreach ($annotation->names AS $annot) {
+ $ignoredAnnotationNames[$annot] = true;
+ }
+ }
+ }
+
+ $name = $class->getName();
+
+ $this->imports[$name] = array_merge(
+ self::$globalImports,
+ $this->phpParser->parseClass($class),
+ array('__NAMESPACE__' => $class->getNamespaceName())
+ );
+
+ $this->ignoredAnnotationNames[$name] = $ignoredAnnotationNames;
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
new file mode 100644
index 0000000..13ceb63
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php
@@ -0,0 +1,151 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * AnnotationRegistry.
+ */
+final class AnnotationRegistry
+{
+ /**
+ * A map of namespaces to use for autoloading purposes based on a PSR-0 convention.
+ *
+ * Contains the namespace as key and an array of directories as value. If the value is NULL
+ * the include path is used for checking for the corresponding file.
+ *
+ * This autoloading mechanism does not utilize the PHP autoloading but implements autoloading on its own.
+ *
+ * @var array
+ */
+ static private $autoloadNamespaces = array();
+
+ /**
+ * A map of autoloader callables.
+ *
+ * @var array
+ */
+ static private $loaders = array();
+
+ /**
+ * @return void
+ */
+ static public function reset()
+ {
+ self::$autoloadNamespaces = array();
+ self::$loaders = array();
+ }
+
+ /**
+ * Registers file.
+ *
+ * @param string $file
+ *
+ * @return void
+ */
+ static public function registerFile($file)
+ {
+ require_once $file;
+ }
+
+ /**
+ * Adds a namespace with one or many directories to look for files or null for the include path.
+ *
+ * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
+ *
+ * @param string $namespace
+ * @param string|array|null $dirs
+ *
+ * @return void
+ */
+ static public function registerAutoloadNamespace($namespace, $dirs = null)
+ {
+ self::$autoloadNamespaces[$namespace] = $dirs;
+ }
+
+ /**
+ * Registers multiple namespaces.
+ *
+ * Loading of this namespaces will be done with a PSR-0 namespace loading algorithm.
+ *
+ * @param array $namespaces
+ *
+ * @return void
+ */
+ static public function registerAutoloadNamespaces(array $namespaces)
+ {
+ self::$autoloadNamespaces = array_merge(self::$autoloadNamespaces, $namespaces);
+ }
+
+ /**
+ * Registers an autoloading callable for annotations, much like spl_autoload_register().
+ *
+ * NOTE: These class loaders HAVE to be silent when a class was not found!
+ * IMPORTANT: Loaders have to return true if they loaded a class that could contain the searched annotation class.
+ *
+ * @param callable $callable
+ *
+ * @return void
+ *
+ * @throws \InvalidArgumentException
+ */
+ static public function registerLoader($callable)
+ {
+ if (!is_callable($callable)) {
+ throw new \InvalidArgumentException("A callable is expected in AnnotationRegistry::registerLoader().");
+ }
+ self::$loaders[] = $callable;
+ }
+
+ /**
+ * Autoloads an annotation class silently.
+ *
+ * @param string $class
+ *
+ * @return boolean
+ */
+ static public function loadAnnotationClass($class)
+ {
+ foreach (self::$autoloadNamespaces AS $namespace => $dirs) {
+ if (strpos($class, $namespace) === 0) {
+ $file = str_replace("\\", DIRECTORY_SEPARATOR, $class) . ".php";
+ if ($dirs === null) {
+ if ($path = stream_resolve_include_path($file)) {
+ require $path;
+ return true;
+ }
+ } else {
+ foreach((array)$dirs AS $dir) {
+ if (is_file($dir . DIRECTORY_SEPARATOR . $file)) {
+ require $dir . DIRECTORY_SEPARATOR . $file;
+ return true;
+ }
+ }
+ }
+ }
+ }
+
+ foreach (self::$loaders AS $loader) {
+ if (call_user_func($loader, $class) === true) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
new file mode 100644
index 0000000..e6dc593
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/CachedReader.php
@@ -0,0 +1,235 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Cache\Cache;
+
+/**
+ * A cache aware annotation reader.
+ *
+ * @author Johannes M. Schmitt
+ * @author Benjamin Eberlei
+ */
+final class CachedReader implements Reader
+{
+ /**
+ * @var string
+ */
+ private static $CACHE_SALT = '@[Annot]';
+
+ /**
+ * @var Reader
+ */
+ private $delegate;
+
+ /**
+ * @var Cache
+ */
+ private $cache;
+
+ /**
+ * @var boolean
+ */
+ private $debug;
+
+ /**
+ * @var array
+ */
+ private $loadedAnnotations = array();
+
+ /**
+ * Constructor.
+ *
+ * @param Reader $reader
+ * @param Cache $cache
+ * @param bool $debug
+ */
+ public function __construct(Reader $reader, Cache $cache, $debug = false)
+ {
+ $this->delegate = $reader;
+ $this->cache = $cache;
+ $this->debug = (boolean) $debug;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ $cacheKey = $class->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getClassAnnotations($class);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName)
+ {
+ foreach ($this->getClassAnnotations($class) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ $cacheKey = $class->getName().'$'.$property->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getPropertyAnnotations($property);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ foreach ($this->getPropertyAnnotations($property) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ $cacheKey = $class->getName().'#'.$method->getName();
+
+ if (isset($this->loadedAnnotations[$cacheKey])) {
+ return $this->loadedAnnotations[$cacheKey];
+ }
+
+ if (false === ($annots = $this->fetchFromCache($cacheKey, $class))) {
+ $annots = $this->delegate->getMethodAnnotations($method);
+ $this->saveToCache($cacheKey, $annots);
+ }
+
+ return $this->loadedAnnotations[$cacheKey] = $annots;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ foreach ($this->getMethodAnnotations($method) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Clears loaded annotations.
+ *
+ * @return void
+ */
+ public function clearLoadedAnnotations()
+ {
+ $this->loadedAnnotations = array();
+ }
+
+ /**
+ * Fetches a value from the cache.
+ *
+ * @param string $rawCacheKey The cache key.
+ * @param \ReflectionClass $class The related class.
+ *
+ * @return mixed The cached value or false when the value is not in cache.
+ */
+ private function fetchFromCache($rawCacheKey, \ReflectionClass $class)
+ {
+ $cacheKey = $rawCacheKey . self::$CACHE_SALT;
+ if (($data = $this->cache->fetch($cacheKey)) !== false) {
+ if (!$this->debug || $this->isCacheFresh($cacheKey, $class)) {
+ return $data;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Saves a value to the cache.
+ *
+ * @param string $rawCacheKey The cache key.
+ * @param mixed $value The value.
+ *
+ * @return void
+ */
+ private function saveToCache($rawCacheKey, $value)
+ {
+ $cacheKey = $rawCacheKey . self::$CACHE_SALT;
+ $this->cache->save($cacheKey, $value);
+ if ($this->debug) {
+ $this->cache->save('[C]'.$cacheKey, time());
+ }
+ }
+
+ /**
+ * Checks if the cache is fresh.
+ *
+ * @param string $cacheKey
+ * @param \ReflectionClass $class
+ *
+ * @return boolean
+ */
+ private function isCacheFresh($cacheKey, \ReflectionClass $class)
+ {
+ if (false === $filename = $class->getFilename()) {
+ return true;
+ }
+
+ return $this->cache->fetch('[C]'.$cacheKey) >= filemtime($filename);
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
new file mode 100644
index 0000000..d864540
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocLexer.php
@@ -0,0 +1,134 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Lexer\AbstractLexer;
+
+/**
+ * Simple lexer for docblock annotations.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ */
+final class DocLexer extends AbstractLexer
+{
+ const T_NONE = 1;
+ const T_INTEGER = 2;
+ const T_STRING = 3;
+ const T_FLOAT = 4;
+
+ // All tokens that are also identifiers should be >= 100
+ const T_IDENTIFIER = 100;
+ const T_AT = 101;
+ const T_CLOSE_CURLY_BRACES = 102;
+ const T_CLOSE_PARENTHESIS = 103;
+ const T_COMMA = 104;
+ const T_EQUALS = 105;
+ const T_FALSE = 106;
+ const T_NAMESPACE_SEPARATOR = 107;
+ const T_OPEN_CURLY_BRACES = 108;
+ const T_OPEN_PARENTHESIS = 109;
+ const T_TRUE = 110;
+ const T_NULL = 111;
+ const T_COLON = 112;
+
+ /**
+ * @var array
+ */
+ protected $noCase = array(
+ '@' => self::T_AT,
+ ',' => self::T_COMMA,
+ '(' => self::T_OPEN_PARENTHESIS,
+ ')' => self::T_CLOSE_PARENTHESIS,
+ '{' => self::T_OPEN_CURLY_BRACES,
+ '}' => self::T_CLOSE_CURLY_BRACES,
+ '=' => self::T_EQUALS,
+ ':' => self::T_COLON,
+ '\\' => self::T_NAMESPACE_SEPARATOR
+ );
+
+ /**
+ * @var array
+ */
+ protected $withCase = array(
+ 'true' => self::T_TRUE,
+ 'false' => self::T_FALSE,
+ 'null' => self::T_NULL
+ );
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getCatchablePatterns()
+ {
+ return array(
+ '[a-z_\\\][a-z0-9_\:\\\]*[a-z_][a-z0-9_]*',
+ '(?:[+-]?[0-9]+(?:[\.][0-9]+)*)(?:[eE][+-]?[0-9]+)?',
+ '"(?:""|[^"])*+"',
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getNonCatchablePatterns()
+ {
+ return array('\s+', '\*+', '(.)');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getType(&$value)
+ {
+ $type = self::T_NONE;
+
+ if ($value[0] === '"') {
+ $value = str_replace('""', '"', substr($value, 1, strlen($value) - 2));
+
+ return self::T_STRING;
+ }
+
+ if (isset($this->noCase[$value])) {
+ return $this->noCase[$value];
+ }
+
+ if ($value[0] === '_' || $value[0] === '\\' || ctype_alpha($value[0])) {
+ return self::T_IDENTIFIER;
+ }
+
+ $lowerValue = strtolower($value);
+
+ if (isset($this->withCase[$lowerValue])) {
+ return $this->withCase[$lowerValue];
+ }
+
+ // Checking numeric value
+ if (is_numeric($value)) {
+ return (strpos($value, '.') !== false || stripos($value, 'e') !== false)
+ ? self::T_FLOAT : self::T_INTEGER;
+ }
+
+ return $type;
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
new file mode 100644
index 0000000..db66846
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/DocParser.php
@@ -0,0 +1,1138 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use Doctrine\Common\Annotations\Annotation\Attribute;
+use ReflectionClass;
+use Doctrine\Common\Annotations\Annotation\Enum;
+use Doctrine\Common\Annotations\Annotation\Target;
+use Doctrine\Common\Annotations\Annotation\Attributes;
+
+/**
+ * A parser for docblock annotations.
+ *
+ * It is strongly discouraged to change the default annotation parsing process.
+ *
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Johannes M. Schmitt
+ * @author Fabio B. Silva
+ */
+final class DocParser
+{
+ /**
+ * An array of all valid tokens for a class name.
+ *
+ * @var array
+ */
+ private static $classIdentifiers = array(
+ DocLexer::T_IDENTIFIER,
+ DocLexer::T_TRUE,
+ DocLexer::T_FALSE,
+ DocLexer::T_NULL
+ );
+
+ /**
+ * The lexer.
+ *
+ * @var \Doctrine\Common\Annotations\DocLexer
+ */
+ private $lexer;
+
+ /**
+ * Current target context.
+ *
+ * @var string
+ */
+ private $target;
+
+ /**
+ * Doc parser used to collect annotation target.
+ *
+ * @var \Doctrine\Common\Annotations\DocParser
+ */
+ private static $metadataParser;
+
+ /**
+ * Flag to control if the current annotation is nested or not.
+ *
+ * @var boolean
+ */
+ private $isNestedAnnotation = false;
+
+ /**
+ * Hashmap containing all use-statements that are to be used when parsing
+ * the given doc block.
+ *
+ * @var array
+ */
+ private $imports = array();
+
+ /**
+ * This hashmap is used internally to cache results of class_exists()
+ * look-ups.
+ *
+ * @var array
+ */
+ private $classExists = array();
+
+ /**
+ * Whether annotations that have not been imported should be ignored.
+ *
+ * @var boolean
+ */
+ private $ignoreNotImportedAnnotations = false;
+
+ /**
+ * An array of default namespaces if operating in simple mode.
+ *
+ * @var array
+ */
+ private $namespaces = array();
+
+ /**
+ * A list with annotations that are not causing exceptions when not resolved to an annotation class.
+ *
+ * The names must be the raw names as used in the class, not the fully qualified
+ * class names.
+ *
+ * @var array
+ */
+ private $ignoredAnnotationNames = array();
+
+ /**
+ * @var string
+ */
+ private $context = '';
+
+ /**
+ * Hash-map for caching annotation metadata.
+ *
+ * @var array
+ */
+ private static $annotationMetadata = array(
+ 'Doctrine\Common\Annotations\Annotation\Target' => array(
+ 'is_annotation' => true,
+ 'has_constructor' => true,
+ 'properties' => array(),
+ 'targets_literal' => 'ANNOTATION_CLASS',
+ 'targets' => Target::TARGET_CLASS,
+ 'default_property' => 'value',
+ 'attribute_types' => array(
+ 'value' => array(
+ 'required' => false,
+ 'type' =>'array',
+ 'array_type'=>'string',
+ 'value' =>'array'
+ )
+ ),
+ ),
+ 'Doctrine\Common\Annotations\Annotation\Attribute' => array(
+ 'is_annotation' => true,
+ 'has_constructor' => false,
+ 'targets_literal' => 'ANNOTATION_ANNOTATION',
+ 'targets' => Target::TARGET_ANNOTATION,
+ 'default_property' => 'name',
+ 'properties' => array(
+ 'name' => 'name',
+ 'type' => 'type',
+ 'required' => 'required'
+ ),
+ 'attribute_types' => array(
+ 'value' => array(
+ 'required' => true,
+ 'type' =>'string',
+ 'value' =>'string'
+ ),
+ 'type' => array(
+ 'required' =>true,
+ 'type' =>'string',
+ 'value' =>'string'
+ ),
+ 'required' => array(
+ 'required' =>false,
+ 'type' =>'boolean',
+ 'value' =>'boolean'
+ )
+ ),
+ ),
+ 'Doctrine\Common\Annotations\Annotation\Attributes' => array(
+ 'is_annotation' => true,
+ 'has_constructor' => false,
+ 'targets_literal' => 'ANNOTATION_CLASS',
+ 'targets' => Target::TARGET_CLASS,
+ 'default_property' => 'value',
+ 'properties' => array(
+ 'value' => 'value'
+ ),
+ 'attribute_types' => array(
+ 'value' => array(
+ 'type' =>'array',
+ 'required' =>true,
+ 'array_type'=>'Doctrine\Common\Annotations\Annotation\Attribute',
+ 'value' =>'array'
+ )
+ ),
+ ),
+ 'Doctrine\Common\Annotations\Annotation\Enum' => array(
+ 'is_annotation' => true,
+ 'has_constructor' => true,
+ 'targets_literal' => 'ANNOTATION_PROPERTY',
+ 'targets' => Target::TARGET_PROPERTY,
+ 'default_property' => 'value',
+ 'properties' => array(
+ 'value' => 'value'
+ ),
+ 'attribute_types' => array(
+ 'value' => array(
+ 'type' => 'array',
+ 'required' => true,
+ ),
+ 'literal' => array(
+ 'type' => 'array',
+ 'required' => false,
+ ),
+ ),
+ ),
+ );
+
+ /**
+ * Hash-map for handle types declaration.
+ *
+ * @var array
+ */
+ private static $typeMap = array(
+ 'float' => 'double',
+ 'bool' => 'boolean',
+ // allow uppercase Boolean in honor of George Boole
+ 'Boolean' => 'boolean',
+ 'int' => 'integer',
+ );
+
+ /**
+ * Constructs a new DocParser.
+ */
+ public function __construct()
+ {
+ $this->lexer = new DocLexer;
+ }
+
+ /**
+ * Sets the annotation names that are ignored during the parsing process.
+ *
+ * The names are supposed to be the raw names as used in the class, not the
+ * fully qualified class names.
+ *
+ * @param array $names
+ *
+ * @return void
+ */
+ public function setIgnoredAnnotationNames(array $names)
+ {
+ $this->ignoredAnnotationNames = $names;
+ }
+
+ /**
+ * Sets ignore on not-imported annotations.
+ *
+ * @param boolean $bool
+ *
+ * @return void
+ */
+ public function setIgnoreNotImportedAnnotations($bool)
+ {
+ $this->ignoreNotImportedAnnotations = (boolean) $bool;
+ }
+
+ /**
+ * Sets the default namespaces.
+ *
+ * @param array $namespace
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ public function addNamespace($namespace)
+ {
+ if ($this->imports) {
+ throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
+ }
+
+ $this->namespaces[] = $namespace;
+ }
+
+ /**
+ * Sets the imports.
+ *
+ * @param array $imports
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ public function setImports(array $imports)
+ {
+ if ($this->namespaces) {
+ throw new \RuntimeException('You must either use addNamespace(), or setImports(), but not both.');
+ }
+
+ $this->imports = $imports;
+ }
+
+ /**
+ * Sets current target context as bitmask.
+ *
+ * @param integer $target
+ *
+ * @return void
+ */
+ public function setTarget($target)
+ {
+ $this->target = $target;
+ }
+
+ /**
+ * Parses the given docblock string for annotations.
+ *
+ * @param string $input The docblock string to parse.
+ * @param string $context The parsing context.
+ *
+ * @return array Array of annotations. If no annotations are found, an empty array is returned.
+ */
+ public function parse($input, $context = '')
+ {
+ $pos = $this->findInitialTokenPosition($input);
+ if ($pos === null) {
+ return array();
+ }
+
+ $this->context = $context;
+
+ $this->lexer->setInput(trim(substr($input, $pos), '* /'));
+ $this->lexer->moveNext();
+
+ return $this->Annotations();
+ }
+
+ /**
+ * Finds the first valid annotation
+ *
+ * @param string $input The docblock string to parse
+ *
+ * @return int|null
+ */
+ private function findInitialTokenPosition($input)
+ {
+ $pos = 0;
+
+ // search for first valid annotation
+ while (($pos = strpos($input, '@', $pos)) !== false) {
+ // if the @ is preceded by a space or * it is valid
+ if ($pos === 0 || $input[$pos - 1] === ' ' || $input[$pos - 1] === '*') {
+ return $pos;
+ }
+
+ $pos++;
+ }
+
+ return null;
+ }
+
+ /**
+ * Attempts to match the given token with the current lookahead token.
+ * If they match, updates the lookahead token; otherwise raises a syntax error.
+ *
+ * @param integer $token Type of token.
+ *
+ * @return boolean True if tokens match; false otherwise.
+ */
+ private function match($token)
+ {
+ if ( ! $this->lexer->isNextToken($token) ) {
+ $this->syntaxError($this->lexer->getLiteral($token));
+ }
+
+ return $this->lexer->moveNext();
+ }
+
+ /**
+ * Attempts to match the current lookahead token with any of the given tokens.
+ *
+ * If any of them matches, this method updates the lookahead token; otherwise
+ * a syntax error is raised.
+ *
+ * @param array $tokens
+ *
+ * @return boolean
+ */
+ private function matchAny(array $tokens)
+ {
+ if ( ! $this->lexer->isNextTokenAny($tokens)) {
+ $this->syntaxError(implode(' or ', array_map(array($this->lexer, 'getLiteral'), $tokens)));
+ }
+
+ return $this->lexer->moveNext();
+ }
+
+ /**
+ * Generates a new syntax error.
+ *
+ * @param string $expected Expected string.
+ * @param array|null $token Optional token.
+ *
+ * @return void
+ *
+ * @throws AnnotationException
+ */
+ private function syntaxError($expected, $token = null)
+ {
+ if ($token === null) {
+ $token = $this->lexer->lookahead;
+ }
+
+ $message = sprintf('Expected %s, got ', $expected);
+ $message .= ($this->lexer->lookahead === null)
+ ? 'end of string'
+ : sprintf("'%s' at position %s", $token['value'], $token['position']);
+
+ if (strlen($this->context)) {
+ $message .= ' in ' . $this->context;
+ }
+
+ $message .= '.';
+
+ throw AnnotationException::syntaxError($message);
+ }
+
+ /**
+ * Attempts to check if a class exists or not. This never goes through the PHP autoloading mechanism
+ * but uses the {@link AnnotationRegistry} to load classes.
+ *
+ * @param string $fqcn
+ *
+ * @return boolean
+ */
+ private function classExists($fqcn)
+ {
+ if (isset($this->classExists[$fqcn])) {
+ return $this->classExists[$fqcn];
+ }
+
+ // first check if the class already exists, maybe loaded through another AnnotationReader
+ if (class_exists($fqcn, false)) {
+ return $this->classExists[$fqcn] = true;
+ }
+
+ // final check, does this class exist?
+ return $this->classExists[$fqcn] = AnnotationRegistry::loadAnnotationClass($fqcn);
+ }
+
+ /**
+ * Collects parsing metadata for a given annotation class
+ *
+ * @param string $name The annotation name
+ *
+ * @return void
+ */
+ private function collectAnnotationMetadata($name)
+ {
+ if (self::$metadataParser === null) {
+ self::$metadataParser = new self();
+
+ self::$metadataParser->setIgnoreNotImportedAnnotations(true);
+ self::$metadataParser->setIgnoredAnnotationNames($this->ignoredAnnotationNames);
+ self::$metadataParser->setImports(array(
+ 'enum' => 'Doctrine\Common\Annotations\Annotation\Enum',
+ 'target' => 'Doctrine\Common\Annotations\Annotation\Target',
+ 'attribute' => 'Doctrine\Common\Annotations\Annotation\Attribute',
+ 'attributes' => 'Doctrine\Common\Annotations\Annotation\Attributes'
+ ));
+
+ AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Enum.php');
+ AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Target.php');
+ AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Attribute.php');
+ AnnotationRegistry::registerFile(__DIR__ . '/Annotation/Attributes.php');
+ }
+
+ $class = new \ReflectionClass($name);
+ $docComment = $class->getDocComment();
+
+ // Sets default values for annotation metadata
+ $metadata = array(
+ 'default_property' => null,
+ 'has_constructor' => (null !== $constructor = $class->getConstructor()) && $constructor->getNumberOfParameters() > 0,
+ 'properties' => array(),
+ 'property_types' => array(),
+ 'attribute_types' => array(),
+ 'targets_literal' => null,
+ 'targets' => Target::TARGET_ALL,
+ 'is_annotation' => false !== strpos($docComment, '@Annotation'),
+ );
+
+ // verify that the class is really meant to be an annotation
+ if ($metadata['is_annotation']) {
+ self::$metadataParser->setTarget(Target::TARGET_CLASS);
+
+ foreach (self::$metadataParser->parse($docComment, 'class @' . $name) as $annotation) {
+ if ($annotation instanceof Target) {
+ $metadata['targets'] = $annotation->targets;
+ $metadata['targets_literal'] = $annotation->literal;
+
+ continue;
+ }
+
+ if ($annotation instanceof Attributes) {
+ foreach ($annotation->value as $attribute) {
+ $this->collectAttributeTypeMetadata($metadata, $attribute);
+ }
+ }
+ }
+
+ // if not has a constructor will inject values into public properties
+ if (false === $metadata['has_constructor']) {
+ // collect all public properties
+ foreach ($class->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
+ $metadata['properties'][$property->name] = $property->name;
+
+ if (false === ($propertyComment = $property->getDocComment())) {
+ continue;
+ }
+
+ $attribute = new Attribute();
+
+ $attribute->required = (false !== strpos($propertyComment, '@Required'));
+ $attribute->name = $property->name;
+ $attribute->type = (false !== strpos($propertyComment, '@var') && preg_match('/@var\s+([^\s]+)/',$propertyComment, $matches))
+ ? $matches[1]
+ : 'mixed';
+
+ $this->collectAttributeTypeMetadata($metadata, $attribute);
+
+ // checks if the property has @Enum
+ if (false !== strpos($propertyComment, '@Enum')) {
+ $context = 'property ' . $class->name . "::\$" . $property->name;
+
+ self::$metadataParser->setTarget(Target::TARGET_PROPERTY);
+
+ foreach (self::$metadataParser->parse($propertyComment, $context) as $annotation) {
+ if ( ! $annotation instanceof Enum) {
+ continue;
+ }
+
+ $metadata['enum'][$property->name]['value'] = $annotation->value;
+ $metadata['enum'][$property->name]['literal'] = ( ! empty($annotation->literal))
+ ? $annotation->literal
+ : $annotation->value;
+ }
+ }
+ }
+
+ // choose the first property as default property
+ $metadata['default_property'] = reset($metadata['properties']);
+ }
+ }
+
+ self::$annotationMetadata[$name] = $metadata;
+ }
+
+ /**
+ * Collects parsing metadata for a given attribute.
+ *
+ * @param array $metadata
+ * @param Attribute $attribute
+ *
+ * @return void
+ */
+ private function collectAttributeTypeMetadata(&$metadata, Attribute $attribute)
+ {
+ // handle internal type declaration
+ $type = isset(self::$typeMap[$attribute->type])
+ ? self::$typeMap[$attribute->type]
+ : $attribute->type;
+
+ // handle the case if the property type is mixed
+ if ('mixed' === $type) {
+ return;
+ }
+
+ // Evaluate type
+ switch (true) {
+ // Checks if the property has array
+ case (false !== $pos = strpos($type, '<')):
+ $arrayType = substr($type, $pos + 1, -1);
+ $type = 'array';
+
+ if (isset(self::$typeMap[$arrayType])) {
+ $arrayType = self::$typeMap[$arrayType];
+ }
+
+ $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
+ break;
+
+ // Checks if the property has type[]
+ case (false !== $pos = strrpos($type, '[')):
+ $arrayType = substr($type, 0, $pos);
+ $type = 'array';
+
+ if (isset(self::$typeMap[$arrayType])) {
+ $arrayType = self::$typeMap[$arrayType];
+ }
+
+ $metadata['attribute_types'][$attribute->name]['array_type'] = $arrayType;
+ break;
+ }
+
+ $metadata['attribute_types'][$attribute->name]['type'] = $type;
+ $metadata['attribute_types'][$attribute->name]['value'] = $attribute->type;
+ $metadata['attribute_types'][$attribute->name]['required'] = $attribute->required;
+ }
+
+ /**
+ * Annotations ::= Annotation {[ "*" ]* [Annotation]}*
+ *
+ * @return array
+ */
+ private function Annotations()
+ {
+ $annotations = array();
+
+ while (null !== $this->lexer->lookahead) {
+ if (DocLexer::T_AT !== $this->lexer->lookahead['type']) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ // make sure the @ is preceded by non-catchable pattern
+ if (null !== $this->lexer->token && $this->lexer->lookahead['position'] === $this->lexer->token['position'] + strlen($this->lexer->token['value'])) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ // make sure the @ is followed by either a namespace separator, or
+ // an identifier token
+ if ((null === $peek = $this->lexer->glimpse())
+ || (DocLexer::T_NAMESPACE_SEPARATOR !== $peek['type'] && !in_array($peek['type'], self::$classIdentifiers, true))
+ || $peek['position'] !== $this->lexer->lookahead['position'] + 1) {
+ $this->lexer->moveNext();
+ continue;
+ }
+
+ $this->isNestedAnnotation = false;
+ if (false !== $annot = $this->Annotation()) {
+ $annotations[] = $annot;
+ }
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * Annotation ::= "@" AnnotationName MethodCall
+ * AnnotationName ::= QualifiedName | SimpleName
+ * QualifiedName ::= NameSpacePart "\" {NameSpacePart "\"}* SimpleName
+ * NameSpacePart ::= identifier | null | false | true
+ * SimpleName ::= identifier | null | false | true
+ *
+ * @return mixed False if it is not a valid annotation.
+ *
+ * @throws AnnotationException
+ */
+ private function Annotation()
+ {
+ $this->match(DocLexer::T_AT);
+
+ // check if we have an annotation
+ $name = $this->Identifier();
+
+ // only process names which are not fully qualified, yet
+ // fully qualified names must start with a \
+ $originalName = $name;
+
+ if ('\\' !== $name[0]) {
+ $alias = (false === $pos = strpos($name, '\\'))? $name : substr($name, 0, $pos);
+ $found = false;
+
+ if ($this->namespaces) {
+ foreach ($this->namespaces as $namespace) {
+ if ($this->classExists($namespace.'\\'.$name)) {
+ $name = $namespace.'\\'.$name;
+ $found = true;
+ break;
+ }
+ }
+ } elseif (isset($this->imports[$loweredAlias = strtolower($alias)])) {
+ $found = true;
+ $name = (false !== $pos)
+ ? $this->imports[$loweredAlias] . substr($name, $pos)
+ : $this->imports[$loweredAlias];
+ } elseif ( ! isset($this->ignoredAnnotationNames[$name])
+ && isset($this->imports['__NAMESPACE__'])
+ && $this->classExists($this->imports['__NAMESPACE__'] . '\\' . $name)
+ ) {
+ $name = $this->imports['__NAMESPACE__'].'\\'.$name;
+ $found = true;
+ } elseif (! isset($this->ignoredAnnotationNames[$name]) && $this->classExists($name)) {
+ $found = true;
+ }
+
+ if ( ! $found) {
+ if ($this->ignoreNotImportedAnnotations || isset($this->ignoredAnnotationNames[$name])) {
+ return false;
+ }
+
+ throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s was never imported. Did you maybe forget to add a "use" statement for this annotation?', $name, $this->context));
+ }
+ }
+
+ if ( ! $this->classExists($name)) {
+ throw AnnotationException::semanticalError(sprintf('The annotation "@%s" in %s does not exist, or could not be auto-loaded.', $name, $this->context));
+ }
+
+ // at this point, $name contains the fully qualified class name of the
+ // annotation, and it is also guaranteed that this class exists, and
+ // that it is loaded
+
+
+ // collects the metadata annotation only if there is not yet
+ if ( ! isset(self::$annotationMetadata[$name])) {
+ $this->collectAnnotationMetadata($name);
+ }
+
+ // verify that the class is really meant to be an annotation and not just any ordinary class
+ if (self::$annotationMetadata[$name]['is_annotation'] === false) {
+ if (isset($this->ignoredAnnotationNames[$originalName])) {
+ return false;
+ }
+
+ throw AnnotationException::semanticalError(sprintf('The class "%s" is not annotated with @Annotation. Are you sure this class can be used as annotation? If so, then you need to add @Annotation to the _class_ doc comment of "%s". If it is indeed no annotation, then you need to add @IgnoreAnnotation("%s") to the _class_ doc comment of %s.', $name, $name, $originalName, $this->context));
+ }
+
+ //if target is nested annotation
+ $target = $this->isNestedAnnotation ? Target::TARGET_ANNOTATION : $this->target;
+
+ // Next will be nested
+ $this->isNestedAnnotation = true;
+
+ //if annotation does not support current target
+ if (0 === (self::$annotationMetadata[$name]['targets'] & $target) && $target) {
+ throw AnnotationException::semanticalError(
+ sprintf('Annotation @%s is not allowed to be declared on %s. You may only use this annotation on these code elements: %s.',
+ $originalName, $this->context, self::$annotationMetadata[$name]['targets_literal'])
+ );
+ }
+
+ $values = $this->MethodCall();
+
+ if (isset(self::$annotationMetadata[$name]['enum'])) {
+ // checks all declared attributes
+ foreach (self::$annotationMetadata[$name]['enum'] as $property => $enum) {
+ // checks if the attribute is a valid enumerator
+ if (isset($values[$property]) && ! in_array($values[$property], $enum['value'])) {
+ throw AnnotationException::enumeratorError($property, $name, $this->context, $enum['literal'], $values[$property]);
+ }
+ }
+ }
+
+ // checks all declared attributes
+ foreach (self::$annotationMetadata[$name]['attribute_types'] as $property => $type) {
+ if ($property === self::$annotationMetadata[$name]['default_property']
+ && !isset($values[$property]) && isset($values['value'])) {
+ $property = 'value';
+ }
+
+ // handle a not given attribute or null value
+ if (!isset($values[$property])) {
+ if ($type['required']) {
+ throw AnnotationException::requiredError($property, $originalName, $this->context, 'a(n) '.$type['value']);
+ }
+
+ continue;
+ }
+
+ if ($type['type'] === 'array') {
+ // handle the case of a single value
+ if ( ! is_array($values[$property])) {
+ $values[$property] = array($values[$property]);
+ }
+
+ // checks if the attribute has array type declaration, such as "array"
+ if (isset($type['array_type'])) {
+ foreach ($values[$property] as $item) {
+ if (gettype($item) !== $type['array_type'] && !$item instanceof $type['array_type']) {
+ throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'either a(n) '.$type['array_type'].', or an array of '.$type['array_type'].'s', $item);
+ }
+ }
+ }
+ } elseif (gettype($values[$property]) !== $type['type'] && !$values[$property] instanceof $type['type']) {
+ throw AnnotationException::attributeTypeError($property, $originalName, $this->context, 'a(n) '.$type['value'], $values[$property]);
+ }
+ }
+
+ // check if the annotation expects values via the constructor,
+ // or directly injected into public properties
+ if (self::$annotationMetadata[$name]['has_constructor'] === true) {
+ return new $name($values);
+ }
+
+ $instance = new $name();
+
+ foreach ($values as $property => $value) {
+ if (!isset(self::$annotationMetadata[$name]['properties'][$property])) {
+ if ('value' !== $property) {
+ throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not have a property named "%s". Available properties: %s', $originalName, $this->context, $property, implode(', ', self::$annotationMetadata[$name]['properties'])));
+ }
+
+ // handle the case if the property has no annotations
+ if ( ! $property = self::$annotationMetadata[$name]['default_property']) {
+ throw AnnotationException::creationError(sprintf('The annotation @%s declared on %s does not accept any values, but got %s.', $originalName, $this->context, json_encode($values)));
+ }
+ }
+
+ $instance->{$property} = $value;
+ }
+
+ return $instance;
+ }
+
+ /**
+ * MethodCall ::= ["(" [Values] ")"]
+ *
+ * @return array
+ */
+ private function MethodCall()
+ {
+ $values = array();
+
+ if ( ! $this->lexer->isNextToken(DocLexer::T_OPEN_PARENTHESIS)) {
+ return $values;
+ }
+
+ $this->match(DocLexer::T_OPEN_PARENTHESIS);
+
+ if ( ! $this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
+ $values = $this->Values();
+ }
+
+ $this->match(DocLexer::T_CLOSE_PARENTHESIS);
+
+ return $values;
+ }
+
+ /**
+ * Values ::= Array | Value {"," Value}* [","]
+ *
+ * @return array
+ */
+ private function Values()
+ {
+ $values = array($this->Value());
+
+ while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
+ $this->match(DocLexer::T_COMMA);
+
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_PARENTHESIS)) {
+ break;
+ }
+
+ $token = $this->lexer->lookahead;
+ $value = $this->Value();
+
+ if ( ! is_object($value) && ! is_array($value)) {
+ $this->syntaxError('Value', $token);
+ }
+
+ $values[] = $value;
+ }
+
+ foreach ($values as $k => $value) {
+ if (is_object($value) && $value instanceof \stdClass) {
+ $values[$value->name] = $value->value;
+ } else if ( ! isset($values['value'])){
+ $values['value'] = $value;
+ } else {
+ if ( ! is_array($values['value'])) {
+ $values['value'] = array($values['value']);
+ }
+
+ $values['value'][] = $value;
+ }
+
+ unset($values[$k]);
+ }
+
+ return $values;
+ }
+
+ /**
+ * Constant ::= integer | string | float | boolean
+ *
+ * @return mixed
+ *
+ * @throws AnnotationException
+ */
+ private function Constant()
+ {
+ $identifier = $this->Identifier();
+
+ if ( ! defined($identifier) && false !== strpos($identifier, '::') && '\\' !== $identifier[0]) {
+ list($className, $const) = explode('::', $identifier);
+
+ $alias = (false === $pos = strpos($className, '\\')) ? $className : substr($className, 0, $pos);
+ $found = false;
+
+ switch (true) {
+ case !empty ($this->namespaces):
+ foreach ($this->namespaces as $ns) {
+ if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
+ $className = $ns.'\\'.$className;
+ $found = true;
+ break;
+ }
+ }
+ break;
+
+ case isset($this->imports[$loweredAlias = strtolower($alias)]):
+ $found = true;
+ $className = (false !== $pos)
+ ? $this->imports[$loweredAlias] . substr($className, $pos)
+ : $this->imports[$loweredAlias];
+ break;
+
+ default:
+ if(isset($this->imports['__NAMESPACE__'])) {
+ $ns = $this->imports['__NAMESPACE__'];
+
+ if (class_exists($ns.'\\'.$className) || interface_exists($ns.'\\'.$className)) {
+ $className = $ns.'\\'.$className;
+ $found = true;
+ }
+ }
+ break;
+ }
+
+ if ($found) {
+ $identifier = $className . '::' . $const;
+ }
+ }
+
+ // checks if identifier ends with ::class, \strlen('::class') === 7
+ $classPos = stripos($identifier, '::class');
+ if ($classPos === strlen($identifier) - 7) {
+ return substr($identifier, 0, $classPos);
+ }
+
+ if (!defined($identifier)) {
+ throw AnnotationException::semanticalErrorConstants($identifier, $this->context);
+ }
+
+ return constant($identifier);
+ }
+
+ /**
+ * Identifier ::= string
+ *
+ * @return string
+ */
+ private function Identifier()
+ {
+ // check if we have an annotation
+ if ( ! $this->lexer->isNextTokenAny(self::$classIdentifiers)) {
+ $this->syntaxError('namespace separator or identifier');
+ }
+
+ $this->lexer->moveNext();
+
+ $className = $this->lexer->token['value'];
+
+ while ($this->lexer->lookahead['position'] === ($this->lexer->token['position'] + strlen($this->lexer->token['value']))
+ && $this->lexer->isNextToken(DocLexer::T_NAMESPACE_SEPARATOR)) {
+
+ $this->match(DocLexer::T_NAMESPACE_SEPARATOR);
+ $this->matchAny(self::$classIdentifiers);
+
+ $className .= '\\' . $this->lexer->token['value'];
+ }
+
+ return $className;
+ }
+
+ /**
+ * Value ::= PlainValue | FieldAssignment
+ *
+ * @return mixed
+ */
+ private function Value()
+ {
+ $peek = $this->lexer->glimpse();
+
+ if (DocLexer::T_EQUALS === $peek['type']) {
+ return $this->FieldAssignment();
+ }
+
+ return $this->PlainValue();
+ }
+
+ /**
+ * PlainValue ::= integer | string | float | boolean | Array | Annotation
+ *
+ * @return mixed
+ */
+ private function PlainValue()
+ {
+ if ($this->lexer->isNextToken(DocLexer::T_OPEN_CURLY_BRACES)) {
+ return $this->Arrayx();
+ }
+
+ if ($this->lexer->isNextToken(DocLexer::T_AT)) {
+ return $this->Annotation();
+ }
+
+ if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
+ return $this->Constant();
+ }
+
+ switch ($this->lexer->lookahead['type']) {
+ case DocLexer::T_STRING:
+ $this->match(DocLexer::T_STRING);
+ return $this->lexer->token['value'];
+
+ case DocLexer::T_INTEGER:
+ $this->match(DocLexer::T_INTEGER);
+ return (int)$this->lexer->token['value'];
+
+ case DocLexer::T_FLOAT:
+ $this->match(DocLexer::T_FLOAT);
+ return (float)$this->lexer->token['value'];
+
+ case DocLexer::T_TRUE:
+ $this->match(DocLexer::T_TRUE);
+ return true;
+
+ case DocLexer::T_FALSE:
+ $this->match(DocLexer::T_FALSE);
+ return false;
+
+ case DocLexer::T_NULL:
+ $this->match(DocLexer::T_NULL);
+ return null;
+
+ default:
+ $this->syntaxError('PlainValue');
+ }
+ }
+
+ /**
+ * FieldAssignment ::= FieldName "=" PlainValue
+ * FieldName ::= identifier
+ *
+ * @return array
+ */
+ private function FieldAssignment()
+ {
+ $this->match(DocLexer::T_IDENTIFIER);
+ $fieldName = $this->lexer->token['value'];
+
+ $this->match(DocLexer::T_EQUALS);
+
+ $item = new \stdClass();
+ $item->name = $fieldName;
+ $item->value = $this->PlainValue();
+
+ return $item;
+ }
+
+ /**
+ * Array ::= "{" ArrayEntry {"," ArrayEntry}* [","] "}"
+ *
+ * @return array
+ */
+ private function Arrayx()
+ {
+ $array = $values = array();
+
+ $this->match(DocLexer::T_OPEN_CURLY_BRACES);
+
+ // If the array is empty, stop parsing and return.
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
+ $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
+
+ return $array;
+ }
+
+ $values[] = $this->ArrayEntry();
+
+ while ($this->lexer->isNextToken(DocLexer::T_COMMA)) {
+ $this->match(DocLexer::T_COMMA);
+
+ // optional trailing comma
+ if ($this->lexer->isNextToken(DocLexer::T_CLOSE_CURLY_BRACES)) {
+ break;
+ }
+
+ $values[] = $this->ArrayEntry();
+ }
+
+ $this->match(DocLexer::T_CLOSE_CURLY_BRACES);
+
+ foreach ($values as $value) {
+ list ($key, $val) = $value;
+
+ if ($key !== null) {
+ $array[$key] = $val;
+ } else {
+ $array[] = $val;
+ }
+ }
+
+ return $array;
+ }
+
+ /**
+ * ArrayEntry ::= Value | KeyValuePair
+ * KeyValuePair ::= Key ("=" | ":") PlainValue | Constant
+ * Key ::= string | integer | Constant
+ *
+ * @return array
+ */
+ private function ArrayEntry()
+ {
+ $peek = $this->lexer->glimpse();
+
+ if (DocLexer::T_EQUALS === $peek['type']
+ || DocLexer::T_COLON === $peek['type']) {
+
+ if ($this->lexer->isNextToken(DocLexer::T_IDENTIFIER)) {
+ $key = $this->Constant();
+ } else {
+ $this->matchAny(array(DocLexer::T_INTEGER, DocLexer::T_STRING));
+ $key = $this->lexer->token['value'];
+ }
+
+ $this->matchAny(array(DocLexer::T_EQUALS, DocLexer::T_COLON));
+
+ return array($key, $this->PlainValue());
+ }
+
+ return array(null, $this->Value());
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
new file mode 100644
index 0000000..24add1b
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/FileCacheReader.php
@@ -0,0 +1,288 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * File cache reader for annotations.
+ *
+ * @author Johannes M. Schmitt
+ * @author Benjamin Eberlei
+ *
+ * @deprecated the FileCacheReader is deprecated and will be removed
+ * in version 2.0.0 of doctrine/annotations. Please use the
+ * {@see \Doctrine\Common\Annotations\CachedReader} instead.
+ */
+class FileCacheReader implements Reader
+{
+ /**
+ * @var Reader
+ */
+ private $reader;
+
+ /**
+ * @var string
+ */
+ private $dir;
+
+ /**
+ * @var bool
+ */
+ private $debug;
+
+ /**
+ * @var array
+ */
+ private $loadedAnnotations = array();
+
+ /**
+ * @var array
+ */
+ private $classNameHashes = array();
+
+ /**
+ * @var int
+ */
+ private $umask;
+
+ /**
+ * Constructor.
+ *
+ * @param Reader $reader
+ * @param string $cacheDir
+ * @param boolean $debug
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct(Reader $reader, $cacheDir, $debug = false, $umask = 0002)
+ {
+ if ( ! is_int($umask)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'The parameter umask must be an integer, was: %s',
+ gettype($umask)
+ ));
+ }
+
+ $this->reader = $reader;
+ $this->umask = $umask;
+
+ if (!is_dir($cacheDir) && !@mkdir($cacheDir, 0777 & (~$this->umask), true)) {
+ throw new \InvalidArgumentException(sprintf('The directory "%s" does not exist and could not be created.', $cacheDir));
+ }
+
+ $this->dir = rtrim($cacheDir, '\\/');
+ $this->debug = $debug;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name];
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getClassAnnotations($class);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFilename())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getClassAnnotations($class);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $class = $property->getDeclaringClass();
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name].'$'.$property->getName();
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getPropertyAnnotations($property);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFilename())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getPropertyAnnotations($property);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $class = $method->getDeclaringClass();
+ if ( ! isset($this->classNameHashes[$class->name])) {
+ $this->classNameHashes[$class->name] = sha1($class->name);
+ }
+ $key = $this->classNameHashes[$class->name].'#'.$method->getName();
+
+ if (isset($this->loadedAnnotations[$key])) {
+ return $this->loadedAnnotations[$key];
+ }
+
+ $path = $this->dir.'/'.strtr($key, '\\', '-').'.cache.php';
+ if (!is_file($path)) {
+ $annot = $this->reader->getMethodAnnotations($method);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ if ($this->debug
+ && (false !== $filename = $class->getFilename())
+ && filemtime($path) < filemtime($filename)) {
+ @unlink($path);
+
+ $annot = $this->reader->getMethodAnnotations($method);
+ $this->saveCacheFile($path, $annot);
+ return $this->loadedAnnotations[$key] = $annot;
+ }
+
+ return $this->loadedAnnotations[$key] = include $path;
+ }
+
+ /**
+ * Saves the cache file.
+ *
+ * @param string $path
+ * @param mixed $data
+ *
+ * @return void
+ */
+ private function saveCacheFile($path, $data)
+ {
+ if (!is_writable($this->dir)) {
+ throw new \InvalidArgumentException(sprintf('The directory "%s" is not writable. Both, the webserver and the console user need access. You can manage access rights for multiple users with "chmod +a". If your system does not support this, check out the acl package.', $this->dir));
+ }
+
+ $tempfile = tempnam($this->dir, uniqid('', true));
+
+ if (false === $tempfile) {
+ throw new \RuntimeException(sprintf('Unable to create tempfile in directory: %s', $this->dir));
+ }
+
+ $written = file_put_contents($tempfile, 'umask));
+
+ if (false === rename($tempfile, $path)) {
+ @unlink($tempfile);
+ throw new \RuntimeException(sprintf('Unable to rename %s to %s', $tempfile, $path));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName)
+ {
+ $annotations = $this->getClassAnnotations($class);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ $annotations = $this->getMethodAnnotations($method);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ $annotations = $this->getPropertyAnnotations($property);
+
+ foreach ($annotations as $annotation) {
+ if ($annotation instanceof $annotationName) {
+ return $annotation;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Clears loaded annotations.
+ *
+ * @return void
+ */
+ public function clearLoadedAnnotations()
+ {
+ $this->loadedAnnotations = array();
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
new file mode 100644
index 0000000..bf7fbdc
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/IndexedReader.php
@@ -0,0 +1,119 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Allows the reader to be used in-place of Doctrine's reader.
+ *
+ * @author Johannes M. Schmitt
+ */
+class IndexedReader implements Reader
+{
+ /**
+ * @var Reader
+ */
+ private $delegate;
+
+ /**
+ * Constructor.
+ *
+ * @param Reader $reader
+ */
+ public function __construct(Reader $reader)
+ {
+ $this->delegate = $reader;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ $annotations = array();
+ foreach ($this->delegate->getClassAnnotations($class) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotation)
+ {
+ return $this->delegate->getClassAnnotation($class, $annotation);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ $annotations = array();
+ foreach ($this->delegate->getMethodAnnotations($method) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotation)
+ {
+ return $this->delegate->getMethodAnnotation($method, $annotation);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ $annotations = array();
+ foreach ($this->delegate->getPropertyAnnotations($property) as $annot) {
+ $annotations[get_class($annot)] = $annot;
+ }
+
+ return $annotations;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotation)
+ {
+ return $this->delegate->getPropertyAnnotation($property, $annotation);
+ }
+
+ /**
+ * Proxies all methods to the delegate.
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return mixed
+ */
+ public function __call($method, $args)
+ {
+ return call_user_func_array(array($this->delegate, $method), $args);
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
new file mode 100644
index 0000000..21ee7cc
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/PhpParser.php
@@ -0,0 +1,91 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+use SplFileObject;
+
+/**
+ * Parses a file for namespaces/use/class declarations.
+ *
+ * @author Fabien Potencier
+ * @author Christian Kaps
+ */
+final class PhpParser
+{
+ /**
+ * Parses a class.
+ *
+ * @param \ReflectionClass $class A ReflectionClass
object.
+ *
+ * @return array A list with use statements in the form (Alias => FQN).
+ */
+ public function parseClass(\ReflectionClass $class)
+ {
+ if (method_exists($class, 'getUseStatements')) {
+ return $class->getUseStatements();
+ }
+
+ if (false === $filename = $class->getFilename()) {
+ return array();
+ }
+
+ $content = $this->getFileContent($filename, $class->getStartLine());
+
+ if (null === $content) {
+ return array();
+ }
+
+ $namespace = preg_quote($class->getNamespaceName());
+ $content = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\\1', $content);
+ $tokenizer = new TokenParser('parseUseStatements($class->getNamespaceName());
+
+ return $statements;
+ }
+
+ /**
+ * Gets the content of the file right up to the given line number.
+ *
+ * @param string $filename The name of the file to load.
+ * @param integer $lineNumber The number of lines to read from file.
+ *
+ * @return string The content of the file.
+ */
+ private function getFileContent($filename, $lineNumber)
+ {
+ if ( ! is_file($filename)) {
+ return null;
+ }
+
+ $content = '';
+ $lineCnt = 0;
+ $file = new SplFileObject($filename);
+ while (!$file->eof()) {
+ if ($lineCnt++ == $lineNumber) {
+ break;
+ }
+
+ $content .= $file->fgets();
+ }
+
+ return $content;
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
new file mode 100644
index 0000000..4774f87
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/Reader.php
@@ -0,0 +1,89 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Interface for annotation readers.
+ *
+ * @author Johannes M. Schmitt
+ */
+interface Reader
+{
+ /**
+ * Gets the annotations applied to a class.
+ *
+ * @param \ReflectionClass $class The ReflectionClass of the class from which
+ * the class annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getClassAnnotations(\ReflectionClass $class);
+
+ /**
+ * Gets a class annotation.
+ *
+ * @param \ReflectionClass $class The ReflectionClass of the class from which
+ * the class annotations should be read.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getClassAnnotation(\ReflectionClass $class, $annotationName);
+
+ /**
+ * Gets the annotations applied to a method.
+ *
+ * @param \ReflectionMethod $method The ReflectionMethod of the method from which
+ * the annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getMethodAnnotations(\ReflectionMethod $method);
+
+ /**
+ * Gets a method annotation.
+ *
+ * @param \ReflectionMethod $method The ReflectionMethod to read the annotations from.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getMethodAnnotation(\ReflectionMethod $method, $annotationName);
+
+ /**
+ * Gets the annotations applied to a property.
+ *
+ * @param \ReflectionProperty $property The ReflectionProperty of the property
+ * from which the annotations should be read.
+ *
+ * @return array An array of Annotations.
+ */
+ function getPropertyAnnotations(\ReflectionProperty $property);
+
+ /**
+ * Gets a property annotation.
+ *
+ * @param \ReflectionProperty $property The ReflectionProperty to read the annotations from.
+ * @param string $annotationName The name of the annotation.
+ *
+ * @return object|null The Annotation or NULL, if the requested annotation does not exist.
+ */
+ function getPropertyAnnotation(\ReflectionProperty $property, $annotationName);
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
new file mode 100644
index 0000000..d4757ee
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/SimpleAnnotationReader.php
@@ -0,0 +1,127 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Simple Annotation Reader.
+ *
+ * This annotation reader is intended to be used in projects where you have
+ * full-control over all annotations that are available.
+ *
+ * @since 2.2
+ * @author Johannes M. Schmitt
+ * @author Fabio B. Silva
+ */
+class SimpleAnnotationReader implements Reader
+{
+ /**
+ * @var DocParser
+ */
+ private $parser;
+
+ /**
+ * Constructor.
+ *
+ * Initializes a new SimpleAnnotationReader.
+ */
+ public function __construct()
+ {
+ $this->parser = new DocParser();
+ $this->parser->setIgnoreNotImportedAnnotations(true);
+ }
+
+ /**
+ * Adds a namespace in which we will look for annotations.
+ *
+ * @param string $namespace
+ *
+ * @return void
+ */
+ public function addNamespace($namespace)
+ {
+ $this->parser->addNamespace($namespace);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotations(\ReflectionClass $class)
+ {
+ return $this->parser->parse($class->getDocComment(), 'class '.$class->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotations(\ReflectionMethod $method)
+ {
+ return $this->parser->parse($method->getDocComment(), 'method '.$method->getDeclaringClass()->name.'::'.$method->getName().'()');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotations(\ReflectionProperty $property)
+ {
+ return $this->parser->parse($property->getDocComment(), 'property '.$property->getDeclaringClass()->name.'::$'.$property->getName());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassAnnotation(\ReflectionClass $class, $annotationName)
+ {
+ foreach ($this->getClassAnnotations($class) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethodAnnotation(\ReflectionMethod $method, $annotationName)
+ {
+ foreach ($this->getMethodAnnotations($method) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPropertyAnnotation(\ReflectionProperty $property, $annotationName)
+ {
+ foreach ($this->getPropertyAnnotations($property) as $annot) {
+ if ($annot instanceof $annotationName) {
+ return $annot;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
new file mode 100644
index 0000000..9bdccce
--- /dev/null
+++ b/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/TokenParser.php
@@ -0,0 +1,187 @@
+.
+ */
+
+namespace Doctrine\Common\Annotations;
+
+/**
+ * Parses a file for namespaces/use/class declarations.
+ *
+ * @author Fabien Potencier
+ * @author Christian Kaps
+ */
+class TokenParser
+{
+ /**
+ * The token list.
+ *
+ * @var array
+ */
+ private $tokens;
+
+ /**
+ * The number of tokens.
+ *
+ * @var int
+ */
+ private $numTokens;
+
+ /**
+ * The current array pointer.
+ *
+ * @var int
+ */
+ private $pointer = 0;
+
+ /**
+ * @param string $contents
+ */
+ public function __construct($contents)
+ {
+ $this->tokens = token_get_all($contents);
+
+ // The PHP parser sets internal compiler globals for certain things. Annoyingly, the last docblock comment it
+ // saw gets stored in doc_comment. When it comes to compile the next thing to be include()d this stored
+ // doc_comment becomes owned by the first thing the compiler sees in the file that it considers might have a
+ // docblock. If the first thing in the file is a class without a doc block this would cause calls to
+ // getDocBlock() on said class to return our long lost doc_comment. Argh.
+ // To workaround, cause the parser to parse an empty docblock. Sure getDocBlock() will return this, but at least
+ // it's harmless to us.
+ token_get_all("numTokens = count($this->tokens);
+ }
+
+ /**
+ * Gets the next non whitespace and non comment token.
+ *
+ * @param boolean $docCommentIsComment If TRUE then a doc comment is considered a comment and skipped.
+ * If FALSE then only whitespace and normal comments are skipped.
+ *
+ * @return array|null The token if exists, null otherwise.
+ */
+ public function next($docCommentIsComment = TRUE)
+ {
+ for ($i = $this->pointer; $i < $this->numTokens; $i++) {
+ $this->pointer++;
+ if ($this->tokens[$i][0] === T_WHITESPACE ||
+ $this->tokens[$i][0] === T_COMMENT ||
+ ($docCommentIsComment && $this->tokens[$i][0] === T_DOC_COMMENT)) {
+
+ continue;
+ }
+
+ return $this->tokens[$i];
+ }
+
+ return null;
+ }
+
+ /**
+ * Parses a single use statement.
+ *
+ * @return array A list with all found class names for a use statement.
+ */
+ public function parseUseStatement()
+ {
+ $class = '';
+ $alias = '';
+ $statements = array();
+ $explicitAlias = false;
+ while (($token = $this->next())) {
+ $isNameToken = $token[0] === T_STRING || $token[0] === T_NS_SEPARATOR;
+ if (!$explicitAlias && $isNameToken) {
+ $class .= $token[1];
+ $alias = $token[1];
+ } else if ($explicitAlias && $isNameToken) {
+ $alias .= $token[1];
+ } else if ($token[0] === T_AS) {
+ $explicitAlias = true;
+ $alias = '';
+ } else if ($token === ',') {
+ $statements[strtolower($alias)] = $class;
+ $class = '';
+ $alias = '';
+ $explicitAlias = false;
+ } else if ($token === ';') {
+ $statements[strtolower($alias)] = $class;
+ break;
+ } else {
+ break;
+ }
+ }
+
+ return $statements;
+ }
+
+ /**
+ * Gets all use statements.
+ *
+ * @param string $namespaceName The namespace name of the reflected class.
+ *
+ * @return array A list with all found use statements.
+ */
+ public function parseUseStatements($namespaceName)
+ {
+ $statements = array();
+ while (($token = $this->next())) {
+ if ($token[0] === T_USE) {
+ $statements = array_merge($statements, $this->parseUseStatement());
+ continue;
+ }
+ if ($token[0] !== T_NAMESPACE || $this->parseNamespace() != $namespaceName) {
+ continue;
+ }
+
+ // Get fresh array for new namespace. This is to prevent the parser to collect the use statements
+ // for a previous namespace with the same name. This is the case if a namespace is defined twice
+ // or if a namespace with the same name is commented out.
+ $statements = array();
+ }
+
+ return $statements;
+ }
+
+ /**
+ * Gets the namespace.
+ *
+ * @return string The found namespace.
+ */
+ public function parseNamespace()
+ {
+ $name = '';
+ while (($token = $this->next()) && ($token[0] === T_STRING || $token[0] === T_NS_SEPARATOR)) {
+ $name .= $token[1];
+ }
+
+ return $name;
+ }
+
+ /**
+ * Gets the class name.
+ *
+ * @return string The found class name.
+ */
+ public function parseClass()
+ {
+ // Namespaces and class names are tokenized the same: T_STRINGs
+ // separated by T_NS_SEPARATOR so we can use one function to provide
+ // both.
+ return $this->parseNamespace();
+ }
+}
diff --git a/vendor/doctrine/cache/.coveralls.yml b/vendor/doctrine/cache/.coveralls.yml
new file mode 100644
index 0000000..0c08233
--- /dev/null
+++ b/vendor/doctrine/cache/.coveralls.yml
@@ -0,0 +1,4 @@
+# for php-coveralls
+service_name: travis-ci
+src_dir: lib
+coverage_clover: build/logs/clover.xml
diff --git a/vendor/doctrine/cache/.travis.yml b/vendor/doctrine/cache/.travis.yml
new file mode 100644
index 0000000..62a0ec1
--- /dev/null
+++ b/vendor/doctrine/cache/.travis.yml
@@ -0,0 +1,44 @@
+language: php
+
+sudo: false
+
+cache:
+ directories:
+ - vendor
+ - $HOME/.composer/cache
+
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - hhvm
+
+services:
+ - riak
+ - mongodb
+ - memcached
+ - redis-server
+
+before_install:
+ - if [[ $TRAVIS_PHP_VERSION != 'hhvm' && $TRAVIS_PHP_VERSION != '7.0' ]]; then pecl install riak-beta; fi;
+ - if [[ $TRAVIS_PHP_VERSION =~ 5.[34] ]] ; then echo 'extension="apc.so"' >> ./tests/travis/php.ini; fi;
+ - if [[ $TRAVIS_PHP_VERSION =~ 5.[56] ]] ; then echo yes | pecl install apcu-4.0.10; fi;
+ - if [[ $TRAVIS_PHP_VERSION = 7.* ]] ; then pecl config-set preferred_state beta; echo yes | pecl install apcu; fi;
+ - if [[ $TRAVIS_PHP_VERSION != 'hhvm' ]]; then phpenv config-add ./tests/travis/php.ini; fi;
+
+install:
+ - travis_retry composer install
+
+script:
+ - ./vendor/bin/phpunit -c ./tests/travis/phpunit.travis.xml -v
+
+after_script:
+ - php vendor/bin/coveralls -v
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - php: hhvm
+ - php: 7.0
diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE
new file mode 100644
index 0000000..8c38cc1
--- /dev/null
+++ b/vendor/doctrine/cache/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2015 Doctrine Project
+
+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/vendor/doctrine/cache/README.md b/vendor/doctrine/cache/README.md
new file mode 100644
index 0000000..94f80a3
--- /dev/null
+++ b/vendor/doctrine/cache/README.md
@@ -0,0 +1,14 @@
+# Doctrine Cache
+
+Master: [![Build Status](https://secure.travis-ci.org/doctrine/cache.png?branch=master)](http://travis-ci.org/doctrine/cache) [![Coverage Status](https://coveralls.io/repos/doctrine/cache/badge.png?branch=master)](https://coveralls.io/r/doctrine/cache?branch=master)
+
+[![Latest Stable Version](https://poser.pugx.org/doctrine/cache/v/stable.png)](https://packagist.org/packages/doctrine/cache) [![Total Downloads](https://poser.pugx.org/doctrine/cache/downloads.png)](https://packagist.org/packages/doctrine/cache)
+
+Cache component extracted from the Doctrine Common project.
+
+## Changelog
+
+### v1.2
+
+* Added support for MongoDB as Cache Provider
+* Fix namespace version reset
diff --git a/vendor/doctrine/cache/UPGRADE.md b/vendor/doctrine/cache/UPGRADE.md
new file mode 100644
index 0000000..e1f8a50
--- /dev/null
+++ b/vendor/doctrine/cache/UPGRADE.md
@@ -0,0 +1,16 @@
+# Upgrade to 1.4
+
+## Minor BC Break: `Doctrine\Common\Cache\FileCache#$extension` is now `private`.
+
+If you need to override the value of `Doctrine\Common\Cache\FileCache#$extension`, then use the
+second parameter of `Doctrine\Common\Cache\FileCache#__construct()` instead of overriding
+the property in your own implementation.
+
+## Minor BC Break: file based caches paths changed
+
+`Doctrine\Common\Cache\FileCache`, `Doctrine\Common\Cache\PhpFileCache` and
+`Doctrine\Common\Cache\FilesystemCache` are using a different cache paths structure.
+
+If you rely on warmed up caches for deployments, consider that caches generated
+with `doctrine/cache` `<1.4` are not compatible with the new directory structure,
+and will be ignored.
diff --git a/vendor/doctrine/cache/build.properties b/vendor/doctrine/cache/build.properties
new file mode 100644
index 0000000..2d98c36
--- /dev/null
+++ b/vendor/doctrine/cache/build.properties
@@ -0,0 +1,3 @@
+# Version class and file
+project.version_class = Doctrine\\Common\\Cache\\Version
+project.version_file = lib/Doctrine/Common/Cache/Version.php
diff --git a/vendor/doctrine/cache/build.xml b/vendor/doctrine/cache/build.xml
new file mode 100644
index 0000000..a7c52e3
--- /dev/null
+++ b/vendor/doctrine/cache/build.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json
new file mode 100644
index 0000000..bd7a7ec
--- /dev/null
+++ b/vendor/doctrine/cache/composer.json
@@ -0,0 +1,37 @@
+{
+ "name": "doctrine/cache",
+ "type": "library",
+ "description": "Caching library offering an object-oriented API for many cache backends",
+ "keywords": ["cache", "caching"],
+ "homepage": "http://www.doctrine-project.org",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=3.7",
+ "satooshi/php-coveralls": "~0.6",
+ "predis/predis": "~1.0"
+ },
+ "conflict": {
+ "doctrine/common": ">2.2,<2.4"
+ },
+ "autoload": {
+ "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" }
+ },
+ "autoload-dev": {
+ "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine/Tests" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.5.x-dev"
+ }
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
new file mode 100644
index 0000000..036583e
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ApcCache.php
@@ -0,0 +1,107 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * APC cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class ApcCache extends CacheProvider
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return apc_fetch($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return apc_exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ return apc_store($id, $data, $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ // apc_delete returns false if the id does not exist
+ return apc_delete($id) || ! apc_exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return apc_clear_cache() && apc_clear_cache('user');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ return apc_fetch($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $info = apc_cache_info('', true);
+ $sma = apc_sma_info();
+
+ // @TODO - Temporary fix @see https://github.com/krakjoe/apcu/pull/42
+ if (PHP_VERSION_ID >= 50500) {
+ $info['num_hits'] = isset($info['num_hits']) ? $info['num_hits'] : $info['nhits'];
+ $info['num_misses'] = isset($info['num_misses']) ? $info['num_misses'] : $info['nmisses'];
+ $info['start_time'] = isset($info['start_time']) ? $info['start_time'] : $info['stime'];
+ }
+
+ return array(
+ Cache::STATS_HITS => $info['num_hits'],
+ Cache::STATS_MISSES => $info['num_misses'],
+ Cache::STATS_UPTIME => $info['start_time'],
+ Cache::STATS_MEMORY_USAGE => $info['mem_size'],
+ Cache::STATS_MEMORY_AVAILABLE => $sma['avail_mem'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
new file mode 100644
index 0000000..31a0729
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ArrayCache.php
@@ -0,0 +1,94 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Array cache driver.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class ArrayCache extends CacheProvider
+{
+ /**
+ * @var array $data
+ */
+ private $data = array();
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->doContains($id) ? $this->data[$id] : false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ // isset() is required for performance optimizations, to avoid unnecessary function calls to array_key_exists.
+ return isset($this->data[$id]) || array_key_exists($id, $this->data);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $this->data[$id] = $data;
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ unset($this->data[$id]);
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ $this->data = array();
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ return null;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
new file mode 100644
index 0000000..89fe323
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php
@@ -0,0 +1,116 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Interface for cache drivers.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Fabio B. Silva
+ * @author Kévin Dunglas
+ */
+interface Cache
+{
+ const STATS_HITS = 'hits';
+ const STATS_MISSES = 'misses';
+ const STATS_UPTIME = 'uptime';
+ const STATS_MEMORY_USAGE = 'memory_usage';
+ const STATS_MEMORY_AVAILABLE = 'memory_available';
+ /**
+ * Only for backward compatibility (may be removed in next major release)
+ *
+ * @deprecated
+ */
+ const STATS_MEMORY_AVAILIABLE = 'memory_available';
+
+ /**
+ * Fetches an entry from the cache.
+ *
+ * @param string $id The id of the cache entry to fetch.
+ *
+ * @return mixed The cached data or FALSE, if no cache entry exists for the given id.
+ */
+ public function fetch($id);
+
+ /**
+ * Tests if an entry exists in the cache.
+ *
+ * @param string $id The cache id of the entry to check for.
+ *
+ * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
+ */
+ public function contains($id);
+
+ /**
+ * Puts data into the cache.
+ *
+ * If a cache entry with the given id already exists, its data will be replaced.
+ *
+ * @param string $id The cache id.
+ * @param mixed $data The cache entry/data.
+ * @param int $lifeTime The lifetime in number of seconds for this cache entry.
+ * If zero (the default), the entry never expires (although it may be deleted from the cache
+ * to make place for other entries).
+ *
+ * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
+ */
+ public function save($id, $data, $lifeTime = 0);
+
+ /**
+ * Deletes a cache entry.
+ *
+ * @param string $id The cache id.
+ *
+ * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
+ * Deleting a non-existing entry is considered successful.
+ */
+ public function delete($id);
+
+ /**
+ * Retrieves cached information from the data store.
+ *
+ * The server's statistics array has the following values:
+ *
+ * - hits
+ * Number of keys that have been requested and found present.
+ *
+ * - misses
+ * Number of items that have been requested and not found.
+ *
+ * - uptime
+ * Time that the server is running.
+ *
+ * - memory_usage
+ * Memory used by this server to store items.
+ *
+ * - memory_available
+ * Memory allowed to use for storage.
+ *
+ * @since 2.2
+ *
+ * @return array|null An associative array with server's statistics if available, NULL otherwise.
+ */
+ public function getStats();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
new file mode 100644
index 0000000..b1d4d67
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php
@@ -0,0 +1,277 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Base class for cache provider implementations.
+ *
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author Fabio B. Silva
+ */
+abstract class CacheProvider implements Cache, FlushableCache, ClearableCache, MultiGetCache
+{
+ const DOCTRINE_NAMESPACE_CACHEKEY = 'DoctrineNamespaceCacheKey[%s]';
+
+ /**
+ * The namespace to prefix all cache ids with.
+ *
+ * @var string
+ */
+ private $namespace = '';
+
+ /**
+ * The namespace version.
+ *
+ * @var integer|null
+ */
+ private $namespaceVersion;
+
+ /**
+ * Sets the namespace to prefix all cache ids with.
+ *
+ * @param string $namespace
+ *
+ * @return void
+ */
+ public function setNamespace($namespace)
+ {
+ $this->namespace = (string) $namespace;
+ $this->namespaceVersion = null;
+ }
+
+ /**
+ * Retrieves the namespace that prefixes all cache ids.
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->namespace;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fetch($id)
+ {
+ return $this->doFetch($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fetchMultiple(array $keys)
+ {
+ if (empty($keys)) {
+ return array();
+ }
+
+ // note: the array_combine() is in place to keep an association between our $keys and the $namespacedKeys
+ $namespacedKeys = array_combine($keys, array_map(array($this, 'getNamespacedId'), $keys));
+ $items = $this->doFetchMultiple($namespacedKeys);
+ $foundItems = array();
+
+ // no internal array function supports this sort of mapping: needs to be iterative
+ // this filters and combines keys in one pass
+ foreach ($namespacedKeys as $requestedKey => $namespacedKey) {
+ if (isset($items[$namespacedKey]) || array_key_exists($namespacedKey, $items)) {
+ $foundItems[$requestedKey] = $items[$namespacedKey];
+ }
+ }
+
+ return $foundItems;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function contains($id)
+ {
+ return $this->doContains($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function save($id, $data, $lifeTime = 0)
+ {
+ return $this->doSave($this->getNamespacedId($id), $data, $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function delete($id)
+ {
+ return $this->doDelete($this->getNamespacedId($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getStats()
+ {
+ return $this->doGetStats();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function flushAll()
+ {
+ return $this->doFlush();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function deleteAll()
+ {
+ $namespaceCacheKey = $this->getNamespaceCacheKey();
+ $namespaceVersion = $this->getNamespaceVersion() + 1;
+
+ if ($this->doSave($namespaceCacheKey, $namespaceVersion)) {
+ $this->namespaceVersion = $namespaceVersion;
+
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Prefixes the passed id with the configured namespace value.
+ *
+ * @param string $id The id to namespace.
+ *
+ * @return string The namespaced id.
+ */
+ private function getNamespacedId($id)
+ {
+ $namespaceVersion = $this->getNamespaceVersion();
+
+ return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion);
+ }
+
+ /**
+ * Returns the namespace cache key.
+ *
+ * @return string
+ */
+ private function getNamespaceCacheKey()
+ {
+ return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace);
+ }
+
+ /**
+ * Returns the namespace version.
+ *
+ * @return integer
+ */
+ private function getNamespaceVersion()
+ {
+ if (null !== $this->namespaceVersion) {
+ return $this->namespaceVersion;
+ }
+
+ $namespaceCacheKey = $this->getNamespaceCacheKey();
+ $this->namespaceVersion = $this->doFetch($namespaceCacheKey) ?: 1;
+
+ return $this->namespaceVersion;
+ }
+
+ /**
+ * Default implementation of doFetchMultiple. Each driver that supports multi-get should owerwrite it.
+ *
+ * @param array $keys Array of keys to retrieve from cache
+ * @return array Array of values retrieved for the given keys.
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ $returnValues = array();
+
+ foreach ($keys as $key) {
+ if (false !== ($item = $this->doFetch($key)) || $this->doContains($key)) {
+ $returnValues[$key] = $item;
+ }
+ }
+
+ return $returnValues;
+ }
+
+ /**
+ * Fetches an entry from the cache.
+ *
+ * @param string $id The id of the cache entry to fetch.
+ *
+ * @return mixed|false The cached data or FALSE, if no cache entry exists for the given id.
+ */
+ abstract protected function doFetch($id);
+
+ /**
+ * Tests if an entry exists in the cache.
+ *
+ * @param string $id The cache id of the entry to check for.
+ *
+ * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise.
+ */
+ abstract protected function doContains($id);
+
+ /**
+ * Puts data into the cache.
+ *
+ * @param string $id The cache id.
+ * @param string $data The cache entry/data.
+ * @param int $lifeTime The lifetime. If != 0, sets a specific lifetime for this
+ * cache entry (0 => infinite lifeTime).
+ *
+ * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise.
+ */
+ abstract protected function doSave($id, $data, $lifeTime = 0);
+
+ /**
+ * Deletes a cache entry.
+ *
+ * @param string $id The cache id.
+ *
+ * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise.
+ */
+ abstract protected function doDelete($id);
+
+ /**
+ * Flushes all cache entries.
+ *
+ * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
+ */
+ abstract protected function doFlush();
+
+ /**
+ * Retrieves cached information from the data store.
+ *
+ * @since 2.2
+ *
+ * @return array|null An associative array with server's statistics if available, NULL otherwise.
+ */
+ abstract protected function doGetStats();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
new file mode 100644
index 0000000..96c9b54
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ChainCache.php
@@ -0,0 +1,147 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Cache provider that allows to easily chain multiple cache providers
+ *
+ * @author Michaël Gallego
+ */
+class ChainCache extends CacheProvider
+{
+ /**
+ * @var CacheProvider[]
+ */
+ private $cacheProviders = array();
+
+ /**
+ * Constructor
+ *
+ * @param CacheProvider[] $cacheProviders
+ */
+ public function __construct($cacheProviders = array())
+ {
+ $this->cacheProviders = $cacheProviders;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function setNamespace($namespace)
+ {
+ parent::setNamespace($namespace);
+
+ foreach ($this->cacheProviders as $cacheProvider) {
+ $cacheProvider->setNamespace($namespace);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doFetch($id)
+ {
+ foreach ($this->cacheProviders as $key => $cacheProvider) {
+ if ($cacheProvider->doContains($id)) {
+ $value = $cacheProvider->doFetch($id);
+
+ // We populate all the previous cache layers (that are assumed to be faster)
+ for ($subKey = $key - 1 ; $subKey >= 0 ; $subKey--) {
+ $this->cacheProviders[$subKey]->doSave($id, $value);
+ }
+
+ return $value;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doContains($id)
+ {
+ foreach ($this->cacheProviders as $cacheProvider) {
+ if ($cacheProvider->doContains($id)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $stored = true;
+
+ foreach ($this->cacheProviders as $cacheProvider) {
+ $stored = $cacheProvider->doSave($id, $data, $lifeTime) && $stored;
+ }
+
+ return $stored;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doDelete($id)
+ {
+ $deleted = true;
+
+ foreach ($this->cacheProviders as $cacheProvider) {
+ $deleted = $cacheProvider->doDelete($id) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doFlush()
+ {
+ $flushed = true;
+
+ foreach ($this->cacheProviders as $cacheProvider) {
+ $flushed = $cacheProvider->doFlush() && $flushed;
+ }
+
+ return $flushed;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doGetStats()
+ {
+ // We return all the stats from all adapters
+ $stats = array();
+
+ foreach ($this->cacheProviders as $cacheProvider) {
+ $stats[] = $cacheProvider->doGetStats();
+ }
+
+ return $stats;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
new file mode 100644
index 0000000..3a91eaf
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php
@@ -0,0 +1,40 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Interface for cache that can be flushed.
+ *
+ * Intended to be used for partial clearing of a cache namespace. For a more
+ * global "flushing", see {@see FlushableCache}.
+ *
+ * @link www.doctrine-project.org
+ * @since 1.4
+ * @author Adirelle
+ */
+interface ClearableCache
+{
+ /**
+ * Deletes all cache entries in the current cache namespace.
+ *
+ * @return bool TRUE if the cache entries were successfully deleted, FALSE otherwise.
+ */
+ public function deleteAll();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
new file mode 100644
index 0000000..c21691d
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CouchbaseCache.php
@@ -0,0 +1,121 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use \Couchbase;
+
+/**
+ * Couchbase cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.4
+ * @author Michael Nitschinger
+ */
+class CouchbaseCache extends CacheProvider
+{
+ /**
+ * @var Couchbase|null
+ */
+ private $couchbase;
+
+ /**
+ * Sets the Couchbase instance to use.
+ *
+ * @param Couchbase $couchbase
+ *
+ * @return void
+ */
+ public function setCouchbase(Couchbase $couchbase)
+ {
+ $this->couchbase = $couchbase;
+ }
+
+ /**
+ * Gets the Couchbase instance used by the cache.
+ *
+ * @return Couchbase|null
+ */
+ public function getCouchbase()
+ {
+ return $this->couchbase;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->couchbase->get($id) ?: false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return (null !== $this->couchbase->get($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 30 * 24 * 3600) {
+ $lifeTime = time() + $lifeTime;
+ }
+ return $this->couchbase->set($id, $data, (int) $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return $this->couchbase->delete($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return $this->couchbase->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $stats = $this->couchbase->getStats();
+ $servers = $this->couchbase->getServers();
+ $server = explode(":", $servers[0]);
+ $key = $server[0] . ":" . "11210";
+ $stats = $stats[$key];
+ return array(
+ Cache::STATS_HITS => $stats['get_hits'],
+ Cache::STATS_MISSES => $stats['get_misses'],
+ Cache::STATS_UPTIME => $stats['uptime'],
+ Cache::STATS_MEMORY_USAGE => $stats['bytes'],
+ Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
new file mode 100644
index 0000000..b2e0427
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php
@@ -0,0 +1,286 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Base file cache driver.
+ *
+ * @since 2.3
+ * @author Fabio B. Silva
+ * @author Tobias Schultze
+ */
+abstract class FileCache extends CacheProvider
+{
+ /**
+ * The cache directory.
+ *
+ * @var string
+ */
+ protected $directory;
+
+ /**
+ * The cache file extension.
+ *
+ * @var string
+ */
+ private $extension;
+
+ /**
+ * @var int
+ */
+ private $umask;
+
+ /**
+ * @var int
+ */
+ private $directoryStringLength;
+
+ /**
+ * @var int
+ */
+ private $extensionStringLength;
+
+ /**
+ * @var bool
+ */
+ private $isRunningOnWindows;
+
+ /**
+ * Constructor.
+ *
+ * @param string $directory The cache directory.
+ * @param string $extension The cache file extension.
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function __construct($directory, $extension = '', $umask = 0002)
+ {
+ // YES, this needs to be *before* createPathIfNeeded()
+ if ( ! is_int($umask)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'The umask parameter is required to be integer, was: %s',
+ gettype($umask)
+ ));
+ }
+ $this->umask = $umask;
+
+ if ( ! $this->createPathIfNeeded($directory)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'The directory "%s" does not exist and could not be created.',
+ $directory
+ ));
+ }
+
+ if ( ! is_writable($directory)) {
+ throw new \InvalidArgumentException(sprintf(
+ 'The directory "%s" is not writable.',
+ $directory
+ ));
+ }
+
+ // YES, this needs to be *after* createPathIfNeeded()
+ $this->directory = realpath($directory);
+ $this->extension = (string) $extension;
+
+ $this->directoryStringLength = strlen($this->directory);
+ $this->extensionStringLength = strlen($this->extension);
+ $this->isRunningOnWindows = defined('PHP_WINDOWS_VERSION_BUILD');
+ }
+
+ /**
+ * Gets the cache directory.
+ *
+ * @return string
+ */
+ public function getDirectory()
+ {
+ return $this->directory;
+ }
+
+ /**
+ * Gets the cache file extension.
+ *
+ * @return string
+ */
+ public function getExtension()
+ {
+ return $this->extension;
+ }
+
+ /**
+ * @param string $id
+ *
+ * @return string
+ */
+ protected function getFilename($id)
+ {
+ $hash = hash('sha256', $id);
+
+ // This ensures that the filename is unique and that there are no invalid chars in it.
+ if (
+ '' === $id
+ || ((strlen($id) * 2 + $this->extensionStringLength) > 255)
+ || ($this->isRunningOnWindows && ($this->directoryStringLength + 4 + strlen($id) * 2 + $this->extensionStringLength) > 258)
+ ) {
+ // Most filesystems have a limit of 255 chars for each path component. On Windows the the whole path is limited
+ // to 260 chars (including terminating null char). Using long UNC ("\\?\" prefix) does not work with the PHP API.
+ // And there is a bug in PHP (https://bugs.php.net/bug.php?id=70943) with path lengths of 259.
+ // So if the id in hex representation would surpass the limit, we use the hash instead. The prefix prevents
+ // collisions between the hash and bin2hex.
+ $filename = '_' . $hash;
+ } else {
+ $filename = bin2hex($id);
+ }
+
+ return $this->directory
+ . DIRECTORY_SEPARATOR
+ . substr($hash, 0, 2)
+ . DIRECTORY_SEPARATOR
+ . $filename
+ . $this->extension;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ $filename = $this->getFilename($id);
+
+ return @unlink($filename) || ! file_exists($filename);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ foreach ($this->getIterator() as $name => $file) {
+ if ($file->isDir()) {
+ // Remove the intermediate directories which have been created to balance the tree. It only takes effect
+ // if the directory is empty. If several caches share the same directory but with different file extensions,
+ // the other ones are not removed.
+ @rmdir($name);
+ } elseif ($this->isFilenameEndingWithExtension($name)) {
+ // If an extension is set, only remove files which end with the given extension.
+ // If no extension is set, we have no other choice than removing everything.
+ @unlink($name);
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $usage = 0;
+ foreach ($this->getIterator() as $name => $file) {
+ if (! $file->isDir() && $this->isFilenameEndingWithExtension($name)) {
+ $usage += $file->getSize();
+ }
+ }
+
+ $free = disk_free_space($this->directory);
+
+ return array(
+ Cache::STATS_HITS => null,
+ Cache::STATS_MISSES => null,
+ Cache::STATS_UPTIME => null,
+ Cache::STATS_MEMORY_USAGE => $usage,
+ Cache::STATS_MEMORY_AVAILABLE => $free,
+ );
+ }
+
+ /**
+ * Create path if needed.
+ *
+ * @param string $path
+ * @return bool TRUE on success or if path already exists, FALSE if path cannot be created.
+ */
+ private function createPathIfNeeded($path)
+ {
+ if ( ! is_dir($path)) {
+ if (false === @mkdir($path, 0777 & (~$this->umask), true) && !is_dir($path)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Writes a string content to file in an atomic way.
+ *
+ * @param string $filename Path to the file where to write the data.
+ * @param string $content The content to write
+ *
+ * @return bool TRUE on success, FALSE if path cannot be created, if path is not writable or an any other error.
+ */
+ protected function writeFile($filename, $content)
+ {
+ $filepath = pathinfo($filename, PATHINFO_DIRNAME);
+
+ if ( ! $this->createPathIfNeeded($filepath)) {
+ return false;
+ }
+
+ if ( ! is_writable($filepath)) {
+ return false;
+ }
+
+ $tmpFile = tempnam($filepath, 'swap');
+ @chmod($tmpFile, 0666 & (~$this->umask));
+
+ if (file_put_contents($tmpFile, $content) !== false) {
+ if (@rename($tmpFile, $filename)) {
+ return true;
+ }
+
+ @unlink($tmpFile);
+ }
+
+ return false;
+ }
+
+ /**
+ * @return \Iterator
+ */
+ private function getIterator()
+ {
+ return new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::CHILD_FIRST
+ );
+ }
+
+ /**
+ * @param string $name The filename
+ *
+ * @return bool
+ */
+ private function isFilenameEndingWithExtension($name)
+ {
+ return '' === $this->extension
+ || strrpos($name, $this->extension) === (strlen($name) - $this->extensionStringLength);
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
new file mode 100644
index 0000000..d988294
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FilesystemCache.php
@@ -0,0 +1,111 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Filesystem cache driver.
+ *
+ * @since 2.3
+ * @author Fabio B. Silva
+ */
+class FilesystemCache extends FileCache
+{
+ const EXTENSION = '.doctrinecache.data';
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __construct($directory, $extension = self::EXTENSION, $umask = 0002)
+ {
+ parent::__construct($directory, $extension, $umask);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $data = '';
+ $lifetime = -1;
+ $filename = $this->getFilename($id);
+
+ if ( ! is_file($filename)) {
+ return false;
+ }
+
+ $resource = fopen($filename, "r");
+
+ if (false !== ($line = fgets($resource))) {
+ $lifetime = (int) $line;
+ }
+
+ if ($lifetime !== 0 && $lifetime < time()) {
+ fclose($resource);
+
+ return false;
+ }
+
+ while (false !== ($line = fgets($resource))) {
+ $data .= $line;
+ }
+
+ fclose($resource);
+
+ return unserialize($data);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ $lifetime = -1;
+ $filename = $this->getFilename($id);
+
+ if ( ! is_file($filename)) {
+ return false;
+ }
+
+ $resource = fopen($filename, "r");
+
+ if (false !== ($line = fgets($resource))) {
+ $lifetime = (int) $line;
+ }
+
+ fclose($resource);
+
+ return $lifetime === 0 || $lifetime > time();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 0) {
+ $lifeTime = time() + $lifeTime;
+ }
+
+ $data = serialize($data);
+ $filename = $this->getFilename($id);
+
+ return $this->writeFile($filename, $lifeTime . PHP_EOL . $data);
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
new file mode 100644
index 0000000..4311d4f
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Interface for cache that can be flushed.
+ *
+ * @link www.doctrine-project.org
+ * @since 1.4
+ * @author Adirelle
+ */
+interface FlushableCache
+{
+ /**
+ * Flushes all cache entries, globally.
+ *
+ * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise.
+ */
+ public function flushAll();
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
new file mode 100644
index 0000000..8afaeea
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcacheCache.php
@@ -0,0 +1,126 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use \Memcache;
+
+/**
+ * Memcache cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class MemcacheCache extends CacheProvider
+{
+ /**
+ * @var Memcache|null
+ */
+ private $memcache;
+
+ /**
+ * Sets the memcache instance to use.
+ *
+ * @param Memcache $memcache
+ *
+ * @return void
+ */
+ public function setMemcache(Memcache $memcache)
+ {
+ $this->memcache = $memcache;
+ }
+
+ /**
+ * Gets the memcache instance used by the cache.
+ *
+ * @return Memcache|null
+ */
+ public function getMemcache()
+ {
+ return $this->memcache;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->memcache->get($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ $flags = null;
+ $this->memcache->get($id, $flags);
+
+ //if memcache has changed the value of "flags", it means the value exists
+ return ($flags !== null);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 30 * 24 * 3600) {
+ $lifeTime = time() + $lifeTime;
+ }
+ return $this->memcache->set($id, $data, 0, (int) $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ // Memcache::delete() returns false if entry does not exist
+ return $this->memcache->delete($id) || ! $this->doContains($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return $this->memcache->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $stats = $this->memcache->getStats();
+ return array(
+ Cache::STATS_HITS => $stats['get_hits'],
+ Cache::STATS_MISSES => $stats['get_misses'],
+ Cache::STATS_UPTIME => $stats['uptime'],
+ Cache::STATS_MEMORY_USAGE => $stats['bytes'],
+ Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
new file mode 100644
index 0000000..deebe5a
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MemcachedCache.php
@@ -0,0 +1,134 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use \Memcached;
+
+/**
+ * Memcached cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class MemcachedCache extends CacheProvider
+{
+ /**
+ * @var Memcached|null
+ */
+ private $memcached;
+
+ /**
+ * Sets the memcache instance to use.
+ *
+ * @param Memcached $memcached
+ *
+ * @return void
+ */
+ public function setMemcached(Memcached $memcached)
+ {
+ $this->memcached = $memcached;
+ }
+
+ /**
+ * Gets the memcached instance used by the cache.
+ *
+ * @return Memcached|null
+ */
+ public function getMemcached()
+ {
+ return $this->memcached;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->memcached->get($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ return $this->memcached->getMulti($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return false !== $this->memcached->get($id)
+ || $this->memcached->getResultCode() !== Memcached::RES_NOTFOUND;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 30 * 24 * 3600) {
+ $lifeTime = time() + $lifeTime;
+ }
+ return $this->memcached->set($id, $data, (int) $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return $this->memcached->delete($id)
+ || $this->memcached->getResultCode() === Memcached::RES_NOTFOUND;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return $this->memcached->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $stats = $this->memcached->getStats();
+ $servers = $this->memcached->getServerList();
+ $key = $servers[0]['host'] . ':' . $servers[0]['port'];
+ $stats = $stats[$key];
+ return array(
+ Cache::STATS_HITS => $stats['get_hits'],
+ Cache::STATS_MISSES => $stats['get_misses'],
+ Cache::STATS_UPTIME => $stats['uptime'],
+ Cache::STATS_MEMORY_USAGE => $stats['bytes'],
+ Cache::STATS_MEMORY_AVAILABLE => $stats['limit_maxbytes'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
new file mode 100644
index 0000000..75fe0ca
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MongoDBCache.php
@@ -0,0 +1,197 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use MongoBinData;
+use MongoCollection;
+use MongoCursorException;
+use MongoDate;
+
+/**
+ * MongoDB cache provider.
+ *
+ * @since 1.1
+ * @author Jeremy Mikola
+ */
+class MongoDBCache extends CacheProvider
+{
+ /**
+ * The data field will store the serialized PHP value.
+ */
+ const DATA_FIELD = 'd';
+
+ /**
+ * The expiration field will store a MongoDate value indicating when the
+ * cache entry should expire.
+ *
+ * With MongoDB 2.2+, entries can be automatically deleted by MongoDB by
+ * indexing this field with the "expireAfterSeconds" option equal to zero.
+ * This will direct MongoDB to regularly query for and delete any entries
+ * whose date is older than the current time. Entries without a date value
+ * in this field will be ignored.
+ *
+ * The cache provider will also check dates on its own, in case expired
+ * entries are fetched before MongoDB's TTLMonitor pass can expire them.
+ *
+ * @see http://docs.mongodb.org/manual/tutorial/expire-data/
+ */
+ const EXPIRATION_FIELD = 'e';
+
+ /**
+ * @var MongoCollection
+ */
+ private $collection;
+
+ /**
+ * Constructor.
+ *
+ * This provider will default to the write concern and read preference
+ * options set on the MongoCollection instance (or inherited from MongoDB or
+ * MongoClient). Using an unacknowledged write concern (< 1) may make the
+ * return values of delete() and save() unreliable. Reading from secondaries
+ * may make contain() and fetch() unreliable.
+ *
+ * @see http://www.php.net/manual/en/mongo.readpreferences.php
+ * @see http://www.php.net/manual/en/mongo.writeconcerns.php
+ * @param MongoCollection $collection
+ */
+ public function __construct(MongoCollection $collection)
+ {
+ $this->collection = $collection;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $document = $this->collection->findOne(array('_id' => $id), array(self::DATA_FIELD, self::EXPIRATION_FIELD));
+
+ if ($document === null) {
+ return false;
+ }
+
+ if ($this->isExpired($document)) {
+ $this->doDelete($id);
+ return false;
+ }
+
+ return unserialize($document[self::DATA_FIELD]->bin);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ $document = $this->collection->findOne(array('_id' => $id), array(self::EXPIRATION_FIELD));
+
+ if ($document === null) {
+ return false;
+ }
+
+ if ($this->isExpired($document)) {
+ $this->doDelete($id);
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ try {
+ $result = $this->collection->update(
+ array('_id' => $id),
+ array('$set' => array(
+ self::EXPIRATION_FIELD => ($lifeTime > 0 ? new MongoDate(time() + $lifeTime) : null),
+ self::DATA_FIELD => new MongoBinData(serialize($data), MongoBinData::BYTE_ARRAY),
+ )),
+ array('upsert' => true, 'multiple' => false)
+ );
+ } catch (MongoCursorException $e) {
+ return false;
+ }
+
+ return isset($result['ok']) ? $result['ok'] == 1 : true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ $result = $this->collection->remove(array('_id' => $id));
+
+ return isset($result['ok']) ? $result['ok'] == 1 : true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ // Use remove() in lieu of drop() to maintain any collection indexes
+ $result = $this->collection->remove();
+
+ return isset($result['ok']) ? $result['ok'] == 1 : true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $serverStatus = $this->collection->db->command(array(
+ 'serverStatus' => 1,
+ 'locks' => 0,
+ 'metrics' => 0,
+ 'recordStats' => 0,
+ 'repl' => 0,
+ ));
+
+ $collStats = $this->collection->db->command(array('collStats' => 1));
+
+ return array(
+ Cache::STATS_HITS => null,
+ Cache::STATS_MISSES => null,
+ Cache::STATS_UPTIME => (isset($serverStatus['uptime']) ? (int) $serverStatus['uptime'] : null),
+ Cache::STATS_MEMORY_USAGE => (isset($collStats['size']) ? (int) $collStats['size'] : null),
+ Cache::STATS_MEMORY_AVAILABLE => null,
+ );
+ }
+
+ /**
+ * Check if the document is expired.
+ *
+ * @param array $document
+ *
+ * @return bool
+ */
+ private function isExpired(array $document)
+ {
+ return isset($document[self::EXPIRATION_FIELD]) &&
+ $document[self::EXPIRATION_FIELD] instanceof MongoDate &&
+ $document[self::EXPIRATION_FIELD]->sec < time();
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php
new file mode 100644
index 0000000..df7146d
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php
@@ -0,0 +1,39 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Interface for cache drivers that allows to get many items at once.
+ *
+ * @link www.doctrine-project.org
+ * @since 1.4
+ * @author Asmir Mustafic
+ */
+interface MultiGetCache
+{
+ /**
+ * Returns an associative array of values for keys is found in cache.
+ *
+ * @param string[] $keys Array of keys to retrieve from cache
+ * @return mixed[] Array of retrieved values, indexed by the specified keys.
+ * Values that couldn't be retrieved are not contained in this array.
+ */
+ function fetchMultiple(array $keys);
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
new file mode 100644
index 0000000..5e75196
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PhpFileCache.php
@@ -0,0 +1,120 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Php file cache driver.
+ *
+ * @since 2.3
+ * @author Fabio B. Silva
+ */
+class PhpFileCache extends FileCache
+{
+ const EXTENSION = '.doctrinecache.php';
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __construct($directory, $extension = self::EXTENSION, $umask = 0002)
+ {
+ parent::__construct($directory, $extension, $umask);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $value = $this->includeFileForId($id);
+
+ if (! $value) {
+ return false;
+ }
+
+ if ($value['lifetime'] !== 0 && $value['lifetime'] < time()) {
+ return false;
+ }
+
+ return $value['data'];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ $value = $this->includeFileForId($id);
+
+ if (! $value) {
+ return false;
+ }
+
+ return $value['lifetime'] === 0 || $value['lifetime'] > time();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 0) {
+ $lifeTime = time() + $lifeTime;
+ }
+
+ if (is_object($data) && ! method_exists($data, '__set_state')) {
+ throw new \InvalidArgumentException(
+ "Invalid argument given, PhpFileCache only allows objects that implement __set_state() " .
+ "and fully support var_export(). You can use the FilesystemCache to save arbitrary object " .
+ "graphs using serialize()/deserialize()."
+ );
+ }
+
+ $filename = $this->getFilename($id);
+
+ $value = array(
+ 'lifetime' => $lifeTime,
+ 'data' => $data
+ );
+
+ $value = var_export($value, true);
+ $code = sprintf('writeFile($filename, $code);
+ }
+
+ /**
+ * @param string $id
+ *
+ * @return array|false
+ */
+ private function includeFileForId($id)
+ {
+ $fileName = $this->getFilename($id);
+
+ // note: error suppression is still faster than `file_exists`, `is_file` and `is_readable`
+ $value = @include $fileName;
+
+ if (! isset($value['lifetime'])) {
+ return false;
+ }
+
+ return $value;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
new file mode 100644
index 0000000..e7da2a6
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/PredisCache.php
@@ -0,0 +1,108 @@
+
+ */
+class PredisCache extends CacheProvider
+{
+ /**
+ * @var ClientInterface
+ */
+ private $client;
+
+ /**
+ * @param ClientInterface $client
+ *
+ * @return void
+ */
+ public function __construct(ClientInterface $client)
+ {
+ $this->client = $client;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $result = $this->client->get($id);
+ if (null === $result) {
+ return false;
+ }
+
+ return unserialize($result);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ $fetchedItems = call_user_func_array(array($this->client, 'mget'), $keys);
+
+ return array_map('unserialize', array_filter(array_combine($keys, $fetchedItems)));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return $this->client->exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $data = serialize($data);
+ if ($lifeTime > 0) {
+ $response = $this->client->setex($id, $lifeTime, $data);
+ } else {
+ $response = $this->client->set($id, $data);
+ }
+
+ return $response === true || $response == 'OK';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return $this->client->del($id) >= 0;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ $response = $this->client->flushdb();
+
+ return $response === true || $response == 'OK';
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $info = $this->client->info();
+
+ return array(
+ Cache::STATS_HITS => $info['Stats']['keyspace_hits'],
+ Cache::STATS_MISSES => $info['Stats']['keyspace_misses'],
+ Cache::STATS_UPTIME => $info['Server']['uptime_in_seconds'],
+ Cache::STATS_MEMORY_USAGE => $info['Memory']['used_memory'],
+ Cache::STATS_MEMORY_AVAILABLE => false
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
new file mode 100644
index 0000000..9b182c9
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RedisCache.php
@@ -0,0 +1,153 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use Redis;
+
+/**
+ * Redis cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Osman Ungur
+ */
+class RedisCache extends CacheProvider
+{
+ /**
+ * @var Redis|null
+ */
+ private $redis;
+
+ /**
+ * Sets the redis instance to use.
+ *
+ * @param Redis $redis
+ *
+ * @return void
+ */
+ public function setRedis(Redis $redis)
+ {
+ $redis->setOption(Redis::OPT_SERIALIZER, $this->getSerializerValue());
+ $this->redis = $redis;
+ }
+
+ /**
+ * Gets the redis instance used by the cache.
+ *
+ * @return Redis|null
+ */
+ public function getRedis()
+ {
+ return $this->redis;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->redis->get($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ $fetchedItems = array_combine($keys, $this->redis->mget($keys));
+
+ // Redis mget returns false for keys that do not exist. So we need to filter those out unless it's the real data.
+ $foundItems = array();
+
+ foreach ($fetchedItems as $key => $value) {
+ if (false !== $value || $this->redis->exists($key)) {
+ $foundItems[$key] = $value;
+ }
+ }
+
+ return $foundItems;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return $this->redis->exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ if ($lifeTime > 0) {
+ return $this->redis->setex($id, $lifeTime, $data);
+ }
+
+ return $this->redis->set($id, $data);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return $this->redis->delete($id) >= 0;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return $this->redis->flushDB();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $info = $this->redis->info();
+ return array(
+ Cache::STATS_HITS => $info['keyspace_hits'],
+ Cache::STATS_MISSES => $info['keyspace_misses'],
+ Cache::STATS_UPTIME => $info['uptime_in_seconds'],
+ Cache::STATS_MEMORY_USAGE => $info['used_memory'],
+ Cache::STATS_MEMORY_AVAILABLE => false
+ );
+ }
+
+ /**
+ * Returns the serializer constant to use. If Redis is compiled with
+ * igbinary support, that is used. Otherwise the default PHP serializer is
+ * used.
+ *
+ * @return integer One of the Redis::SERIALIZER_* constants
+ */
+ protected function getSerializerValue()
+ {
+ if (defined('HHVM_VERSION')) {
+ return Redis::SERIALIZER_PHP;
+ }
+ return defined('Redis::SERIALIZER_IGBINARY') ? Redis::SERIALIZER_IGBINARY : Redis::SERIALIZER_PHP;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
new file mode 100644
index 0000000..0baa3f2
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/RiakCache.php
@@ -0,0 +1,250 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use Riak\Bucket;
+use Riak\Connection;
+use Riak\Input;
+use Riak\Exception;
+use Riak\Object;
+
+/**
+ * Riak cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 1.1
+ * @author Guilherme Blanco
+ */
+class RiakCache extends CacheProvider
+{
+ const EXPIRES_HEADER = 'X-Riak-Meta-Expires';
+
+ /**
+ * @var \Riak\Bucket
+ */
+ private $bucket;
+
+ /**
+ * Sets the riak bucket instance to use.
+ *
+ * @param \Riak\Bucket $bucket
+ */
+ public function __construct(Bucket $bucket)
+ {
+ $this->bucket = $bucket;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ try {
+ $response = $this->bucket->get($id);
+
+ // No objects found
+ if ( ! $response->hasObject()) {
+ return false;
+ }
+
+ // Check for attempted siblings
+ $object = ($response->hasSiblings())
+ ? $this->resolveConflict($id, $response->getVClock(), $response->getObjectList())
+ : $response->getFirstObject();
+
+ // Check for expired object
+ if ($this->isExpired($object)) {
+ $this->bucket->delete($object);
+
+ return false;
+ }
+
+ return unserialize($object->getContent());
+ } catch (Exception\RiakException $e) {
+ // Covers:
+ // - Riak\ConnectionException
+ // - Riak\CommunicationException
+ // - Riak\UnexpectedResponseException
+ // - Riak\NotFoundException
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ try {
+ // We only need the HEAD, not the entire object
+ $input = new Input\GetInput();
+
+ $input->setReturnHead(true);
+
+ $response = $this->bucket->get($id, $input);
+
+ // No objects found
+ if ( ! $response->hasObject()) {
+ return false;
+ }
+
+ $object = $response->getFirstObject();
+
+ // Check for expired object
+ if ($this->isExpired($object)) {
+ $this->bucket->delete($object);
+
+ return false;
+ }
+
+ return true;
+ } catch (Exception\RiakException $e) {
+ // Do nothing
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ try {
+ $object = new Object($id);
+
+ $object->setContent(serialize($data));
+
+ if ($lifeTime > 0) {
+ $object->addMetadata(self::EXPIRES_HEADER, (string) (time() + $lifeTime));
+ }
+
+ $this->bucket->put($object);
+
+ return true;
+ } catch (Exception\RiakException $e) {
+ // Do nothing
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ try {
+ $this->bucket->delete($id);
+
+ return true;
+ } catch (Exception\BadArgumentsException $e) {
+ // Key did not exist on cluster already
+ } catch (Exception\RiakException $e) {
+ // Covers:
+ // - Riak\Exception\ConnectionException
+ // - Riak\Exception\CommunicationException
+ // - Riak\Exception\UnexpectedResponseException
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ try {
+ $keyList = $this->bucket->getKeyList();
+
+ foreach ($keyList as $key) {
+ $this->bucket->delete($key);
+ }
+
+ return true;
+ } catch (Exception\RiakException $e) {
+ // Do nothing
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ // Only exposed through HTTP stats API, not Protocol Buffers API
+ return null;
+ }
+
+ /**
+ * Check if a given Riak Object have expired.
+ *
+ * @param \Riak\Object $object
+ *
+ * @return bool
+ */
+ private function isExpired(Object $object)
+ {
+ $metadataMap = $object->getMetadataMap();
+
+ return isset($metadataMap[self::EXPIRES_HEADER])
+ && $metadataMap[self::EXPIRES_HEADER] < time();
+ }
+
+ /**
+ * On-read conflict resolution. Applied approach here is last write wins.
+ * Specific needs may override this method to apply alternate conflict resolutions.
+ *
+ * {@internal Riak does not attempt to resolve a write conflict, and store
+ * it as sibling of conflicted one. By following this approach, it is up to
+ * the next read to resolve the conflict. When this happens, your fetched
+ * object will have a list of siblings (read as a list of objects).
+ * In our specific case, we do not care about the intermediate ones since
+ * they are all the same read from storage, and we do apply a last sibling
+ * (last write) wins logic.
+ * If by any means our resolution generates another conflict, it'll up to
+ * next read to properly solve it.}
+ *
+ * @param string $id
+ * @param string $vClock
+ * @param array $objectList
+ *
+ * @return \Riak\Object
+ */
+ protected function resolveConflict($id, $vClock, array $objectList)
+ {
+ // Our approach here is last-write wins
+ $winner = $objectList[count($objectList)];
+
+ $putInput = new Input\PutInput();
+ $putInput->setVClock($vClock);
+
+ $mergedObject = new Object($id);
+ $mergedObject->setContent($winner->getContent());
+
+ $this->bucket->put($mergedObject, $putInput);
+
+ return $mergedObject;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
new file mode 100644
index 0000000..0bf6e4d
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/SQLite3Cache.php
@@ -0,0 +1,220 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+use SQLite3;
+use SQLite3Result;
+
+/**
+ * SQLite3 cache provider.
+ *
+ * @since 1.4
+ * @author Jake Bell
+ */
+class SQLite3Cache extends CacheProvider
+{
+ /**
+ * The ID field will store the cache key.
+ */
+ const ID_FIELD = 'k';
+
+ /**
+ * The data field will store the serialized PHP value.
+ */
+ const DATA_FIELD = 'd';
+
+ /**
+ * The expiration field will store a date value indicating when the
+ * cache entry should expire.
+ */
+ const EXPIRATION_FIELD = 'e';
+
+ /**
+ * @var SQLite3
+ */
+ private $sqlite;
+
+ /**
+ * @var string
+ */
+ private $table;
+
+ /**
+ * Constructor.
+ *
+ * Calling the constructor will ensure that the database file and table
+ * exist and will create both if they don't.
+ *
+ * @param SQLite3 $sqlite
+ * @param string $table
+ */
+ public function __construct(SQLite3 $sqlite, $table)
+ {
+ $this->sqlite = $sqlite;
+ $this->table = (string) $table;
+
+ list($id, $data, $exp) = $this->getFields();
+
+ return $this->sqlite->exec(sprintf(
+ 'CREATE TABLE IF NOT EXISTS %s(%s TEXT PRIMARY KEY NOT NULL, %s BLOB, %s INTEGER)',
+ $table,
+ $id,
+ $data,
+ $exp
+ ));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ if ($item = $this->findById($id)) {
+ return unserialize($item[self::DATA_FIELD]);
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return null !== $this->findById($id, false);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $statement = $this->sqlite->prepare(sprintf(
+ 'INSERT OR REPLACE INTO %s (%s) VALUES (:id, :data, :expire)',
+ $this->table,
+ implode(',', $this->getFields())
+ ));
+
+ $statement->bindValue(':id', $id);
+ $statement->bindValue(':data', serialize($data), SQLITE3_BLOB);
+ $statement->bindValue(':expire', $lifeTime > 0 ? time() + $lifeTime : null);
+
+ return $statement->execute() instanceof SQLite3Result;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ list($idField) = $this->getFields();
+
+ $statement = $this->sqlite->prepare(sprintf(
+ 'DELETE FROM %s WHERE %s = :id',
+ $this->table,
+ $idField
+ ));
+
+ $statement->bindValue(':id', $id);
+
+ return $statement->execute() instanceof SQLite3Result;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return $this->sqlite->exec(sprintf('DELETE FROM %s', $this->table));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ // no-op.
+ }
+
+ /**
+ * Find a single row by ID.
+ *
+ * @param mixed $id
+ * @param bool $includeData
+ *
+ * @return array|null
+ */
+ private function findById($id, $includeData = true)
+ {
+ list($idField) = $fields = $this->getFields();
+
+ if (!$includeData) {
+ $key = array_search(static::DATA_FIELD, $fields);
+ unset($fields[$key]);
+ }
+
+ $statement = $this->sqlite->prepare(sprintf(
+ 'SELECT %s FROM %s WHERE %s = :id LIMIT 1',
+ implode(',', $fields),
+ $this->table,
+ $idField
+ ));
+
+ $statement->bindValue(':id', $id, SQLITE3_TEXT);
+
+ $item = $statement->execute()->fetchArray(SQLITE3_ASSOC);
+
+ if ($item === false) {
+ return null;
+ }
+
+ if ($this->isExpired($item)) {
+ $this->doDelete($id);
+
+ return null;
+ }
+
+ return $item;
+ }
+
+ /**
+ * Gets an array of the fields in our table.
+ *
+ * @return array
+ */
+ private function getFields()
+ {
+ return array(static::ID_FIELD, static::DATA_FIELD, static::EXPIRATION_FIELD);
+ }
+
+ /**
+ * Check if the item is expired.
+ *
+ * @param array $item
+ *
+ * @return bool
+ */
+ private function isExpired(array $item)
+ {
+ return isset($item[static::EXPIRATION_FIELD]) &&
+ $item[self::EXPIRATION_FIELD] !== null &&
+ $item[self::EXPIRATION_FIELD] < time();
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
new file mode 100644
index 0000000..ac45238
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Version.php
@@ -0,0 +1,25 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+class Version
+{
+ const VERSION = '1.5.4';
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php
new file mode 100644
index 0000000..65e8456
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/VoidCache.php
@@ -0,0 +1,78 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Void cache driver. The cache could be of use in tests where you don`t need to cache anything.
+ *
+ * @link www.doctrine-project.org
+ * @since 1.5
+ * @author Kotlyar Maksim
+ */
+class VoidCache extends CacheProvider
+{
+ /**
+ * {@inheritDoc}
+ */
+ protected function doFetch($id)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doContains($id)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doDelete($id)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doFlush()
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function doGetStats()
+ {
+ return;
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
new file mode 100644
index 0000000..6f563aa
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/WinCacheCache.php
@@ -0,0 +1,99 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * WinCache cache provider.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class WinCacheCache extends CacheProvider
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return wincache_ucache_get($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return wincache_ucache_exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ return wincache_ucache_set($id, $data, $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return wincache_ucache_delete($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ return wincache_ucache_clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetchMultiple(array $keys)
+ {
+ return wincache_ucache_get($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $info = wincache_ucache_info();
+ $meminfo = wincache_ucache_meminfo();
+
+ return array(
+ Cache::STATS_HITS => $info['total_hit_count'],
+ Cache::STATS_MISSES => $info['total_miss_count'],
+ Cache::STATS_UPTIME => $info['total_cache_uptime'],
+ Cache::STATS_MEMORY_USAGE => $meminfo['memory_total'],
+ Cache::STATS_MEMORY_AVAILABLE => $meminfo['memory_free'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
new file mode 100644
index 0000000..a2c4ca5
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/XcacheCache.php
@@ -0,0 +1,112 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Xcache cache driver.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ * @author David Abdemoulaie
+ */
+class XcacheCache extends CacheProvider
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return $this->doContains($id) ? unserialize(xcache_get($id)) : false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return xcache_isset($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ return xcache_set($id, serialize($data), (int) $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return xcache_unset($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ $this->checkAuthorization();
+
+ xcache_clear_cache(XC_TYPE_VAR);
+
+ return true;
+ }
+
+ /**
+ * Checks that xcache.admin.enable_auth is Off.
+ *
+ * @return void
+ *
+ * @throws \BadMethodCallException When xcache.admin.enable_auth is On.
+ */
+ protected function checkAuthorization()
+ {
+ if (ini_get('xcache.admin.enable_auth')) {
+ throw new \BadMethodCallException(
+ 'To use all features of \Doctrine\Common\Cache\XcacheCache, '
+ . 'you must set "xcache.admin.enable_auth" to "Off" in your php.ini.'
+ );
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ $this->checkAuthorization();
+
+ $info = xcache_info(XC_TYPE_VAR, 0);
+ return array(
+ Cache::STATS_HITS => $info['hits'],
+ Cache::STATS_MISSES => $info['misses'],
+ Cache::STATS_UPTIME => null,
+ Cache::STATS_MEMORY_USAGE => $info['size'],
+ Cache::STATS_MEMORY_AVAILABLE => $info['avail'],
+ );
+ }
+}
diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
new file mode 100644
index 0000000..6e35ac8
--- /dev/null
+++ b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ZendDataCache.php
@@ -0,0 +1,83 @@
+.
+ */
+
+namespace Doctrine\Common\Cache;
+
+/**
+ * Zend Data Cache cache driver.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Ralph Schindler
+ * @author Guilherme Blanco
+ */
+class ZendDataCache extends CacheProvider
+{
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ return zend_shm_cache_fetch($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ return (false !== zend_shm_cache_fetch($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ return zend_shm_cache_store($id, $data, $lifeTime);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ return zend_shm_cache_delete($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ $namespace = $this->getNamespace();
+ if (empty($namespace)) {
+ return zend_shm_cache_clear();
+ }
+ return zend_shm_cache_clear($namespace);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ return null;
+ }
+}
diff --git a/vendor/doctrine/cache/phpunit.xml.dist b/vendor/doctrine/cache/phpunit.xml.dist
new file mode 100644
index 0000000..40cc24d
--- /dev/null
+++ b/vendor/doctrine/cache/phpunit.xml.dist
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+ ./tests/Doctrine/
+
+
+
+
+
+ ./lib/Doctrine/
+
+
+
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ApcCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ApcCacheTest.php
new file mode 100644
index 0000000..29af44d
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ApcCacheTest.php
@@ -0,0 +1,21 @@
+markTestSkipped('The APC cache TTL is not working in a single process/request. See https://bugs.php.net/bug.php?id=58084');
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ArrayCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ArrayCacheTest.php
new file mode 100644
index 0000000..cf00185
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ArrayCacheTest.php
@@ -0,0 +1,31 @@
+_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats);
+ }
+
+ public function testLifetime()
+ {
+ $this->markTestSkipped('ArrayCache does not implement TTL currently.');
+ }
+
+ protected function isSharedStorage()
+ {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/BaseFileCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/BaseFileCacheTest.php
new file mode 100644
index 0000000..689452f
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/BaseFileCacheTest.php
@@ -0,0 +1,145 @@
+directory = sys_get_temp_dir() . '/doctrine_cache_'. uniqid();
+ } while (file_exists($this->directory));
+ }
+
+ protected function tearDown()
+ {
+ if ( ! is_dir($this->directory)) {
+ return;
+ }
+
+ $iterator = new RecursiveDirectoryIterator($this->directory);
+
+ foreach (new RecursiveIteratorIterator($iterator, RecursiveIteratorIterator::CHILD_FIRST) as $file) {
+ if ($file->isFile()) {
+ @unlink($file->getRealPath());
+ } elseif ($file->isDir()) {
+ @rmdir($file->getRealPath());
+ }
+ }
+
+ @rmdir($this->directory);
+ }
+
+ public function testFlushAllRemovesBalancingDirectories()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save('key1', 1));
+ $this->assertTrue($cache->save('key2', 2));
+ $this->assertTrue($cache->flushAll());
+
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST);
+
+ $this->assertCount(0, $iterator);
+ }
+
+ protected function isSharedStorage()
+ {
+ return false;
+ }
+
+ public function getPathLengthsToTest()
+ {
+ // Windows officially supports 260 bytes including null terminator
+ // 258 bytes available to use due to php bug #70943
+ // Windows officially supports 260 bytes including null terminator
+ // 259 characters is too large due to PHP bug (https://bugs.php.net/bug.php?id=70943)
+ // 260 characters is too large - null terminator is included in allowable length
+ return array(
+ array(257, false),
+ array(258, false),
+ array(259, true),
+ array(260, true)
+ );
+ }
+
+ private static function getBasePathForWindowsPathLengthTests($pathLength)
+ {
+ return FileCacheTest::getBasePathForWindowsPathLengthTests($pathLength);
+ }
+
+ private static function getKeyAndPathFittingLength($length)
+ {
+ $basePath = self::getBasePathForWindowsPathLengthTests($length);
+
+ $baseDirLength = strlen($basePath);
+ $extensionLength = strlen('.doctrine.cache');
+ $directoryLength = strlen(DIRECTORY_SEPARATOR . 'aa' . DIRECTORY_SEPARATOR);
+ $namespaceAndBracketLength = strlen(bin2hex("[][1]"));
+ $keyLength = $length
+ - ($baseDirLength
+ + $extensionLength
+ + $directoryLength
+ + $namespaceAndBracketLength);
+
+ $key = str_repeat('a', floor($keyLength / 2));
+ $namespacedKey = '[' . $key . '][1]';
+
+ $keyHash = hash('sha256', $namespacedKey);
+
+ $keyPath = $basePath
+ . DIRECTORY_SEPARATOR
+ . substr($keyHash, 0, 2)
+ . DIRECTORY_SEPARATOR
+ . bin2hex($namespacedKey)
+ . '.doctrine.cache';
+
+ $hashedKeyPath = $basePath
+ . DIRECTORY_SEPARATOR
+ . substr($keyHash, 0, 2)
+ . DIRECTORY_SEPARATOR
+ . '_' . $keyHash
+ . '.doctrine.cache';
+
+ return array($key, $keyPath, $hashedKeyPath);
+ }
+
+ /**
+ * @dataProvider getPathLengthsToTest
+ */
+ public function testWindowsPathLengthLimitIsCorrectlyHandled($length, $pathShouldBeHashed)
+ {
+ $this->directory = self::getBasePathForWindowsPathLengthTests($length);
+
+ list($key, $keyPath, $hashedKeyPath) = self::getKeyAndPathFittingLength($length);
+
+ $this->assertEquals($length, strlen($keyPath), "Unhashed path should be of correct length.");
+
+ $cacheClass = get_class($this->_getCacheDriver());
+ $cache = new $cacheClass($this->directory, '.doctrine.cache');
+
+ // Trick it into thinking this is windows.
+ $reflClass = new \ReflectionClass('\Doctrine\Common\Cache\FileCache');
+ $reflProp = $reflClass->getProperty('isRunningOnWindows');
+ $reflProp->setAccessible(true);
+ $reflProp->setValue($cache, true);
+ $reflProp->setAccessible(false);
+
+ $cache->save($key, $length);
+ $fetched = $cache->fetch($key);
+ $this->assertEquals($length, $fetched);
+
+ if ($pathShouldBeHashed) {
+ $this->assertFileExists($hashedKeyPath, "Path generated for key should be hashed.");
+ unlink($hashedKeyPath);
+ } else {
+ $this->assertFileExists($keyPath, "Path generated for key should not be hashed.");
+ unlink($keyPath);
+ }
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheProviderTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheProviderTest.php
new file mode 100644
index 0000000..2b32592
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheProviderTest.php
@@ -0,0 +1,72 @@
+getMockForAbstractClass(
+ 'Doctrine\Common\Cache\CacheProvider',
+ array(),
+ '',
+ true,
+ true,
+ true,
+ array('doFetchMultiple')
+ );
+
+ $cache
+ ->expects($this->once())
+ ->method('doFetchMultiple')
+ ->will($this->returnValue(array(
+ '[foo][1]' => 'bar',
+ '[bar][1]' => 'baz',
+ '[baz][1]' => 'tab',
+ )));
+
+ $this->assertEquals(
+ array('foo' => 'bar', 'bar' => 'baz'),
+ $cache->fetchMultiple(array('foo', 'bar'))
+ );
+ }
+
+ public function testFailedDeleteAllDoesNotChangeNamespaceVersion()
+ {
+ /* @var $cache \Doctrine\Common\Cache\CacheProvider|\PHPUnit_Framework_MockObject_MockObject */
+ $cache = $this->getMockForAbstractClass(
+ 'Doctrine\Common\Cache\CacheProvider',
+ array(),
+ '',
+ true,
+ true,
+ true,
+ array('doFetch', 'doSave', 'doContains')
+ );
+
+ $cache
+ ->expects($this->once())
+ ->method('doFetch')
+ ->with('DoctrineNamespaceCacheKey[]')
+ ->will($this->returnValue(false));
+
+ // doSave is only called once from deleteAll as we do not need to persist the default version in getNamespaceVersion()
+ $cache
+ ->expects($this->once())
+ ->method('doSave')
+ ->with('DoctrineNamespaceCacheKey[]')
+ ->will($this->returnValue(false));
+
+ // After a failed deleteAll() the local namespace version is not increased (still 1). Otherwise all data written afterwards
+ // would be lost outside the current instance.
+ $cache
+ ->expects($this->once())
+ ->method('doContains')
+ ->with('[key][1]')
+ ->will($this->returnValue(true));
+
+ $this->assertFalse($cache->deleteAll(), 'deleteAll() returns false when saving the namespace version fails');
+ $cache->contains('key');
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheTest.php
new file mode 100644
index 0000000..dccd2a5
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CacheTest.php
@@ -0,0 +1,447 @@
+_getCacheDriver();
+
+ // Test saving a value, checking if it exists, and fetching it back
+ $this->assertTrue($cache->save('key', $value));
+ $this->assertTrue($cache->contains('key'));
+ if (is_object($value)) {
+ $this->assertEquals($value, $cache->fetch('key'), 'Objects retrieved from the cache must be equal but not necessarily the same reference');
+ } else {
+ $this->assertSame($value, $cache->fetch('key'), 'Scalar and array data retrieved from the cache must be the same as the original, e.g. same type');
+ }
+
+ // Test deleting a value
+ $this->assertTrue($cache->delete('key'));
+ $this->assertFalse($cache->contains('key'));
+ $this->assertFalse($cache->fetch('key'));
+ }
+
+ /**
+ * @dataProvider provideDataToCache
+ */
+ public function testUpdateExistingEntry($value)
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save('key', 'old-value'));
+ $this->assertTrue($cache->contains('key'));
+
+ $this->assertTrue($cache->save('key', $value));
+ $this->assertTrue($cache->contains('key'));
+ if (is_object($value)) {
+ $this->assertEquals($value, $cache->fetch('key'), 'Objects retrieved from the cache must be equal but not necessarily the same reference');
+ } else {
+ $this->assertSame($value, $cache->fetch('key'), 'Scalar and array data retrieved from the cache must be the same as the original, e.g. same type');
+ }
+ }
+
+ public function testCacheKeyIsCaseSensitive()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save('key', 'value'));
+ $this->assertTrue($cache->contains('key'));
+ $this->assertSame('value', $cache->fetch('key'));
+
+ $this->assertFalse($cache->contains('KEY'));
+ $this->assertFalse($cache->fetch('KEY'));
+
+ $cache->delete('KEY');
+ $this->assertTrue($cache->contains('key', 'Deleting cache item with different case must not affect other cache item'));
+ }
+
+ public function testFetchMultiple()
+ {
+ $cache = $this->_getCacheDriver();
+ $values = $this->provideDataToCache();
+ $saved = array();
+
+ foreach ($values as $key => $value) {
+ $cache->save($key, $value[0]);
+
+ $saved[$key] = $value[0];
+ }
+
+ $keys = array_keys($saved);
+
+ $this->assertEquals(
+ $saved,
+ $cache->fetchMultiple($keys),
+ 'Testing fetchMultiple with different data types'
+ );
+ $this->assertEquals(
+ array_slice($saved, 0, 1),
+ $cache->fetchMultiple(array_slice($keys, 0, 1)),
+ 'Testing fetchMultiple with a single key'
+ );
+
+ $keysWithNonExisting = array();
+ $keysWithNonExisting[] = 'non_existing1';
+ $keysWithNonExisting[] = $keys[0];
+ $keysWithNonExisting[] = 'non_existing2';
+ $keysWithNonExisting[] = $keys[1];
+ $keysWithNonExisting[] = 'non_existing3';
+
+ $this->assertEquals(
+ array_slice($saved, 0, 2),
+ $cache->fetchMultiple($keysWithNonExisting),
+ 'Testing fetchMultiple with a subset of keys and mixed with non-existing ones'
+ );
+ }
+
+ public function testFetchMultipleWithNoKeys()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertSame(array(), $cache->fetchMultiple(array()));
+ }
+
+ public function provideDataToCache()
+ {
+ $obj = new \stdClass();
+ $obj->foo = 'bar';
+ $obj2 = new \stdClass();
+ $obj2->bar = 'foo';
+ $obj2->obj = $obj;
+ $obj->obj2 = $obj2;
+
+ return array(
+ 'array' => array(array('one', 2, 3.01)),
+ 'string' => array('value'),
+ 'string_invalid_utf8' => array("\xc3\x28"),
+ 'string_null_byte' => array('with'."\0".'null char'),
+ 'integer' => array(1),
+ 'float' => array(1.5),
+ 'object' => array(new ArrayObject(array('one', 2, 3.01))),
+ 'object_recursive' => array($obj),
+ 'true' => array(true),
+ // the following are considered FALSE in boolean context, but caches should still recognize their existence
+ 'null' => array(null),
+ 'false' => array(false),
+ 'array_empty' => array(array()),
+ 'string_zero' => array('0'),
+ 'integer_zero' => array(0),
+ 'float_zero' => array(0.0),
+ 'string_empty' => array(''),
+ );
+ }
+
+ public function testDeleteIsSuccessfulWhenKeyDoesNotExist()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $cache->delete('key');
+ $this->assertFalse($cache->contains('key'));
+ $this->assertTrue($cache->delete('key'));
+ }
+
+ public function testDeleteAll()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save('key1', 1));
+ $this->assertTrue($cache->save('key2', 2));
+ $this->assertTrue($cache->deleteAll());
+ $this->assertFalse($cache->contains('key1'));
+ $this->assertFalse($cache->contains('key2'));
+ }
+
+ /**
+ * @dataProvider provideCacheIds
+ */
+ public function testCanHandleSpecialCacheIds($id)
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save($id, 'value'));
+ $this->assertTrue($cache->contains($id));
+ $this->assertEquals('value', $cache->fetch($id));
+
+ $this->assertTrue($cache->delete($id));
+ $this->assertFalse($cache->contains($id));
+ $this->assertFalse($cache->fetch($id));
+ }
+
+ public function testNoCacheIdCollisions()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $ids = $this->provideCacheIds();
+
+ // fill cache with each id having a different value
+ foreach ($ids as $index => $id) {
+ $cache->save($id[0], $index);
+ }
+
+ // then check value of each cache id
+ foreach ($ids as $index => $id) {
+ $value = $cache->fetch($id[0]);
+ $this->assertNotFalse($value, sprintf('Failed to retrieve data for cache id "%s".', $id[0]));
+ if ($index !== $value) {
+ $this->fail(sprintf('Cache id "%s" collides with id "%s".', $id[0], $ids[$value][0]));
+ }
+ }
+ }
+
+ /**
+ * Returns cache ids with special characters that should still work.
+ *
+ * For example, the characters :\/<>"*?| are not valid in Windows filenames. So they must be encoded properly.
+ * Each cache id should be considered different from the others.
+ *
+ * @return array
+ */
+ public function provideCacheIds()
+ {
+ return array(
+ array(':'),
+ array('\\'),
+ array('/'),
+ array('<'),
+ array('>'),
+ array('"'),
+ array('*'),
+ array('?'),
+ array('|'),
+ array('['),
+ array(']'),
+ array('ä'),
+ array('a'),
+ array('é'),
+ array('e'),
+ array('.'), // directory traversal
+ array('..'), // directory traversal
+ array('-'),
+ array('_'),
+ array('$'),
+ array('%'),
+ array(' '),
+ array("\0"),
+ array(''),
+ array(str_repeat('a', 300)), // long key
+ array(str_repeat('a', 113)),
+ );
+ }
+
+ public function testLifetime()
+ {
+ $cache = $this->_getCacheDriver();
+ $cache->save('expire', 'value', 1);
+ $this->assertTrue($cache->contains('expire'), 'Data should not be expired yet');
+ // @TODO should more TTL-based tests pop up, so then we should mock the `time` API instead
+ sleep(2);
+ $this->assertFalse($cache->contains('expire'), 'Data should be expired');
+ }
+
+ public function testNoExpire()
+ {
+ $cache = $this->_getCacheDriver();
+ $cache->save('noexpire', 'value', 0);
+ // @TODO should more TTL-based tests pop up, so then we should mock the `time` API instead
+ sleep(1);
+ $this->assertTrue($cache->contains('noexpire'), 'Data with lifetime of zero should not expire');
+ }
+
+ public function testLongLifetime()
+ {
+ $cache = $this->_getCacheDriver();
+ $cache->save('longlifetime', 'value', 30 * 24 * 3600 + 1);
+ $this->assertTrue($cache->contains('longlifetime'), 'Data with lifetime > 30 days should be accepted');
+ }
+
+ public function testDeleteAllAndNamespaceVersioningBetweenCaches()
+ {
+ if ( ! $this->isSharedStorage()) {
+ $this->markTestSkipped('The cache storage needs to be shared.');
+ }
+
+ $cache1 = $this->_getCacheDriver();
+ $cache2 = $this->_getCacheDriver();
+
+ $this->assertTrue($cache1->save('key1', 1));
+ $this->assertTrue($cache2->save('key2', 2));
+
+ /* Both providers are initialized with the same namespace version, so
+ * they can see entries set by each other.
+ */
+ $this->assertTrue($cache1->contains('key1'));
+ $this->assertTrue($cache1->contains('key2'));
+ $this->assertTrue($cache2->contains('key1'));
+ $this->assertTrue($cache2->contains('key2'));
+
+ /* Deleting all entries through one provider will only increment the
+ * namespace version on that object (and in the cache itself, which new
+ * instances will use to initialize). The second provider will retain
+ * its original version and still see stale data.
+ */
+ $this->assertTrue($cache1->deleteAll());
+ $this->assertFalse($cache1->contains('key1'));
+ $this->assertFalse($cache1->contains('key2'));
+ $this->assertTrue($cache2->contains('key1'));
+ $this->assertTrue($cache2->contains('key2'));
+
+ /* A new cache provider should not see the deleted entries, since its
+ * namespace version will be initialized.
+ */
+ $cache3 = $this->_getCacheDriver();
+ $this->assertFalse($cache3->contains('key1'));
+ $this->assertFalse($cache3->contains('key2'));
+ }
+
+ public function testFlushAll()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->assertTrue($cache->save('key1', 1));
+ $this->assertTrue($cache->save('key2', 2));
+ $this->assertTrue($cache->flushAll());
+ $this->assertFalse($cache->contains('key1'));
+ $this->assertFalse($cache->contains('key2'));
+ }
+
+ public function testFlushAllAndNamespaceVersioningBetweenCaches()
+ {
+ if ( ! $this->isSharedStorage()) {
+ $this->markTestSkipped('The cache storage needs to be shared.');
+ }
+
+ $cache1 = $this->_getCacheDriver();
+ $cache2 = $this->_getCacheDriver();
+
+ /* Deleting all elements from the first provider should increment its
+ * namespace version before saving the first entry.
+ */
+ $cache1->deleteAll();
+ $this->assertTrue($cache1->save('key1', 1));
+
+ /* The second provider will be initialized with the same namespace
+ * version upon its first save operation.
+ */
+ $this->assertTrue($cache2->save('key2', 2));
+
+ /* Both providers have the same namespace version and can see entries
+ * set by each other.
+ */
+ $this->assertTrue($cache1->contains('key1'));
+ $this->assertTrue($cache1->contains('key2'));
+ $this->assertTrue($cache2->contains('key1'));
+ $this->assertTrue($cache2->contains('key2'));
+
+ /* Flushing all entries through one cache will remove all entries from
+ * the cache but leave their namespace version as-is.
+ */
+ $this->assertTrue($cache1->flushAll());
+ $this->assertFalse($cache1->contains('key1'));
+ $this->assertFalse($cache1->contains('key2'));
+ $this->assertFalse($cache2->contains('key1'));
+ $this->assertFalse($cache2->contains('key2'));
+
+ /* Inserting a new entry will use the same, incremented namespace
+ * version, and it will be visible to both providers.
+ */
+ $this->assertTrue($cache1->save('key1', 1));
+ $this->assertTrue($cache1->contains('key1'));
+ $this->assertTrue($cache2->contains('key1'));
+
+ /* A new cache provider will be initialized with the original namespace
+ * version and not share any visibility with the first two providers.
+ */
+ $cache3 = $this->_getCacheDriver();
+ $this->assertFalse($cache3->contains('key1'));
+ $this->assertFalse($cache3->contains('key2'));
+ $this->assertTrue($cache3->save('key3', 3));
+ $this->assertTrue($cache3->contains('key3'));
+ }
+
+ public function testNamespace()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $cache->setNamespace('ns1_');
+
+ $this->assertTrue($cache->save('key1', 1));
+ $this->assertTrue($cache->contains('key1'));
+
+ $cache->setNamespace('ns2_');
+
+ $this->assertFalse($cache->contains('key1'));
+ }
+
+ public function testDeleteAllNamespace()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $cache->setNamespace('ns1');
+ $this->assertFalse($cache->contains('key1'));
+ $cache->save('key1', 'test');
+ $this->assertTrue($cache->contains('key1'));
+
+ $cache->setNamespace('ns2');
+ $this->assertFalse($cache->contains('key1'));
+ $cache->save('key1', 'test');
+ $this->assertTrue($cache->contains('key1'));
+
+ $cache->setNamespace('ns1');
+ $this->assertTrue($cache->contains('key1'));
+ $cache->deleteAll();
+ $this->assertFalse($cache->contains('key1'));
+
+ $cache->setNamespace('ns2');
+ $this->assertTrue($cache->contains('key1'));
+ $cache->deleteAll();
+ $this->assertFalse($cache->contains('key1'));
+ }
+
+ /**
+ * @group DCOM-43
+ */
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertArrayHasKey(Cache::STATS_HITS, $stats);
+ $this->assertArrayHasKey(Cache::STATS_MISSES, $stats);
+ $this->assertArrayHasKey(Cache::STATS_UPTIME, $stats);
+ $this->assertArrayHasKey(Cache::STATS_MEMORY_USAGE, $stats);
+ $this->assertArrayHasKey(Cache::STATS_MEMORY_AVAILABLE, $stats);
+ }
+
+ public function testSaveReturnsTrueWithAndWithoutTTlSet()
+ {
+ $cache = $this->_getCacheDriver();
+ $cache->deleteAll();
+ $this->assertTrue($cache->save('without_ttl', 'without_ttl'));
+ $this->assertTrue($cache->save('with_ttl', 'with_ttl', 3600));
+ }
+
+ /**
+ * Return whether multiple cache providers share the same storage.
+ *
+ * This is used for skipping certain tests for shared storage behavior.
+ *
+ * @return bool
+ */
+ protected function isSharedStorage()
+ {
+ return true;
+ }
+
+ /**
+ * @return \Doctrine\Common\Cache\CacheProvider
+ */
+ abstract protected function _getCacheDriver();
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ChainCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ChainCacheTest.php
new file mode 100644
index 0000000..a3c013b
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ChainCacheTest.php
@@ -0,0 +1,99 @@
+markTestSkipped('The ChainCache test uses ArrayCache which does not implement TTL currently.');
+ }
+
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertInternalType('array', $stats);
+ }
+
+ public function testOnlyFetchFirstOne()
+ {
+ $cache1 = new ArrayCache();
+ $cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider');
+
+ $cache2->expects($this->never())->method('doFetch');
+
+ $chainCache = new ChainCache(array($cache1, $cache2));
+ $chainCache->save('id', 'bar');
+
+ $this->assertEquals('bar', $chainCache->fetch('id'));
+ }
+
+ public function testFetchPropagateToFastestCache()
+ {
+ $cache1 = new ArrayCache();
+ $cache2 = new ArrayCache();
+
+ $cache2->save('bar', 'value');
+
+ $chainCache = new ChainCache(array($cache1, $cache2));
+
+ $this->assertFalse($cache1->contains('bar'));
+
+ $result = $chainCache->fetch('bar');
+
+ $this->assertEquals('value', $result);
+ $this->assertTrue($cache2->contains('bar'));
+ }
+
+ public function testNamespaceIsPropagatedToAllProviders()
+ {
+ $cache1 = new ArrayCache();
+ $cache2 = new ArrayCache();
+
+ $chainCache = new ChainCache(array($cache1, $cache2));
+ $chainCache->setNamespace('bar');
+
+ $this->assertEquals('bar', $cache1->getNamespace());
+ $this->assertEquals('bar', $cache2->getNamespace());
+ }
+
+ public function testDeleteToAllProviders()
+ {
+ $cache1 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider');
+ $cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider');
+
+ $cache1->expects($this->once())->method('doDelete');
+ $cache2->expects($this->once())->method('doDelete');
+
+ $chainCache = new ChainCache(array($cache1, $cache2));
+ $chainCache->delete('bar');
+ }
+
+ public function testFlushToAllProviders()
+ {
+ $cache1 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider');
+ $cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider');
+
+ $cache1->expects($this->once())->method('doFlush');
+ $cache2->expects($this->once())->method('doFlush');
+
+ $chainCache = new ChainCache(array($cache1, $cache2));
+ $chainCache->flushAll();
+ }
+
+ protected function isSharedStorage()
+ {
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CouchbaseCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CouchbaseCacheTest.php
new file mode 100644
index 0000000..f42b3a7
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/CouchbaseCacheTest.php
@@ -0,0 +1,30 @@
+couchbase = new Couchbase('127.0.0.1', 'Administrator', 'password', 'default');
+ } catch(Exception $ex) {
+ $this->markTestSkipped('Could not instantiate the Couchbase cache because of: ' . $ex);
+ }
+ }
+
+ protected function _getCacheDriver()
+ {
+ $driver = new CouchbaseCache();
+ $driver->setCouchbase($this->couchbase);
+ return $driver;
+ }
+}
\ No newline at end of file
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FileCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FileCacheTest.php
new file mode 100644
index 0000000..c93b509
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FileCacheTest.php
@@ -0,0 +1,256 @@
+driver = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array(), '', false
+ );
+ }
+
+ public function testFilenameShouldCreateThePathWithOneSubDirectory()
+ {
+ $cache = $this->driver;
+ $method = new \ReflectionMethod($cache, 'getFilename');
+ $key = 'item-key';
+ $expectedDir = array(
+ '84',
+ );
+ $expectedDir = implode(DIRECTORY_SEPARATOR, $expectedDir);
+
+ $method->setAccessible(true);
+
+ $path = $method->invoke($cache, $key);
+ $dirname = pathinfo($path, PATHINFO_DIRNAME);
+
+ $this->assertEquals(DIRECTORY_SEPARATOR . $expectedDir, $dirname);
+ }
+
+ public function testFileExtensionCorrectlyEscaped()
+ {
+ $driver1 = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array(__DIR__, '.*')
+ );
+ $driver2 = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array(__DIR__, '.php')
+ );
+
+ $doGetStats = new \ReflectionMethod($driver1, 'doGetStats');
+
+ $doGetStats->setAccessible(true);
+
+ $stats1 = $doGetStats->invoke($driver1);
+ $stats2 = $doGetStats->invoke($driver2);
+
+ $this->assertSame(0, $stats1[Cache::STATS_MEMORY_USAGE]);
+ $this->assertGreaterThan(0, $stats2[Cache::STATS_MEMORY_USAGE]);
+ }
+
+ /**
+ * @group DCOM-266
+ */
+ public function testFileExtensionSlashCorrectlyEscaped()
+ {
+ $driver = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array(__DIR__ . '/../', DIRECTORY_SEPARATOR . basename(__FILE__))
+ );
+
+ $doGetStats = new \ReflectionMethod($driver, 'doGetStats');
+
+ $doGetStats->setAccessible(true);
+
+ $stats = $doGetStats->invoke($driver);
+
+ $this->assertGreaterThan(0, $stats[Cache::STATS_MEMORY_USAGE]);
+ }
+
+ public function testNonIntUmaskThrowsInvalidArgumentException()
+ {
+ $this->setExpectedException('InvalidArgumentException');
+
+ $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array('', '', 'invalid')
+ );
+ }
+
+ public function testGetDirectoryReturnsRealpathDirectoryString()
+ {
+ $directory = __DIR__ . '/../';
+ $driver = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array($directory)
+ );
+
+ $doGetDirectory = new \ReflectionMethod($driver, 'getDirectory');
+
+ $actualDirectory = $doGetDirectory->invoke($driver);
+ $expectedDirectory = realpath($directory);
+
+ $this->assertEquals($expectedDirectory, $actualDirectory);
+ }
+
+ public function testGetExtensionReturnsExtensionString()
+ {
+ $directory = __DIR__ . '/../';
+ $extension = DIRECTORY_SEPARATOR . basename(__FILE__);
+ $driver = $this->getMock(
+ 'Doctrine\Common\Cache\FileCache',
+ array('doFetch', 'doContains', 'doSave'),
+ array($directory, $extension)
+ );
+
+ $doGetExtension = new \ReflectionMethod($driver, 'getExtension');
+
+ $actualExtension = $doGetExtension->invoke($driver);
+
+ $this->assertEquals($extension, $actualExtension);
+ }
+
+ const WIN_MAX_PATH_LEN = 258;
+
+ public static function getBasePathForWindowsPathLengthTests($pathLength)
+ {
+ // Not using __DIR__ because it can get screwed up when xdebug debugger is attached.
+ $basePath = realpath(sys_get_temp_dir());
+
+ // Test whether the desired path length is odd or even.
+ $desiredPathLengthIsOdd = ($pathLength % 2) == 1;
+
+ // If the cache key is not too long, the filecache codepath will add
+ // a slash and bin2hex($key). The length of the added portion will be an odd number.
+ // len(desired) = len(base path) + len(slash . bin2hex($key))
+ // odd = even + odd
+ // even = odd + odd
+ $basePathLengthShouldBeOdd = !$desiredPathLengthIsOdd;
+
+ $basePathLengthIsOdd = (strlen($basePath) % 2) == 1;
+
+ // If the base path needs to be odd or even where it is not, we add an odd number of
+ // characters as a pad. In this case, we're adding '\aa' (or '/aa' depending on platform)
+ // This is all to make it so that the key we're testing would result in
+ // a path that is exactly the length we want to test IF the path length limit
+ // were not in place in FileCache.
+ if ($basePathLengthIsOdd != $basePathLengthShouldBeOdd) {
+ $basePath .= DIRECTORY_SEPARATOR . "aa";
+ }
+
+ return $basePath;
+ }
+
+ public static function getKeyAndPathFittingLength($length)
+ {
+ $basePath = self::getBasePathForWindowsPathLengthTests($length);
+
+ $baseDirLength = strlen($basePath);
+ $extensionLength = strlen('.doctrine.cache');
+ $directoryLength = strlen(DIRECTORY_SEPARATOR . 'aa' . DIRECTORY_SEPARATOR);
+ $keyLength = $length - ($baseDirLength + $extensionLength + $directoryLength); // - 1 because of slash
+
+ $key = str_repeat('a', floor($keyLength / 2));
+
+ $keyHash = hash('sha256', $key);
+
+ $keyPath = $basePath
+ . DIRECTORY_SEPARATOR
+ . substr($keyHash, 0, 2)
+ . DIRECTORY_SEPARATOR
+ . bin2hex($key)
+ . '.doctrine.cache';
+
+ $hashedKeyPath = $basePath
+ . DIRECTORY_SEPARATOR
+ . substr($keyHash, 0, 2)
+ . DIRECTORY_SEPARATOR
+ . '_' . $keyHash
+ . '.doctrine.cache';
+
+ return array($key, $keyPath, $hashedKeyPath);
+ }
+
+ public function getPathLengthsToTest()
+ {
+ // Windows officially supports 260 bytes including null terminator
+ // 259 characters is too large due to PHP bug (https://bugs.php.net/bug.php?id=70943)
+ // 260 characters is too large - null terminator is included in allowable length
+ return array(
+ array(257, false),
+ array(258, false),
+ array(259, true),
+ array(260, true)
+ );
+ }
+
+ /**
+ * @runInSeparateProcess
+ * @dataProvider getPathLengthsToTest
+ *
+ * @covers \Doctrine\Common\Cache\FileCache::getFilename
+ */
+ public function testWindowsPathLengthLimitationsAreCorrectlyRespected($length, $pathShouldBeHashed)
+ {
+ if (! defined('PHP_WINDOWS_VERSION_BUILD')) {
+ define('PHP_WINDOWS_VERSION_BUILD', 'Yes, this is the "usual suspect", with the usual limitations');
+ }
+
+ $basePath = $this->getBasePathForWindowsPathLengthTests($length);
+
+ $fileCache = $this->getMockForAbstractClass(
+ 'Doctrine\Common\Cache\FileCache',
+ array($basePath, '.doctrine.cache')
+ );
+
+ list($key, $keyPath, $hashedKeyPath) = $this->getKeyAndPathFittingLength($length);
+
+ $getFileName = new \ReflectionMethod($fileCache, 'getFilename');
+
+ $getFileName->setAccessible(true);
+
+ $this->assertEquals(
+ $length,
+ strlen($keyPath),
+ sprintf('Path expected to be %d characters long is %d characters long', $length, strlen($keyPath))
+ );
+
+ if ($pathShouldBeHashed) {
+ $keyPath = $hashedKeyPath;
+ }
+
+ if ($pathShouldBeHashed) {
+ $this->assertSame(
+ $hashedKeyPath,
+ $getFileName->invoke($fileCache, $key),
+ 'Keys should be hashed correctly if they are over the limit.'
+ );
+ } else {
+ $this->assertSame(
+ $keyPath,
+ $getFileName->invoke($fileCache, $key),
+ 'Keys below limit of the allowed length are used directly, unhashed'
+ );
+ }
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FilesystemCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FilesystemCacheTest.php
new file mode 100644
index 0000000..9e7c9e8
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/FilesystemCacheTest.php
@@ -0,0 +1,61 @@
+_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats[Cache::STATS_HITS]);
+ $this->assertNull($stats[Cache::STATS_MISSES]);
+ $this->assertNull($stats[Cache::STATS_UPTIME]);
+ $this->assertEquals(0, $stats[Cache::STATS_MEMORY_USAGE]);
+ $this->assertGreaterThan(0, $stats[Cache::STATS_MEMORY_AVAILABLE]);
+ }
+
+ public function testCacheInSharedDirectoryIsPerExtension()
+ {
+ $cache1 = new FilesystemCache($this->directory, '.foo');
+ $cache2 = new FilesystemCache($this->directory, '.bar');
+
+ $this->assertTrue($cache1->save('key1', 11));
+ $this->assertTrue($cache1->save('key2', 12));
+
+ $this->assertTrue($cache2->save('key1', 21));
+ $this->assertTrue($cache2->save('key2', 22));
+
+ $this->assertSame(11, $cache1->fetch('key1'), 'Cache value must not be influenced by a different cache in the same directory but different extension');
+ $this->assertSame(12, $cache1->fetch('key2'));
+ $this->assertTrue($cache1->flushAll());
+ $this->assertFalse($cache1->fetch('key1'), 'flushAll() must delete all items with the current extension');
+ $this->assertFalse($cache1->fetch('key2'));
+
+ $this->assertSame(21, $cache2->fetch('key1'), 'flushAll() must not remove items with a different extension in a shared directory');
+ $this->assertSame(22, $cache2->fetch('key2'));
+ }
+
+ public function testFlushAllWithNoExtension()
+ {
+ $cache = new FilesystemCache($this->directory, '');
+
+ $this->assertTrue($cache->save('key1', 1));
+ $this->assertTrue($cache->save('key2', 2));
+ $this->assertTrue($cache->flushAll());
+ $this->assertFalse($cache->contains('key1'));
+ $this->assertFalse($cache->contains('key2'));
+ }
+
+ protected function _getCacheDriver()
+ {
+ return new FilesystemCache($this->directory);
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcacheCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcacheCacheTest.php
new file mode 100644
index 0000000..74853b8
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcacheCacheTest.php
@@ -0,0 +1,59 @@
+memcache = new Memcache();
+
+ if (@$this->memcache->connect('localhost', 11211) === false) {
+ unset($this->memcache);
+ $this->markTestSkipped('Cannot connect to Memcache.');
+ }
+ }
+
+ protected function tearDown()
+ {
+ if ($this->memcache instanceof Memcache) {
+ $this->memcache->flush();
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Memcache does not support " " and null byte as key so we remove them from the tests.
+ */
+ public function provideCacheIds()
+ {
+ $ids = parent::provideCacheIds();
+ unset($ids[21], $ids[22]);
+
+ return $ids;
+ }
+
+ public function testGetMemcacheReturnsInstanceOfMemcache()
+ {
+ $this->assertInstanceOf('Memcache', $this->_getCacheDriver()->getMemcache());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function _getCacheDriver()
+ {
+ $driver = new MemcacheCache();
+ $driver->setMemcache($this->memcache);
+ return $driver;
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcachedCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcachedCacheTest.php
new file mode 100644
index 0000000..fbcf5c3
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MemcachedCacheTest.php
@@ -0,0 +1,61 @@
+memcached = new Memcached();
+ $this->memcached->setOption(Memcached::OPT_COMPRESSION, false);
+ $this->memcached->addServer('127.0.0.1', 11211);
+
+ if (@fsockopen('127.0.0.1', 11211) === false) {
+ unset($this->memcached);
+ $this->markTestSkipped('Cannot connect to Memcached.');
+ }
+ }
+
+ protected function tearDown()
+ {
+ if ($this->memcached instanceof Memcached) {
+ $this->memcached->flush();
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * Memcached does not support " ", null byte and very long keys so we remove them from the tests.
+ */
+ public function provideCacheIds()
+ {
+ $ids = parent::provideCacheIds();
+ unset($ids[21], $ids[22], $ids[24]);
+
+ return $ids;
+ }
+
+ public function testGetMemcachedReturnsInstanceOfMemcached()
+ {
+ $this->assertInstanceOf('Memcached', $this->_getCacheDriver()->getMemcached());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function _getCacheDriver()
+ {
+ $driver = new MemcachedCache();
+ $driver->setMemcached($this->memcached);
+ return $driver;
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MongoDBCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MongoDBCacheTest.php
new file mode 100644
index 0000000..02f6205
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/MongoDBCacheTest.php
@@ -0,0 +1,68 @@
+=')) {
+ $this->markTestSkipped('Mongo >= 1.3.0 is required.');
+ }
+
+ $mongo = new MongoClient();
+ $this->collection = $mongo->selectCollection('doctrine_common_cache', 'test');
+ }
+
+ protected function tearDown()
+ {
+ if ($this->collection instanceof MongoCollection) {
+ $this->collection->drop();
+ }
+ }
+
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats[Cache::STATS_HITS]);
+ $this->assertNull($stats[Cache::STATS_MISSES]);
+ $this->assertGreaterThan(0, $stats[Cache::STATS_UPTIME]);
+ $this->assertEquals(0, $stats[Cache::STATS_MEMORY_USAGE]);
+ $this->assertNull($stats[Cache::STATS_MEMORY_AVAILABLE]);
+ }
+
+ /**
+ * @group 108
+ */
+ public function testMongoCursorExceptionsDoNotBubbleUp()
+ {
+ /* @var $collection \MongoCollection|\PHPUnit_Framework_MockObject_MockObject */
+ $collection = $this->getMock('MongoCollection');
+
+ $collection->expects(self::once())->method('update')->willThrowException(new \MongoCursorException());
+
+ $cache = new MongoDBCache($collection);
+
+ self::assertFalse($cache->save('foo', 'bar'));
+ }
+
+ protected function _getCacheDriver()
+ {
+ return new MongoDBCache($this->collection);
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PhpFileCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PhpFileCacheTest.php
new file mode 100644
index 0000000..32eec6e
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PhpFileCacheTest.php
@@ -0,0 +1,95 @@
+_getCacheDriver();
+
+ // Test save
+ $cache->save('test_set_state', new SetStateClass(array(1,2,3)));
+
+ //Test __set_state call
+ $this->assertCount(0, SetStateClass::$values);
+
+ // Test fetch
+ $value = $cache->fetch('test_set_state');
+ $this->assertInstanceOf('Doctrine\Tests\Common\Cache\SetStateClass', $value);
+ $this->assertEquals(array(1,2,3), $value->getValue());
+
+ //Test __set_state call
+ $this->assertCount(1, SetStateClass::$values);
+
+ // Test contains
+ $this->assertTrue($cache->contains('test_set_state'));
+ }
+
+ public function testNotImplementsSetState()
+ {
+ $cache = $this->_getCacheDriver();
+
+ $this->setExpectedException('InvalidArgumentException');
+ $cache->save('test_not_set_state', new NotSetStateClass(array(1,2,3)));
+ }
+
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats[Cache::STATS_HITS]);
+ $this->assertNull($stats[Cache::STATS_MISSES]);
+ $this->assertNull($stats[Cache::STATS_UPTIME]);
+ $this->assertEquals(0, $stats[Cache::STATS_MEMORY_USAGE]);
+ $this->assertGreaterThan(0, $stats[Cache::STATS_MEMORY_AVAILABLE]);
+ }
+
+ protected function _getCacheDriver()
+ {
+ return new PhpFileCache($this->directory);
+ }
+}
+
+class NotSetStateClass
+{
+ private $value;
+
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ public function getValue()
+ {
+ return $this->value;
+ }
+}
+
+class SetStateClass extends NotSetStateClass
+{
+ public static $values = array();
+
+ public static function __set_state($data)
+ {
+ self::$values = $data;
+ return new self($data['value']);
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PredisCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PredisCacheTest.php
new file mode 100644
index 0000000..e20839d
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/PredisCacheTest.php
@@ -0,0 +1,87 @@
+markTestSkipped('Predis\Client is missing. Make sure to "composer install" to have all dev dependencies.');
+ }
+
+ $this->client = new Client();
+
+ try {
+ $this->client->connect();
+ } catch (ConnectionException $e) {
+ $this->markTestSkipped('Cannot connect to Redis because of: ' . $e);
+ }
+ }
+
+ public function testHitMissesStatsAreProvided()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNotNull($stats[Cache::STATS_HITS]);
+ $this->assertNotNull($stats[Cache::STATS_MISSES]);
+ }
+
+ /**
+ * @return PredisCache
+ */
+ protected function _getCacheDriver()
+ {
+ return new PredisCache($this->client);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @dataProvider provideDataToCache
+ */
+ public function testSetContainsFetchDelete($value)
+ {
+ if (array() === $value) {
+ $this->markTestIncomplete(
+ 'Predis currently doesn\'t support saving empty array values. '
+ . 'See https://github.com/nrk/predis/issues/241'
+ );
+ }
+
+ parent::testSetContainsFetchDelete($value);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @dataProvider provideDataToCache
+ */
+ public function testUpdateExistingEntry($value)
+ {
+ if (array() === $value) {
+ $this->markTestIncomplete(
+ 'Predis currently doesn\'t support saving empty array values. '
+ . 'See https://github.com/nrk/predis/issues/241'
+ );
+ }
+
+ parent::testUpdateExistingEntry($value);
+ }
+
+ public function testAllowsGenericPredisClient()
+ {
+ /* @var $predisClient \Predis\ClientInterface */
+ $predisClient = $this->getMock('Predis\\ClientInterface');
+
+ $this->assertInstanceOf('Doctrine\\Common\\Cache\\PredisCache', new PredisCache($predisClient));
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RedisCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RedisCacheTest.php
new file mode 100644
index 0000000..caaaa06
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RedisCacheTest.php
@@ -0,0 +1,47 @@
+_redis = new \Redis();
+ $ok = @$this->_redis->connect('127.0.0.1');
+ if (!$ok) {
+ $this->markTestSkipped('Cannot connect to Redis.');
+ }
+ }
+
+ public function testHitMissesStatsAreProvided()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNotNull($stats[Cache::STATS_HITS]);
+ $this->assertNotNull($stats[Cache::STATS_MISSES]);
+ }
+
+ public function testGetRedisReturnsInstanceOfRedis()
+ {
+ $this->assertInstanceOf('Redis', $this->_getCacheDriver()->getRedis());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function _getCacheDriver()
+ {
+ $driver = new RedisCache();
+ $driver->setRedis($this->_redis);
+ return $driver;
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RiakCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RiakCacheTest.php
new file mode 100644
index 0000000..e7d5f3d
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/RiakCacheTest.php
@@ -0,0 +1,58 @@
+connection = new Connection('127.0.0.1', 8087);
+ $this->bucket = new Bucket($this->connection, 'test');
+ } catch (Exception\RiakException $e) {
+ $this->markTestSkipped('Cannot connect to Riak.');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats);
+ }
+
+ /**
+ * Retrieve RiakCache instance.
+ *
+ * @return \Doctrine\Common\Cache\RiakCache
+ */
+ protected function _getCacheDriver()
+ {
+ return new RiakCache($this->bucket);
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/SQLite3CacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/SQLite3CacheTest.php
new file mode 100644
index 0000000..f0c5b0b
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/SQLite3CacheTest.php
@@ -0,0 +1,42 @@
+file = tempnam(null, 'doctrine-cache-test-');
+ unlink($this->file);
+ $this->sqlite = new SQLite3($this->file);
+ }
+
+ protected function tearDown()
+ {
+ $this->sqlite = null; // DB must be closed before
+ unlink($this->file);
+ }
+
+ public function testGetStats()
+ {
+ $this->assertNull($this->_getCacheDriver()->getStats());
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function _getCacheDriver()
+ {
+ return new SQLite3Cache($this->sqlite, 'test_table');
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/VoidCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/VoidCacheTest.php
new file mode 100644
index 0000000..8ab7e5b
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/VoidCacheTest.php
@@ -0,0 +1,58 @@
+assertFalse($cache->contains('foo'));
+ $this->assertFalse($cache->contains('bar'));
+ }
+
+ public function testShouldAlwaysReturnFalseOnFetch()
+ {
+ $cache = new VoidCache();
+
+ $this->assertFalse($cache->fetch('foo'));
+ $this->assertFalse($cache->fetch('bar'));
+ }
+
+ public function testShouldAlwaysReturnTrueOnSaveButNotStoreAnything()
+ {
+ $cache = new VoidCache();
+
+ $this->assertTrue($cache->save('foo', 'fooVal'));
+
+ $this->assertFalse($cache->contains('foo'));
+ $this->assertFalse($cache->fetch('foo'));
+ }
+
+ public function testShouldAlwaysReturnTrueOnDelete()
+ {
+ $cache = new VoidCache();
+
+ $this->assertTrue($cache->delete('foo'));
+ }
+
+ public function testShouldAlwaysReturnNullOnGetStatus()
+ {
+ $cache = new VoidCache();
+
+ $this->assertNull($cache->getStats());
+ }
+
+ public function testShouldAlwaysReturnTrueOnFlush()
+ {
+ $cache = new VoidCache();
+
+ $this->assertTrue($cache->flushAll());
+ }
+}
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/WinCacheCacheTest.php b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/WinCacheCacheTest.php
new file mode 100644
index 0000000..1dded42
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/WinCacheCacheTest.php
@@ -0,0 +1,16 @@
+markTestSkipped('Zend Data Cache only works in apache2handler SAPI.');
+ }
+ }
+
+ public function testGetStats()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNull($stats);
+ }
+
+ protected function _getCacheDriver()
+ {
+ return new ZendDataCache();
+ }
+}
\ No newline at end of file
diff --git a/vendor/doctrine/cache/tests/Doctrine/Tests/DoctrineTestCase.php b/vendor/doctrine/cache/tests/Doctrine/Tests/DoctrineTestCase.php
new file mode 100644
index 0000000..e8323d2
--- /dev/null
+++ b/vendor/doctrine/cache/tests/Doctrine/Tests/DoctrineTestCase.php
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ../Doctrine/
+
+
+
+
+
+ ../../lib/Doctrine/
+
+
+
+
+
+ performance
+
+
+
diff --git a/vendor/doctrine/collections/.travis.yml b/vendor/doctrine/collections/.travis.yml
new file mode 100644
index 0000000..60f4792
--- /dev/null
+++ b/vendor/doctrine/collections/.travis.yml
@@ -0,0 +1,21 @@
+language: php
+
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - hhvm
+ - hhvm-nightly
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - php: 7.0
+
+before_script:
+ - composer --prefer-source install
+
+script:
+ - phpunit
diff --git a/vendor/doctrine/collections/LICENSE b/vendor/doctrine/collections/LICENSE
new file mode 100644
index 0000000..5e781fc
--- /dev/null
+++ b/vendor/doctrine/collections/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2006-2013 Doctrine Project
+
+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/vendor/doctrine/collections/README.md b/vendor/doctrine/collections/README.md
new file mode 100644
index 0000000..161cab6
--- /dev/null
+++ b/vendor/doctrine/collections/README.md
@@ -0,0 +1,25 @@
+# Doctrine Collections
+
+[![Build Status](https://travis-ci.org/doctrine/collections.svg?branch=master)](https://travis-ci.org/doctrine/collections)
+
+Collections Abstraction library
+
+## Changelog
+
+### v1.3.0
+
+* [Explicit casting of first and max results in criteria API](https://github.com/doctrine/collections/pull/26)
+* [Keep keys when using `ArrayCollection#matching()` with sorting](https://github.com/doctrine/collections/pull/49)
+* [Made `AbstractLazyCollection#$initialized` protected for extensibility](https://github.com/doctrine/collections/pull/52)
+
+### v1.2.0
+
+* Add a new ``AbstractLazyCollection``
+
+### v1.1.0
+
+* Deprecated ``Comparison::IS``, because it's only there for SQL semantics.
+ These are fixed in the ORM instead.
+* Add ``Comparison::CONTAINS`` to perform partial string matches:
+
+ $criteria->andWhere($criteria->expr()->contains('property', 'Foo'));
diff --git a/vendor/doctrine/collections/composer.json b/vendor/doctrine/collections/composer.json
new file mode 100644
index 0000000..155cac4
--- /dev/null
+++ b/vendor/doctrine/collections/composer.json
@@ -0,0 +1,29 @@
+{
+ "name": "doctrine/collections",
+ "type": "library",
+ "description": "Collections Abstraction library",
+ "keywords": ["collections", "array", "iterator"],
+ "homepage": "http://www.doctrine-project.org",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "autoload": {
+ "psr-0": { "Doctrine\\Common\\Collections\\": "lib/" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php
new file mode 100644
index 0000000..b907f8b
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/AbstractLazyCollection.php
@@ -0,0 +1,343 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+use Closure;
+
+/**
+ * Lazy collection that is backed by a concrete collection
+ *
+ * @author Michaël Gallego
+ * @since 1.2
+ */
+abstract class AbstractLazyCollection implements Collection
+{
+ /**
+ * The backed collection to use
+ *
+ * @var Collection
+ */
+ protected $collection;
+
+ /**
+ * @var boolean
+ */
+ protected $initialized = false;
+
+ /**
+ * {@inheritDoc}
+ */
+ public function count()
+ {
+ $this->initialize();
+ return $this->collection->count();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function add($element)
+ {
+ $this->initialize();
+ return $this->collection->add($element);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clear()
+ {
+ $this->initialize();
+ $this->collection->clear();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function contains($element)
+ {
+ $this->initialize();
+ return $this->collection->contains($element);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isEmpty()
+ {
+ $this->initialize();
+ return $this->collection->isEmpty();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function remove($key)
+ {
+ $this->initialize();
+ return $this->collection->remove($key);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function removeElement($element)
+ {
+ $this->initialize();
+ return $this->collection->removeElement($element);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function containsKey($key)
+ {
+ $this->initialize();
+ return $this->collection->containsKey($key);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function get($key)
+ {
+ $this->initialize();
+ return $this->collection->get($key);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getKeys()
+ {
+ $this->initialize();
+ return $this->collection->getKeys();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getValues()
+ {
+ $this->initialize();
+ return $this->collection->getValues();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function set($key, $value)
+ {
+ $this->initialize();
+ $this->collection->set($key, $value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function toArray()
+ {
+ $this->initialize();
+ return $this->collection->toArray();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function first()
+ {
+ $this->initialize();
+ return $this->collection->first();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function last()
+ {
+ $this->initialize();
+ return $this->collection->last();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function key()
+ {
+ $this->initialize();
+ return $this->collection->key();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function current()
+ {
+ $this->initialize();
+ return $this->collection->current();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function next()
+ {
+ $this->initialize();
+ return $this->collection->next();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function exists(Closure $p)
+ {
+ $this->initialize();
+ return $this->collection->exists($p);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function filter(Closure $p)
+ {
+ $this->initialize();
+ return $this->collection->filter($p);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function forAll(Closure $p)
+ {
+ $this->initialize();
+ return $this->collection->forAll($p);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function map(Closure $func)
+ {
+ $this->initialize();
+ return $this->collection->map($func);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function partition(Closure $p)
+ {
+ $this->initialize();
+ return $this->collection->partition($p);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function indexOf($element)
+ {
+ $this->initialize();
+ return $this->collection->indexOf($element);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function slice($offset, $length = null)
+ {
+ $this->initialize();
+ return $this->collection->slice($offset, $length);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getIterator()
+ {
+ $this->initialize();
+ return $this->collection->getIterator();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function offsetExists($offset)
+ {
+ $this->initialize();
+ return $this->collection->offsetExists($offset);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function offsetGet($offset)
+ {
+ $this->initialize();
+ return $this->collection->offsetGet($offset);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function offsetSet($offset, $value)
+ {
+ $this->initialize();
+ $this->collection->offsetSet($offset, $value);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function offsetUnset($offset)
+ {
+ $this->initialize();
+ $this->collection->offsetUnset($offset);
+ }
+
+ /**
+ * Is the lazy collection already initialized?
+ *
+ * @return bool
+ */
+ public function isInitialized()
+ {
+ return $this->initialized;
+ }
+
+ /**
+ * Initialize the collection
+ *
+ * @return void
+ */
+ protected function initialize()
+ {
+ if ( ! $this->initialized) {
+ $this->doInitialize();
+ $this->initialized = true;
+ }
+ }
+
+ /**
+ * Do the initialization logic
+ *
+ * @return void
+ */
+ abstract protected function doInitialize();
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php
new file mode 100644
index 0000000..bce5751
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ArrayCollection.php
@@ -0,0 +1,387 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+use ArrayIterator;
+use Closure;
+use Doctrine\Common\Collections\Expr\ClosureExpressionVisitor;
+
+/**
+ * An ArrayCollection is a Collection implementation that wraps a regular PHP array.
+ *
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class ArrayCollection implements Collection, Selectable
+{
+ /**
+ * An array containing the entries of this collection.
+ *
+ * @var array
+ */
+ private $elements;
+
+ /**
+ * Initializes a new ArrayCollection.
+ *
+ * @param array $elements
+ */
+ public function __construct(array $elements = array())
+ {
+ $this->elements = $elements;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function toArray()
+ {
+ return $this->elements;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function first()
+ {
+ return reset($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function last()
+ {
+ return end($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function key()
+ {
+ return key($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function next()
+ {
+ return next($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function current()
+ {
+ return current($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function remove($key)
+ {
+ if ( ! isset($this->elements[$key]) && ! array_key_exists($key, $this->elements)) {
+ return null;
+ }
+
+ $removed = $this->elements[$key];
+ unset($this->elements[$key]);
+
+ return $removed;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function removeElement($element)
+ {
+ $key = array_search($element, $this->elements, true);
+
+ if ($key === false) {
+ return false;
+ }
+
+ unset($this->elements[$key]);
+
+ return true;
+ }
+
+ /**
+ * Required by interface ArrayAccess.
+ *
+ * {@inheritDoc}
+ */
+ public function offsetExists($offset)
+ {
+ return $this->containsKey($offset);
+ }
+
+ /**
+ * Required by interface ArrayAccess.
+ *
+ * {@inheritDoc}
+ */
+ public function offsetGet($offset)
+ {
+ return $this->get($offset);
+ }
+
+ /**
+ * Required by interface ArrayAccess.
+ *
+ * {@inheritDoc}
+ */
+ public function offsetSet($offset, $value)
+ {
+ if ( ! isset($offset)) {
+ return $this->add($value);
+ }
+
+ $this->set($offset, $value);
+ }
+
+ /**
+ * Required by interface ArrayAccess.
+ *
+ * {@inheritDoc}
+ */
+ public function offsetUnset($offset)
+ {
+ return $this->remove($offset);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function containsKey($key)
+ {
+ return isset($this->elements[$key]) || array_key_exists($key, $this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function contains($element)
+ {
+ return in_array($element, $this->elements, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function exists(Closure $p)
+ {
+ foreach ($this->elements as $key => $element) {
+ if ($p($key, $element)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function indexOf($element)
+ {
+ return array_search($element, $this->elements, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function get($key)
+ {
+ return isset($this->elements[$key]) ? $this->elements[$key] : null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getKeys()
+ {
+ return array_keys($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getValues()
+ {
+ return array_values($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function count()
+ {
+ return count($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function set($key, $value)
+ {
+ $this->elements[$key] = $value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function add($value)
+ {
+ $this->elements[] = $value;
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isEmpty()
+ {
+ return empty($this->elements);
+ }
+
+ /**
+ * Required by interface IteratorAggregate.
+ *
+ * {@inheritDoc}
+ */
+ public function getIterator()
+ {
+ return new ArrayIterator($this->elements);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function map(Closure $func)
+ {
+ return new static(array_map($func, $this->elements));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function filter(Closure $p)
+ {
+ return new static(array_filter($this->elements, $p));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function forAll(Closure $p)
+ {
+ foreach ($this->elements as $key => $element) {
+ if ( ! $p($key, $element)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function partition(Closure $p)
+ {
+ $matches = $noMatches = array();
+
+ foreach ($this->elements as $key => $element) {
+ if ($p($key, $element)) {
+ $matches[$key] = $element;
+ } else {
+ $noMatches[$key] = $element;
+ }
+ }
+
+ return array(new static($matches), new static($noMatches));
+ }
+
+ /**
+ * Returns a string representation of this object.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return __CLASS__ . '@' . spl_object_hash($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function clear()
+ {
+ $this->elements = array();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function slice($offset, $length = null)
+ {
+ return array_slice($this->elements, $offset, $length, true);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function matching(Criteria $criteria)
+ {
+ $expr = $criteria->getWhereExpression();
+ $filtered = $this->elements;
+
+ if ($expr) {
+ $visitor = new ClosureExpressionVisitor();
+ $filter = $visitor->dispatch($expr);
+ $filtered = array_filter($filtered, $filter);
+ }
+
+ if ($orderings = $criteria->getOrderings()) {
+ foreach (array_reverse($orderings) as $field => $ordering) {
+ $next = ClosureExpressionVisitor::sortByField($field, $ordering == Criteria::DESC ? -1 : 1);
+ }
+
+ uasort($filtered, $next);
+ }
+
+ $offset = $criteria->getFirstResult();
+ $length = $criteria->getMaxResults();
+
+ if ($offset || $length) {
+ $filtered = array_slice($filtered, (int)$offset, $length);
+ }
+
+ return new static($filtered);
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php
new file mode 100644
index 0000000..8792f7a
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Collection.php
@@ -0,0 +1,263 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+use ArrayAccess;
+use Closure;
+use Countable;
+use IteratorAggregate;
+
+/**
+ * The missing (SPL) Collection/Array/OrderedMap interface.
+ *
+ * A Collection resembles the nature of a regular PHP array. That is,
+ * it is essentially an ordered map that can also be used
+ * like a list.
+ *
+ * A Collection has an internal iterator just like a PHP array. In addition,
+ * a Collection can be iterated with external iterators, which is preferable.
+ * To use an external iterator simply use the foreach language construct to
+ * iterate over the collection (which calls {@link getIterator()} internally) or
+ * explicitly retrieve an iterator though {@link getIterator()} which can then be
+ * used to iterate over the collection.
+ * You can not rely on the internal iterator of the collection being at a certain
+ * position unless you explicitly positioned it before. Prefer iteration with
+ * external iterators.
+ *
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+interface Collection extends Countable, IteratorAggregate, ArrayAccess
+{
+ /**
+ * Adds an element at the end of the collection.
+ *
+ * @param mixed $element The element to add.
+ *
+ * @return boolean Always TRUE.
+ */
+ public function add($element);
+
+ /**
+ * Clears the collection, removing all elements.
+ *
+ * @return void
+ */
+ public function clear();
+
+ /**
+ * Checks whether an element is contained in the collection.
+ * This is an O(n) operation, where n is the size of the collection.
+ *
+ * @param mixed $element The element to search for.
+ *
+ * @return boolean TRUE if the collection contains the element, FALSE otherwise.
+ */
+ public function contains($element);
+
+ /**
+ * Checks whether the collection is empty (contains no elements).
+ *
+ * @return boolean TRUE if the collection is empty, FALSE otherwise.
+ */
+ public function isEmpty();
+
+ /**
+ * Removes the element at the specified index from the collection.
+ *
+ * @param string|integer $key The kex/index of the element to remove.
+ *
+ * @return mixed The removed element or NULL, if the collection did not contain the element.
+ */
+ public function remove($key);
+
+ /**
+ * Removes the specified element from the collection, if it is found.
+ *
+ * @param mixed $element The element to remove.
+ *
+ * @return boolean TRUE if this collection contained the specified element, FALSE otherwise.
+ */
+ public function removeElement($element);
+
+ /**
+ * Checks whether the collection contains an element with the specified key/index.
+ *
+ * @param string|integer $key The key/index to check for.
+ *
+ * @return boolean TRUE if the collection contains an element with the specified key/index,
+ * FALSE otherwise.
+ */
+ public function containsKey($key);
+
+ /**
+ * Gets the element at the specified key/index.
+ *
+ * @param string|integer $key The key/index of the element to retrieve.
+ *
+ * @return mixed
+ */
+ public function get($key);
+
+ /**
+ * Gets all keys/indices of the collection.
+ *
+ * @return array The keys/indices of the collection, in the order of the corresponding
+ * elements in the collection.
+ */
+ public function getKeys();
+
+ /**
+ * Gets all values of the collection.
+ *
+ * @return array The values of all elements in the collection, in the order they
+ * appear in the collection.
+ */
+ public function getValues();
+
+ /**
+ * Sets an element in the collection at the specified key/index.
+ *
+ * @param string|integer $key The key/index of the element to set.
+ * @param mixed $value The element to set.
+ *
+ * @return void
+ */
+ public function set($key, $value);
+
+ /**
+ * Gets a native PHP array representation of the collection.
+ *
+ * @return array
+ */
+ public function toArray();
+
+ /**
+ * Sets the internal iterator to the first element in the collection and returns this element.
+ *
+ * @return mixed
+ */
+ public function first();
+
+ /**
+ * Sets the internal iterator to the last element in the collection and returns this element.
+ *
+ * @return mixed
+ */
+ public function last();
+
+ /**
+ * Gets the key/index of the element at the current iterator position.
+ *
+ * @return int|string
+ */
+ public function key();
+
+ /**
+ * Gets the element of the collection at the current iterator position.
+ *
+ * @return mixed
+ */
+ public function current();
+
+ /**
+ * Moves the internal iterator position to the next element and returns this element.
+ *
+ * @return mixed
+ */
+ public function next();
+
+ /**
+ * Tests for the existence of an element that satisfies the given predicate.
+ *
+ * @param Closure $p The predicate.
+ *
+ * @return boolean TRUE if the predicate is TRUE for at least one element, FALSE otherwise.
+ */
+ public function exists(Closure $p);
+
+ /**
+ * Returns all the elements of this collection that satisfy the predicate p.
+ * The order of the elements is preserved.
+ *
+ * @param Closure $p The predicate used for filtering.
+ *
+ * @return Collection A collection with the results of the filter operation.
+ */
+ public function filter(Closure $p);
+
+ /**
+ * Tests whether the given predicate p holds for all elements of this collection.
+ *
+ * @param Closure $p The predicate.
+ *
+ * @return boolean TRUE, if the predicate yields TRUE for all elements, FALSE otherwise.
+ */
+ public function forAll(Closure $p);
+
+ /**
+ * Applies the given function to each element in the collection and returns
+ * a new collection with the elements returned by the function.
+ *
+ * @param Closure $func
+ *
+ * @return Collection
+ */
+ public function map(Closure $func);
+
+ /**
+ * Partitions this collection in two collections according to a predicate.
+ * Keys are preserved in the resulting collections.
+ *
+ * @param Closure $p The predicate on which to partition.
+ *
+ * @return array An array with two elements. The first element contains the collection
+ * of elements where the predicate returned TRUE, the second element
+ * contains the collection of elements where the predicate returned FALSE.
+ */
+ public function partition(Closure $p);
+
+ /**
+ * Gets the index/key of a given element. The comparison of two elements is strict,
+ * that means not only the value but also the type must match.
+ * For objects this means reference equality.
+ *
+ * @param mixed $element The element to search for.
+ *
+ * @return int|string|bool The key/index of the element or FALSE if the element was not found.
+ */
+ public function indexOf($element);
+
+ /**
+ * Extracts a slice of $length elements starting at position $offset from the Collection.
+ *
+ * If $length is null it returns all elements from $offset to the end of the Collection.
+ * Keys have to be preserved by this method. Calling this method will only return the
+ * selected slice and NOT change the elements contained in the collection slice is called on.
+ *
+ * @param int $offset The offset to start from.
+ * @param int|null $length The maximum number of elements to return, or null for no limit.
+ *
+ * @return array
+ */
+ public function slice($offset, $length = null);
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php
new file mode 100644
index 0000000..3f9d43a
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Criteria.php
@@ -0,0 +1,259 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+use Doctrine\Common\Collections\Expr\Expression;
+use Doctrine\Common\Collections\Expr\CompositeExpression;
+
+/**
+ * Criteria for filtering Selectable collections.
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+class Criteria
+{
+ /**
+ * @var string
+ */
+ const ASC = 'ASC';
+
+ /**
+ * @var string
+ */
+ const DESC = 'DESC';
+
+ /**
+ * @var \Doctrine\Common\Collections\ExpressionBuilder|null
+ */
+ private static $expressionBuilder;
+
+ /**
+ * @var \Doctrine\Common\Collections\Expr\Expression|null
+ */
+ private $expression;
+
+ /**
+ * @var string[]
+ */
+ private $orderings = array();
+
+ /**
+ * @var int|null
+ */
+ private $firstResult;
+
+ /**
+ * @var int|null
+ */
+ private $maxResults;
+
+ /**
+ * Creates an instance of the class.
+ *
+ * @return Criteria
+ */
+ public static function create()
+ {
+ return new static();
+ }
+
+ /**
+ * Returns the expression builder.
+ *
+ * @return \Doctrine\Common\Collections\ExpressionBuilder
+ */
+ public static function expr()
+ {
+ if (self::$expressionBuilder === null) {
+ self::$expressionBuilder = new ExpressionBuilder();
+ }
+
+ return self::$expressionBuilder;
+ }
+
+ /**
+ * Construct a new Criteria.
+ *
+ * @param Expression $expression
+ * @param string[]|null $orderings
+ * @param int|null $firstResult
+ * @param int|null $maxResults
+ */
+ public function __construct(Expression $expression = null, array $orderings = null, $firstResult = null, $maxResults = null)
+ {
+ $this->expression = $expression;
+
+ $this->setFirstResult($firstResult);
+ $this->setMaxResults($maxResults);
+
+ if (null !== $orderings) {
+ $this->orderBy($orderings);
+ }
+ }
+
+ /**
+ * Sets the where expression to evaluate when this Criteria is searched for.
+ *
+ * @param Expression $expression
+ *
+ * @return Criteria
+ */
+ public function where(Expression $expression)
+ {
+ $this->expression = $expression;
+
+ return $this;
+ }
+
+ /**
+ * Appends the where expression to evaluate when this Criteria is searched for
+ * using an AND with previous expression.
+ *
+ * @param Expression $expression
+ *
+ * @return Criteria
+ */
+ public function andWhere(Expression $expression)
+ {
+ if ($this->expression === null) {
+ return $this->where($expression);
+ }
+
+ $this->expression = new CompositeExpression(CompositeExpression::TYPE_AND, array(
+ $this->expression, $expression
+ ));
+
+ return $this;
+ }
+
+ /**
+ * Appends the where expression to evaluate when this Criteria is searched for
+ * using an OR with previous expression.
+ *
+ * @param Expression $expression
+ *
+ * @return Criteria
+ */
+ public function orWhere(Expression $expression)
+ {
+ if ($this->expression === null) {
+ return $this->where($expression);
+ }
+
+ $this->expression = new CompositeExpression(CompositeExpression::TYPE_OR, array(
+ $this->expression, $expression
+ ));
+
+ return $this;
+ }
+
+ /**
+ * Gets the expression attached to this Criteria.
+ *
+ * @return Expression|null
+ */
+ public function getWhereExpression()
+ {
+ return $this->expression;
+ }
+
+ /**
+ * Gets the current orderings of this Criteria.
+ *
+ * @return string[]
+ */
+ public function getOrderings()
+ {
+ return $this->orderings;
+ }
+
+ /**
+ * Sets the ordering of the result of this Criteria.
+ *
+ * Keys are field and values are the order, being either ASC or DESC.
+ *
+ * @see Criteria::ASC
+ * @see Criteria::DESC
+ *
+ * @param string[] $orderings
+ *
+ * @return Criteria
+ */
+ public function orderBy(array $orderings)
+ {
+ $this->orderings = array_map(
+ function ($ordering) {
+ return strtoupper($ordering) === Criteria::ASC ? Criteria::ASC : Criteria::DESC;
+ },
+ $orderings
+ );
+
+ return $this;
+ }
+
+ /**
+ * Gets the current first result option of this Criteria.
+ *
+ * @return int|null
+ */
+ public function getFirstResult()
+ {
+ return $this->firstResult;
+ }
+
+ /**
+ * Set the number of first result that this Criteria should return.
+ *
+ * @param int|null $firstResult The value to set.
+ *
+ * @return Criteria
+ */
+ public function setFirstResult($firstResult)
+ {
+ $this->firstResult = null === $firstResult ? null : (int) $firstResult;
+
+ return $this;
+ }
+
+ /**
+ * Gets maxResults.
+ *
+ * @return int|null
+ */
+ public function getMaxResults()
+ {
+ return $this->maxResults;
+ }
+
+ /**
+ * Sets maxResults.
+ *
+ * @param int|null $maxResults The value to set.
+ *
+ * @return Criteria
+ */
+ public function setMaxResults($maxResults)
+ {
+ $this->maxResults = null === $maxResults ? null : (int) $maxResults;
+
+ return $this;
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php
new file mode 100644
index 0000000..994085f
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ClosureExpressionVisitor.php
@@ -0,0 +1,227 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+/**
+ * Walks an expression graph and turns it into a PHP closure.
+ *
+ * This closure can be used with {@Collection#filter()} and is used internally
+ * by {@ArrayCollection#select()}.
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+class ClosureExpressionVisitor extends ExpressionVisitor
+{
+ /**
+ * Accesses the field of a given object. This field has to be public
+ * directly or indirectly (through an accessor get*, is*, or a magic
+ * method, __get, __call).
+ *
+ * @param object $object
+ * @param string $field
+ *
+ * @return mixed
+ */
+ public static function getObjectFieldValue($object, $field)
+ {
+ if (is_array($object)) {
+ return $object[$field];
+ }
+
+ $accessors = array('get', 'is');
+
+ foreach ($accessors as $accessor) {
+ $accessor .= $field;
+
+ if ( ! method_exists($object, $accessor)) {
+ continue;
+ }
+
+ return $object->$accessor();
+ }
+
+ // __call should be triggered for get.
+ $accessor = $accessors[0] . $field;
+
+ if (method_exists($object, '__call')) {
+ return $object->$accessor();
+ }
+
+ if ($object instanceof \ArrayAccess) {
+ return $object[$field];
+ }
+
+ return $object->$field;
+ }
+
+ /**
+ * Helper for sorting arrays of objects based on multiple fields + orientations.
+ *
+ * @param string $name
+ * @param int $orientation
+ * @param \Closure $next
+ *
+ * @return \Closure
+ */
+ public static function sortByField($name, $orientation = 1, \Closure $next = null)
+ {
+ if ( ! $next) {
+ $next = function() {
+ return 0;
+ };
+ }
+
+ return function ($a, $b) use ($name, $next, $orientation) {
+ $aValue = ClosureExpressionVisitor::getObjectFieldValue($a, $name);
+ $bValue = ClosureExpressionVisitor::getObjectFieldValue($b, $name);
+
+ if ($aValue === $bValue) {
+ return $next($a, $b);
+ }
+
+ return (($aValue > $bValue) ? 1 : -1) * $orientation;
+ };
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function walkComparison(Comparison $comparison)
+ {
+ $field = $comparison->getField();
+ $value = $comparison->getValue()->getValue(); // shortcut for walkValue()
+
+ switch ($comparison->getOperator()) {
+ case Comparison::EQ:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) === $value;
+ };
+
+ case Comparison::NEQ:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) !== $value;
+ };
+
+ case Comparison::LT:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) < $value;
+ };
+
+ case Comparison::LTE:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) <= $value;
+ };
+
+ case Comparison::GT:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) > $value;
+ };
+
+ case Comparison::GTE:
+ return function ($object) use ($field, $value) {
+ return ClosureExpressionVisitor::getObjectFieldValue($object, $field) >= $value;
+ };
+
+ case Comparison::IN:
+ return function ($object) use ($field, $value) {
+ return in_array(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
+ };
+
+ case Comparison::NIN:
+ return function ($object) use ($field, $value) {
+ return ! in_array(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
+ };
+
+ case Comparison::CONTAINS:
+ return function ($object) use ($field, $value) {
+ return false !== strpos(ClosureExpressionVisitor::getObjectFieldValue($object, $field), $value);
+ };
+
+ default:
+ throw new \RuntimeException("Unknown comparison operator: " . $comparison->getOperator());
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function walkValue(Value $value)
+ {
+ return $value->getValue();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function walkCompositeExpression(CompositeExpression $expr)
+ {
+ $expressionList = array();
+
+ foreach ($expr->getExpressionList() as $child) {
+ $expressionList[] = $this->dispatch($child);
+ }
+
+ switch($expr->getType()) {
+ case CompositeExpression::TYPE_AND:
+ return $this->andExpressions($expressionList);
+
+ case CompositeExpression::TYPE_OR:
+ return $this->orExpressions($expressionList);
+
+ default:
+ throw new \RuntimeException("Unknown composite " . $expr->getType());
+ }
+ }
+
+ /**
+ * @param array $expressions
+ *
+ * @return callable
+ */
+ private function andExpressions($expressions)
+ {
+ return function ($object) use ($expressions) {
+ foreach ($expressions as $expression) {
+ if ( ! $expression($object)) {
+ return false;
+ }
+ }
+ return true;
+ };
+ }
+
+ /**
+ * @param array $expressions
+ *
+ * @return callable
+ */
+ private function orExpressions($expressions)
+ {
+ return function ($object) use ($expressions) {
+ foreach ($expressions as $expression) {
+ if ($expression($object)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php
new file mode 100644
index 0000000..d54ecf2
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Comparison.php
@@ -0,0 +1,103 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+/**
+ * Comparison of a field with a value by the given operator.
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+class Comparison implements Expression
+{
+ const EQ = '=';
+ const NEQ = '<>';
+ const LT = '<';
+ const LTE = '<=';
+ const GT = '>';
+ const GTE = '>=';
+ const IS = '='; // no difference with EQ
+ const IN = 'IN';
+ const NIN = 'NIN';
+ const CONTAINS = 'CONTAINS';
+
+ /**
+ * @var string
+ */
+ private $field;
+
+ /**
+ * @var string
+ */
+ private $op;
+
+ /**
+ * @var Value
+ */
+ private $value;
+
+ /**
+ * @param string $field
+ * @param string $operator
+ * @param mixed $value
+ */
+ public function __construct($field, $operator, $value)
+ {
+ if ( ! ($value instanceof Value)) {
+ $value = new Value($value);
+ }
+
+ $this->field = $field;
+ $this->op = $operator;
+ $this->value = $value;
+ }
+
+ /**
+ * @return string
+ */
+ public function getField()
+ {
+ return $this->field;
+ }
+
+ /**
+ * @return Value
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * @return string
+ */
+ public function getOperator()
+ {
+ return $this->op;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function visit(ExpressionVisitor $visitor)
+ {
+ return $visitor->walkComparison($this);
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php
new file mode 100644
index 0000000..3613c02
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/CompositeExpression.php
@@ -0,0 +1,90 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+/**
+ * Expression of Expressions combined by AND or OR operation.
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+class CompositeExpression implements Expression
+{
+ const TYPE_AND = 'AND';
+ const TYPE_OR = 'OR';
+
+ /**
+ * @var string
+ */
+ private $type;
+
+ /**
+ * @var Expression[]
+ */
+ private $expressions = array();
+
+ /**
+ * @param string $type
+ * @param array $expressions
+ *
+ * @throws \RuntimeException
+ */
+ public function __construct($type, array $expressions)
+ {
+ $this->type = $type;
+
+ foreach ($expressions as $expr) {
+ if ($expr instanceof Value) {
+ throw new \RuntimeException("Values are not supported expressions as children of and/or expressions.");
+ }
+ if ( ! ($expr instanceof Expression)) {
+ throw new \RuntimeException("No expression given to CompositeExpression.");
+ }
+
+ $this->expressions[] = $expr;
+ }
+ }
+
+ /**
+ * Returns the list of expressions nested in this composite.
+ *
+ * @return Expression[]
+ */
+ public function getExpressionList()
+ {
+ return $this->expressions;
+ }
+
+ /**
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function visit(ExpressionVisitor $visitor)
+ {
+ return $visitor->walkCompositeExpression($this);
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php
new file mode 100644
index 0000000..68db767
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Expression.php
@@ -0,0 +1,35 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+/**
+ * Expression for the {@link Selectable} interface.
+ *
+ * @author Benjamin Eberlei
+ */
+interface Expression
+{
+ /**
+ * @param ExpressionVisitor $visitor
+ *
+ * @return mixed
+ */
+ public function visit(ExpressionVisitor $visitor);
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php
new file mode 100644
index 0000000..080afdc
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/ExpressionVisitor.php
@@ -0,0 +1,82 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+/**
+ * An Expression visitor walks a graph of expressions and turns them into a
+ * query for the underlying implementation.
+ *
+ * @author Benjamin Eberlei
+ */
+abstract class ExpressionVisitor
+{
+ /**
+ * Converts a comparison expression into the target query language output.
+ *
+ * @param Comparison $comparison
+ *
+ * @return mixed
+ */
+ abstract public function walkComparison(Comparison $comparison);
+
+ /**
+ * Converts a value expression into the target query language part.
+ *
+ * @param Value $value
+ *
+ * @return mixed
+ */
+ abstract public function walkValue(Value $value);
+
+ /**
+ * Converts a composite expression into the target query language output.
+ *
+ * @param CompositeExpression $expr
+ *
+ * @return mixed
+ */
+ abstract public function walkCompositeExpression(CompositeExpression $expr);
+
+ /**
+ * Dispatches walking an expression to the appropriate handler.
+ *
+ * @param Expression $expr
+ *
+ * @return mixed
+ *
+ * @throws \RuntimeException
+ */
+ public function dispatch(Expression $expr)
+ {
+ switch (true) {
+ case ($expr instanceof Comparison):
+ return $this->walkComparison($expr);
+
+ case ($expr instanceof Value):
+ return $this->walkValue($expr);
+
+ case ($expr instanceof CompositeExpression):
+ return $this->walkCompositeExpression($expr);
+
+ default:
+ throw new \RuntimeException("Unknown Expression " . get_class($expr));
+ }
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php
new file mode 100644
index 0000000..7f6e831
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Expr/Value.php
@@ -0,0 +1,52 @@
+.
+ */
+
+namespace Doctrine\Common\Collections\Expr;
+
+class Value implements Expression
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**
+ * @param mixed $value
+ */
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * @return mixed
+ */
+ public function getValue()
+ {
+ return $this->value;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function visit(ExpressionVisitor $visitor)
+ {
+ return $visitor->walkValue($this);
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php
new file mode 100644
index 0000000..6539e3c
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/ExpressionBuilder.php
@@ -0,0 +1,166 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+use Doctrine\Common\Collections\Expr\Comparison;
+use Doctrine\Common\Collections\Expr\CompositeExpression;
+use Doctrine\Common\Collections\Expr\Value;
+
+/**
+ * Builder for Expressions in the {@link Selectable} interface.
+ *
+ * Important Notice for interoperable code: You have to use scalar
+ * values only for comparisons, otherwise the behavior of the comparision
+ * may be different between implementations (Array vs ORM vs ODM).
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+class ExpressionBuilder
+{
+ /**
+ * @param mixed $x
+ *
+ * @return CompositeExpression
+ */
+ public function andX($x = null)
+ {
+ return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args());
+ }
+
+ /**
+ * @param mixed $x
+ *
+ * @return CompositeExpression
+ */
+ public function orX($x = null)
+ {
+ return new CompositeExpression(CompositeExpression::TYPE_OR, func_get_args());
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function eq($field, $value)
+ {
+ return new Comparison($field, Comparison::EQ, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function gt($field, $value)
+ {
+ return new Comparison($field, Comparison::GT, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function lt($field, $value)
+ {
+ return new Comparison($field, Comparison::LT, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function gte($field, $value)
+ {
+ return new Comparison($field, Comparison::GTE, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function lte($field, $value)
+ {
+ return new Comparison($field, Comparison::LTE, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function neq($field, $value)
+ {
+ return new Comparison($field, Comparison::NEQ, new Value($value));
+ }
+
+ /**
+ * @param string $field
+ *
+ * @return Comparison
+ */
+ public function isNull($field)
+ {
+ return new Comparison($field, Comparison::EQ, new Value(null));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $values
+ *
+ * @return Comparison
+ */
+ public function in($field, array $values)
+ {
+ return new Comparison($field, Comparison::IN, new Value($values));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $values
+ *
+ * @return Comparison
+ */
+ public function notIn($field, array $values)
+ {
+ return new Comparison($field, Comparison::NIN, new Value($values));
+ }
+
+ /**
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return Comparison
+ */
+ public function contains($field, $value)
+ {
+ return new Comparison($field, Comparison::CONTAINS, new Value($value));
+ }
+}
diff --git a/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php
new file mode 100644
index 0000000..57660ed
--- /dev/null
+++ b/vendor/doctrine/collections/lib/Doctrine/Common/Collections/Selectable.php
@@ -0,0 +1,48 @@
+.
+ */
+
+namespace Doctrine\Common\Collections;
+
+/**
+ * Interface for collections that allow efficient filtering with an expression API.
+ *
+ * Goal of this interface is a backend independent method to fetch elements
+ * from a collections. {@link Expression} is crafted in a way that you can
+ * implement queries from both in-memory and database-backed collections.
+ *
+ * For database backed collections this allows very efficient access by
+ * utilizing the query APIs, for example SQL in the ORM. Applications using
+ * this API can implement efficient database access without having to ask the
+ * EntityManager or Repositories.
+ *
+ * @author Benjamin Eberlei
+ * @since 2.3
+ */
+interface Selectable
+{
+ /**
+ * Selects all elements from a selectable that match the expression and
+ * returns a new collection containing these elements.
+ *
+ * @param Criteria $criteria
+ *
+ * @return Collection
+ */
+ public function matching(Criteria $criteria);
+}
diff --git a/vendor/doctrine/collections/phpunit.xml.dist b/vendor/doctrine/collections/phpunit.xml.dist
new file mode 100644
index 0000000..36968e9
--- /dev/null
+++ b/vendor/doctrine/collections/phpunit.xml.dist
@@ -0,0 +1,31 @@
+
+
+
+
+
+ ./tests/Doctrine/
+
+
+
+
+
+ ./lib/Doctrine/
+
+
+
+
+
+ performance
+
+
+
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/AbstractLazyCollectionTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/AbstractLazyCollectionTest.php
new file mode 100644
index 0000000..4de82cc
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/AbstractLazyCollectionTest.php
@@ -0,0 +1,20 @@
+assertFalse($collection->isInitialized());
+ $this->assertCount(3, $collection);
+
+ $collection->add('bar');
+ $this->assertTrue($collection->isInitialized());
+ $this->assertCount(4, $collection);
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ArrayCollectionTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ArrayCollectionTest.php
new file mode 100644
index 0000000..1b8a906
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ArrayCollectionTest.php
@@ -0,0 +1,296 @@
+.
+ */
+
+namespace Doctrine\Tests\Common\Collections;
+
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Criteria;
+
+/**
+ * Tests for {@see \Doctrine\Common\Collections\ArrayCollection}
+ *
+ * @covers \Doctrine\Common\Collections\ArrayCollection
+ */
+class ArrayCollectionTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testToArray($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame($elements, $collection->toArray());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testFirst($elements)
+ {
+ $collection = new ArrayCollection($elements);
+ $this->assertSame(reset($elements), $collection->first());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testLast($elements)
+ {
+ $collection = new ArrayCollection($elements);
+ $this->assertSame(end($elements), $collection->last());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testKey($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(key($elements), $collection->key());
+
+ next($elements);
+ $collection->next();
+
+ $this->assertSame(key($elements), $collection->key());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testNext($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ while (true) {
+ $collectionNext = $collection->next();
+ $arrayNext = next($elements);
+
+ if(!$collectionNext || !$arrayNext) {
+ break;
+ }
+
+ $this->assertSame($arrayNext, $collectionNext, "Returned value of ArrayCollection::next() and next() not match");
+ $this->assertSame(key($elements), $collection->key(), "Keys not match");
+ $this->assertSame(current($elements), $collection->current(), "Current values not match");
+ }
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testCurrent($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(current($elements), $collection->current());
+
+ next($elements);
+ $collection->next();
+
+ $this->assertSame(current($elements), $collection->current());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testGetKeys($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(array_keys($elements), $collection->getKeys());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testGetValues($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(array_values($elements), $collection->getValues());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testCount($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(count($elements), $collection->count());
+ }
+
+ /**
+ * @dataProvider provideDifferentElements
+ */
+ public function testIterator($elements)
+ {
+ $collection = new ArrayCollection($elements);
+
+ $iterations = 0;
+ foreach($collection->getIterator() as $key => $item) {
+ $this->assertSame($elements[$key], $item, "Item {$key} not match");
+ $iterations++;
+ }
+
+ $this->assertEquals(count($elements), $iterations, "Number of iterations not match");
+ }
+
+ /**
+ * @return array
+ */
+ public function provideDifferentElements()
+ {
+ return array(
+ 'indexed' => array(array(1, 2, 3, 4, 5)),
+ 'associative' => array(array('A' => 'a', 'B' => 'b', 'C' => 'c')),
+ 'mixed' => array(array('A' => 'a', 1, 'B' => 'b', 2, 3)),
+ );
+ }
+
+ public function testRemove()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'B' => 'b', 3);
+ $collection = new ArrayCollection($elements);
+
+ $this->assertEquals(1, $collection->remove(0));
+ unset($elements[0]);
+
+ $this->assertEquals(null, $collection->remove('non-existent'));
+ unset($elements['non-existent']);
+
+ $this->assertEquals(2, $collection->remove(1));
+ unset($elements[1]);
+
+ $this->assertEquals('a', $collection->remove('A'));
+ unset($elements['A']);
+
+ $this->assertEquals($elements, $collection->toArray());
+ }
+
+ public function testRemoveElement()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'B' => 'b', 3, 'A2' => 'a', 'B2' => 'b');
+ $collection = new ArrayCollection($elements);
+
+ $this->assertTrue($collection->removeElement(1));
+ unset($elements[0]);
+
+ $this->assertFalse($collection->removeElement('non-existent'));
+
+ $this->assertTrue($collection->removeElement('a'));
+ unset($elements['A']);
+
+ $this->assertTrue($collection->removeElement('a'));
+ unset($elements['A2']);
+
+ $this->assertEquals($elements, $collection->toArray());
+ }
+
+ public function testContainsKey()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'null' => null, 3, 'A2' => 'a', 'B2' => 'b');
+ $collection = new ArrayCollection($elements);
+
+ $this->assertTrue($collection->containsKey(0), "Contains index 0");
+ $this->assertTrue($collection->containsKey('A'), "Contains key \"A\"");
+ $this->assertTrue($collection->containsKey('null'), "Contains key \"null\", with value null");
+ $this->assertFalse($collection->containsKey('non-existent'), "Doesn't contain key");
+ }
+
+ public function testEmpty()
+ {
+ $collection = new ArrayCollection();
+ $this->assertTrue($collection->isEmpty(), "Empty collection");
+
+ $collection->add(1);
+ $this->assertFalse($collection->isEmpty(), "Not empty collection");
+ }
+
+ public function testContains()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'null' => null, 3, 'A2' => 'a', 'zero' => 0);
+ $collection = new ArrayCollection($elements);
+
+ $this->assertTrue($collection->contains(0), "Contains Zero");
+ $this->assertTrue($collection->contains('a'), "Contains \"a\"");
+ $this->assertTrue($collection->contains(null), "Contains Null");
+ $this->assertFalse($collection->contains('non-existent'), "Doesn't contain an element");
+ }
+
+ public function testExists()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'null' => null, 3, 'A2' => 'a', 'zero' => 0);
+ $collection = new ArrayCollection($elements);
+
+ $this->assertTrue($collection->exists(function($key, $element) {
+ return $key == 'A' && $element == 'a';
+ }), "Element exists");
+
+ $this->assertFalse($collection->exists(function($key, $element) {
+ return $key == 'non-existent' && $element == 'non-existent';
+ }), "Element not exists");
+ }
+
+ public function testIndexOf()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'null' => null, 3, 'A2' => 'a', 'zero' => 0);
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(array_search(2, $elements, true), $collection->indexOf(2), 'Index of 2');
+ $this->assertSame(array_search(null, $elements, true), $collection->indexOf(null), 'Index of null');
+ $this->assertSame(array_search('non-existent', $elements, true), $collection->indexOf('non-existent'), 'Index of non existent');
+ }
+
+ public function testGet()
+ {
+ $elements = array(1, 'A' => 'a', 2, 'null' => null, 3, 'A2' => 'a', 'zero' => 0);
+ $collection = new ArrayCollection($elements);
+
+ $this->assertSame(2, $collection->get(1), 'Get element by index');
+ $this->assertSame('a', $collection->get('A'), 'Get element by name');
+ $this->assertSame(null, $collection->get('non-existent'), 'Get non existent element');
+ }
+
+ public function testMatchingWithSortingPreservesyKeys()
+ {
+ $object1 = new \stdClass();
+ $object2 = new \stdClass();
+
+ $object1->sortField = 2;
+ $object2->sortField = 1;
+
+ $collection = new ArrayCollection(array(
+ 'object1' => $object1,
+ 'object2' => $object2,
+ ));
+
+ $this->assertSame(
+ array(
+ 'object2' => $object2,
+ 'object1' => $object1,
+ ),
+ $collection
+ ->matching(new Criteria(null, array('sortField' => Criteria::ASC)))
+ ->toArray()
+ );
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ClosureExpressionVisitorTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ClosureExpressionVisitorTest.php
new file mode 100644
index 0000000..21c2e3d
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ClosureExpressionVisitorTest.php
@@ -0,0 +1,250 @@
+.
+ */
+
+namespace Doctrine\Tests\Common\Collections;
+
+use Doctrine\Common\Collections\Expr\ClosureExpressionVisitor;
+use Doctrine\Common\Collections\ExpressionBuilder;
+
+/**
+ * @group DDC-1637
+ */
+class ClosureExpressionVisitorTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @var ClosureExpressionVisitor
+ */
+ private $visitor;
+
+ /**
+ * @var ExpressionBuilder
+ */
+ private $builder;
+
+ protected function setUp()
+ {
+ $this->visitor = new ClosureExpressionVisitor();
+ $this->builder = new ExpressionBuilder();
+ }
+
+ public function testGetObjectFieldValueIsAccessor()
+ {
+ $object = new TestObject(1, 2, true);
+
+ $this->assertTrue($this->visitor->getObjectFieldValue($object, 'baz'));
+ }
+
+ public function testGetObjectFieldValueMagicCallMethod()
+ {
+ $object = new TestObject(1, 2, true, 3);
+
+ $this->assertEquals(3, $this->visitor->getObjectFieldValue($object, 'qux'));
+ }
+
+ public function testWalkEqualsComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->eq("foo", 1));
+
+ $this->assertTrue($closure(new TestObject(1)));
+ $this->assertFalse($closure(new TestObject(2)));
+ }
+
+ public function testWalkNotEqualsComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->neq("foo", 1));
+
+ $this->assertFalse($closure(new TestObject(1)));
+ $this->assertTrue($closure(new TestObject(2)));
+ }
+
+ public function testWalkLessThanComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->lt("foo", 1));
+
+ $this->assertFalse($closure(new TestObject(1)));
+ $this->assertTrue($closure(new TestObject(0)));
+ }
+
+ public function testWalkLessThanEqualsComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->lte("foo", 1));
+
+ $this->assertFalse($closure(new TestObject(2)));
+ $this->assertTrue($closure(new TestObject(1)));
+ $this->assertTrue($closure(new TestObject(0)));
+ }
+
+ public function testWalkGreaterThanEqualsComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->gte("foo", 1));
+
+ $this->assertTrue($closure(new TestObject(2)));
+ $this->assertTrue($closure(new TestObject(1)));
+ $this->assertFalse($closure(new TestObject(0)));
+ }
+
+ public function testWalkGreaterThanComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->gt("foo", 1));
+
+ $this->assertTrue($closure(new TestObject(2)));
+ $this->assertFalse($closure(new TestObject(1)));
+ $this->assertFalse($closure(new TestObject(0)));
+ }
+
+ public function testWalkInComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->in("foo", array(1, 2, 3)));
+
+ $this->assertTrue($closure(new TestObject(2)));
+ $this->assertTrue($closure(new TestObject(1)));
+ $this->assertFalse($closure(new TestObject(0)));
+ }
+
+ public function testWalkNotInComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->notIn("foo", array(1, 2, 3)));
+
+ $this->assertFalse($closure(new TestObject(1)));
+ $this->assertFalse($closure(new TestObject(2)));
+ $this->assertTrue($closure(new TestObject(0)));
+ $this->assertTrue($closure(new TestObject(4)));
+ }
+
+ public function testWalkContainsComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->contains('foo', 'hello'));
+
+ $this->assertTrue($closure(new TestObject('hello world')));
+ $this->assertFalse($closure(new TestObject('world')));
+ }
+
+ public function testWalkAndCompositeExpression()
+ {
+ $closure = $this->visitor->walkCompositeExpression(
+ $this->builder->andX(
+ $this->builder->eq("foo", 1),
+ $this->builder->eq("bar", 1)
+ )
+ );
+
+ $this->assertTrue($closure(new TestObject(1, 1)));
+ $this->assertFalse($closure(new TestObject(1, 0)));
+ $this->assertFalse($closure(new TestObject(0, 1)));
+ $this->assertFalse($closure(new TestObject(0, 0)));
+ }
+
+ public function testWalkOrCompositeExpression()
+ {
+ $closure = $this->visitor->walkCompositeExpression(
+ $this->builder->orX(
+ $this->builder->eq("foo", 1),
+ $this->builder->eq("bar", 1)
+ )
+ );
+
+ $this->assertTrue($closure(new TestObject(1, 1)));
+ $this->assertTrue($closure(new TestObject(1, 0)));
+ $this->assertTrue($closure(new TestObject(0, 1)));
+ $this->assertFalse($closure(new TestObject(0, 0)));
+ }
+
+ public function testSortByFieldAscending()
+ {
+ $objects = array(new TestObject("b"), new TestObject("a"), new TestObject("c"));
+ $sort = ClosureExpressionVisitor::sortByField("foo");
+
+ usort($objects, $sort);
+
+ $this->assertEquals("a", $objects[0]->getFoo());
+ $this->assertEquals("b", $objects[1]->getFoo());
+ $this->assertEquals("c", $objects[2]->getFoo());
+ }
+
+ public function testSortByFieldDescending()
+ {
+ $objects = array(new TestObject("b"), new TestObject("a"), new TestObject("c"));
+ $sort = ClosureExpressionVisitor::sortByField("foo", -1);
+
+ usort($objects, $sort);
+
+ $this->assertEquals("c", $objects[0]->getFoo());
+ $this->assertEquals("b", $objects[1]->getFoo());
+ $this->assertEquals("a", $objects[2]->getFoo());
+ }
+
+ public function testSortDelegate()
+ {
+ $objects = array(new TestObject("a", "c"), new TestObject("a", "b"), new TestObject("a", "a"));
+ $sort = ClosureExpressionVisitor::sortByField("bar", 1);
+ $sort = ClosureExpressionVisitor::sortByField("foo", 1, $sort);
+
+ usort($objects, $sort);
+
+ $this->assertEquals("a", $objects[0]->getBar());
+ $this->assertEquals("b", $objects[1]->getBar());
+ $this->assertEquals("c", $objects[2]->getBar());
+ }
+
+ public function testArrayComparison()
+ {
+ $closure = $this->visitor->walkComparison($this->builder->eq("foo", 42));
+
+ $this->assertTrue($closure(array('foo' => 42)));
+ }
+}
+
+class TestObject
+{
+ private $foo;
+ private $bar;
+ private $baz;
+ private $qux;
+
+ public function __construct($foo = null, $bar = null, $baz = null, $qux = null)
+ {
+ $this->foo = $foo;
+ $this->bar = $bar;
+ $this->baz = $baz;
+ $this->qux = $qux;
+ }
+
+ public function __call($name, $arguments)
+ {
+ if ('getqux' === $name) {
+ return $this->qux;
+ }
+ }
+
+ public function getFoo()
+ {
+ return $this->foo;
+ }
+
+ public function getBar()
+ {
+ return $this->bar;
+ }
+
+ public function isBaz()
+ {
+ return $this->baz;
+ }
+}
+
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CollectionTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CollectionTest.php
new file mode 100644
index 0000000..f3f91ad
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CollectionTest.php
@@ -0,0 +1,265 @@
+collection = new ArrayCollection();
+ }
+
+ public function testIssetAndUnset()
+ {
+ $this->assertFalse(isset($this->collection[0]));
+ $this->collection->add('testing');
+ $this->assertTrue(isset($this->collection[0]));
+ unset($this->collection[0]);
+ $this->assertFalse(isset($this->collection[0]));
+ }
+
+ public function testToString()
+ {
+ $this->collection->add('testing');
+ $this->assertTrue(is_string((string) $this->collection));
+ }
+
+ public function testRemovingNonExistentEntryReturnsNull()
+ {
+ $this->assertEquals(null, $this->collection->remove('testing_does_not_exist'));
+ }
+
+ public function testExists()
+ {
+ $this->collection->add("one");
+ $this->collection->add("two");
+ $exists = $this->collection->exists(function($k, $e) { return $e == "one"; });
+ $this->assertTrue($exists);
+ $exists = $this->collection->exists(function($k, $e) { return $e == "other"; });
+ $this->assertFalse($exists);
+ }
+
+ public function testMap()
+ {
+ $this->collection->add(1);
+ $this->collection->add(2);
+ $res = $this->collection->map(function($e) { return $e * 2; });
+ $this->assertEquals(array(2, 4), $res->toArray());
+ }
+
+ public function testFilter()
+ {
+ $this->collection->add(1);
+ $this->collection->add("foo");
+ $this->collection->add(3);
+ $res = $this->collection->filter(function($e) { return is_numeric($e); });
+ $this->assertEquals(array(0 => 1, 2 => 3), $res->toArray());
+ }
+
+ public function testFirstAndLast()
+ {
+ $this->collection->add('one');
+ $this->collection->add('two');
+
+ $this->assertEquals($this->collection->first(), 'one');
+ $this->assertEquals($this->collection->last(), 'two');
+ }
+
+ public function testArrayAccess()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+
+ $this->assertEquals($this->collection[0], 'one');
+ $this->assertEquals($this->collection[1], 'two');
+
+ unset($this->collection[0]);
+ $this->assertEquals($this->collection->count(), 1);
+ }
+
+ public function testContainsKey()
+ {
+ $this->collection[5] = 'five';
+ $this->assertTrue($this->collection->containsKey(5));
+ }
+
+ public function testContains()
+ {
+ $this->collection[0] = 'test';
+ $this->assertTrue($this->collection->contains('test'));
+ }
+
+ public function testSearch()
+ {
+ $this->collection[0] = 'test';
+ $this->assertEquals(0, $this->collection->indexOf('test'));
+ }
+
+ public function testGet()
+ {
+ $this->collection[0] = 'test';
+ $this->assertEquals('test', $this->collection->get(0));
+ }
+
+ public function testGetKeys()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->assertEquals(array(0, 1), $this->collection->getKeys());
+ }
+
+ public function testGetValues()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->assertEquals(array('one', 'two'), $this->collection->getValues());
+ }
+
+ public function testCount()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->assertEquals($this->collection->count(), 2);
+ $this->assertEquals(count($this->collection), 2);
+ }
+
+ public function testForAll()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->assertEquals($this->collection->forAll(function($k, $e) { return is_string($e); }), true);
+ $this->assertEquals($this->collection->forAll(function($k, $e) { return is_array($e); }), false);
+ }
+
+ public function testPartition()
+ {
+ $this->collection[] = true;
+ $this->collection[] = false;
+ $partition = $this->collection->partition(function($k, $e) { return $e == true; });
+ $this->assertEquals($partition[0][0], true);
+ $this->assertEquals($partition[1][0], false);
+ }
+
+ public function testClear()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->collection->clear();
+ $this->assertEquals($this->collection->isEmpty(), true);
+ }
+
+ public function testRemove()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $el = $this->collection->remove(0);
+
+ $this->assertEquals('one', $el);
+ $this->assertEquals($this->collection->contains('one'), false);
+ $this->assertNull($this->collection->remove(0));
+ }
+
+ public function testRemoveElement()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+
+ $this->assertTrue($this->collection->removeElement('two'));
+ $this->assertFalse($this->collection->contains('two'));
+ $this->assertFalse($this->collection->removeElement('two'));
+ }
+
+ public function testSlice()
+ {
+ $this->collection[] = 'one';
+ $this->collection[] = 'two';
+ $this->collection[] = 'three';
+
+ $slice = $this->collection->slice(0, 1);
+ $this->assertInternalType('array', $slice);
+ $this->assertEquals(array('one'), $slice);
+
+ $slice = $this->collection->slice(1);
+ $this->assertEquals(array(1 => 'two', 2 => 'three'), $slice);
+
+ $slice = $this->collection->slice(1, 1);
+ $this->assertEquals(array(1 => 'two'), $slice);
+ }
+
+ public function fillMatchingFixture()
+ {
+ $std1 = new \stdClass();
+ $std1->foo = "bar";
+ $this->collection[] = $std1;
+
+ $std2 = new \stdClass();
+ $std2->foo = "baz";
+ $this->collection[] = $std2;
+ }
+
+ /**
+ * @group DDC-1637
+ */
+ public function testMatching()
+ {
+ $this->fillMatchingFixture();
+
+ $col = $this->collection->matching(new Criteria(Criteria::expr()->eq("foo", "bar")));
+ $this->assertInstanceOf('Doctrine\Common\Collections\Collection', $col);
+ $this->assertNotSame($col, $this->collection);
+ $this->assertEquals(1, count($col));
+ }
+
+ /**
+ * @group DDC-1637
+ */
+ public function testMatchingOrdering()
+ {
+ $this->fillMatchingFixture();
+
+ $col = $this->collection->matching(new Criteria(null, array('foo' => 'DESC')));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Collection', $col);
+ $this->assertNotSame($col, $this->collection);
+ $this->assertEquals(2, count($col));
+ $this->assertEquals('baz', $col->first()->foo);
+ $this->assertEquals('bar', $col->last()->foo);
+ }
+
+ /**
+ * @group DDC-1637
+ */
+ public function testMatchingSlice()
+ {
+ $this->fillMatchingFixture();
+
+ $col = $this->collection->matching(new Criteria(null, null, 1, 1));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Collection', $col);
+ $this->assertNotSame($col, $this->collection);
+ $this->assertEquals(1, count($col));
+ $this->assertEquals('baz', $col[0]->foo);
+ }
+
+ public function testCanRemoveNullValuesByKey()
+ {
+ $this->collection->add(null);
+ $this->collection->remove(0);
+ $this->assertTrue($this->collection->isEmpty());
+ }
+
+ public function testCanVerifyExistingKeysWithNullValues()
+ {
+ $this->collection->set('key', null);
+ $this->assertTrue($this->collection->containsKey('key'));
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CriteriaTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CriteriaTest.php
new file mode 100644
index 0000000..1ab058a
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/CriteriaTest.php
@@ -0,0 +1,83 @@
+assertInstanceOf('Doctrine\Common\Collections\Criteria', $criteria);
+ }
+
+ public function testConstructor()
+ {
+ $expr = new Comparison("field", "=", "value");
+ $criteria = new Criteria($expr, array("foo" => "ASC"), 10, 20);
+
+ $this->assertSame($expr, $criteria->getWhereExpression());
+ $this->assertEquals(array("foo" => "ASC"), $criteria->getOrderings());
+ $this->assertEquals(10, $criteria->getFirstResult());
+ $this->assertEquals(20, $criteria->getMaxResults());
+ }
+
+ public function testWhere()
+ {
+ $expr = new Comparison("field", "=", "value");
+ $criteria = new Criteria();
+
+ $criteria->where($expr);
+
+ $this->assertSame($expr, $criteria->getWhereExpression());
+ }
+
+ public function testAndWhere()
+ {
+ $expr = new Comparison("field", "=", "value");
+ $criteria = new Criteria();
+
+ $criteria->where($expr);
+ $expr = $criteria->getWhereExpression();
+ $criteria->andWhere($expr);
+
+ $where = $criteria->getWhereExpression();
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\CompositeExpression', $where);
+
+ $this->assertEquals(CompositeExpression::TYPE_AND, $where->getType());
+ $this->assertSame(array($expr, $expr), $where->getExpressionList());
+ }
+
+ public function testOrWhere()
+ {
+ $expr = new Comparison("field", "=", "value");
+ $criteria = new Criteria();
+
+ $criteria->where($expr);
+ $expr = $criteria->getWhereExpression();
+ $criteria->orWhere($expr);
+
+ $where = $criteria->getWhereExpression();
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\CompositeExpression', $where);
+
+ $this->assertEquals(CompositeExpression::TYPE_OR, $where->getType());
+ $this->assertSame(array($expr, $expr), $where->getExpressionList());
+ }
+
+ public function testOrderings()
+ {
+ $criteria = Criteria::create()
+ ->orderBy(array("foo" => "ASC"));
+
+ $this->assertEquals(array("foo" => "ASC"), $criteria->getOrderings());
+ }
+
+ public function testExpr()
+ {
+ $this->assertInstanceOf('Doctrine\Common\Collections\ExpressionBuilder', Criteria::expr());
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ExpressionBuilderTest.php b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ExpressionBuilderTest.php
new file mode 100644
index 0000000..5f6b4ce
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/Common/Collections/ExpressionBuilderTest.php
@@ -0,0 +1,125 @@
+builder = new ExpressionBuilder();
+ }
+
+ public function testAndX()
+ {
+ $expr = $this->builder->andX($this->builder->eq("a", "b"));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\CompositeExpression', $expr);
+ $this->assertEquals(CompositeExpression::TYPE_AND, $expr->getType());
+ }
+
+ public function testOrX()
+ {
+ $expr = $this->builder->orX($this->builder->eq("a", "b"));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\CompositeExpression', $expr);
+ $this->assertEquals(CompositeExpression::TYPE_OR, $expr->getType());
+ }
+
+ public function testInvalidAndXArgument()
+ {
+ $this->setExpectedException("RuntimeException");
+ $this->builder->andX("foo");
+ }
+
+ public function testEq()
+ {
+ $expr = $this->builder->eq("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::EQ, $expr->getOperator());
+ }
+
+ public function testNeq()
+ {
+ $expr = $this->builder->neq("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::NEQ, $expr->getOperator());
+ }
+
+ public function testLt()
+ {
+ $expr = $this->builder->lt("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::LT, $expr->getOperator());
+ }
+
+ public function testGt()
+ {
+ $expr = $this->builder->gt("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::GT, $expr->getOperator());
+ }
+
+ public function testGte()
+ {
+ $expr = $this->builder->gte("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::GTE, $expr->getOperator());
+ }
+
+ public function testLte()
+ {
+ $expr = $this->builder->lte("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::LTE, $expr->getOperator());
+ }
+
+ public function testIn()
+ {
+ $expr = $this->builder->in("a", array("b"));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::IN, $expr->getOperator());
+ }
+
+ public function testNotIn()
+ {
+ $expr = $this->builder->notIn("a", array("b"));
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::NIN, $expr->getOperator());
+ }
+
+ public function testIsNull()
+ {
+ $expr = $this->builder->isNull("a");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::EQ, $expr->getOperator());
+ }
+
+ public function testContains()
+ {
+ $expr = $this->builder->contains("a", "b");
+
+ $this->assertInstanceOf('Doctrine\Common\Collections\Expr\Comparison', $expr);
+ $this->assertEquals(Comparison::CONTAINS, $expr->getOperator());
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/LazyArrayCollection.php b/vendor/doctrine/collections/tests/Doctrine/Tests/LazyArrayCollection.php
new file mode 100644
index 0000000..56736b8
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/LazyArrayCollection.php
@@ -0,0 +1,22 @@
+collection = new ArrayCollection(array('a', 'b', 'c'));
+ }
+}
diff --git a/vendor/doctrine/collections/tests/Doctrine/Tests/TestInit.php b/vendor/doctrine/collections/tests/Doctrine/Tests/TestInit.php
new file mode 100644
index 0000000..973b5fe
--- /dev/null
+++ b/vendor/doctrine/collections/tests/Doctrine/Tests/TestInit.php
@@ -0,0 +1,21 @@
+setDefaultAnnotationNamespace('Doctrine\ORM\Mapping\\');
+ // new code necessary starting here
+ $reader->setIgnoreNotImportedAnnotations(true);
+ $reader->setEnableParsePhpImports(false);
+ $reader = new \Doctrine\Common\Annotations\CachedReader(
+ new \Doctrine\Common\Annotations\IndexedReader($reader), new ArrayCache()
+ );
+
+## Annotation Base class or @Annotation
+
+Beginning after 2.1-RC2 you have to either extend ``Doctrine\Common\Annotations\Annotation`` or add @Annotation to your annotations class-level docblock, otherwise the class will simply be ignored.
+
+## Removed methods on AnnotationReader
+
+* AnnotationReader::setAutoloadAnnotations()
+* AnnotationReader::getAutoloadAnnotations()
+* AnnotationReader::isAutoloadAnnotations()
+
+## AnnotationRegistry
+
+Autoloading through the PHP autoloader is removed from the 2.1 AnnotationReader. Instead you have to use the global AnnotationRegistry for loading purposes:
+
+ \Doctrine\Common\Annotations\AnnotationRegistry::registerFile($fileWithAnnotations);
+ \Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespace($namespace, $dirs = null);
+ \Doctrine\Common\Annotations\AnnotationRegistry::registerAutoloadNamespaces($namespaces);
+ \Doctrine\Common\Annotations\AnnotationRegistry::registerLoader($callable);
+
+The $callable for registering a loader accepts a class as first and only parameter and must try to silently autoload it. On success true has to be returned.
+The registerAutoloadNamespace function registers a PSR-0 compatible silent autoloader for all classes with the given namespace in the given directories.
+If null is passed as directory the include path will be used.
+
diff --git a/vendor/doctrine/common/UPGRADE_TO_2_2 b/vendor/doctrine/common/UPGRADE_TO_2_2
new file mode 100644
index 0000000..1d93a13
--- /dev/null
+++ b/vendor/doctrine/common/UPGRADE_TO_2_2
@@ -0,0 +1,61 @@
+This document details all the possible changes that you should investigate when
+updating your project from Doctrine Common 2.1 to 2.2:
+
+## Annotation Changes
+
+- AnnotationReader::setIgnoreNotImportedAnnotations has been removed, you need to
+ add ignore annotation names which are supposed to be ignored via
+ AnnotationReader::addGlobalIgnoredName
+
+- AnnotationReader::setAutoloadAnnotations was deprecated by the AnnotationRegistry
+ in 2.1 and has been removed in 2.2
+
+- AnnotationReader::setEnableParsePhpImports was added to ease transition to the new
+ annotation mechanism in 2.1 and is removed in 2.2
+
+- AnnotationReader::isParsePhpImportsEnabled is removed (see above)
+
+- AnnotationReader::setDefaultAnnotationNamespace was deprecated in favor of explicit
+ configuration in 2.1 and will be removed in 2.2 (for isolated projects where you
+ have full-control over _all_ available annotations, we offer a dedicated reader
+ class ``SimpleAnnotationReader``)
+
+- AnnotationReader::setAnnotationCreationFunction was deprecated in 2.1 and will be
+ removed in 2.2. We only offer two creation mechanisms which cannot be changed
+ anymore to allow the same reader instance to work with all annotations regardless
+ of which library they are coming from.
+
+- AnnotationReader::setAnnotationNamespaceAlias was deprecated in 2.1 and will be
+ removed in 2.2 (see setDefaultAnnotationNamespace)
+
+- If you use a class as annotation which has not the @Annotation marker in it's
+ class block, we will now throw an exception instead of silently ignoring it. You
+ can however still achieve the previous behavior using the @IgnoreAnnotation, or
+ AnnotationReader::addGlobalIgnoredName (the exception message will contain detailed
+ instructions when you run into this problem).
+
+## Cache Changes
+
+- Renamed old AbstractCache to CacheProvider
+
+- Dropped the support to the following functions of all cache providers:
+
+ - CacheProvider::deleteByWildcard
+
+ - CacheProvider::deleteByRegEx
+
+ - CacheProvider::deleteByPrefix
+
+ - CacheProvider::deleteBySuffix
+
+- CacheProvider::deleteAll will not remove ALL entries, it will only mark them as invalid
+
+- CacheProvider::flushAll will remove ALL entries, namespaced or not
+
+- Added support to MemcachedCache
+
+- Added support to WincacheCache
+
+## ClassLoader Changes
+
+- ClassLoader::fileExistsInIncludePath() no longer exists. Use the native stream_resolve_include_path() PHP function
\ No newline at end of file
diff --git a/vendor/doctrine/common/composer.json b/vendor/doctrine/common/composer.json
new file mode 100644
index 0000000..a12495a
--- /dev/null
+++ b/vendor/doctrine/common/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "doctrine/common",
+ "type": "library",
+ "description": "Common Library for Doctrine projects",
+ "keywords": ["collections", "spl", "eventmanager", "annotations", "persistence"],
+ "homepage": "http://www.doctrine-project.org",
+ "license": "MIT",
+ "authors": [
+ {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"},
+ {"name": "Roman Borschel", "email": "roman@code-factory.org"},
+ {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"},
+ {"name": "Jonathan Wage", "email": "jonwage@gmail.com"},
+ {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"}
+ ],
+ "require": {
+ "php": "~5.5|~7.0",
+ "doctrine/inflector": "1.*",
+ "doctrine/cache": "1.*",
+ "doctrine/collections": "1.*",
+ "doctrine/lexer": "1.*",
+ "doctrine/annotations": "1.*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8|~5.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7.x-dev"
+ }
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php b/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php
new file mode 100644
index 0000000..78eeb35
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php
@@ -0,0 +1,280 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * A ClassLoader is an autoloader for class files that can be
+ * installed on the SPL autoload stack. It is a class loader that either loads only classes
+ * of a specific namespace or all namespaces and it is suitable for working together
+ * with other autoloaders in the SPL autoload stack.
+ *
+ * If no include path is configured through the constructor or {@link setIncludePath}, a ClassLoader
+ * relies on the PHP include_path
.
+ *
+ * @author Roman Borschel
+ * @since 2.0
+ *
+ * @deprecated the ClassLoader is deprecated and will be removed in version 3.0 of doctrine/common.
+ */
+class ClassLoader
+{
+ /**
+ * PHP file extension.
+ *
+ * @var string
+ */
+ protected $fileExtension = '.php';
+
+ /**
+ * Current namespace.
+ *
+ * @var string|null
+ */
+ protected $namespace;
+
+ /**
+ * Current include path.
+ *
+ * @var string|null
+ */
+ protected $includePath;
+
+ /**
+ * PHP namespace separator.
+ *
+ * @var string
+ */
+ protected $namespaceSeparator = '\\';
+
+ /**
+ * Creates a new ClassLoader that loads classes of the
+ * specified namespace from the specified include path.
+ *
+ * If no include path is given, the ClassLoader relies on the PHP include_path.
+ * If neither a namespace nor an include path is given, the ClassLoader will
+ * be responsible for loading all classes, thereby relying on the PHP include_path.
+ *
+ * @param string|null $ns The namespace of the classes to load.
+ * @param string|null $includePath The base include path to use.
+ */
+ public function __construct($ns = null, $includePath = null)
+ {
+ $this->namespace = $ns;
+ $this->includePath = $includePath;
+ }
+
+ /**
+ * Sets the namespace separator used by classes in the namespace of this ClassLoader.
+ *
+ * @param string $sep The separator to use.
+ *
+ * @return void
+ */
+ public function setNamespaceSeparator($sep)
+ {
+ $this->namespaceSeparator = $sep;
+ }
+
+ /**
+ * Gets the namespace separator used by classes in the namespace of this ClassLoader.
+ *
+ * @return string
+ */
+ public function getNamespaceSeparator()
+ {
+ return $this->namespaceSeparator;
+ }
+
+ /**
+ * Sets the base include path for all class files in the namespace of this ClassLoader.
+ *
+ * @param string|null $includePath
+ *
+ * @return void
+ */
+ public function setIncludePath($includePath)
+ {
+ $this->includePath = $includePath;
+ }
+
+ /**
+ * Gets the base include path for all class files in the namespace of this ClassLoader.
+ *
+ * @return string|null
+ */
+ public function getIncludePath()
+ {
+ return $this->includePath;
+ }
+
+ /**
+ * Sets the file extension of class files in the namespace of this ClassLoader.
+ *
+ * @param string $fileExtension
+ *
+ * @return void
+ */
+ public function setFileExtension($fileExtension)
+ {
+ $this->fileExtension = $fileExtension;
+ }
+
+ /**
+ * Gets the file extension of class files in the namespace of this ClassLoader.
+ *
+ * @return string
+ */
+ public function getFileExtension()
+ {
+ return $this->fileExtension;
+ }
+
+ /**
+ * Registers this ClassLoader on the SPL autoload stack.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ spl_autoload_register([$this, 'loadClass']);
+ }
+
+ /**
+ * Removes this ClassLoader from the SPL autoload stack.
+ *
+ * @return void
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister([$this, 'loadClass']);
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $className The name of the class to load.
+ *
+ * @return boolean TRUE if the class has been successfully loaded, FALSE otherwise.
+ */
+ public function loadClass($className)
+ {
+ if (self::typeExists($className)) {
+ return true;
+ }
+
+ if (! $this->canLoadClass($className)) {
+ return false;
+ }
+
+ require ($this->includePath !== null ? $this->includePath . DIRECTORY_SEPARATOR : '')
+ . str_replace($this->namespaceSeparator, DIRECTORY_SEPARATOR, $className)
+ . $this->fileExtension;
+
+ return self::typeExists($className);
+ }
+
+ /**
+ * Asks this ClassLoader whether it can potentially load the class (file) with
+ * the given name.
+ *
+ * @param string $className The fully-qualified name of the class.
+ *
+ * @return boolean TRUE if this ClassLoader can load the class, FALSE otherwise.
+ */
+ public function canLoadClass($className)
+ {
+ if ($this->namespace !== null && strpos($className, $this->namespace.$this->namespaceSeparator) !== 0) {
+ return false;
+ }
+
+ $file = str_replace($this->namespaceSeparator, DIRECTORY_SEPARATOR, $className) . $this->fileExtension;
+
+ if ($this->includePath !== null) {
+ return is_file($this->includePath . DIRECTORY_SEPARATOR . $file);
+ }
+
+ return (false !== stream_resolve_include_path($file));
+ }
+
+ /**
+ * Checks whether a class with a given name exists. A class "exists" if it is either
+ * already defined in the current request or if there is an autoloader on the SPL
+ * autoload stack that is a) responsible for the class in question and b) is able to
+ * load a class file in which the class definition resides.
+ *
+ * If the class is not already defined, each autoloader in the SPL autoload stack
+ * is asked whether it is able to tell if the class exists. If the autoloader is
+ * a ClassLoader, {@link canLoadClass} is used, otherwise the autoload
+ * function of the autoloader is invoked and expected to return a value that
+ * evaluates to TRUE if the class (file) exists. As soon as one autoloader reports
+ * that the class exists, TRUE is returned.
+ *
+ * Note that, depending on what kinds of autoloaders are installed on the SPL
+ * autoload stack, the class (file) might already be loaded as a result of checking
+ * for its existence. This is not the case with a ClassLoader, who separates
+ * these responsibilities.
+ *
+ * @param string $className The fully-qualified name of the class.
+ *
+ * @return boolean TRUE if the class exists as per the definition given above, FALSE otherwise.
+ */
+ public static function classExists($className)
+ {
+ return self::typeExists($className, true);
+ }
+
+ /**
+ * Gets the ClassLoader from the SPL autoload stack that is responsible
+ * for (and is able to load) the class with the given name.
+ *
+ * @param string $className The name of the class.
+ *
+ * @return ClassLoader The ClassLoader for the class or NULL if no such ClassLoader exists.
+ */
+ public static function getClassLoader($className)
+ {
+ foreach (spl_autoload_functions() as $loader) {
+ if (is_array($loader)
+ && ($classLoader = reset($loader))
+ && $classLoader instanceof ClassLoader
+ && $classLoader->canLoadClass($className)
+ ) {
+ return $classLoader;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Checks whether a given type exists
+ *
+ * @param string $type
+ * @param bool $autoload
+ *
+ * @return bool
+ */
+ private static function typeExists($type, $autoload = false)
+ {
+ return class_exists($type, $autoload)
+ || interface_exists($type, $autoload)
+ || trait_exists($type, $autoload);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php b/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php
new file mode 100644
index 0000000..2a1a08e
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/CommonException.php
@@ -0,0 +1,29 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * Base exception class for package Doctrine\Common.
+ *
+ * @author heinrich
+ */
+class CommonException extends \Exception
+{
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php b/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php
new file mode 100644
index 0000000..8cd02c9
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Comparable.php
@@ -0,0 +1,46 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * Comparable interface that allows to compare two value objects to each other for similarity.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ */
+interface Comparable
+{
+ /**
+ * Compares the current object to the passed $other.
+ *
+ * Returns 0 if they are semantically equal, 1 if the other object
+ * is less than the current one, or -1 if its more than the current one.
+ *
+ * This method should not check for identity using ===, only for semantical equality for example
+ * when two different DateTime instances point to the exact same Date + TZ.
+ *
+ * @param mixed $other
+ *
+ * @return int
+ */
+ public function compareTo($other);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php
new file mode 100644
index 0000000..75506e6
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/EventArgs.php
@@ -0,0 +1,67 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * EventArgs is the base class for classes containing event data.
+ *
+ * This class contains no event data. It is used by events that do not pass state
+ * information to an event handler when an event is raised. The single empty EventArgs
+ * instance can be obtained through {@link getEmptyInstance}.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class EventArgs
+{
+ /**
+ * Single instance of EventArgs.
+ *
+ * @var EventArgs
+ */
+ private static $_emptyEventArgsInstance;
+
+ /**
+ * Gets the single, empty and immutable EventArgs instance.
+ *
+ * This instance will be used when events are dispatched without any parameter,
+ * like this: EventManager::dispatchEvent('eventname');
+ *
+ * The benefit from this is that only one empty instance is instantiated and shared
+ * (otherwise there would be instances for every dispatched in the abovementioned form).
+ *
+ * @see EventManager::dispatchEvent
+ *
+ * @link http://msdn.microsoft.com/en-us/library/system.eventargs.aspx
+ *
+ * @return EventArgs
+ */
+ public static function getEmptyInstance()
+ {
+ if ( ! self::$_emptyEventArgsInstance) {
+ self::$_emptyEventArgsInstance = new EventArgs;
+ }
+
+ return self::$_emptyEventArgsInstance;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php b/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php
new file mode 100644
index 0000000..0ee04a1
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/EventManager.php
@@ -0,0 +1,154 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * The EventManager is the central point of Doctrine's event listener system.
+ * Listeners are registered on the manager and events are dispatched through the
+ * manager.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+class EventManager
+{
+ /**
+ * Map of registered listeners.
+ * =>
+ *
+ * @var array
+ */
+ private $_listeners = [];
+
+ /**
+ * Dispatches an event to all registered listeners.
+ *
+ * @param string $eventName The name of the event to dispatch. The name of the event is
+ * the name of the method that is invoked on listeners.
+ * @param EventArgs|null $eventArgs The event arguments to pass to the event handlers/listeners.
+ * If not supplied, the single empty EventArgs instance is used.
+ *
+ * @return boolean
+ */
+ public function dispatchEvent($eventName, EventArgs $eventArgs = null)
+ {
+ if (isset($this->_listeners[$eventName])) {
+ $eventArgs = $eventArgs === null ? EventArgs::getEmptyInstance() : $eventArgs;
+
+ foreach ($this->_listeners[$eventName] as $listener) {
+ $listener->$eventName($eventArgs);
+ }
+ }
+ }
+
+ /**
+ * Gets the listeners of a specific event or all listeners.
+ *
+ * @param string|null $event The name of the event.
+ *
+ * @return array The event listeners for the specified event, or all event listeners.
+ */
+ public function getListeners($event = null)
+ {
+ return $event ? $this->_listeners[$event] : $this->_listeners;
+ }
+
+ /**
+ * Checks whether an event has any registered listeners.
+ *
+ * @param string $event
+ *
+ * @return boolean TRUE if the specified event has any listeners, FALSE otherwise.
+ */
+ public function hasListeners($event)
+ {
+ return isset($this->_listeners[$event]) && $this->_listeners[$event];
+ }
+
+ /**
+ * Adds an event listener that listens on the specified events.
+ *
+ * @param string|array $events The event(s) to listen on.
+ * @param object $listener The listener object.
+ *
+ * @return void
+ */
+ public function addEventListener($events, $listener)
+ {
+ // Picks the hash code related to that listener
+ $hash = spl_object_hash($listener);
+
+ foreach ((array) $events as $event) {
+ // Overrides listener if a previous one was associated already
+ // Prevents duplicate listeners on same event (same instance only)
+ $this->_listeners[$event][$hash] = $listener;
+ }
+ }
+
+ /**
+ * Removes an event listener from the specified events.
+ *
+ * @param string|array $events
+ * @param object $listener
+ *
+ * @return void
+ */
+ public function removeEventListener($events, $listener)
+ {
+ // Picks the hash code related to that listener
+ $hash = spl_object_hash($listener);
+
+ foreach ((array) $events as $event) {
+ // Check if actually have this listener associated
+ if (isset($this->_listeners[$event][$hash])) {
+ unset($this->_listeners[$event][$hash]);
+ }
+ }
+ }
+
+ /**
+ * Adds an EventSubscriber. The subscriber is asked for all the events it is
+ * interested in and added as a listener for these events.
+ *
+ * @param \Doctrine\Common\EventSubscriber $subscriber The subscriber.
+ *
+ * @return void
+ */
+ public function addEventSubscriber(EventSubscriber $subscriber)
+ {
+ $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber);
+ }
+
+ /**
+ * Removes an EventSubscriber. The subscriber is asked for all the events it is
+ * interested in and removed as a listener for these events.
+ *
+ * @param \Doctrine\Common\EventSubscriber $subscriber The subscriber.
+ *
+ * @return void
+ */
+ public function removeEventSubscriber(EventSubscriber $subscriber)
+ {
+ $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php b/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php
new file mode 100644
index 0000000..55d0f7d
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/EventSubscriber.php
@@ -0,0 +1,42 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * An EventSubscriber knows himself what events he is interested in.
+ * If an EventSubscriber is added to an EventManager, the manager invokes
+ * {@link getSubscribedEvents} and registers the subscriber as a listener for all
+ * returned events.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+interface EventSubscriber
+{
+ /**
+ * Returns an array of events this subscriber wants to listen to.
+ *
+ * @return array
+ */
+ public function getSubscribedEvents();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php b/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php
new file mode 100644
index 0000000..0aa07f8
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Lexer.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+use Doctrine\Common\Lexer\AbstractLexer;
+
+/**
+ * Base class for writing simple lexers, i.e. for creating small DSLs.
+ *
+ * Lexer moved into its own Component Doctrine\Common\Lexer. This class
+ * only stays for being BC.
+ *
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+abstract class Lexer extends AbstractLexer
+{
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php b/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php
new file mode 100644
index 0000000..e25e999
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/NotifyPropertyChanged.php
@@ -0,0 +1,42 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * Contract for classes that provide the service of notifying listeners of
+ * changes to their properties.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+interface NotifyPropertyChanged
+{
+ /**
+ * Adds a listener that wants to be notified about property changes.
+ *
+ * @param PropertyChangedListener $listener
+ *
+ * @return void
+ */
+ public function addPropertyChangedListener(PropertyChangedListener $listener);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php
new file mode 100644
index 0000000..12de462
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php
@@ -0,0 +1,262 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Abstract implementation of the ManagerRegistry contract.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Fabien Potencier
+ * @author Benjamin Eberlei
+ * @author Lukas Kahwe Smith
+ */
+abstract class AbstractManagerRegistry implements ManagerRegistry
+{
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var array
+ */
+ private $connections;
+
+ /**
+ * @var array
+ */
+ private $managers;
+
+ /**
+ * @var string
+ */
+ private $defaultConnection;
+
+ /**
+ * @var string
+ */
+ private $defaultManager;
+
+ /**
+ * @var string
+ */
+ private $proxyInterfaceName;
+
+ /**
+ * Constructor.
+ *
+ * @param string $name
+ * @param array $connections
+ * @param array $managers
+ * @param string $defaultConnection
+ * @param string $defaultManager
+ * @param string $proxyInterfaceName
+ */
+ public function __construct($name, array $connections, array $managers, $defaultConnection, $defaultManager, $proxyInterfaceName)
+ {
+ $this->name = $name;
+ $this->connections = $connections;
+ $this->managers = $managers;
+ $this->defaultConnection = $defaultConnection;
+ $this->defaultManager = $defaultManager;
+ $this->proxyInterfaceName = $proxyInterfaceName;
+ }
+
+ /**
+ * Fetches/creates the given services.
+ *
+ * A service in this context is connection or a manager instance.
+ *
+ * @param string $name The name of the service.
+ *
+ * @return object The instance of the given service.
+ */
+ abstract protected function getService($name);
+
+ /**
+ * Resets the given services.
+ *
+ * A service in this context is connection or a manager instance.
+ *
+ * @param string $name The name of the service.
+ *
+ * @return void
+ */
+ abstract protected function resetService($name);
+
+ /**
+ * Gets the name of the registry.
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getConnection($name = null)
+ {
+ if (null === $name) {
+ $name = $this->defaultConnection;
+ }
+
+ if (!isset($this->connections[$name])) {
+ throw new \InvalidArgumentException(sprintf('Doctrine %s Connection named "%s" does not exist.', $this->name, $name));
+ }
+
+ return $this->getService($this->connections[$name]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getConnectionNames()
+ {
+ return $this->connections;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getConnections()
+ {
+ $connections = [];
+ foreach ($this->connections as $name => $id) {
+ $connections[$name] = $this->getService($id);
+ }
+
+ return $connections;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDefaultConnectionName()
+ {
+ return $this->defaultConnection;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDefaultManagerName()
+ {
+ return $this->defaultManager;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function getManager($name = null)
+ {
+ if (null === $name) {
+ $name = $this->defaultManager;
+ }
+
+ if (!isset($this->managers[$name])) {
+ throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name));
+ }
+
+ return $this->getService($this->managers[$name]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getManagerForClass($class)
+ {
+ // Check for namespace alias
+ if (strpos($class, ':') !== false) {
+ list($namespaceAlias, $simpleClassName) = explode(':', $class, 2);
+ $class = $this->getAliasNamespace($namespaceAlias) . '\\' . $simpleClassName;
+ }
+
+ $proxyClass = new \ReflectionClass($class);
+
+ if ($proxyClass->implementsInterface($this->proxyInterfaceName)) {
+ if (! $parentClass = $proxyClass->getParentClass()) {
+ return null;
+ }
+
+ $class = $parentClass->getName();
+ }
+
+ foreach ($this->managers as $id) {
+ $manager = $this->getService($id);
+
+ if (!$manager->getMetadataFactory()->isTransient($class)) {
+ return $manager;
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getManagerNames()
+ {
+ return $this->managers;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getManagers()
+ {
+ $dms = [];
+ foreach ($this->managers as $name => $id) {
+ $dms[$name] = $this->getService($id);
+ }
+
+ return $dms;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getRepository($persistentObjectName, $persistentManagerName = null)
+ {
+ return $this->getManager($persistentManagerName)->getRepository($persistentObjectName);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function resetManager($name = null)
+ {
+ if (null === $name) {
+ $name = $this->defaultManager;
+ }
+
+ if (!isset($this->managers[$name])) {
+ throw new \InvalidArgumentException(sprintf('Doctrine %s Manager named "%s" does not exist.', $this->name, $name));
+ }
+
+ // force the creation of a new document manager
+ // if the current one is closed
+ $this->resetService($this->managers[$name]);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php
new file mode 100644
index 0000000..7c25e98
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ConnectionRegistry.php
@@ -0,0 +1,62 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Contract covering connection for a Doctrine persistence layer ManagerRegistry class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Fabien Potencier
+ * @author Benjamin Eberlei
+ * @author Lukas Kahwe Smith
+ */
+interface ConnectionRegistry
+{
+ /**
+ * Gets the default connection name.
+ *
+ * @return string The default connection name.
+ */
+ public function getDefaultConnectionName();
+
+ /**
+ * Gets the named connection.
+ *
+ * @param string $name The connection name (null for the default one).
+ *
+ * @return object
+ */
+ public function getConnection($name = null);
+
+ /**
+ * Gets an array of all registered connections.
+ *
+ * @return array An array of Connection instances.
+ */
+ public function getConnections();
+
+ /**
+ * Gets all connection names.
+ *
+ * @return array An array of connection names.
+ */
+ public function getConnectionNames();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php
new file mode 100644
index 0000000..52f41c0
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LifecycleEventArgs.php
@@ -0,0 +1,89 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Event;
+
+use Doctrine\Common\EventArgs;
+use Doctrine\Common\Persistence\ObjectManager;
+
+/**
+ * Lifecycle Events are triggered by the UnitOfWork during lifecycle transitions
+ * of entities.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Roman Borschel
+ * @author Benjamin Eberlei
+ */
+class LifecycleEventArgs extends EventArgs
+{
+ /**
+ * @var ObjectManager
+ */
+ private $objectManager;
+
+ /**
+ * @var object
+ */
+ private $object;
+
+ /**
+ * Constructor.
+ *
+ * @param object $object
+ * @param ObjectManager $objectManager
+ */
+ public function __construct($object, ObjectManager $objectManager)
+ {
+ $this->object = $object;
+ $this->objectManager = $objectManager;
+ }
+
+ /**
+ * Retrieves the associated entity.
+ *
+ * @deprecated
+ *
+ * @return object
+ */
+ public function getEntity()
+ {
+ return $this->object;
+ }
+
+ /**
+ * Retrieves the associated object.
+ *
+ * @return object
+ */
+ public function getObject()
+ {
+ return $this->object;
+ }
+
+ /**
+ * Retrieves the associated ObjectManager.
+ *
+ * @return ObjectManager
+ */
+ public function getObjectManager()
+ {
+ return $this->objectManager;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php
new file mode 100644
index 0000000..3d8abbe
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/LoadClassMetadataEventArgs.php
@@ -0,0 +1,75 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Event;
+
+use Doctrine\Common\EventArgs;
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Persistence\ObjectManager;
+
+/**
+ * Class that holds event arguments for a loadMetadata event.
+ *
+ * @author Jonathan H. Wage
+ * @since 2.2
+ */
+class LoadClassMetadataEventArgs extends EventArgs
+{
+ /**
+ * @var ClassMetadata
+ */
+ private $classMetadata;
+
+ /**
+ * @var ObjectManager
+ */
+ private $objectManager;
+
+ /**
+ * Constructor.
+ *
+ * @param ClassMetadata $classMetadata
+ * @param ObjectManager $objectManager
+ */
+ public function __construct(ClassMetadata $classMetadata, ObjectManager $objectManager)
+ {
+ $this->classMetadata = $classMetadata;
+ $this->objectManager = $objectManager;
+ }
+
+ /**
+ * Retrieves the associated ClassMetadata.
+ *
+ * @return ClassMetadata
+ */
+ public function getClassMetadata()
+ {
+ return $this->classMetadata;
+ }
+
+ /**
+ * Retrieves the associated ObjectManager.
+ *
+ * @return ObjectManager
+ */
+ public function getObjectManager()
+ {
+ return $this->objectManager;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php
new file mode 100644
index 0000000..5527d4d
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/ManagerEventArgs.php
@@ -0,0 +1,59 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Event;
+
+use Doctrine\Common\EventArgs;
+use Doctrine\Common\Persistence\ObjectManager;
+
+/**
+ * Provides event arguments for the preFlush event.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Roman Borschel
+ * @author Benjamin Eberlei
+ */
+class ManagerEventArgs extends EventArgs
+{
+ /**
+ * @var ObjectManager
+ */
+ private $objectManager;
+
+ /**
+ * Constructor.
+ *
+ * @param ObjectManager $objectManager
+ */
+ public function __construct(ObjectManager $objectManager)
+ {
+ $this->objectManager = $objectManager;
+ }
+
+ /**
+ * Retrieves the associated ObjectManager.
+ *
+ * @return ObjectManager
+ */
+ public function getObjectManager()
+ {
+ return $this->objectManager;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php
new file mode 100644
index 0000000..b78bad9
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/OnClearEventArgs.php
@@ -0,0 +1,86 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Event;
+
+use Doctrine\Common\EventArgs;
+use Doctrine\Common\Persistence\ObjectManager;
+
+/**
+ * Provides event arguments for the onClear event.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Roman Borschel
+ * @author Benjamin Eberlei
+ */
+class OnClearEventArgs extends EventArgs
+{
+ /**
+ * @var \Doctrine\Common\Persistence\ObjectManager
+ */
+ private $objectManager;
+
+ /**
+ * @var string|null
+ */
+ private $entityClass;
+
+ /**
+ * Constructor.
+ *
+ * @param ObjectManager $objectManager The object manager.
+ * @param string|null $entityClass The optional entity class.
+ */
+ public function __construct($objectManager, $entityClass = null)
+ {
+ $this->objectManager = $objectManager;
+ $this->entityClass = $entityClass;
+ }
+
+ /**
+ * Retrieves the associated ObjectManager.
+ *
+ * @return \Doctrine\Common\Persistence\ObjectManager
+ */
+ public function getObjectManager()
+ {
+ return $this->objectManager;
+ }
+
+ /**
+ * Returns the name of the entity class that is cleared, or null if all are cleared.
+ *
+ * @return string|null
+ */
+ public function getEntityClass()
+ {
+ return $this->entityClass;
+ }
+
+ /**
+ * Returns whether this event clears all entities.
+ *
+ * @return bool
+ */
+ public function clearsAllEntities()
+ {
+ return ($this->entityClass === null);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php
new file mode 100644
index 0000000..facce64
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Event/PreUpdateEventArgs.php
@@ -0,0 +1,137 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Event;
+
+use Doctrine\Common\Persistence\ObjectManager;
+
+/**
+ * Class that holds event arguments for a preUpdate event.
+ *
+ * @author Guilherme Blanco
+ * @author Roman Borschel
+ * @author Benjamin Eberlei
+ * @since 2.2
+ */
+class PreUpdateEventArgs extends LifecycleEventArgs
+{
+ /**
+ * @var array
+ */
+ private $entityChangeSet;
+
+ /**
+ * Constructor.
+ *
+ * @param object $entity
+ * @param ObjectManager $objectManager
+ * @param array $changeSet
+ */
+ public function __construct($entity, ObjectManager $objectManager, array &$changeSet)
+ {
+ parent::__construct($entity, $objectManager);
+
+ $this->entityChangeSet = &$changeSet;
+ }
+
+ /**
+ * Retrieves the entity changeset.
+ *
+ * @return array
+ */
+ public function getEntityChangeSet()
+ {
+ return $this->entityChangeSet;
+ }
+
+ /**
+ * Checks if field has a changeset.
+ *
+ * @param string $field
+ *
+ * @return boolean
+ */
+ public function hasChangedField($field)
+ {
+ return isset($this->entityChangeSet[$field]);
+ }
+
+ /**
+ * Gets the old value of the changeset of the changed field.
+ *
+ * @param string $field
+ *
+ * @return mixed
+ */
+ public function getOldValue($field)
+ {
+ $this->assertValidField($field);
+
+ return $this->entityChangeSet[$field][0];
+ }
+
+ /**
+ * Gets the new value of the changeset of the changed field.
+ *
+ * @param string $field
+ *
+ * @return mixed
+ */
+ public function getNewValue($field)
+ {
+ $this->assertValidField($field);
+
+ return $this->entityChangeSet[$field][1];
+ }
+
+ /**
+ * Sets the new value of this field.
+ *
+ * @param string $field
+ * @param mixed $value
+ *
+ * @return void
+ */
+ public function setNewValue($field, $value)
+ {
+ $this->assertValidField($field);
+
+ $this->entityChangeSet[$field][1] = $value;
+ }
+
+ /**
+ * Asserts the field exists in changeset.
+ *
+ * @param string $field
+ *
+ * @return void
+ *
+ * @throws \InvalidArgumentException
+ */
+ private function assertValidField($field)
+ {
+ if ( ! isset($this->entityChangeSet[$field])) {
+ throw new \InvalidArgumentException(sprintf(
+ 'Field "%s" is not a valid field of the entity "%s" in PreUpdateEventArgs.',
+ $field,
+ get_class($this->getEntity())
+ ));
+ }
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php
new file mode 100644
index 0000000..fce854b
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ManagerRegistry.php
@@ -0,0 +1,111 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Contract covering object managers for a Doctrine persistence layer ManagerRegistry class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Fabien Potencier
+ * @author Benjamin Eberlei
+ * @author Lukas Kahwe Smith
+ */
+interface ManagerRegistry extends ConnectionRegistry
+{
+ /**
+ * Gets the default object manager name.
+ *
+ * @return string The default object manager name.
+ */
+ public function getDefaultManagerName();
+
+ /**
+ * Gets a named object manager.
+ *
+ * @param string $name The object manager name (null for the default one).
+ *
+ * @return \Doctrine\Common\Persistence\ObjectManager
+ */
+ public function getManager($name = null);
+
+ /**
+ * Gets an array of all registered object managers.
+ *
+ * @return \Doctrine\Common\Persistence\ObjectManager[] An array of ObjectManager instances
+ */
+ public function getManagers();
+
+ /**
+ * Resets a named object manager.
+ *
+ * This method is useful when an object manager has been closed
+ * because of a rollbacked transaction AND when you think that
+ * it makes sense to get a new one to replace the closed one.
+ *
+ * Be warned that you will get a brand new object manager as
+ * the existing one is not useable anymore. This means that any
+ * other object with a dependency on this object manager will
+ * hold an obsolete reference. You can inject the registry instead
+ * to avoid this problem.
+ *
+ * @param string|null $name The object manager name (null for the default one).
+ *
+ * @return \Doctrine\Common\Persistence\ObjectManager
+ */
+ public function resetManager($name = null);
+
+ /**
+ * Resolves a registered namespace alias to the full namespace.
+ *
+ * This method looks for the alias in all registered object managers.
+ *
+ * @param string $alias The alias.
+ *
+ * @return string The full namespace.
+ */
+ public function getAliasNamespace($alias);
+
+ /**
+ * Gets all connection names.
+ *
+ * @return array An array of connection names.
+ */
+ public function getManagerNames();
+
+ /**
+ * Gets the ObjectRepository for an persistent object.
+ *
+ * @param string $persistentObject The name of the persistent object.
+ * @param string $persistentManagerName The object manager name (null for the default one).
+ *
+ * @return \Doctrine\Common\Persistence\ObjectRepository
+ */
+ public function getRepository($persistentObject, $persistentManagerName = null);
+
+ /**
+ * Gets the object manager associated with a given class.
+ *
+ * @param string $class A persistent object class name.
+ *
+ * @return \Doctrine\Common\Persistence\ObjectManager|null
+ */
+ public function getManagerForClass($class);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
new file mode 100644
index 0000000..586b2da
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php
@@ -0,0 +1,429 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+use Doctrine\Common\Cache\Cache;
+use Doctrine\Common\Util\ClassUtils;
+use ReflectionException;
+
+/**
+ * The ClassMetadataFactory is used to create ClassMetadata objects that contain all the
+ * metadata mapping informations of a class which describes how a class should be mapped
+ * to a relational database.
+ *
+ * This class was abstracted from the ORM ClassMetadataFactory.
+ *
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+abstract class AbstractClassMetadataFactory implements ClassMetadataFactory
+{
+ /**
+ * Salt used by specific Object Manager implementation.
+ *
+ * @var string
+ */
+ protected $cacheSalt = '$CLASSMETADATA';
+
+ /**
+ * @var \Doctrine\Common\Cache\Cache|null
+ */
+ private $cacheDriver;
+
+ /**
+ * @var ClassMetadata[]
+ */
+ private $loadedMetadata = [];
+
+ /**
+ * @var bool
+ */
+ protected $initialized = false;
+
+ /**
+ * @var ReflectionService|null
+ */
+ private $reflectionService = null;
+
+ /**
+ * Sets the cache driver used by the factory to cache ClassMetadata instances.
+ *
+ * @param \Doctrine\Common\Cache\Cache $cacheDriver
+ *
+ * @return void
+ */
+ public function setCacheDriver(Cache $cacheDriver = null)
+ {
+ $this->cacheDriver = $cacheDriver;
+ }
+
+ /**
+ * Gets the cache driver used by the factory to cache ClassMetadata instances.
+ *
+ * @return \Doctrine\Common\Cache\Cache|null
+ */
+ public function getCacheDriver()
+ {
+ return $this->cacheDriver;
+ }
+
+ /**
+ * Returns an array of all the loaded metadata currently in memory.
+ *
+ * @return ClassMetadata[]
+ */
+ public function getLoadedMetadata()
+ {
+ return $this->loadedMetadata;
+ }
+
+ /**
+ * Forces the factory to load the metadata of all classes known to the underlying
+ * mapping driver.
+ *
+ * @return array The ClassMetadata instances of all mapped classes.
+ */
+ public function getAllMetadata()
+ {
+ if ( ! $this->initialized) {
+ $this->initialize();
+ }
+
+ $driver = $this->getDriver();
+ $metadata = [];
+ foreach ($driver->getAllClassNames() as $className) {
+ $metadata[] = $this->getMetadataFor($className);
+ }
+
+ return $metadata;
+ }
+
+ /**
+ * Lazy initialization of this stuff, especially the metadata driver,
+ * since these are not needed at all when a metadata cache is active.
+ *
+ * @return void
+ */
+ abstract protected function initialize();
+
+ /**
+ * Gets the fully qualified class-name from the namespace alias.
+ *
+ * @param string $namespaceAlias
+ * @param string $simpleClassName
+ *
+ * @return string
+ */
+ abstract protected function getFqcnFromAlias($namespaceAlias, $simpleClassName);
+
+ /**
+ * Returns the mapping driver implementation.
+ *
+ * @return \Doctrine\Common\Persistence\Mapping\Driver\MappingDriver
+ */
+ abstract protected function getDriver();
+
+ /**
+ * Wakes up reflection after ClassMetadata gets unserialized from cache.
+ *
+ * @param ClassMetadata $class
+ * @param ReflectionService $reflService
+ *
+ * @return void
+ */
+ abstract protected function wakeupReflection(ClassMetadata $class, ReflectionService $reflService);
+
+ /**
+ * Initializes Reflection after ClassMetadata was constructed.
+ *
+ * @param ClassMetadata $class
+ * @param ReflectionService $reflService
+ *
+ * @return void
+ */
+ abstract protected function initializeReflection(ClassMetadata $class, ReflectionService $reflService);
+
+ /**
+ * Checks whether the class metadata is an entity.
+ *
+ * This method should return false for mapped superclasses or embedded classes.
+ *
+ * @param ClassMetadata $class
+ *
+ * @return boolean
+ */
+ abstract protected function isEntity(ClassMetadata $class);
+
+ /**
+ * Gets the class metadata descriptor for a class.
+ *
+ * @param string $className The name of the class.
+ *
+ * @return ClassMetadata
+ *
+ * @throws ReflectionException
+ * @throws MappingException
+ */
+ public function getMetadataFor($className)
+ {
+ if (isset($this->loadedMetadata[$className])) {
+ return $this->loadedMetadata[$className];
+ }
+
+ // Check for namespace alias
+ if (strpos($className, ':') !== false) {
+ list($namespaceAlias, $simpleClassName) = explode(':', $className, 2);
+
+ $realClassName = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
+ } else {
+ $realClassName = ClassUtils::getRealClass($className);
+ }
+
+ if (isset($this->loadedMetadata[$realClassName])) {
+ // We do not have the alias name in the map, include it
+ return $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
+ }
+
+ $loadingException = null;
+
+ try {
+ if ($this->cacheDriver) {
+ if (($cached = $this->cacheDriver->fetch($realClassName . $this->cacheSalt)) !== false) {
+ $this->loadedMetadata[$realClassName] = $cached;
+
+ $this->wakeupReflection($cached, $this->getReflectionService());
+ } else {
+ foreach ($this->loadMetadata($realClassName) as $loadedClassName) {
+ $this->cacheDriver->save(
+ $loadedClassName . $this->cacheSalt,
+ $this->loadedMetadata[$loadedClassName],
+ null
+ );
+ }
+ }
+ } else {
+ $this->loadMetadata($realClassName);
+ }
+ } catch (MappingException $loadingException) {
+ if (! $fallbackMetadataResponse = $this->onNotFoundMetadata($realClassName)) {
+ throw $loadingException;
+ }
+
+ $this->loadedMetadata[$realClassName] = $fallbackMetadataResponse;
+ }
+
+ if ($className !== $realClassName) {
+ // We do not have the alias name in the map, include it
+ $this->loadedMetadata[$className] = $this->loadedMetadata[$realClassName];
+ }
+
+ return $this->loadedMetadata[$className];
+ }
+
+ /**
+ * Checks whether the factory has the metadata for a class loaded already.
+ *
+ * @param string $className
+ *
+ * @return boolean TRUE if the metadata of the class in question is already loaded, FALSE otherwise.
+ */
+ public function hasMetadataFor($className)
+ {
+ return isset($this->loadedMetadata[$className]);
+ }
+
+ /**
+ * Sets the metadata descriptor for a specific class.
+ *
+ * NOTE: This is only useful in very special cases, like when generating proxy classes.
+ *
+ * @param string $className
+ * @param ClassMetadata $class
+ *
+ * @return void
+ */
+ public function setMetadataFor($className, $class)
+ {
+ $this->loadedMetadata[$className] = $class;
+ }
+
+ /**
+ * Gets an array of parent classes for the given entity class.
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ protected function getParentClasses($name)
+ {
+ // Collect parent classes, ignoring transient (not-mapped) classes.
+ $parentClasses = [];
+ foreach (array_reverse($this->getReflectionService()->getParentClasses($name)) as $parentClass) {
+ if ( ! $this->getDriver()->isTransient($parentClass)) {
+ $parentClasses[] = $parentClass;
+ }
+ }
+ return $parentClasses;
+ }
+
+ /**
+ * Loads the metadata of the class in question and all it's ancestors whose metadata
+ * is still not loaded.
+ *
+ * Important: The class $name does not necesarily exist at this point here.
+ * Scenarios in a code-generation setup might have access to XML/YAML
+ * Mapping files without the actual PHP code existing here. That is why the
+ * {@see Doctrine\Common\Persistence\Mapping\ReflectionService} interface
+ * should be used for reflection.
+ *
+ * @param string $name The name of the class for which the metadata should get loaded.
+ *
+ * @return array
+ */
+ protected function loadMetadata($name)
+ {
+ if ( ! $this->initialized) {
+ $this->initialize();
+ }
+
+ $loaded = [];
+
+ $parentClasses = $this->getParentClasses($name);
+ $parentClasses[] = $name;
+
+ // Move down the hierarchy of parent classes, starting from the topmost class
+ $parent = null;
+ $rootEntityFound = false;
+ $visited = [];
+ $reflService = $this->getReflectionService();
+ foreach ($parentClasses as $className) {
+ if (isset($this->loadedMetadata[$className])) {
+ $parent = $this->loadedMetadata[$className];
+ if ($this->isEntity($parent)) {
+ $rootEntityFound = true;
+ array_unshift($visited, $className);
+ }
+ continue;
+ }
+
+ $class = $this->newClassMetadataInstance($className);
+ $this->initializeReflection($class, $reflService);
+
+ $this->doLoadMetadata($class, $parent, $rootEntityFound, $visited);
+
+ $this->loadedMetadata[$className] = $class;
+
+ $parent = $class;
+
+ if ($this->isEntity($class)) {
+ $rootEntityFound = true;
+ array_unshift($visited, $className);
+ }
+
+ $this->wakeupReflection($class, $reflService);
+
+ $loaded[] = $className;
+ }
+
+ return $loaded;
+ }
+
+ /**
+ * Provides a fallback hook for loading metadata when loading failed due to reflection/mapping exceptions
+ *
+ * Override this method to implement a fallback strategy for failed metadata loading
+ *
+ * @param string $className
+ *
+ * @return \Doctrine\Common\Persistence\Mapping\ClassMetadata|null
+ */
+ protected function onNotFoundMetadata($className)
+ {
+ return null;
+ }
+
+ /**
+ * Actually loads the metadata from the underlying metadata.
+ *
+ * @param ClassMetadata $class
+ * @param ClassMetadata|null $parent
+ * @param bool $rootEntityFound
+ * @param array $nonSuperclassParents All parent class names
+ * that are not marked as mapped superclasses.
+ *
+ * @return void
+ */
+ abstract protected function doLoadMetadata($class, $parent, $rootEntityFound, array $nonSuperclassParents);
+
+ /**
+ * Creates a new ClassMetadata instance for the given class name.
+ *
+ * @param string $className
+ *
+ * @return ClassMetadata
+ */
+ abstract protected function newClassMetadataInstance($className);
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isTransient($class)
+ {
+ if ( ! $this->initialized) {
+ $this->initialize();
+ }
+
+ // Check for namespace alias
+ if (strpos($class, ':') !== false) {
+ list($namespaceAlias, $simpleClassName) = explode(':', $class, 2);
+ $class = $this->getFqcnFromAlias($namespaceAlias, $simpleClassName);
+ }
+
+ return $this->getDriver()->isTransient($class);
+ }
+
+ /**
+ * Sets the reflectionService.
+ *
+ * @param ReflectionService $reflectionService
+ *
+ * @return void
+ */
+ public function setReflectionService(ReflectionService $reflectionService)
+ {
+ $this->reflectionService = $reflectionService;
+ }
+
+ /**
+ * Gets the reflection service associated with this metadata factory.
+ *
+ * @return ReflectionService
+ */
+ public function getReflectionService()
+ {
+ if ($this->reflectionService === null) {
+ $this->reflectionService = new RuntimeReflectionService();
+ }
+ return $this->reflectionService;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php
new file mode 100644
index 0000000..b8445f1
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadata.php
@@ -0,0 +1,174 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+/**
+ * Contract for a Doctrine persistence layer ClassMetadata class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.1
+ * @author Benjamin Eberlei
+ * @author Jonathan Wage
+ */
+interface ClassMetadata
+{
+ /**
+ * Gets the fully-qualified class name of this persistent class.
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Gets the mapped identifier field name.
+ *
+ * The returned structure is an array of the identifier field names.
+ *
+ * @return array
+ */
+ public function getIdentifier();
+
+ /**
+ * Gets the ReflectionClass instance for this mapped class.
+ *
+ * @return \ReflectionClass
+ */
+ public function getReflectionClass();
+
+ /**
+ * Checks if the given field name is a mapped identifier for this class.
+ *
+ * @param string $fieldName
+ *
+ * @return boolean
+ */
+ public function isIdentifier($fieldName);
+
+ /**
+ * Checks if the given field is a mapped property for this class.
+ *
+ * @param string $fieldName
+ *
+ * @return boolean
+ */
+ public function hasField($fieldName);
+
+ /**
+ * Checks if the given field is a mapped association for this class.
+ *
+ * @param string $fieldName
+ *
+ * @return boolean
+ */
+ public function hasAssociation($fieldName);
+
+ /**
+ * Checks if the given field is a mapped single valued association for this class.
+ *
+ * @param string $fieldName
+ *
+ * @return boolean
+ */
+ public function isSingleValuedAssociation($fieldName);
+
+ /**
+ * Checks if the given field is a mapped collection valued association for this class.
+ *
+ * @param string $fieldName
+ *
+ * @return boolean
+ */
+ public function isCollectionValuedAssociation($fieldName);
+
+ /**
+ * A numerically indexed list of field names of this persistent class.
+ *
+ * This array includes identifier fields if present on this class.
+ *
+ * @return array
+ */
+ public function getFieldNames();
+
+ /**
+ * Returns an array of identifier field names numerically indexed.
+ *
+ * @return array
+ */
+ public function getIdentifierFieldNames();
+
+ /**
+ * Returns a numerically indexed list of association names of this persistent class.
+ *
+ * This array includes identifier associations if present on this class.
+ *
+ * @return array
+ */
+ public function getAssociationNames();
+
+ /**
+ * Returns a type name of this field.
+ *
+ * This type names can be implementation specific but should at least include the php types:
+ * integer, string, boolean, float/double, datetime.
+ *
+ * @param string $fieldName
+ *
+ * @return string
+ */
+ public function getTypeOfField($fieldName);
+
+ /**
+ * Returns the target class name of the given association.
+ *
+ * @param string $assocName
+ *
+ * @return string
+ */
+ public function getAssociationTargetClass($assocName);
+
+ /**
+ * Checks if the association is the inverse side of a bidirectional association.
+ *
+ * @param string $assocName
+ *
+ * @return boolean
+ */
+ public function isAssociationInverseSide($assocName);
+
+ /**
+ * Returns the target field of the owning side of the association.
+ *
+ * @param string $assocName
+ *
+ * @return string
+ */
+ public function getAssociationMappedByTargetField($assocName);
+
+ /**
+ * Returns the identifier of this object as an array with field name as key.
+ *
+ * Has to return an empty array if no identifier isset.
+ *
+ * @param object $object
+ *
+ * @return array
+ */
+ public function getIdentifierValues($object);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php
new file mode 100644
index 0000000..3d82881
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ClassMetadataFactory.php
@@ -0,0 +1,76 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+/**
+ * Contract for a Doctrine persistence layer ClassMetadata class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.1
+ * @author Benjamin Eberlei
+ * @author Jonathan Wage
+ */
+interface ClassMetadataFactory
+{
+ /**
+ * Forces the factory to load the metadata of all classes known to the underlying
+ * mapping driver.
+ *
+ * @return array The ClassMetadata instances of all mapped classes.
+ */
+ public function getAllMetadata();
+
+ /**
+ * Gets the class metadata descriptor for a class.
+ *
+ * @param string $className The name of the class.
+ *
+ * @return ClassMetadata
+ */
+ public function getMetadataFor($className);
+
+ /**
+ * Checks whether the factory has the metadata for a class loaded already.
+ *
+ * @param string $className
+ *
+ * @return boolean TRUE if the metadata of the class in question is already loaded, FALSE otherwise.
+ */
+ public function hasMetadataFor($className);
+
+ /**
+ * Sets the metadata descriptor for a specific class.
+ *
+ * @param string $className
+ *
+ * @param ClassMetadata $class
+ */
+ public function setMetadataFor($className, $class);
+
+ /**
+ * Returns whether the class with the specified name should have its metadata loaded.
+ * This is only the case if it is either mapped directly or as a MappedSuperclass.
+ *
+ * @param string $className
+ *
+ * @return boolean
+ */
+ public function isTransient($className);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
new file mode 100644
index 0000000..deb82c0
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/AnnotationDriver.php
@@ -0,0 +1,256 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Annotations\AnnotationReader;
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * The AnnotationDriver reads the mapping metadata from docblock annotations.
+ *
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan H. Wage
+ * @author Roman Borschel
+ */
+abstract class AnnotationDriver implements MappingDriver
+{
+ /**
+ * The AnnotationReader.
+ *
+ * @var AnnotationReader
+ */
+ protected $reader;
+
+ /**
+ * The paths where to look for mapping files.
+ *
+ * @var array
+ */
+ protected $paths = [];
+
+ /**
+ * The paths excluded from path where to look for mapping files.
+ *
+ * @var array
+ */
+ protected $excludePaths = [];
+
+ /**
+ * The file extension of mapping documents.
+ *
+ * @var string
+ */
+ protected $fileExtension = '.php';
+
+ /**
+ * Cache for AnnotationDriver#getAllClassNames().
+ *
+ * @var array|null
+ */
+ protected $classNames;
+
+ /**
+ * Name of the entity annotations as keys.
+ *
+ * @var array
+ */
+ protected $entityAnnotationClasses = [];
+
+ /**
+ * Initializes a new AnnotationDriver that uses the given AnnotationReader for reading
+ * docblock annotations.
+ *
+ * @param AnnotationReader $reader The AnnotationReader to use, duck-typed.
+ * @param string|array|null $paths One or multiple paths where mapping classes can be found.
+ */
+ public function __construct($reader, $paths = null)
+ {
+ $this->reader = $reader;
+ if ($paths) {
+ $this->addPaths((array) $paths);
+ }
+ }
+
+ /**
+ * Appends lookup paths to metadata driver.
+ *
+ * @param array $paths
+ *
+ * @return void
+ */
+ public function addPaths(array $paths)
+ {
+ $this->paths = array_unique(array_merge($this->paths, $paths));
+ }
+
+ /**
+ * Retrieves the defined metadata lookup paths.
+ *
+ * @return array
+ */
+ public function getPaths()
+ {
+ return $this->paths;
+ }
+
+ /**
+ * Append exclude lookup paths to metadata driver.
+ *
+ * @param array $paths
+ */
+ public function addExcludePaths(array $paths)
+ {
+ $this->excludePaths = array_unique(array_merge($this->excludePaths, $paths));
+ }
+
+ /**
+ * Retrieve the defined metadata lookup exclude paths.
+ *
+ * @return array
+ */
+ public function getExcludePaths()
+ {
+ return $this->excludePaths;
+ }
+
+ /**
+ * Retrieve the current annotation reader
+ *
+ * @return AnnotationReader
+ */
+ public function getReader()
+ {
+ return $this->reader;
+ }
+
+ /**
+ * Gets the file extension used to look for mapping files under.
+ *
+ * @return string
+ */
+ public function getFileExtension()
+ {
+ return $this->fileExtension;
+ }
+
+ /**
+ * Sets the file extension used to look for mapping files under.
+ *
+ * @param string $fileExtension The file extension to set.
+ *
+ * @return void
+ */
+ public function setFileExtension($fileExtension)
+ {
+ $this->fileExtension = $fileExtension;
+ }
+
+ /**
+ * Returns whether the class with the specified name is transient. Only non-transient
+ * classes, that is entities and mapped superclasses, should have their metadata loaded.
+ *
+ * A class is non-transient if it is annotated with an annotation
+ * from the {@see AnnotationDriver::entityAnnotationClasses}.
+ *
+ * @param string $className
+ *
+ * @return boolean
+ */
+ public function isTransient($className)
+ {
+ $classAnnotations = $this->reader->getClassAnnotations(new \ReflectionClass($className));
+
+ foreach ($classAnnotations as $annot) {
+ if (isset($this->entityAnnotationClasses[get_class($annot)])) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAllClassNames()
+ {
+ if ($this->classNames !== null) {
+ return $this->classNames;
+ }
+
+ if (!$this->paths) {
+ throw MappingException::pathRequired();
+ }
+
+ $classes = [];
+ $includedFiles = [];
+
+ foreach ($this->paths as $path) {
+ if ( ! is_dir($path)) {
+ throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
+ }
+
+ $iterator = new \RegexIterator(
+ new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS),
+ \RecursiveIteratorIterator::LEAVES_ONLY
+ ),
+ '/^.+' . preg_quote($this->fileExtension) . '$/i',
+ \RecursiveRegexIterator::GET_MATCH
+ );
+
+ foreach ($iterator as $file) {
+ $sourceFile = $file[0];
+
+ if ( ! preg_match('(^phar:)i', $sourceFile)) {
+ $sourceFile = realpath($sourceFile);
+ }
+
+ foreach ($this->excludePaths as $excludePath) {
+ $exclude = str_replace('\\', '/', realpath($excludePath));
+ $current = str_replace('\\', '/', $sourceFile);
+
+ if (strpos($current, $exclude) !== false) {
+ continue 2;
+ }
+ }
+
+ require_once $sourceFile;
+
+ $includedFiles[] = $sourceFile;
+ }
+ }
+
+ $declared = get_declared_classes();
+
+ foreach ($declared as $className) {
+ $rc = new \ReflectionClass($className);
+ $sourceFile = $rc->getFileName();
+ if (in_array($sourceFile, $includedFiles) && ! $this->isTransient($className)) {
+ $classes[] = $className;
+ }
+ }
+
+ $this->classNames = $classes;
+
+ return $classes;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php
new file mode 100644
index 0000000..6ed7f6d
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/DefaultFileLocator.php
@@ -0,0 +1,173 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * Locates the file that contains the metadata information for a given class name.
+ *
+ * This behavior is independent of the actual content of the file. It just detects
+ * the file which is responsible for the given class name.
+ *
+ * @author Benjamin Eberlei
+ * @author Johannes M. Schmitt
+ */
+class DefaultFileLocator implements FileLocator
+{
+ /**
+ * The paths where to look for mapping files.
+ *
+ * @var array
+ */
+ protected $paths = [];
+
+ /**
+ * The file extension of mapping documents.
+ *
+ * @var string|null
+ */
+ protected $fileExtension;
+
+ /**
+ * Initializes a new FileDriver that looks in the given path(s) for mapping
+ * documents and operates in the specified operating mode.
+ *
+ * @param string|array $paths One or multiple paths where mapping documents can be found.
+ * @param string|null $fileExtension The file extension of mapping documents, usually prefixed with a dot.
+ */
+ public function __construct($paths, $fileExtension = null)
+ {
+ $this->addPaths((array) $paths);
+ $this->fileExtension = $fileExtension;
+ }
+
+ /**
+ * Appends lookup paths to metadata driver.
+ *
+ * @param array $paths
+ *
+ * @return void
+ */
+ public function addPaths(array $paths)
+ {
+ $this->paths = array_unique(array_merge($this->paths, $paths));
+ }
+
+ /**
+ * Retrieves the defined metadata lookup paths.
+ *
+ * @return array
+ */
+ public function getPaths()
+ {
+ return $this->paths;
+ }
+
+ /**
+ * Gets the file extension used to look for mapping files under.
+ *
+ * @return string|null
+ */
+ public function getFileExtension()
+ {
+ return $this->fileExtension;
+ }
+
+ /**
+ * Sets the file extension used to look for mapping files under.
+ *
+ * @param string|null $fileExtension The file extension to set.
+ *
+ * @return void
+ */
+ public function setFileExtension($fileExtension)
+ {
+ $this->fileExtension = $fileExtension;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function findMappingFile($className)
+ {
+ $fileName = str_replace('\\', '.', $className) . $this->fileExtension;
+
+ // Check whether file exists
+ foreach ($this->paths as $path) {
+ if (is_file($path . DIRECTORY_SEPARATOR . $fileName)) {
+ return $path . DIRECTORY_SEPARATOR . $fileName;
+ }
+ }
+
+ throw MappingException::mappingFileNotFound($className, $fileName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAllClassNames($globalBasename)
+ {
+ $classes = [];
+
+ if ($this->paths) {
+ foreach ($this->paths as $path) {
+ if ( ! is_dir($path)) {
+ throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
+ }
+
+ $iterator = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($path),
+ \RecursiveIteratorIterator::LEAVES_ONLY
+ );
+
+ foreach ($iterator as $file) {
+ $fileName = $file->getBasename($this->fileExtension);
+
+ if ($fileName == $file->getBasename() || $fileName == $globalBasename) {
+ continue;
+ }
+
+ // NOTE: All files found here means classes are not transient!
+ $classes[] = str_replace('.', '\\', $fileName);
+ }
+ }
+ }
+
+ return $classes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fileExists($className)
+ {
+ $fileName = str_replace('\\', '.', $className) . $this->fileExtension;
+
+ // Check whether file exists
+ foreach ((array) $this->paths as $path) {
+ if (is_file($path . DIRECTORY_SEPARATOR . $fileName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php
new file mode 100644
index 0000000..dc799d5
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileDriver.php
@@ -0,0 +1,214 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * Base driver for file-based metadata drivers.
+ *
+ * A file driver operates in a mode where it loads the mapping files of individual
+ * classes on demand. This requires the user to adhere to the convention of 1 mapping
+ * file per class and the file names of the mapping files must correspond to the full
+ * class name, including namespace, with the namespace delimiters '\', replaced by dots '.'.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan H. Wage
+ * @author Roman Borschel
+ */
+abstract class FileDriver implements MappingDriver
+{
+ /**
+ * @var FileLocator
+ */
+ protected $locator;
+
+ /**
+ * @var array|null
+ */
+ protected $classCache;
+
+ /**
+ * @var string|null
+ */
+ protected $globalBasename;
+
+ /**
+ * Initializes a new FileDriver that looks in the given path(s) for mapping
+ * documents and operates in the specified operating mode.
+ *
+ * @param string|array|FileLocator $locator A FileLocator or one/multiple paths
+ * where mapping documents can be found.
+ * @param string|null $fileExtension
+ */
+ public function __construct($locator, $fileExtension = null)
+ {
+ if ($locator instanceof FileLocator) {
+ $this->locator = $locator;
+ } else {
+ $this->locator = new DefaultFileLocator((array)$locator, $fileExtension);
+ }
+ }
+
+ /**
+ * Sets the global basename.
+ *
+ * @param string $file
+ *
+ * @return void
+ */
+ public function setGlobalBasename($file)
+ {
+ $this->globalBasename = $file;
+ }
+
+ /**
+ * Retrieves the global basename.
+ *
+ * @return string|null
+ */
+ public function getGlobalBasename()
+ {
+ return $this->globalBasename;
+ }
+
+ /**
+ * Gets the element of schema meta data for the class from the mapping file.
+ * This will lazily load the mapping file if it is not loaded yet.
+ *
+ * @param string $className
+ *
+ * @return array The element of schema meta data.
+ *
+ * @throws MappingException
+ */
+ public function getElement($className)
+ {
+ if ($this->classCache === null) {
+ $this->initialize();
+ }
+
+ if (isset($this->classCache[$className])) {
+ return $this->classCache[$className];
+ }
+
+ $result = $this->loadMappingFile($this->locator->findMappingFile($className));
+ if (!isset($result[$className])) {
+ throw MappingException::invalidMappingFile($className, str_replace('\\', '.', $className) . $this->locator->getFileExtension());
+ }
+
+ return $result[$className];
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isTransient($className)
+ {
+ if ($this->classCache === null) {
+ $this->initialize();
+ }
+
+ if (isset($this->classCache[$className])) {
+ return false;
+ }
+
+ return !$this->locator->fileExists($className);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAllClassNames()
+ {
+ if ($this->classCache === null) {
+ $this->initialize();
+ }
+
+ if (! $this->classCache) {
+ return (array) $this->locator->getAllClassNames($this->globalBasename);
+ }
+
+ return array_merge(
+ array_keys($this->classCache),
+ (array) $this->locator->getAllClassNames($this->globalBasename)
+ );
+ }
+
+ /**
+ * Loads a mapping file with the given name and returns a map
+ * from class/entity names to their corresponding file driver elements.
+ *
+ * @param string $file The mapping file to load.
+ *
+ * @return array
+ */
+ abstract protected function loadMappingFile($file);
+
+ /**
+ * Initializes the class cache from all the global files.
+ *
+ * Using this feature adds a substantial performance hit to file drivers as
+ * more metadata has to be loaded into memory than might actually be
+ * necessary. This may not be relevant to scenarios where caching of
+ * metadata is in place, however hits very hard in scenarios where no
+ * caching is used.
+ *
+ * @return void
+ */
+ protected function initialize()
+ {
+ $this->classCache = [];
+ if (null !== $this->globalBasename) {
+ foreach ($this->locator->getPaths() as $path) {
+ $file = $path.'/'.$this->globalBasename.$this->locator->getFileExtension();
+ if (is_file($file)) {
+ $this->classCache = array_merge(
+ $this->classCache,
+ $this->loadMappingFile($file)
+ );
+ }
+ }
+ }
+ }
+
+ /**
+ * Retrieves the locator used to discover mapping files by className.
+ *
+ * @return FileLocator
+ */
+ public function getLocator()
+ {
+ return $this->locator;
+ }
+
+ /**
+ * Sets the locator used to discover mapping files by className.
+ *
+ * @param FileLocator $locator
+ */
+ public function setLocator(FileLocator $locator)
+ {
+ $this->locator = $locator;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php
new file mode 100644
index 0000000..f622856
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/FileLocator.php
@@ -0,0 +1,73 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+/**
+ * Locates the file that contains the metadata information for a given class name.
+ *
+ * This behavior is independent of the actual content of the file. It just detects
+ * the file which is responsible for the given class name.
+ *
+ * @author Benjamin Eberlei
+ * @author Johannes M. Schmitt
+ */
+interface FileLocator
+{
+ /**
+ * Locates mapping file for the given class name.
+ *
+ * @param string $className
+ *
+ * @return string
+ */
+ public function findMappingFile($className);
+
+ /**
+ * Gets all class names that are found with this file locator.
+ *
+ * @param string $globalBasename Passed to allow excluding the basename.
+ *
+ * @return array
+ */
+ public function getAllClassNames($globalBasename);
+
+ /**
+ * Checks if a file can be found for this class name.
+ *
+ * @param string $className
+ *
+ * @return bool
+ */
+ public function fileExists($className);
+
+ /**
+ * Gets all the paths that this file locator looks for mapping files.
+ *
+ * @return array
+ */
+ public function getPaths();
+
+ /**
+ * Gets the file extension that mapping files are suffixed with.
+ *
+ * @return string
+ */
+ public function getFileExtension();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php
new file mode 100644
index 0000000..b5d7ec0
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriver.php
@@ -0,0 +1,58 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+
+/**
+ * Contract for metadata drivers.
+ *
+ * @since 2.2
+ * @author Jonathan H. Wage
+ */
+interface MappingDriver
+{
+ /**
+ * Loads the metadata for the specified class into the provided container.
+ *
+ * @param string $className
+ * @param ClassMetadata $metadata
+ *
+ * @return void
+ */
+ public function loadMetadataForClass($className, ClassMetadata $metadata);
+
+ /**
+ * Gets the names of all mapped classes known to this driver.
+ *
+ * @return array The names of all mapped classes known to this driver.
+ */
+ public function getAllClassNames();
+
+ /**
+ * Returns whether the class with the specified name should have its metadata loaded.
+ * This is only the case if it is either mapped as an Entity or a MappedSuperclass.
+ *
+ * @param string $className
+ *
+ * @return boolean
+ */
+ public function isTransient($className);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php
new file mode 100644
index 0000000..50d9785
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/MappingDriverChain.php
@@ -0,0 +1,165 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * The DriverChain allows you to add multiple other mapping drivers for
+ * certain namespaces.
+ *
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan H. Wage
+ * @author Roman Borschel
+ */
+class MappingDriverChain implements MappingDriver
+{
+ /**
+ * The default driver.
+ *
+ * @var MappingDriver|null
+ */
+ private $defaultDriver;
+
+ /**
+ * @var array
+ */
+ private $drivers = [];
+
+ /**
+ * Gets the default driver.
+ *
+ * @return MappingDriver|null
+ */
+ public function getDefaultDriver()
+ {
+ return $this->defaultDriver;
+ }
+
+ /**
+ * Set the default driver.
+ *
+ * @param MappingDriver $driver
+ *
+ * @return void
+ */
+ public function setDefaultDriver(MappingDriver $driver)
+ {
+ $this->defaultDriver = $driver;
+ }
+
+ /**
+ * Adds a nested driver.
+ *
+ * @param MappingDriver $nestedDriver
+ * @param string $namespace
+ *
+ * @return void
+ */
+ public function addDriver(MappingDriver $nestedDriver, $namespace)
+ {
+ $this->drivers[$namespace] = $nestedDriver;
+ }
+
+ /**
+ * Gets the array of nested drivers.
+ *
+ * @return array $drivers
+ */
+ public function getDrivers()
+ {
+ return $this->drivers;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function loadMetadataForClass($className, ClassMetadata $metadata)
+ {
+ /* @var $driver MappingDriver */
+ foreach ($this->drivers as $namespace => $driver) {
+ if (strpos($className, $namespace) === 0) {
+ $driver->loadMetadataForClass($className, $metadata);
+ return;
+ }
+ }
+
+ if (null !== $this->defaultDriver) {
+ $this->defaultDriver->loadMetadataForClass($className, $metadata);
+ return;
+ }
+
+ throw MappingException::classNotFoundInNamespaces($className, array_keys($this->drivers));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAllClassNames()
+ {
+ $classNames = [];
+ $driverClasses = [];
+
+ /* @var $driver MappingDriver */
+ foreach ($this->drivers AS $namespace => $driver) {
+ $oid = spl_object_hash($driver);
+
+ if (!isset($driverClasses[$oid])) {
+ $driverClasses[$oid] = $driver->getAllClassNames();
+ }
+
+ foreach ($driverClasses[$oid] AS $className) {
+ if (strpos($className, $namespace) === 0) {
+ $classNames[$className] = true;
+ }
+ }
+ }
+
+ if (null !== $this->defaultDriver) {
+ foreach ($this->defaultDriver->getAllClassNames() as $className) {
+ $classNames[$className] = true;
+ }
+ }
+
+ return array_keys($classNames);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isTransient($className)
+ {
+ /* @var $driver MappingDriver */
+ foreach ($this->drivers AS $namespace => $driver) {
+ if (strpos($className, $namespace) === 0) {
+ return $driver->isTransient($className);
+ }
+ }
+
+ if ($this->defaultDriver !== null) {
+ return $this->defaultDriver->isTransient($className);
+ }
+
+ return true;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php
new file mode 100644
index 0000000..efffa6a
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/PHPDriver.php
@@ -0,0 +1,70 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+
+/**
+ * The PHPDriver includes php files which just populate ClassMetadataInfo
+ * instances with plain PHP code.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan H. Wage
+ * @author Roman Borschel
+ */
+class PHPDriver extends FileDriver
+{
+ /**
+ * @var ClassMetadata
+ */
+ protected $metadata;
+
+ /**
+ * {@inheritDoc}
+ */
+ public function __construct($locator, $fileExtension = null)
+ {
+ parent::__construct($locator, '.php');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function loadMetadataForClass($className, ClassMetadata $metadata)
+ {
+ $this->metadata = $metadata;
+
+ $this->loadMappingFile($this->locator->findMappingFile($className));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function loadMappingFile($file)
+ {
+ $metadata = $this->metadata;
+ include $file;
+
+ return [$metadata->getName() => $metadata];
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php
new file mode 100644
index 0000000..8e37e5a
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/StaticPHPDriver.php
@@ -0,0 +1,142 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * The StaticPHPDriver calls a static loadMetadata() method on your entity
+ * classes where you can manually populate the ClassMetadata instance.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.2
+ * @author Benjamin Eberlei
+ * @author Guilherme Blanco
+ * @author Jonathan H. Wage
+ * @author Roman Borschel
+ */
+class StaticPHPDriver implements MappingDriver
+{
+ /**
+ * Paths of entity directories.
+ *
+ * @var array
+ */
+ private $paths = [];
+
+ /**
+ * Map of all class names.
+ *
+ * @var array
+ */
+ private $classNames;
+
+ /**
+ * Constructor.
+ *
+ * @param array|string $paths
+ */
+ public function __construct($paths)
+ {
+ $this->addPaths((array) $paths);
+ }
+
+ /**
+ * Adds paths.
+ *
+ * @param array $paths
+ *
+ * @return void
+ */
+ public function addPaths(array $paths)
+ {
+ $this->paths = array_unique(array_merge($this->paths, $paths));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function loadMetadataForClass($className, ClassMetadata $metadata)
+ {
+ $className::loadMetadata($metadata);
+ }
+
+ /**
+ * {@inheritDoc}
+ * @todo Same code exists in AnnotationDriver, should we re-use it somehow or not worry about it?
+ */
+ public function getAllClassNames()
+ {
+ if ($this->classNames !== null) {
+ return $this->classNames;
+ }
+
+ if (!$this->paths) {
+ throw MappingException::pathRequired();
+ }
+
+ $classes = [];
+ $includedFiles = [];
+
+ foreach ($this->paths as $path) {
+ if (!is_dir($path)) {
+ throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
+ }
+
+ $iterator = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($path),
+ \RecursiveIteratorIterator::LEAVES_ONLY
+ );
+
+ foreach ($iterator as $file) {
+ if ($file->getBasename('.php') == $file->getBasename()) {
+ continue;
+ }
+
+ $sourceFile = realpath($file->getPathName());
+ require_once $sourceFile;
+ $includedFiles[] = $sourceFile;
+ }
+ }
+
+ $declared = get_declared_classes();
+
+ foreach ($declared as $className) {
+ $rc = new \ReflectionClass($className);
+ $sourceFile = $rc->getFileName();
+ if (in_array($sourceFile, $includedFiles) && !$this->isTransient($className)) {
+ $classes[] = $className;
+ }
+ }
+
+ $this->classNames = $classes;
+
+ return $classes;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isTransient($className)
+ {
+ return ! method_exists($className, 'loadMetadata');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php
new file mode 100644
index 0000000..4588cfe
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/Driver/SymfonyFileLocator.php
@@ -0,0 +1,239 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping\Driver;
+
+use Doctrine\Common\Persistence\Mapping\MappingException;
+
+/**
+ * The Symfony File Locator makes a simplifying assumptions compared
+ * to the DefaultFileLocator. By assuming paths only contain entities of a certain
+ * namespace the mapping files consists of the short classname only.
+ *
+ * @author Fabien Potencier
+ * @author Benjamin Eberlei
+ * @license MIT
+ */
+class SymfonyFileLocator implements FileLocator
+{
+ /**
+ * The paths where to look for mapping files.
+ *
+ * @var array
+ */
+ protected $paths = [];
+
+ /**
+ * A map of mapping directory path to namespace prefix used to expand class shortnames.
+ *
+ * @var array
+ */
+ protected $prefixes = [];
+
+ /**
+ * File extension that is searched for.
+ *
+ * @var string|null
+ */
+ protected $fileExtension;
+
+ /**
+ * Represents PHP namespace delimiters when looking for files
+ *
+ * @var string
+ */
+ private $nsSeparator;
+
+ /**
+ * Constructor.
+ *
+ * @param array $prefixes
+ * @param string|null $fileExtension
+ * @param string $nsSeparator String which would be used when converting FQCN to filename and vice versa. Should not be empty
+ */
+ public function __construct(array $prefixes, $fileExtension = null, $nsSeparator = '.')
+ {
+ $this->addNamespacePrefixes($prefixes);
+ $this->fileExtension = $fileExtension;
+
+ if (empty($nsSeparator)) {
+ throw new \InvalidArgumentException('Namespace separator should not be empty');
+ }
+
+ $this->nsSeparator = (string) $nsSeparator;
+ }
+
+ /**
+ * Adds Namespace Prefixes.
+ *
+ * @param array $prefixes
+ *
+ * @return void
+ */
+ public function addNamespacePrefixes(array $prefixes)
+ {
+ $this->prefixes = array_merge($this->prefixes, $prefixes);
+ $this->paths = array_merge($this->paths, array_keys($prefixes));
+ }
+
+ /**
+ * Gets Namespace Prefixes.
+ *
+ * @return array
+ */
+ public function getNamespacePrefixes()
+ {
+ return $this->prefixes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPaths()
+ {
+ return $this->paths;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getFileExtension()
+ {
+ return $this->fileExtension;
+ }
+
+ /**
+ * Sets the file extension used to look for mapping files under.
+ *
+ * @param string $fileExtension The file extension to set.
+ *
+ * @return void
+ */
+ public function setFileExtension($fileExtension)
+ {
+ $this->fileExtension = $fileExtension;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function fileExists($className)
+ {
+ $defaultFileName = str_replace('\\', $this->nsSeparator, $className).$this->fileExtension;
+ foreach ($this->paths as $path) {
+ if (!isset($this->prefixes[$path])) {
+ // global namespace class
+ if (is_file($path.DIRECTORY_SEPARATOR.$defaultFileName)) {
+ return true;
+ }
+
+ continue;
+ }
+
+ $prefix = $this->prefixes[$path];
+
+ if (0 !== strpos($className, $prefix.'\\')) {
+ continue;
+ }
+
+ $filename = $path.'/'.strtr(substr($className, strlen($prefix)+1), '\\', $this->nsSeparator).$this->fileExtension;
+ if (is_file($filename)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAllClassNames($globalBasename = null)
+ {
+ $classes = [];
+
+ if ($this->paths) {
+ foreach ((array) $this->paths as $path) {
+ if (!is_dir($path)) {
+ throw MappingException::fileMappingDriversRequireConfiguredDirectoryPath($path);
+ }
+
+ $iterator = new \RecursiveIteratorIterator(
+ new \RecursiveDirectoryIterator($path),
+ \RecursiveIteratorIterator::LEAVES_ONLY
+ );
+
+ foreach ($iterator as $file) {
+ $fileName = $file->getBasename($this->fileExtension);
+
+ if ($fileName == $file->getBasename() || $fileName == $globalBasename) {
+ continue;
+ }
+
+ // NOTE: All files found here means classes are not transient!
+ if (isset($this->prefixes[$path])) {
+
+ // Calculate namespace suffix for given prefix as a relative path from basepath to file path
+ $nsSuffix = strtr(
+ substr(realpath($file->getPath()), strlen(realpath($path))),
+ $this->nsSeparator,
+ '\\'
+ );
+
+ $classes[] = $this->prefixes[$path] . str_replace(DIRECTORY_SEPARATOR, '\\', $nsSuffix) . '\\' .str_replace($this->nsSeparator, '\\', $fileName);
+ } else {
+ $classes[] = str_replace($this->nsSeparator, '\\', $fileName);
+ }
+ }
+ }
+ }
+
+ return $classes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function findMappingFile($className)
+ {
+ $defaultFileName = str_replace('\\', $this->nsSeparator, $className).$this->fileExtension;
+ foreach ($this->paths as $path) {
+ if (!isset($this->prefixes[$path])) {
+ if (is_file($path.DIRECTORY_SEPARATOR.$defaultFileName)) {
+ return $path.DIRECTORY_SEPARATOR.$defaultFileName;
+ }
+
+ continue;
+ }
+
+ $prefix = $this->prefixes[$path];
+
+ if (0 !== strpos($className, $prefix.'\\')) {
+ continue;
+ }
+
+ $filename = $path.'/'.strtr(substr($className, strlen($prefix)+1), '\\', $this->nsSeparator ).$this->fileExtension;
+ if (is_file($filename)) {
+ return $filename;
+ }
+ }
+
+ throw MappingException::mappingFileNotFound($className, substr($className, strrpos($className, '\\') + 1).$this->fileExtension);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php
new file mode 100644
index 0000000..6e97485
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/MappingException.php
@@ -0,0 +1,98 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+/**
+ * A MappingException indicates that something is wrong with the mapping setup.
+ *
+ * @since 2.2
+ */
+class MappingException extends \Exception
+{
+ /**
+ * @param string $className
+ * @param array $namespaces
+ *
+ * @return self
+ */
+ public static function classNotFoundInNamespaces($className, $namespaces)
+ {
+ return new self("The class '" . $className . "' was not found in the ".
+ "chain configured namespaces " . implode(", ", $namespaces));
+ }
+
+ /**
+ * @return self
+ */
+ public static function pathRequired()
+ {
+ return new self("Specifying the paths to your entities is required ".
+ "in the AnnotationDriver to retrieve all class names.");
+ }
+
+ /**
+ * @param string|null $path
+ *
+ * @return self
+ */
+ public static function fileMappingDriversRequireConfiguredDirectoryPath($path = null)
+ {
+ if ( ! empty($path)) {
+ $path = '[' . $path . ']';
+ }
+
+ return new self(
+ 'File mapping drivers must have a valid directory path, ' .
+ 'however the given path ' . $path . ' seems to be incorrect!'
+ );
+ }
+
+ /**
+ * @param string $entityName
+ * @param string $fileName
+ *
+ * @return self
+ */
+ public static function mappingFileNotFound($entityName, $fileName)
+ {
+ return new self("No mapping file found named '$fileName' for class '$entityName'.");
+ }
+
+ /**
+ * @param string $entityName
+ * @param string $fileName
+ *
+ * @return self
+ */
+ public static function invalidMappingFile($entityName, $fileName)
+ {
+ return new self("Invalid mapping file '$fileName' for class '$entityName'.");
+ }
+
+ /**
+ * @param string $className
+ *
+ * @return self
+ */
+ public static function nonExistingClass($className)
+ {
+ return new self("Class '$className' does not exist");
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php
new file mode 100644
index 0000000..0088ed5
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/ReflectionService.php
@@ -0,0 +1,87 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+/**
+ * Very simple reflection service abstraction.
+ *
+ * This is required inside metadata layers that may require either
+ * static or runtime reflection.
+ *
+ * @author Benjamin Eberlei
+ */
+interface ReflectionService
+{
+ /**
+ * Returns an array of the parent classes (not interfaces) for the given class.
+ *
+ * @param string $class
+ *
+ * @throws \Doctrine\Common\Persistence\Mapping\MappingException
+ *
+ * @return array
+ */
+ public function getParentClasses($class);
+
+ /**
+ * Returns the shortname of a class.
+ *
+ * @param string $class
+ *
+ * @return string
+ */
+ public function getClassShortName($class);
+
+ /**
+ * @param string $class
+ *
+ * @return string
+ */
+ public function getClassNamespace($class);
+
+ /**
+ * Returns a reflection class instance or null.
+ *
+ * @param string $class
+ *
+ * @return \ReflectionClass|null
+ */
+ public function getClass($class);
+
+ /**
+ * Returns an accessible property (setAccessible(true)) or null.
+ *
+ * @param string $class
+ * @param string $property
+ *
+ * @return \ReflectionProperty|null
+ */
+ public function getAccessibleProperty($class, $property);
+
+ /**
+ * Checks if the class have a public method with the given name.
+ *
+ * @param mixed $class
+ * @param mixed $method
+ *
+ * @return bool
+ */
+ public function hasPublicMethod($class, $method);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php
new file mode 100644
index 0000000..4598d5a
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php
@@ -0,0 +1,104 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+use Doctrine\Common\Reflection\RuntimePublicReflectionProperty;
+use ReflectionClass;
+use ReflectionException;
+use ReflectionMethod;
+use ReflectionProperty;
+
+/**
+ * PHP Runtime Reflection Service.
+ *
+ * @author Benjamin Eberlei
+ */
+class RuntimeReflectionService implements ReflectionService
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function getParentClasses($class)
+ {
+ if ( ! class_exists($class)) {
+ throw MappingException::nonExistingClass($class);
+ }
+
+ return class_parents($class);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassShortName($class)
+ {
+ $reflectionClass = new ReflectionClass($class);
+
+ return $reflectionClass->getShortName();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassNamespace($class)
+ {
+ $reflectionClass = new ReflectionClass($class);
+
+ return $reflectionClass->getNamespaceName();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClass($class)
+ {
+ return new ReflectionClass($class);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAccessibleProperty($class, $property)
+ {
+ $reflectionProperty = new ReflectionProperty($class, $property);
+
+ if ($reflectionProperty->isPublic()) {
+ $reflectionProperty = new RuntimePublicReflectionProperty($class, $property);
+ }
+
+ $reflectionProperty->setAccessible(true);
+
+ return $reflectionProperty;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasPublicMethod($class, $method)
+ {
+ try {
+ $reflectionMethod = new ReflectionMethod($class, $method);
+ } catch (ReflectionException $e) {
+ return false;
+ }
+
+ return $reflectionMethod->isPublic();
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php
new file mode 100644
index 0000000..7d01766
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/StaticReflectionService.php
@@ -0,0 +1,83 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence\Mapping;
+
+/**
+ * PHP Runtime Reflection Service.
+ *
+ * @author Benjamin Eberlei
+ */
+class StaticReflectionService implements ReflectionService
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function getParentClasses($class)
+ {
+ return [];
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassShortName($className)
+ {
+ if (strpos($className, '\\') !== false) {
+ $className = substr($className, strrpos($className, "\\")+1);
+ }
+ return $className;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClassNamespace($className)
+ {
+ $namespace = '';
+ if (strpos($className, '\\') !== false) {
+ $namespace = strrev(substr( strrev($className), strpos(strrev($className), '\\')+1 ));
+ }
+ return $namespace;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClass($class)
+ {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getAccessibleProperty($class, $property)
+ {
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasPublicMethod($class, $method)
+ {
+ return true;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php
new file mode 100644
index 0000000..02208c9
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManager.php
@@ -0,0 +1,169 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Contract for a Doctrine persistence layer ObjectManager class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.1
+ * @author Benjamin Eberlei
+ * @author Jonathan Wage
+ */
+interface ObjectManager
+{
+ /**
+ * Finds an object by its identifier.
+ *
+ * This is just a convenient shortcut for getRepository($className)->find($id).
+ *
+ * @param string $className The class name of the object to find.
+ * @param mixed $id The identity of the object to find.
+ *
+ * @return object The found object.
+ */
+ public function find($className, $id);
+
+ /**
+ * Tells the ObjectManager to make an instance managed and persistent.
+ *
+ * The object will be entered into the database as a result of the flush operation.
+ *
+ * NOTE: The persist operation always considers objects that are not yet known to
+ * this ObjectManager as NEW. Do not pass detached objects to the persist operation.
+ *
+ * @param object $object The instance to make managed and persistent.
+ *
+ * @return void
+ */
+ public function persist($object);
+
+ /**
+ * Removes an object instance.
+ *
+ * A removed object will be removed from the database as a result of the flush operation.
+ *
+ * @param object $object The object instance to remove.
+ *
+ * @return void
+ */
+ public function remove($object);
+
+ /**
+ * Merges the state of a detached object into the persistence context
+ * of this ObjectManager and returns the managed copy of the object.
+ * The object passed to merge will not become associated/managed with this ObjectManager.
+ *
+ * @param object $object
+ *
+ * @return object
+ */
+ public function merge($object);
+
+ /**
+ * Clears the ObjectManager. All objects that are currently managed
+ * by this ObjectManager become detached.
+ *
+ * @param string|null $objectName if given, only objects of this type will get detached.
+ *
+ * @return void
+ */
+ public function clear($objectName = null);
+
+ /**
+ * Detaches an object from the ObjectManager, causing a managed object to
+ * become detached. Unflushed changes made to the object if any
+ * (including removal of the object), will not be synchronized to the database.
+ * Objects which previously referenced the detached object will continue to
+ * reference it.
+ *
+ * @param object $object The object to detach.
+ *
+ * @return void
+ */
+ public function detach($object);
+
+ /**
+ * Refreshes the persistent state of an object from the database,
+ * overriding any local changes that have not yet been persisted.
+ *
+ * @param object $object The object to refresh.
+ *
+ * @return void
+ */
+ public function refresh($object);
+
+ /**
+ * Flushes all changes to objects that have been queued up to now to the database.
+ * This effectively synchronizes the in-memory state of managed objects with the
+ * database.
+ *
+ * @return void
+ */
+ public function flush();
+
+ /**
+ * Gets the repository for a class.
+ *
+ * @param string $className
+ *
+ * @return \Doctrine\Common\Persistence\ObjectRepository
+ */
+ public function getRepository($className);
+
+ /**
+ * Returns the ClassMetadata descriptor for a class.
+ *
+ * The class name must be the fully-qualified class name without a leading backslash
+ * (as it is returned by get_class($obj)).
+ *
+ * @param string $className
+ *
+ * @return \Doctrine\Common\Persistence\Mapping\ClassMetadata
+ */
+ public function getClassMetadata($className);
+
+ /**
+ * Gets the metadata factory used to gather the metadata of classes.
+ *
+ * @return \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory
+ */
+ public function getMetadataFactory();
+
+ /**
+ * Helper method to initialize a lazy loading proxy or persistent collection.
+ *
+ * This method is a no-op for other objects.
+ *
+ * @param object $obj
+ *
+ * @return void
+ */
+ public function initializeObject($obj);
+
+ /**
+ * Checks if the object is part of the current UnitOfWork and therefore managed.
+ *
+ * @param object $object
+ *
+ * @return bool
+ */
+ public function contains($object);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php
new file mode 100644
index 0000000..9bc248a
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerAware.php
@@ -0,0 +1,51 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+
+/**
+ * Makes a Persistent Objects aware of its own object-manager.
+ *
+ * Using this interface the managing object manager and class metadata instances
+ * are injected into the persistent object after construction. This allows
+ * you to implement ActiveRecord functionality on top of the persistence-ignorance
+ * that Doctrine propagates.
+ *
+ * Word of Warning: This is a very powerful hook to change how you can work with your domain models.
+ * Using this hook will break the Single Responsibility Principle inside your Domain Objects
+ * and increase the coupling of database and objects.
+ *
+ * Every ObjectManager has to implement this functionality itself.
+ *
+ * @author Benjamin Eberlei
+ */
+interface ObjectManagerAware
+{
+ /**
+ * Injects responsible ObjectManager and the ClassMetadata into this persistent object.
+ *
+ * @param ObjectManager $objectManager
+ * @param ClassMetadata $classMetadata
+ *
+ * @return void
+ */
+ public function injectObjectManager(ObjectManager $objectManager, ClassMetadata $classMetadata);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php
new file mode 100644
index 0000000..8946475
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectManagerDecorator.php
@@ -0,0 +1,140 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Base class to simplify ObjectManager decorators
+ *
+ * @license http://opensource.org/licenses/MIT MIT
+ * @link www.doctrine-project.org
+ * @since 2.4
+ * @author Lars Strojny
+ */
+abstract class ObjectManagerDecorator implements ObjectManager
+{
+ /**
+ * @var ObjectManager
+ */
+ protected $wrapped;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function find($className, $id)
+ {
+ return $this->wrapped->find($className, $id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function persist($object)
+ {
+ return $this->wrapped->persist($object);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function remove($object)
+ {
+ return $this->wrapped->remove($object);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function merge($object)
+ {
+ return $this->wrapped->merge($object);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function clear($objectName = null)
+ {
+ return $this->wrapped->clear($objectName);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function detach($object)
+ {
+ return $this->wrapped->detach($object);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function refresh($object)
+ {
+ return $this->wrapped->refresh($object);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function flush()
+ {
+ return $this->wrapped->flush();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getRepository($className)
+ {
+ return $this->wrapped->getRepository($className);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getClassMetadata($className)
+ {
+ return $this->wrapped->getClassMetadata($className);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMetadataFactory()
+ {
+ return $this->wrapped->getMetadataFactory();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function initializeObject($obj)
+ {
+ return $this->wrapped->initializeObject($obj);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function contains($object)
+ {
+ return $this->wrapped->contains($object);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php
new file mode 100644
index 0000000..f607219
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/ObjectRepository.php
@@ -0,0 +1,81 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Contract for a Doctrine persistence layer ObjectRepository class to implement.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.1
+ * @author Benjamin Eberlei
+ * @author Jonathan Wage
+ */
+interface ObjectRepository
+{
+ /**
+ * Finds an object by its primary key / identifier.
+ *
+ * @param mixed $id The identifier.
+ *
+ * @return object The object.
+ */
+ public function find($id);
+
+ /**
+ * Finds all objects in the repository.
+ *
+ * @return array The objects.
+ */
+ public function findAll();
+
+ /**
+ * Finds objects by a set of criteria.
+ *
+ * Optionally sorting and limiting details can be passed. An implementation may throw
+ * an UnexpectedValueException if certain values of the sorting or limiting details are
+ * not supported.
+ *
+ * @param array $criteria
+ * @param array|null $orderBy
+ * @param int|null $limit
+ * @param int|null $offset
+ *
+ * @return array The objects.
+ *
+ * @throws \UnexpectedValueException
+ */
+ public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);
+
+ /**
+ * Finds a single object by a set of criteria.
+ *
+ * @param array $criteria The criteria.
+ *
+ * @return object The object.
+ */
+ public function findOneBy(array $criteria);
+
+ /**
+ * Returns the class name of the object managed by the repository.
+ *
+ * @return string
+ */
+ public function getClassName();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php
new file mode 100644
index 0000000..990642e
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/PersistentObject.php
@@ -0,0 +1,254 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+
+/**
+ * PersistentObject base class that implements getter/setter methods for all mapped fields and associations
+ * by overriding __call.
+ *
+ * This class is a forward compatible implementation of the PersistentObject trait.
+ *
+ * Limitations:
+ *
+ * 1. All persistent objects have to be associated with a single ObjectManager, multiple
+ * ObjectManagers are not supported. You can set the ObjectManager with `PersistentObject#setObjectManager()`.
+ * 2. Setters and getters only work if a ClassMetadata instance was injected into the PersistentObject.
+ * This is either done on `postLoad` of an object or by accessing the global object manager.
+ * 3. There are no hooks for setters/getters. Just implement the method yourself instead of relying on __call().
+ * 4. Slower than handcoded implementations: An average of 7 method calls per access to a field and 11 for an association.
+ * 5. Only the inverse side associations get autoset on the owning side as well. Setting objects on the owning side
+ * will not set the inverse side associations.
+ *
+ * @example
+ *
+ * PersistentObject::setObjectManager($em);
+ *
+ * class Foo extends PersistentObject
+ * {
+ * private $id;
+ * }
+ *
+ * $foo = new Foo();
+ * $foo->getId(); // method exists through __call
+ *
+ * @author Benjamin Eberlei
+ */
+abstract class PersistentObject implements ObjectManagerAware
+{
+ /**
+ * @var ObjectManager|null
+ */
+ private static $objectManager = null;
+
+ /**
+ * @var ClassMetadata|null
+ */
+ private $cm = null;
+
+ /**
+ * Sets the object manager responsible for all persistent object base classes.
+ *
+ * @param ObjectManager|null $objectManager
+ *
+ * @return void
+ */
+ static public function setObjectManager(ObjectManager $objectManager = null)
+ {
+ self::$objectManager = $objectManager;
+ }
+
+ /**
+ * @return ObjectManager|null
+ */
+ static public function getObjectManager()
+ {
+ return self::$objectManager;
+ }
+
+ /**
+ * Injects the Doctrine Object Manager.
+ *
+ * @param ObjectManager $objectManager
+ * @param ClassMetadata $classMetadata
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ public function injectObjectManager(ObjectManager $objectManager, ClassMetadata $classMetadata)
+ {
+ if ($objectManager !== self::$objectManager) {
+ throw new \RuntimeException("Trying to use PersistentObject with different ObjectManager instances. " .
+ "Was PersistentObject::setObjectManager() called?");
+ }
+
+ $this->cm = $classMetadata;
+ }
+
+ /**
+ * Sets a persistent fields value.
+ *
+ * @param string $field
+ * @param array $args
+ *
+ * @return void
+ *
+ * @throws \BadMethodCallException When no persistent field exists by that name.
+ * @throws \InvalidArgumentException When the wrong target object type is passed to an association.
+ */
+ private function set($field, $args)
+ {
+ $this->initializeDoctrine();
+
+ if ($this->cm->hasField($field) && !$this->cm->isIdentifier($field)) {
+ $this->$field = $args[0];
+ } else if ($this->cm->hasAssociation($field) && $this->cm->isSingleValuedAssociation($field)) {
+ $targetClass = $this->cm->getAssociationTargetClass($field);
+ if (!($args[0] instanceof $targetClass) && $args[0] !== null) {
+ throw new \InvalidArgumentException("Expected persistent object of type '".$targetClass."'");
+ }
+ $this->$field = $args[0];
+ $this->completeOwningSide($field, $targetClass, $args[0]);
+ } else {
+ throw new \BadMethodCallException("no field with name '".$field."' exists on '".$this->cm->getName()."'");
+ }
+ }
+
+ /**
+ * Gets a persistent field value.
+ *
+ * @param string $field
+ *
+ * @return mixed
+ *
+ * @throws \BadMethodCallException When no persistent field exists by that name.
+ */
+ private function get($field)
+ {
+ $this->initializeDoctrine();
+
+ if ( $this->cm->hasField($field) || $this->cm->hasAssociation($field) ) {
+ return $this->$field;
+ } else {
+ throw new \BadMethodCallException("no field with name '".$field."' exists on '".$this->cm->getName()."'");
+ }
+ }
+
+ /**
+ * If this is an inverse side association, completes the owning side.
+ *
+ * @param string $field
+ * @param ClassMetadata $targetClass
+ * @param object $targetObject
+ *
+ * @return void
+ */
+ private function completeOwningSide($field, $targetClass, $targetObject)
+ {
+ // add this object on the owning side as well, for obvious infinite recursion
+ // reasons this is only done when called on the inverse side.
+ if ($this->cm->isAssociationInverseSide($field)) {
+ $mappedByField = $this->cm->getAssociationMappedByTargetField($field);
+ $targetMetadata = self::$objectManager->getClassMetadata($targetClass);
+
+ $setter = ($targetMetadata->isCollectionValuedAssociation($mappedByField) ? "add" : "set").$mappedByField;
+ $targetObject->$setter($this);
+ }
+ }
+
+ /**
+ * Adds an object to a collection.
+ *
+ * @param string $field
+ * @param array $args
+ *
+ * @return void
+ *
+ * @throws \BadMethodCallException
+ * @throws \InvalidArgumentException
+ */
+ private function add($field, $args)
+ {
+ $this->initializeDoctrine();
+
+ if ($this->cm->hasAssociation($field) && $this->cm->isCollectionValuedAssociation($field)) {
+ $targetClass = $this->cm->getAssociationTargetClass($field);
+ if (!($args[0] instanceof $targetClass)) {
+ throw new \InvalidArgumentException("Expected persistent object of type '".$targetClass."'");
+ }
+ if (!($this->$field instanceof Collection)) {
+ $this->$field = new ArrayCollection($this->$field ?: []);
+ }
+ $this->$field->add($args[0]);
+ $this->completeOwningSide($field, $targetClass, $args[0]);
+ } else {
+ throw new \BadMethodCallException("There is no method add".$field."() on ".$this->cm->getName());
+ }
+ }
+
+ /**
+ * Initializes Doctrine Metadata for this class.
+ *
+ * @return void
+ *
+ * @throws \RuntimeException
+ */
+ private function initializeDoctrine()
+ {
+ if ($this->cm !== null) {
+ return;
+ }
+
+ if (!self::$objectManager) {
+ throw new \RuntimeException("No runtime object manager set. Call PersistentObject#setObjectManager().");
+ }
+
+ $this->cm = self::$objectManager->getClassMetadata(get_class($this));
+ }
+
+ /**
+ * Magic methods.
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return mixed
+ *
+ * @throws \BadMethodCallException
+ */
+ public function __call($method, $args)
+ {
+ $command = substr($method, 0, 3);
+ $field = lcfirst(substr($method, 3));
+ if ($command == "set") {
+ $this->set($field, $args);
+ } else if ($command == "get") {
+ return $this->get($field);
+ } else if ($command == "add") {
+ $this->add($field, $args);
+ } else {
+ throw new \BadMethodCallException("There is no method ".$method." on ".$this->cm->getName());
+ }
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php
new file mode 100644
index 0000000..3369eb9
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Proxy.php
@@ -0,0 +1,59 @@
+.
+ */
+
+namespace Doctrine\Common\Persistence;
+
+/**
+ * Interface for proxy classes.
+ *
+ * @author Roman Borschel
+ * @since 2.2
+ */
+interface Proxy
+{
+ /**
+ * Marker for Proxy class names.
+ *
+ * @var string
+ */
+ const MARKER = '__CG__';
+
+ /**
+ * Length of the proxy marker.
+ *
+ * @var integer
+ */
+ const MARKER_LENGTH = 6;
+
+ /**
+ * Initializes this proxy if its not yet initialized.
+ *
+ * Acts as a no-op if already initialized.
+ *
+ * @return void
+ */
+ public function __load();
+
+ /**
+ * Returns whether this proxy is initialized or not.
+ *
+ * @return bool
+ */
+ public function __isInitialized();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php b/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php
new file mode 100644
index 0000000..1a59cd4
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/PropertyChangedListener.php
@@ -0,0 +1,45 @@
+.
+ */
+
+namespace Doctrine\Common;
+
+/**
+ * Contract for classes that are potential listeners of a NotifyPropertyChanged
+ * implementor.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel
+ */
+interface PropertyChangedListener
+{
+ /**
+ * Notifies the listener of a property change.
+ *
+ * @param object $sender The object on which the property changed.
+ * @param string $propertyName The name of the property that changed.
+ * @param mixed $oldValue The old value of the property that changed.
+ * @param mixed $newValue The new value of the property that changed.
+ *
+ * @return void
+ */
+ function propertyChanged($sender, $propertyName, $oldValue, $newValue);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
new file mode 100644
index 0000000..7eb216b
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php
@@ -0,0 +1,248 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Persistence\Mapping\ClassMetadataFactory;
+use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
+use Doctrine\Common\Proxy\Exception\OutOfBoundsException;
+use Doctrine\Common\Util\ClassUtils;
+
+/**
+ * Abstract factory for proxy objects.
+ *
+ * @author Benjamin Eberlei
+ */
+abstract class AbstractProxyFactory
+{
+ /**
+ * Never autogenerate a proxy and rely that it was generated by some
+ * process before deployment.
+ *
+ * @var integer
+ */
+ const AUTOGENERATE_NEVER = 0;
+
+ /**
+ * Always generates a new proxy in every request.
+ *
+ * This is only sane during development.
+ *
+ * @var integer
+ */
+ const AUTOGENERATE_ALWAYS = 1;
+
+ /**
+ * Autogenerate the proxy class when the proxy file does not exist.
+ *
+ * This strategy causes a file exists call whenever any proxy is used the
+ * first time in a request.
+ *
+ * @var integer
+ */
+ const AUTOGENERATE_FILE_NOT_EXISTS = 2;
+
+ /**
+ * Generate the proxy classes using eval().
+ *
+ * This strategy is only sane for development, and even then it gives me
+ * the creeps a little.
+ *
+ * @var integer
+ */
+ const AUTOGENERATE_EVAL = 3;
+
+ /**
+ * @var \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory
+ */
+ private $metadataFactory;
+
+ /**
+ * @var \Doctrine\Common\Proxy\ProxyGenerator the proxy generator responsible for creating the proxy classes/files.
+ */
+ private $proxyGenerator;
+
+ /**
+ * @var bool Whether to automatically (re)generate proxy classes.
+ */
+ private $autoGenerate;
+
+ /**
+ * @var \Doctrine\Common\Proxy\ProxyDefinition[]
+ */
+ private $definitions = [];
+
+ /**
+ * @param \Doctrine\Common\Proxy\ProxyGenerator $proxyGenerator
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadataFactory $metadataFactory
+ * @param bool|int $autoGenerate
+ */
+ public function __construct(ProxyGenerator $proxyGenerator, ClassMetadataFactory $metadataFactory, $autoGenerate)
+ {
+ $this->proxyGenerator = $proxyGenerator;
+ $this->metadataFactory = $metadataFactory;
+ $this->autoGenerate = (int)$autoGenerate;
+ }
+
+ /**
+ * Gets a reference proxy instance for the entity of the given type and identified by
+ * the given identifier.
+ *
+ * @param string $className
+ * @param array $identifier
+ *
+ * @return \Doctrine\Common\Proxy\Proxy
+ *
+ * @throws \Doctrine\Common\Proxy\Exception\OutOfBoundsException
+ */
+ public function getProxy($className, array $identifier)
+ {
+ $definition = isset($this->definitions[$className])
+ ? $this->definitions[$className]
+ : $this->getProxyDefinition($className);
+ $fqcn = $definition->proxyClassName;
+ $proxy = new $fqcn($definition->initializer, $definition->cloner);
+
+ foreach ($definition->identifierFields as $idField) {
+ if (! isset($identifier[$idField])) {
+ throw OutOfBoundsException::missingPrimaryKeyValue($className, $idField);
+ }
+
+ $definition->reflectionFields[$idField]->setValue($proxy, $identifier[$idField]);
+ }
+
+ return $proxy;
+ }
+
+ /**
+ * Generates proxy classes for all given classes.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata[] $classes The classes (ClassMetadata instances)
+ * for which to generate proxies.
+ * @param string $proxyDir The target directory of the proxy classes. If not specified, the
+ * directory configured on the Configuration of the EntityManager used
+ * by this factory is used.
+ * @return int Number of generated proxies.
+ */
+ public function generateProxyClasses(array $classes, $proxyDir = null)
+ {
+ $generated = 0;
+
+ foreach ($classes as $class) {
+ if ($this->skipClass($class)) {
+ continue;
+ }
+
+ $proxyFileName = $this->proxyGenerator->getProxyFileName($class->getName(), $proxyDir);
+
+ $this->proxyGenerator->generateProxyClass($class, $proxyFileName);
+
+ $generated += 1;
+ }
+
+ return $generated;
+ }
+
+ /**
+ * Reset initialization/cloning logic for an un-initialized proxy
+ *
+ * @param \Doctrine\Common\Proxy\Proxy $proxy
+ *
+ * @return \Doctrine\Common\Proxy\Proxy
+ *
+ * @throws \Doctrine\Common\Proxy\Exception\InvalidArgumentException
+ */
+ public function resetUninitializedProxy(Proxy $proxy)
+ {
+ if ($proxy->__isInitialized()) {
+ throw InvalidArgumentException::unitializedProxyExpected($proxy);
+ }
+
+ $className = ClassUtils::getClass($proxy);
+ $definition = isset($this->definitions[$className])
+ ? $this->definitions[$className]
+ : $this->getProxyDefinition($className);
+
+ $proxy->__setInitializer($definition->initializer);
+ $proxy->__setCloner($definition->cloner);
+
+ return $proxy;
+ }
+
+ /**
+ * Get a proxy definition for the given class name.
+ *
+ * @param string $className
+ *
+ * @return ProxyDefinition
+ */
+ private function getProxyDefinition($className)
+ {
+ $classMetadata = $this->metadataFactory->getMetadataFor($className);
+ $className = $classMetadata->getName(); // aliases and case sensitivity
+
+ $this->definitions[$className] = $this->createProxyDefinition($className);
+ $proxyClassName = $this->definitions[$className]->proxyClassName;
+
+ if ( ! class_exists($proxyClassName, false)) {
+ $fileName = $this->proxyGenerator->getProxyFileName($className);
+
+ switch ($this->autoGenerate) {
+ case self::AUTOGENERATE_NEVER:
+ require $fileName;
+ break;
+
+ case self::AUTOGENERATE_FILE_NOT_EXISTS:
+ if ( ! file_exists($fileName)) {
+ $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
+ }
+ require $fileName;
+ break;
+
+ case self::AUTOGENERATE_ALWAYS:
+ $this->proxyGenerator->generateProxyClass($classMetadata, $fileName);
+ require $fileName;
+ break;
+
+ case self::AUTOGENERATE_EVAL:
+ $this->proxyGenerator->generateProxyClass($classMetadata, false);
+ break;
+ }
+ }
+
+ return $this->definitions[$className];
+ }
+
+ /**
+ * Determine if this class should be skipped during proxy generation.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $metadata
+ *
+ * @return bool
+ */
+ abstract protected function skipClass(ClassMetadata $metadata);
+
+ /**
+ * @param string $className
+ *
+ * @return ProxyDefinition
+ */
+ abstract protected function createProxyDefinition($className);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php
new file mode 100644
index 0000000..0aa930b
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Autoloader.php
@@ -0,0 +1,92 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy;
+
+use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
+
+/**
+ * Special Autoloader for Proxy classes, which are not PSR-0 compliant.
+ *
+ * @author Benjamin Eberlei
+ */
+class Autoloader
+{
+ /**
+ * Resolves proxy class name to a filename based on the following pattern.
+ *
+ * 1. Remove Proxy namespace from class name.
+ * 2. Remove namespace separators from remaining class name.
+ * 3. Return PHP filename from proxy-dir with the result from 2.
+ *
+ * @param string $proxyDir
+ * @param string $proxyNamespace
+ * @param string $className
+ *
+ * @return string
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function resolveFile($proxyDir, $proxyNamespace, $className)
+ {
+ if (0 !== strpos($className, $proxyNamespace)) {
+ throw InvalidArgumentException::notProxyClass($className, $proxyNamespace);
+ }
+
+ $className = str_replace('\\', '', substr($className, strlen($proxyNamespace) + 1));
+
+ return $proxyDir . DIRECTORY_SEPARATOR . $className . '.php';
+ }
+
+ /**
+ * Registers and returns autoloader callback for the given proxy dir and namespace.
+ *
+ * @param string $proxyDir
+ * @param string $proxyNamespace
+ * @param callable|null $notFoundCallback Invoked when the proxy file is not found.
+ *
+ * @return \Closure
+ *
+ * @throws InvalidArgumentException
+ */
+ public static function register($proxyDir, $proxyNamespace, $notFoundCallback = null)
+ {
+ $proxyNamespace = ltrim($proxyNamespace, '\\');
+
+ if ( ! (null === $notFoundCallback || is_callable($notFoundCallback))) {
+ throw InvalidArgumentException::invalidClassNotFoundCallback($notFoundCallback);
+ }
+
+ $autoloader = function ($className) use ($proxyDir, $proxyNamespace, $notFoundCallback) {
+ if (0 === strpos($className, $proxyNamespace)) {
+ $file = Autoloader::resolveFile($proxyDir, $proxyNamespace, $className);
+
+ if ($notFoundCallback && ! file_exists($file)) {
+ call_user_func($notFoundCallback, $proxyDir, $proxyNamespace, $className);
+ }
+
+ require $file;
+ }
+ };
+
+ spl_autoload_register($autoloader);
+
+ return $autoloader;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php
new file mode 100644
index 0000000..dff54d9
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/InvalidArgumentException.php
@@ -0,0 +1,92 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy\Exception;
+
+use Doctrine\Common\Persistence\Proxy;
+use InvalidArgumentException as BaseInvalidArgumentException;
+
+/**
+ * Proxy Invalid Argument Exception.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.4
+ * @author Marco Pivetta
+ */
+class InvalidArgumentException extends BaseInvalidArgumentException implements ProxyException
+{
+ /**
+ * @return self
+ */
+ public static function proxyDirectoryRequired()
+ {
+ return new self('You must configure a proxy directory. See docs for details');
+ }
+
+ /**
+ * @param string $className
+ * @param string $proxyNamespace
+ *
+ * @return self
+ */
+ public static function notProxyClass($className, $proxyNamespace)
+ {
+ return new self(sprintf('The class "%s" is not part of the proxy namespace "%s"', $className, $proxyNamespace));
+ }
+
+ /**
+ * @param string $name
+ *
+ * @return self
+ */
+ public static function invalidPlaceholder($name)
+ {
+ return new self(sprintf('Provided placeholder for "%s" must be either a string or a valid callable', $name));
+ }
+
+ /**
+ * @return self
+ */
+ public static function proxyNamespaceRequired()
+ {
+ return new self('You must configure a proxy namespace');
+ }
+
+ /**
+ * @param Proxy $proxy
+ *
+ * @return self
+ */
+ public static function unitializedProxyExpected(Proxy $proxy)
+ {
+ return new self(sprintf('Provided proxy of type "%s" must not be initialized.', get_class($proxy)));
+ }
+
+ /**
+ * @param mixed $callback
+ *
+ * @return self
+ */
+ public static function invalidClassNotFoundCallback($callback)
+ {
+ $type = is_object($callback) ? get_class($callback) : gettype($callback);
+
+ return new self(sprintf('Invalid \$notFoundCallback given: must be a callable, "%s" given', $type));
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php
new file mode 100644
index 0000000..3c7415c
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/OutOfBoundsException.php
@@ -0,0 +1,42 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy\Exception;
+
+use OutOfBoundsException as BaseOutOfBoundsException;
+
+/**
+ * Proxy Invalid Argument Exception.
+ *
+ * @link www.doctrine-project.org
+ * @author Fredrik Wendel
+ */
+class OutOfBoundsException extends BaseOutOfBoundsException implements ProxyException
+{
+ /**
+ * @param string $className
+ * @param string $idField
+ *
+ * @return self
+ */
+ public static function missingPrimaryKeyValue($className, $idField)
+ {
+ return new self(sprintf("Missing value for primary key %s on %s", $idField, $className));
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php
new file mode 100644
index 0000000..0d1ff14
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/ProxyException.php
@@ -0,0 +1,31 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy\Exception;
+
+/**
+ * Base exception interface for proxy exceptions.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.4
+ * @author Marco Pivetta
+ */
+interface ProxyException
+{
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php
new file mode 100644
index 0000000..154b917
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Exception/UnexpectedValueException.php
@@ -0,0 +1,64 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy\Exception;
+
+use UnexpectedValueException as BaseUnexpectedValueException;
+
+/**
+ * Proxy Unexpected Value Exception.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.4
+ * @author Marco Pivetta
+ */
+class UnexpectedValueException extends BaseUnexpectedValueException implements ProxyException
+{
+ /**
+ * @param string $proxyDirectory
+ *
+ * @return self
+ */
+ public static function proxyDirectoryNotWritable($proxyDirectory)
+ {
+ return new self(sprintf('Your proxy directory "%s" must be writable', $proxyDirectory));
+ }
+
+ /**
+ * @param string $className
+ * @param string $methodName
+ * @param string $parameterName
+ * @param \Exception $previous
+ *
+ * @return self
+ */
+ public static function invalidParameterTypeHint($className, $methodName, $parameterName, \Exception $previous)
+ {
+ return new self(
+ sprintf(
+ 'The type hint of parameter "%s" in method "%s" in class "%s" is invalid.',
+ $parameterName,
+ $methodName,
+ $className
+ ),
+ 0,
+ $previous
+ );
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php
new file mode 100644
index 0000000..bd2b088
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/Proxy.php
@@ -0,0 +1,90 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy;
+
+use Closure;
+use Doctrine\Common\Persistence\Proxy as BaseProxy;
+
+/**
+ * Interface for proxy classes.
+ *
+ * @author Roman Borschel
+ * @author Marco Pivetta
+ * @since 2.4
+ */
+interface Proxy extends BaseProxy
+{
+ /**
+ * Marks the proxy as initialized or not.
+ *
+ * @param boolean $initialized
+ *
+ * @return void
+ */
+ public function __setInitialized($initialized);
+
+ /**
+ * Sets the initializer callback to be used when initializing the proxy. That
+ * initializer should accept 3 parameters: $proxy, $method and $params. Those
+ * are respectively the proxy object that is being initialized, the method name
+ * that triggered initialization and the parameters passed to that method.
+ *
+ * @param Closure|null $initializer
+ *
+ * @return void
+ */
+ public function __setInitializer(Closure $initializer = null);
+
+ /**
+ * Retrieves the initializer callback used to initialize the proxy.
+ *
+ * @see __setInitializer
+ *
+ * @return Closure|null
+ */
+ public function __getInitializer();
+
+ /**
+ * Sets the callback to be used when cloning the proxy. That initializer should accept
+ * a single parameter, which is the cloned proxy instance itself.
+ *
+ * @param Closure|null $cloner
+ *
+ * @return void
+ */
+ public function __setCloner(Closure $cloner = null);
+
+ /**
+ * Retrieves the callback to be used when cloning the proxy.
+ *
+ * @see __setCloner
+ *
+ * @return Closure|null
+ */
+ public function __getCloner();
+
+ /**
+ * Retrieves the list of lazy loaded properties for a given proxy
+ *
+ * @return array Keys are the property names, and values are the default values
+ * for those properties.
+ */
+ public function __getLazyProperties();
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php
new file mode 100644
index 0000000..48b149a
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyDefinition.php
@@ -0,0 +1,70 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy;
+
+/**
+ * Definition structure how to create a proxy.
+ *
+ * @author Benjamin Eberlei
+ */
+class ProxyDefinition
+{
+ /**
+ * @var string
+ */
+ public $proxyClassName;
+
+ /**
+ * @var array
+ */
+ public $identifierFields;
+
+ /**
+ * @var \ReflectionProperty[]
+ */
+ public $reflectionFields;
+
+ /**
+ * @var callable
+ */
+ public $initializer;
+
+ /**
+ * @var callable
+ */
+ public $cloner;
+
+ /**
+ * @param string $proxyClassName
+ * @param array $identifierFields
+ * @param array $reflectionFields
+ * @param callable $initializer
+ * @param callable $cloner
+ */
+ public function __construct($proxyClassName, array $identifierFields, array $reflectionFields, $initializer, $cloner)
+ {
+ $this->proxyClassName = $proxyClassName;
+ $this->identifierFields = $identifierFields;
+ $this->reflectionFields = $reflectionFields;
+ $this->initializer = $initializer;
+ $this->cloner = $cloner;
+ }
+}
+
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php
new file mode 100644
index 0000000..925dcd1
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Proxy/ProxyGenerator.php
@@ -0,0 +1,1037 @@
+.
+ */
+
+namespace Doctrine\Common\Proxy;
+
+use Doctrine\Common\Persistence\Mapping\ClassMetadata;
+use Doctrine\Common\Proxy\Exception\InvalidArgumentException;
+use Doctrine\Common\Proxy\Exception\UnexpectedValueException;
+use Doctrine\Common\Util\ClassUtils;
+
+/**
+ * This factory is used to generate proxy classes.
+ * It builds proxies from given parameters, a template and class metadata.
+ *
+ * @author Marco Pivetta
+ * @since 2.4
+ */
+class ProxyGenerator
+{
+ /**
+ * Used to match very simple id methods that don't need
+ * to be decorated since the identifier is known.
+ */
+ const PATTERN_MATCH_ID_METHOD = '((public\s+)?(function\s+%s\s*\(\)\s*)\s*{\s*return\s*\$this->%s;\s*})i';
+
+ /**
+ * The namespace that contains all proxy classes.
+ *
+ * @var string
+ */
+ private $proxyNamespace;
+
+ /**
+ * The directory that contains all proxy classes.
+ *
+ * @var string
+ */
+ private $proxyDirectory;
+
+ /**
+ * Map of callables used to fill in placeholders set in the template.
+ *
+ * @var string[]|callable[]
+ */
+ protected $placeholders = [
+ 'baseProxyInterface' => Proxy::class,
+ 'additionalProperties' => '',
+ ];
+
+ /**
+ * Template used as a blueprint to generate proxies.
+ *
+ * @var string
+ */
+ protected $proxyClassTemplate = ';
+
+/**
+ * DO NOT EDIT THIS FILE - IT WAS CREATED BY DOCTRINE\'S PROXY GENERATOR
+ */
+class extends \ implements \
+{
+ /**
+ * @var \Closure the callback responsible for loading properties in the proxy object. This callback is called with
+ * three parameters, being respectively the proxy object to be initialized, the method that triggered the
+ * initialization process and an array of ordered parameters that were passed to that method.
+ *
+ * @see \Doctrine\Common\Persistence\Proxy::__setInitializer
+ */
+ public $__initializer__;
+
+ /**
+ * @var \Closure the callback responsible of loading properties that need to be copied in the cloned object
+ *
+ * @see \Doctrine\Common\Persistence\Proxy::__setCloner
+ */
+ public $__cloner__;
+
+ /**
+ * @var boolean flag indicating if this object was already initialized
+ *
+ * @see \Doctrine\Common\Persistence\Proxy::__isInitialized
+ */
+ public $__isInitialized__ = false;
+
+ /**
+ * @var array properties to be lazy loaded, with keys being the property
+ * names and values being their default values
+ *
+ * @see \Doctrine\Common\Persistence\Proxy::__getLazyProperties
+ */
+ public static $lazyPropertiesDefaults = [];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /**
+ * Forces initialization of the proxy
+ */
+ public function __load()
+ {
+ $this->__initializer__ && $this->__initializer__->__invoke($this, \'__load\', []);
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ */
+ public function __isInitialized()
+ {
+ return $this->__isInitialized__;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ */
+ public function __setInitialized($initialized)
+ {
+ $this->__isInitialized__ = $initialized;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ */
+ public function __setInitializer(\Closure $initializer = null)
+ {
+ $this->__initializer__ = $initializer;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ */
+ public function __getInitializer()
+ {
+ return $this->__initializer__;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ */
+ public function __setCloner(\Closure $cloner = null)
+ {
+ $this->__cloner__ = $cloner;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific cloning logic
+ */
+ public function __getCloner()
+ {
+ return $this->__cloner__;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @internal generated method: use only when explicitly handling proxy specific loading logic
+ * @static
+ */
+ public function __getLazyProperties()
+ {
+ return self::$lazyPropertiesDefaults;
+ }
+
+
+}
+';
+
+ /**
+ * Initializes a new instance of the ProxyFactory class that is
+ * connected to the given EntityManager.
+ *
+ * @param string $proxyDirectory The directory to use for the proxy classes. It must exist.
+ * @param string $proxyNamespace The namespace to use for the proxy classes.
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct($proxyDirectory, $proxyNamespace)
+ {
+ if ( ! $proxyDirectory) {
+ throw InvalidArgumentException::proxyDirectoryRequired();
+ }
+
+ if ( ! $proxyNamespace) {
+ throw InvalidArgumentException::proxyNamespaceRequired();
+ }
+
+ $this->proxyDirectory = $proxyDirectory;
+ $this->proxyNamespace = $proxyNamespace;
+ }
+
+ /**
+ * Sets a placeholder to be replaced in the template.
+ *
+ * @param string $name
+ * @param string|callable $placeholder
+ *
+ * @throws InvalidArgumentException
+ */
+ public function setPlaceholder($name, $placeholder)
+ {
+ if ( ! is_string($placeholder) && ! is_callable($placeholder)) {
+ throw InvalidArgumentException::invalidPlaceholder($name);
+ }
+
+ $this->placeholders[$name] = $placeholder;
+ }
+
+ /**
+ * Sets the base template used to create proxy classes.
+ *
+ * @param string $proxyClassTemplate
+ */
+ public function setProxyClassTemplate($proxyClassTemplate)
+ {
+ $this->proxyClassTemplate = (string) $proxyClassTemplate;
+ }
+
+ /**
+ * Generates a proxy class file.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class Metadata for the original class.
+ * @param string|bool $fileName Filename (full path) for the generated class. If none is given, eval() is used.
+ *
+ * @throws UnexpectedValueException
+ */
+ public function generateProxyClass(ClassMetadata $class, $fileName = false)
+ {
+ preg_match_all('(<([a-zA-Z]+)>)', $this->proxyClassTemplate, $placeholderMatches);
+
+ $placeholderMatches = array_combine($placeholderMatches[0], $placeholderMatches[1]);
+ $placeholders = [];
+
+ foreach ($placeholderMatches as $placeholder => $name) {
+ $placeholders[$placeholder] = isset($this->placeholders[$name])
+ ? $this->placeholders[$name]
+ : [$this, 'generate' . $name];
+ }
+
+ foreach ($placeholders as & $placeholder) {
+ if (is_callable($placeholder)) {
+ $placeholder = call_user_func($placeholder, $class);
+ }
+ }
+
+ $proxyCode = strtr($this->proxyClassTemplate, $placeholders);
+
+ if ( ! $fileName) {
+ $proxyClassName = $this->generateNamespace($class) . '\\' . $this->generateProxyShortClassName($class);
+
+ if ( ! class_exists($proxyClassName)) {
+ eval(substr($proxyCode, 5));
+ }
+
+ return;
+ }
+
+ $parentDirectory = dirname($fileName);
+
+ if ( ! is_dir($parentDirectory) && (false === @mkdir($parentDirectory, 0775, true))) {
+ throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
+ }
+
+ if ( ! is_writable($parentDirectory)) {
+ throw UnexpectedValueException::proxyDirectoryNotWritable($this->proxyDirectory);
+ }
+
+ $tmpFileName = $fileName . '.' . uniqid('', true);
+
+ file_put_contents($tmpFileName, $proxyCode);
+ @chmod($tmpFileName, 0664);
+ rename($tmpFileName, $fileName);
+ }
+
+ /**
+ * Generates the proxy short class name to be used in the template.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateProxyShortClassName(ClassMetadata $class)
+ {
+ $proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
+ $parts = explode('\\', strrev($proxyClassName), 2);
+
+ return strrev($parts[0]);
+ }
+
+ /**
+ * Generates the proxy namespace.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateNamespace(ClassMetadata $class)
+ {
+ $proxyClassName = ClassUtils::generateProxyClassName($class->getName(), $this->proxyNamespace);
+ $parts = explode('\\', strrev($proxyClassName), 2);
+
+ return strrev($parts[1]);
+ }
+
+ /**
+ * Generates the original class name.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateClassName(ClassMetadata $class)
+ {
+ return ltrim($class->getName(), '\\');
+ }
+
+ /**
+ * Generates the array representation of lazy loaded public properties and their default values.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateLazyPropertiesDefaults(ClassMetadata $class)
+ {
+ $lazyPublicProperties = $this->getLazyLoadedPublicProperties($class);
+ $values = [];
+
+ foreach ($lazyPublicProperties as $key => $value) {
+ $values[] = var_export($key, true) . ' => ' . var_export($value, true);
+ }
+
+ return implode(', ', $values);
+ }
+
+ /**
+ * Generates the constructor code (un-setting public lazy loaded properties, setting identifier field values).
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateConstructorImpl(ClassMetadata $class)
+ {
+ $constructorImpl = <<<'EOT'
+ /**
+ * @param \Closure $initializer
+ * @param \Closure $cloner
+ */
+ public function __construct($initializer = null, $cloner = null)
+ {
+
+EOT;
+ $toUnset = [];
+
+ foreach ($this->getLazyLoadedPublicProperties($class) as $lazyPublicProperty => $unused) {
+ $toUnset[] = '$this->' . $lazyPublicProperty;
+ }
+
+ $constructorImpl .= (empty($toUnset) ? '' : ' unset(' . implode(', ', $toUnset) . ");\n")
+ . <<<'EOT'
+
+ $this->__initializer__ = $initializer;
+ $this->__cloner__ = $cloner;
+ }
+EOT;
+
+ return $constructorImpl;
+ }
+
+ /**
+ * Generates the magic getter invoked when lazy loaded public properties are requested.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateMagicGet(ClassMetadata $class)
+ {
+ $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
+ $reflectionClass = $class->getReflectionClass();
+ $hasParentGet = false;
+ $returnReference = '';
+ $inheritDoc = '';
+
+ if ($reflectionClass->hasMethod('__get')) {
+ $hasParentGet = true;
+ $inheritDoc = '{@inheritDoc}';
+
+ if ($reflectionClass->getMethod('__get')->returnsReference()) {
+ $returnReference = '& ';
+ }
+ }
+
+ if (empty($lazyPublicProperties) && ! $hasParentGet) {
+ return '';
+ }
+
+ $magicGet = <<__getLazyProperties())) {
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', [$name]);
+
+ return $this->$name;
+ }
+
+
+EOT;
+ }
+
+ if ($hasParentGet) {
+ $magicGet .= <<<'EOT'
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__get', [$name]);
+
+ return parent::__get($name);
+
+EOT;
+ } else {
+ $magicGet .= <<<'EOT'
+ trigger_error(sprintf('Undefined property: %s::$%s', __CLASS__, $name), E_USER_NOTICE);
+
+EOT;
+ }
+
+ $magicGet .= " }";
+
+ return $magicGet;
+ }
+
+ /**
+ * Generates the magic setter (currently unused).
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateMagicSet(ClassMetadata $class)
+ {
+ $lazyPublicProperties = $this->getLazyLoadedPublicProperties($class);
+ $hasParentSet = $class->getReflectionClass()->hasMethod('__set');
+
+ if (empty($lazyPublicProperties) && ! $hasParentSet) {
+ return '';
+ }
+
+ $inheritDoc = $hasParentSet ? '{@inheritDoc}' : '';
+ $magicSet = <<__getLazyProperties())) {
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__set', [$name, $value]);
+
+ $this->$name = $value;
+
+ return;
+ }
+
+
+EOT;
+ }
+
+ if ($hasParentSet) {
+ $magicSet .= <<<'EOT'
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__set', [$name, $value]);
+
+ return parent::__set($name, $value);
+EOT;
+ } else {
+ $magicSet .= " \$this->\$name = \$value;";
+ }
+
+ $magicSet .= "\n }";
+
+ return $magicSet;
+ }
+
+ /**
+ * Generates the magic issetter invoked when lazy loaded public properties are checked against isset().
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateMagicIsset(ClassMetadata $class)
+ {
+ $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
+ $hasParentIsset = $class->getReflectionClass()->hasMethod('__isset');
+
+ if (empty($lazyPublicProperties) && ! $hasParentIsset) {
+ return '';
+ }
+
+ $inheritDoc = $hasParentIsset ? '{@inheritDoc}' : '';
+ $magicIsset = <<__getLazyProperties())) {
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__isset', [$name]);
+
+ return isset($this->$name);
+ }
+
+
+EOT;
+ }
+
+ if ($hasParentIsset) {
+ $magicIsset .= <<<'EOT'
+ $this->__initializer__ && $this->__initializer__->__invoke($this, '__isset', [$name]);
+
+ return parent::__isset($name);
+
+EOT;
+ } else {
+ $magicIsset .= " return false;";
+ }
+
+ return $magicIsset . "\n }";
+ }
+
+ /**
+ * Generates implementation for the `__sleep` method of proxies.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateSleepImpl(ClassMetadata $class)
+ {
+ $hasParentSleep = $class->getReflectionClass()->hasMethod('__sleep');
+ $inheritDoc = $hasParentSleep ? '{@inheritDoc}' : '';
+ $sleepImpl = <<__isInitialized__) {
+ $properties = array_diff($properties, array_keys($this->__getLazyProperties()));
+ }
+
+ return $properties;
+ }
+EOT;
+ }
+
+ $allProperties = ['__isInitialized__'];
+
+ /* @var $prop \ReflectionProperty */
+ foreach ($class->getReflectionClass()->getProperties() as $prop) {
+ if ($prop->isStatic()) {
+ continue;
+ }
+
+ $allProperties[] = $prop->isPrivate()
+ ? "\0" . $prop->getDeclaringClass()->getName() . "\0" . $prop->getName()
+ : $prop->getName();
+ }
+
+ $lazyPublicProperties = array_keys($this->getLazyLoadedPublicProperties($class));
+ $protectedProperties = array_diff($allProperties, $lazyPublicProperties);
+
+ foreach ($allProperties as &$property) {
+ $property = var_export($property, true);
+ }
+
+ foreach ($protectedProperties as &$property) {
+ $property = var_export($property, true);
+ }
+
+ $allProperties = implode(', ', $allProperties);
+ $protectedProperties = implode(', ', $protectedProperties);
+
+ return $sleepImpl . <<__isInitialized__) {
+ return [$allProperties];
+ }
+
+ return [$protectedProperties];
+ }
+EOT;
+ }
+
+ /**
+ * Generates implementation for the `__wakeup` method of proxies.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateWakeupImpl(ClassMetadata $class)
+ {
+ $unsetPublicProperties = [];
+ $hasWakeup = $class->getReflectionClass()->hasMethod('__wakeup');
+
+ foreach (array_keys($this->getLazyLoadedPublicProperties($class)) as $lazyPublicProperty) {
+ $unsetPublicProperties[] = '$this->' . $lazyPublicProperty;
+ }
+
+ $shortName = $this->generateProxyShortClassName($class);
+ $inheritDoc = $hasWakeup ? '{@inheritDoc}' : '';
+ $wakeupImpl = <<__isInitialized__) {
+ \$this->__initializer__ = function ($shortName \$proxy) {
+ \$proxy->__setInitializer(null);
+ \$proxy->__setCloner(null);
+
+ \$existingProperties = get_object_vars(\$proxy);
+
+ foreach (\$proxy->__getLazyProperties() as \$property => \$defaultValue) {
+ if ( ! array_key_exists(\$property, \$existingProperties)) {
+ \$proxy->\$property = \$defaultValue;
+ }
+ }
+ };
+
+EOT;
+
+ if ( ! empty($unsetPublicProperties)) {
+ $wakeupImpl .= "\n unset(" . implode(', ', $unsetPublicProperties) . ");";
+ }
+
+ $wakeupImpl .= "\n }";
+
+ if ($hasWakeup) {
+ $wakeupImpl .= "\n parent::__wakeup();";
+ }
+
+ $wakeupImpl .= "\n }";
+
+ return $wakeupImpl;
+ }
+
+ /**
+ * Generates implementation for the `__clone` method of proxies.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateCloneImpl(ClassMetadata $class)
+ {
+ $hasParentClone = $class->getReflectionClass()->hasMethod('__clone');
+ $inheritDoc = $hasParentClone ? '{@inheritDoc}' : '';
+ $callParentClone = $hasParentClone ? "\n parent::__clone();\n" : '';
+
+ return <<__cloner__ && \$this->__cloner__->__invoke(\$this, '__clone', []);
+$callParentClone }
+EOT;
+ }
+
+ /**
+ * Generates decorated methods by picking those available in the parent class.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return string
+ */
+ private function generateMethods(ClassMetadata $class)
+ {
+ $methods = '';
+ $methodNames = [];
+ $reflectionMethods = $class->getReflectionClass()->getMethods(\ReflectionMethod::IS_PUBLIC);
+ $skippedMethods = [
+ '__sleep' => true,
+ '__clone' => true,
+ '__wakeup' => true,
+ '__get' => true,
+ '__set' => true,
+ '__isset' => true,
+ ];
+
+ foreach ($reflectionMethods as $method) {
+ $name = $method->getName();
+
+ if (
+ $method->isConstructor() ||
+ isset($skippedMethods[strtolower($name)]) ||
+ isset($methodNames[$name]) ||
+ $method->isFinal() ||
+ $method->isStatic() ||
+ ( ! $method->isPublic())
+ ) {
+ continue;
+ }
+
+ $methodNames[$name] = true;
+ $methods .= "\n /**\n"
+ . " * {@inheritDoc}\n"
+ . " */\n"
+ . ' public function ';
+
+ if ($method->returnsReference()) {
+ $methods .= '&';
+ }
+
+ $methods .= $name . '(' . $this->buildParametersString($class, $method, $method->getParameters()) . ')';
+ $methods .= $this->getMethodReturnType($method);
+ $methods .= "\n" . ' {' . "\n";
+
+ if ($this->isShortIdentifierGetter($method, $class)) {
+ $identifier = lcfirst(substr($name, 3));
+ $fieldType = $class->getTypeOfField($identifier);
+ $cast = in_array($fieldType, ['integer', 'smallint']) ? '(int) ' : '';
+
+ $methods .= ' if ($this->__isInitialized__ === false) {' . "\n";
+ $methods .= ' return ' . $cast . ' parent::' . $method->getName() . "();\n";
+ $methods .= ' }' . "\n\n";
+ }
+
+ $invokeParamsString = implode(', ', $this->getParameterNamesForInvoke($method->getParameters()));
+ $callParamsString = implode(', ', $this->getParameterNamesForParentCall($method->getParameters()));
+
+ $methods .= "\n \$this->__initializer__ "
+ . "&& \$this->__initializer__->__invoke(\$this, " . var_export($name, true)
+ . ", [" . $invokeParamsString . "]);"
+ . "\n\n return parent::" . $name . '(' . $callParamsString . ');'
+ . "\n" . ' }' . "\n";
+ }
+
+ return $methods;
+ }
+
+ /**
+ * Generates the Proxy file name.
+ *
+ * @param string $className
+ * @param string $baseDirectory Optional base directory for proxy file name generation.
+ * If not specified, the directory configured on the Configuration of the
+ * EntityManager will be used by this factory.
+ *
+ * @return string
+ */
+ public function getProxyFileName($className, $baseDirectory = null)
+ {
+ $baseDirectory = $baseDirectory ?: $this->proxyDirectory;
+
+ return rtrim($baseDirectory, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . Proxy::MARKER
+ . str_replace('\\', '', $className) . '.php';
+ }
+
+ /**
+ * Checks if the method is a short identifier getter.
+ *
+ * What does this mean? For proxy objects the identifier is already known,
+ * however accessing the getter for this identifier usually triggers the
+ * lazy loading, leading to a query that may not be necessary if only the
+ * ID is interesting for the userland code (for example in views that
+ * generate links to the entity, but do not display anything else).
+ *
+ * @param \ReflectionMethod $method
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return boolean
+ */
+ private function isShortIdentifierGetter($method, ClassMetadata $class)
+ {
+ $identifier = lcfirst(substr($method->getName(), 3));
+ $startLine = $method->getStartLine();
+ $endLine = $method->getEndLine();
+ $cheapCheck = (
+ $method->getNumberOfParameters() == 0
+ && substr($method->getName(), 0, 3) == 'get'
+ && in_array($identifier, $class->getIdentifier(), true)
+ && $class->hasField($identifier)
+ && (($endLine - $startLine) <= 4)
+ );
+
+ if ($cheapCheck) {
+ $code = file($method->getDeclaringClass()->getFileName());
+ $code = trim(implode(' ', array_slice($code, $startLine - 1, $endLine - $startLine + 1)));
+
+ $pattern = sprintf(self::PATTERN_MATCH_ID_METHOD, $method->getName(), $identifier);
+
+ if (preg_match($pattern, $code)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Generates the list of public properties to be lazy loaded, with their default values.
+ *
+ * @param \Doctrine\Common\Persistence\Mapping\ClassMetadata $class
+ *
+ * @return mixed[]
+ */
+ private function getLazyLoadedPublicProperties(ClassMetadata $class)
+ {
+ $defaultProperties = $class->getReflectionClass()->getDefaultProperties();
+ $properties = [];
+
+ foreach ($class->getReflectionClass()->getProperties(\ReflectionProperty::IS_PUBLIC) as $property) {
+ $name = $property->getName();
+
+ if (($class->hasField($name) || $class->hasAssociation($name)) && ! $class->isIdentifier($name)) {
+ $properties[$name] = $defaultProperties[$name];
+ }
+ }
+
+ return $properties;
+ }
+
+ /**
+ * @param ClassMetadata $class
+ * @param \ReflectionMethod $method
+ * @param \ReflectionParameter[] $parameters
+ *
+ * @return string
+ */
+ private function buildParametersString(ClassMetadata $class, \ReflectionMethod $method, array $parameters)
+ {
+ $parameterDefinitions = [];
+
+ /* @var $param \ReflectionParameter */
+ foreach ($parameters as $param) {
+ $parameterDefinition = '';
+
+ if ($parameterType = $this->getParameterType($class, $method, $param)) {
+ $parameterDefinition .= $parameterType . ' ';
+ }
+
+ if ($param->isPassedByReference()) {
+ $parameterDefinition .= '&';
+ }
+
+ if (method_exists($param, 'isVariadic') && $param->isVariadic()) {
+ $parameterDefinition .= '...';
+ }
+
+ $parameters[] = '$' . $param->getName();
+ $parameterDefinition .= '$' . $param->getName();
+
+ if ($param->isDefaultValueAvailable()) {
+ $parameterDefinition .= ' = ' . var_export($param->getDefaultValue(), true);
+ }
+
+ $parameterDefinitions[] = $parameterDefinition;
+ }
+
+ return implode(', ', $parameterDefinitions);
+ }
+
+ /**
+ * @param ClassMetadata $class
+ * @param \ReflectionMethod $method
+ * @param \ReflectionParameter $parameter
+ *
+ * @return string|null
+ */
+ private function getParameterType(ClassMetadata $class, \ReflectionMethod $method, \ReflectionParameter $parameter)
+ {
+
+ // We need to pick the type hint class too
+ if ($parameter->isArray()) {
+ return 'array';
+ }
+
+ if ($parameter->isCallable()) {
+ return 'callable';
+ }
+
+ if (method_exists($parameter, 'hasType') && $parameter->hasType() && $parameter->getType()->isBuiltin()) {
+ return (string) $parameter->getType();
+ }
+
+ try {
+ $parameterClass = $parameter->getClass();
+
+ if ($parameterClass) {
+ return '\\' . $parameterClass->getName();
+ }
+ } catch (\ReflectionException $previous) {
+ throw UnexpectedValueException::invalidParameterTypeHint(
+ $class->getName(),
+ $method->getName(),
+ $parameter->getName(),
+ $previous
+ );
+ }
+
+ return null;
+ }
+
+ /**
+ * @param \ReflectionParameter[] $parameters
+ *
+ * @return string[]
+ */
+ private function getParameterNamesForInvoke(array $parameters)
+ {
+ return array_map(
+ function (\ReflectionParameter $parameter) {
+ return '$' . $parameter->getName();
+ },
+ $parameters
+ );
+ }
+
+ /**
+ * @param \ReflectionParameter[] $parameters
+ *
+ * @return string[]
+ */
+ private function getParameterNamesForParentCall(array $parameters)
+ {
+ return array_map(
+ function (\ReflectionParameter $parameter) {
+ $name = '';
+
+ if (method_exists($parameter, 'isVariadic') && $parameter->isVariadic()) {
+ $name .= '...';
+ }
+
+ $name .= '$' . $parameter->getName();
+
+ return $name;
+ },
+ $parameters
+ );
+ }
+
+ /**
+ * @Param \ReflectionMethod $method
+ *
+ * @return string
+ */
+ private function getMethodReturnType(\ReflectionMethod $method)
+ {
+ if (! (method_exists($method, 'hasReturnType') && $method->hasReturnType())) {
+ return '';
+ }
+
+ $returnType = $method->getReturnType();
+
+ if ($returnType->isBuiltin()) {
+ return ': ' . $returnType;
+ }
+
+ $nameLower = strtolower((string) $returnType);
+
+ if ('self' === $nameLower) {
+ return ': \\' . $method->getDeclaringClass()->getName();
+ }
+
+ if ('parent' === $nameLower) {
+ return ': \\' . $method->getDeclaringClass()->getParentClass()->getName();
+ }
+
+ return ': \\' . (string) $returnType;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php
new file mode 100644
index 0000000..639fd69
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ClassFinderInterface.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+/**
+ * Finds a class in a PSR-0 structure.
+ *
+ * @author Karoly Negyesi
+ */
+interface ClassFinderInterface
+{
+ /**
+ * Finds a class.
+ *
+ * @param string $class The name of the class.
+ *
+ * @return string|null The name of the class or NULL if not found.
+ */
+ public function findFile($class);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php
new file mode 100644
index 0000000..418bb0f
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php
@@ -0,0 +1,79 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+/**
+ * Finds a class in a PSR-0 structure.
+ *
+ * @author Karoly Negyesi
+ */
+class Psr0FindFile implements ClassFinderInterface
+{
+ /**
+ * The PSR-0 prefixes.
+ *
+ * @var array
+ */
+ protected $prefixes;
+
+ /**
+ * @param array $prefixes An array of prefixes. Each key is a PHP namespace and each value is
+ * a list of directories.
+ */
+ public function __construct($prefixes)
+ {
+ $this->prefixes = $prefixes;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function findFile($class)
+ {
+ $lastNsPos = strrpos($class, '\\');
+ if ('\\' == $class[0]) {
+ $class = substr($class, 1);
+ }
+
+ if (false !== $lastNsPos) {
+ // namespaced class name
+ $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $lastNsPos)) . DIRECTORY_SEPARATOR;
+ $className = substr($class, $lastNsPos + 1);
+ } else {
+ // PEAR-like class name
+ $classPath = null;
+ $className = $class;
+ }
+
+ $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
+
+ foreach ($this->prefixes as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (is_file($dir . DIRECTORY_SEPARATOR . $classPath)) {
+ return $dir . DIRECTORY_SEPARATOR . $classPath;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php
new file mode 100644
index 0000000..3d970ee
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/ReflectionProviderInterface.php
@@ -0,0 +1,48 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+interface ReflectionProviderInterface
+{
+ /**
+ * Gets the ReflectionClass equivalent for this class.
+ *
+ * @return \ReflectionClass
+ */
+ public function getReflectionClass();
+
+ /**
+ * Gets the ReflectionMethod equivalent for this class.
+ *
+ * @param string $name
+ *
+ * @return \ReflectionMethod
+ */
+ public function getReflectionMethod($name);
+
+ /**
+ * Gets the ReflectionProperty equivalent for this class.
+ *
+ * @param string $name
+ *
+ * @return \ReflectionProperty
+ */
+ public function getReflectionProperty($name);
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php
new file mode 100644
index 0000000..4e8ef53
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/RuntimePublicReflectionProperty.php
@@ -0,0 +1,76 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+use Doctrine\Common\Proxy\Proxy;
+use ReflectionProperty;
+
+/**
+ * PHP Runtime Reflection Public Property - special overrides for public properties.
+ *
+ * @author Marco Pivetta
+ * @since 2.4
+ */
+class RuntimePublicReflectionProperty extends ReflectionProperty
+{
+ /**
+ * {@inheritDoc}
+ *
+ * Checks is the value actually exist before fetching it.
+ * This is to avoid calling `__get` on the provided $object if it
+ * is a {@see \Doctrine\Common\Proxy\Proxy}.
+ */
+ public function getValue($object = null)
+ {
+ $name = $this->getName();
+
+ if ($object instanceof Proxy && ! $object->__isInitialized()) {
+ $originalInitializer = $object->__getInitializer();
+ $object->__setInitializer(null);
+ $val = isset($object->$name) ? $object->$name : null;
+ $object->__setInitializer($originalInitializer);
+
+ return $val;
+ }
+
+ return isset($object->$name) ? parent::getValue($object) : null;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * Avoids triggering lazy loading via `__set` if the provided object
+ * is a {@see \Doctrine\Common\Proxy\Proxy}.
+ * @link https://bugs.php.net/bug.php?id=63463
+ */
+ public function setValue($object, $value = null)
+ {
+ if ( ! ($object instanceof Proxy && ! $object->__isInitialized())) {
+ parent::setValue($object, $value);
+
+ return;
+ }
+
+ $originalInitializer = $object->__getInitializer();
+ $object->__setInitializer(null);
+ parent::setValue($object, $value);
+ $object->__setInitializer($originalInitializer);
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php
new file mode 100644
index 0000000..2d0f5b0
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionClass.php
@@ -0,0 +1,433 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+use ReflectionClass;
+use ReflectionException;
+
+class StaticReflectionClass extends ReflectionClass
+{
+ /**
+ * The static reflection parser object.
+ *
+ * @var StaticReflectionParser
+ */
+ private $staticReflectionParser;
+
+ /**
+ * @param StaticReflectionParser $staticReflectionParser
+ */
+ public function __construct(StaticReflectionParser $staticReflectionParser)
+ {
+ $this->staticReflectionParser = $staticReflectionParser;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getName()
+ {
+ return $this->staticReflectionParser->getClassName();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDocComment()
+ {
+ return $this->staticReflectionParser->getDocComment();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getNamespaceName()
+ {
+ return $this->staticReflectionParser->getNamespaceName();
+ }
+
+ /**
+ * @return array
+ */
+ public function getUseStatements()
+ {
+ return $this->staticReflectionParser->getUseStatements();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethod($name)
+ {
+ return $this->staticReflectionParser->getReflectionMethod($name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getProperty($name)
+ {
+ return $this->staticReflectionParser->getReflectionProperty($name);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public static function export($argument, $return = false)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getConstant($name)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getConstants()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getConstructor()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDefaultProperties()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getEndLine()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getExtension()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getExtensionName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getFileName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getInterfaceNames()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getInterfaces()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getMethods($filter = null)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getModifiers()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getParentClass()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getProperties($filter = null)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getShortName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getStartLine()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getStaticProperties()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getStaticPropertyValue($name, $default = '')
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getTraitAliases()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getTraitNames()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getTraits()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasConstant($name)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasMethod($name)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function hasProperty($name)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function implementsInterface($interface)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function inNamespace()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isAbstract()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isCloneable()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isFinal()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isInstance($object)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isInstantiable()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isInterface()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isInternal()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isIterateable()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isSubclassOf($class)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isTrait()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isUserDefined()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function newInstance($args)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function newInstanceArgs(array $args = [])
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function newInstanceWithoutConstructor()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function setStaticPropertyValue($name, $value)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function __toString()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php
new file mode 100644
index 0000000..8d5380b
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionMethod.php
@@ -0,0 +1,362 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+use ReflectionException;
+use ReflectionMethod;
+
+class StaticReflectionMethod extends ReflectionMethod
+{
+ /**
+ * The PSR-0 parser object.
+ *
+ * @var StaticReflectionParser
+ */
+ protected $staticReflectionParser;
+
+ /**
+ * The name of the method.
+ *
+ * @var string
+ */
+ protected $methodName;
+
+ /**
+ * @param StaticReflectionParser $staticReflectionParser
+ * @param string $methodName
+ */
+ public function __construct(StaticReflectionParser $staticReflectionParser, $methodName)
+ {
+ $this->staticReflectionParser = $staticReflectionParser;
+ $this->methodName = $methodName;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getName()
+ {
+ return $this->methodName;
+ }
+
+ /**
+ * @return StaticReflectionParser
+ */
+ protected function getStaticReflectionParser()
+ {
+ return $this->staticReflectionParser->getStaticReflectionParserForDeclaringClass('method', $this->methodName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDeclaringClass()
+ {
+ return $this->getStaticReflectionParser()->getReflectionClass();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getNamespaceName()
+ {
+ return $this->getStaticReflectionParser()->getNamespaceName();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDocComment()
+ {
+ return $this->getStaticReflectionParser()->getDocComment('method', $this->methodName);
+ }
+
+ /**
+ * @return array
+ */
+ public function getUseStatements()
+ {
+ return $this->getStaticReflectionParser()->getUseStatements();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public static function export($class, $name, $return = false)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClosure($object)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getModifiers()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getPrototype()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function invoke($object, $parameter = null)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function invokeArgs($object, array $args)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isAbstract()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isConstructor()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isDestructor()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isFinal()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isPrivate()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isProtected()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isPublic()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isStatic()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function setAccessible($accessible)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function __toString()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getClosureThis()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getEndLine()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getExtension()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getExtensionName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getFileName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getNumberOfParameters()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getNumberOfRequiredParameters()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getParameters()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getShortName()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getStartLine()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getStaticVariables()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function inNamespace()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isClosure()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isDeprecated()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isInternal()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isUserDefined()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function returnsReference()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php
new file mode 100644
index 0000000..c48e9ba
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionParser.php
@@ -0,0 +1,307 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+use Doctrine\Common\Annotations\TokenParser;
+use ReflectionException;
+
+/**
+ * Parses a file for namespaces/use/class declarations.
+ *
+ * @author Karoly Negyesi
+ */
+class StaticReflectionParser implements ReflectionProviderInterface
+{
+ /**
+ * The fully qualified class name.
+ *
+ * @var string
+ */
+ protected $className;
+
+ /**
+ * The short class name.
+ *
+ * @var string
+ */
+ protected $shortClassName;
+
+ /**
+ * Whether the caller only wants class annotations.
+ *
+ * @var boolean.
+ */
+ protected $classAnnotationOptimize;
+
+ /**
+ * Whether the parser has run.
+ *
+ * @var boolean
+ */
+ protected $parsed = false;
+
+ /**
+ * The namespace of the class.
+ *
+ * @var string
+ */
+ protected $namespace = '';
+
+ /**
+ * The use statements of the class.
+ *
+ * @var array
+ */
+ protected $useStatements = [];
+
+ /**
+ * The docComment of the class.
+ *
+ * @var string
+ */
+ protected $docComment = [
+ 'class' => '',
+ 'property' => [],
+ 'method' => []
+ ];
+
+ /**
+ * The name of the class this class extends, if any.
+ *
+ * @var string
+ */
+ protected $parentClassName = '';
+
+ /**
+ * The parent PSR-0 Parser.
+ *
+ * @var \Doctrine\Common\Reflection\StaticReflectionParser
+ */
+ protected $parentStaticReflectionParser;
+
+ /**
+ * Parses a class residing in a PSR-0 hierarchy.
+ *
+ * @param string $className The full, namespaced class name.
+ * @param ClassFinderInterface $finder A ClassFinder object which finds the class.
+ * @param boolean $classAnnotationOptimize Only retrieve the class docComment.
+ * Presumes there is only one statement per line.
+ */
+ public function __construct($className, $finder, $classAnnotationOptimize = false)
+ {
+ $this->className = ltrim($className, '\\');
+ $lastNsPos = strrpos($this->className, '\\');
+
+ if ($lastNsPos !== false) {
+ $this->namespace = substr($this->className, 0, $lastNsPos);
+ $this->shortClassName = substr($this->className, $lastNsPos + 1);
+ } else {
+ $this->shortClassName = $this->className;
+ }
+
+ $this->finder = $finder;
+ $this->classAnnotationOptimize = $classAnnotationOptimize;
+ }
+
+ /**
+ * @return void
+ */
+ protected function parse()
+ {
+ if ($this->parsed || !$fileName = $this->finder->findFile($this->className)) {
+ return;
+ }
+ $this->parsed = true;
+ $contents = file_get_contents($fileName);
+ if ($this->classAnnotationOptimize) {
+ if (preg_match("/\A.*^\s*((abstract|final)\s+)?class\s+{$this->shortClassName}\s+/sm", $contents, $matches)) {
+ $contents = $matches[0];
+ }
+ }
+ $tokenParser = new TokenParser($contents);
+ $docComment = '';
+ while ($token = $tokenParser->next(false)) {
+ if (is_array($token)) {
+ switch ($token[0]) {
+ case T_USE:
+ $this->useStatements = array_merge($this->useStatements, $tokenParser->parseUseStatement());
+ break;
+ case T_DOC_COMMENT:
+ $docComment = $token[1];
+ break;
+ case T_CLASS:
+ $this->docComment['class'] = $docComment;
+ $docComment = '';
+ break;
+ case T_VAR:
+ case T_PRIVATE:
+ case T_PROTECTED:
+ case T_PUBLIC:
+ $token = $tokenParser->next();
+ if ($token[0] === T_VARIABLE) {
+ $propertyName = substr($token[1], 1);
+ $this->docComment['property'][$propertyName] = $docComment;
+ continue 2;
+ }
+ if ($token[0] !== T_FUNCTION) {
+ // For example, it can be T_FINAL.
+ continue 2;
+ }
+ // No break.
+ case T_FUNCTION:
+ // The next string after function is the name, but
+ // there can be & before the function name so find the
+ // string.
+ while (($token = $tokenParser->next()) && $token[0] !== T_STRING);
+ $methodName = $token[1];
+ $this->docComment['method'][$methodName] = $docComment;
+ $docComment = '';
+ break;
+ case T_EXTENDS:
+ $this->parentClassName = $tokenParser->parseClass();
+ $nsPos = strpos($this->parentClassName, '\\');
+ $fullySpecified = false;
+ if ($nsPos === 0) {
+ $fullySpecified = true;
+ } else {
+ if ($nsPos) {
+ $prefix = strtolower(substr($this->parentClassName, 0, $nsPos));
+ $postfix = substr($this->parentClassName, $nsPos);
+ } else {
+ $prefix = strtolower($this->parentClassName);
+ $postfix = '';
+ }
+ foreach ($this->useStatements as $alias => $use) {
+ if ($alias == $prefix) {
+ $this->parentClassName = '\\' . $use . $postfix;
+ $fullySpecified = true;
+ }
+ }
+ }
+ if (!$fullySpecified) {
+ $this->parentClassName = '\\' . $this->namespace . '\\' . $this->parentClassName;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ /**
+ * @return StaticReflectionParser
+ */
+ protected function getParentStaticReflectionParser()
+ {
+ if (empty($this->parentStaticReflectionParser)) {
+ $this->parentStaticReflectionParser = new static($this->parentClassName, $this->finder);
+ }
+
+ return $this->parentStaticReflectionParser;
+ }
+
+ /**
+ * @return string
+ */
+ public function getClassName()
+ {
+ return $this->className;
+ }
+
+ /**
+ * @return string
+ */
+ public function getNamespaceName()
+ {
+ return $this->namespace;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getReflectionClass()
+ {
+ return new StaticReflectionClass($this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getReflectionMethod($methodName)
+ {
+ return new StaticReflectionMethod($this, $methodName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getReflectionProperty($propertyName)
+ {
+ return new StaticReflectionProperty($this, $propertyName);
+ }
+
+ /**
+ * Gets the use statements from this file.
+ *
+ * @return array
+ */
+ public function getUseStatements()
+ {
+ $this->parse();
+
+ return $this->useStatements;
+ }
+
+ /**
+ * Gets the doc comment.
+ *
+ * @param string $type The type: 'class', 'property' or 'method'.
+ * @param string $name The name of the property or method, not needed for 'class'.
+ *
+ * @return string The doc comment, empty string if none.
+ */
+ public function getDocComment($type = 'class', $name = '')
+ {
+ $this->parse();
+
+ return $name ? $this->docComment[$type][$name] : $this->docComment[$type];
+ }
+
+ /**
+ * Gets the PSR-0 parser for the declaring class.
+ *
+ * @param string $type The type: 'property' or 'method'.
+ * @param string $name The name of the property or method.
+ *
+ * @return StaticReflectionParser A static reflection parser for the declaring class.
+ *
+ * @throws ReflectionException
+ */
+ public function getStaticReflectionParserForDeclaringClass($type, $name)
+ {
+ $this->parse();
+ if (isset($this->docComment[$type][$name])) {
+ return $this;
+ }
+ if (!empty($this->parentClassName)) {
+ return $this->getParentStaticReflectionParser()->getStaticReflectionParserForDeclaringClass($type, $name);
+ }
+ throw new ReflectionException('Invalid ' . $type . ' "' . $name . '"');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php
new file mode 100644
index 0000000..7f6522b
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Reflection/StaticReflectionProperty.php
@@ -0,0 +1,178 @@
+.
+ */
+
+namespace Doctrine\Common\Reflection;
+
+use ReflectionException;
+use ReflectionProperty;
+
+class StaticReflectionProperty extends ReflectionProperty
+{
+ /**
+ * The PSR-0 parser object.
+ *
+ * @var StaticReflectionParser
+ */
+ protected $staticReflectionParser;
+
+ /**
+ * The name of the property.
+ *
+ * @var string|null
+ */
+ protected $propertyName;
+
+ /**
+ * @param StaticReflectionParser $staticReflectionParser
+ * @param string|null $propertyName
+ */
+ public function __construct(StaticReflectionParser $staticReflectionParser, $propertyName)
+ {
+ $this->staticReflectionParser = $staticReflectionParser;
+ $this->propertyName = $propertyName;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getName()
+ {
+ return $this->propertyName;
+ }
+
+ /**
+ * @return StaticReflectionParser
+ */
+ protected function getStaticReflectionParser()
+ {
+ return $this->staticReflectionParser->getStaticReflectionParserForDeclaringClass('property', $this->propertyName);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDeclaringClass()
+ {
+ return $this->getStaticReflectionParser()->getReflectionClass();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getDocComment()
+ {
+ return $this->getStaticReflectionParser()->getDocComment('property', $this->propertyName);
+ }
+
+ /**
+ * @return array
+ */
+ public function getUseStatements()
+ {
+ return $this->getStaticReflectionParser()->getUseStatements();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public static function export($class, $name, $return = false)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getModifiers()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function getValue($object = null)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isDefault()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isPrivate()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isProtected()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isPublic()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function isStatic()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function setAccessible($accessible)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function setValue($object, $value = null)
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function __toString()
+ {
+ throw new ReflectionException('Method not implemented');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php b/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php
new file mode 100644
index 0000000..49dc7bb
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Util/ClassUtils.php
@@ -0,0 +1,109 @@
+.
+ */
+
+namespace Doctrine\Common\Util;
+
+use Doctrine\Common\Persistence\Proxy;
+
+/**
+ * Class and reflection related functionality for objects that
+ * might or not be proxy objects at the moment.
+ *
+ * @author Benjamin Eberlei
+ * @author Johannes Schmitt
+ */
+class ClassUtils
+{
+ /**
+ * Gets the real class name of a class name that could be a proxy.
+ *
+ * @param string $class
+ *
+ * @return string
+ */
+ public static function getRealClass($class)
+ {
+ if (false === $pos = strrpos($class, '\\'.Proxy::MARKER.'\\')) {
+ return $class;
+ }
+
+ return substr($class, $pos + Proxy::MARKER_LENGTH + 2);
+ }
+
+ /**
+ * Gets the real class name of an object (even if its a proxy).
+ *
+ * @param object $object
+ *
+ * @return string
+ */
+ public static function getClass($object)
+ {
+ return self::getRealClass(get_class($object));
+ }
+
+ /**
+ * Gets the real parent class name of a class or object.
+ *
+ * @param string $className
+ *
+ * @return string
+ */
+ public static function getParentClass($className)
+ {
+ return get_parent_class( self::getRealClass( $className ) );
+ }
+
+ /**
+ * Creates a new reflection class.
+ *
+ * @param string $class
+ *
+ * @return \ReflectionClass
+ */
+ public static function newReflectionClass($class)
+ {
+ return new \ReflectionClass( self::getRealClass( $class ) );
+ }
+
+ /**
+ * Creates a new reflection object.
+ *
+ * @param object $object
+ *
+ * @return \ReflectionObject
+ */
+ public static function newReflectionObject($object)
+ {
+ return self::newReflectionClass( self::getClass( $object ) );
+ }
+
+ /**
+ * Given a class name and a proxy namespace returns the proxy name.
+ *
+ * @param string $className
+ * @param string $proxyNamespace
+ *
+ * @return string
+ */
+ public static function generateProxyClassName($className, $proxyNamespace)
+ {
+ return rtrim($proxyNamespace, '\\') . '\\'.Proxy::MARKER.'\\' . ltrim($className, '\\');
+ }
+}
diff --git a/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php b/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php
new file mode 100644
index 0000000..7f67532
--- /dev/null
+++ b/vendor/doctrine/common/lib/Doctrine/Common/Util/Debug.php
@@ -0,0 +1,158 @@
+.
+ */
+
+namespace Doctrine\Common\Util;
+
+use Doctrine\Common\Collections\Collection;
+use Doctrine\Common\Persistence\Proxy;
+
+/**
+ * Static class containing most used debug methods.
+ *
+ * @link www.doctrine-project.org
+ * @since 2.0
+ * @author Guilherme Blanco
+ * @author Jonathan Wage
+ * @author Roman Borschel