diff --git a/.gitignore b/.gitignore
index 2ce022f..aeaa68d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,5 @@
 build
 composer.phar
-composer.lock
 docs
 vendor
 .idea
diff --git a/.travis.yml b/.travis.yml
index d8340d0..b10fe09 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,10 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
 language: php
 php:
+  - 7.2
+  - 7.1
   - 7.0
   - 5.6
-  - 5.5
 before_script:
   - pear channel-discover pear.phing.info
   - pear install phing/phing
   - phpenv rehash
   - phing
+  - composer install
+script:
+  - phing test
diff --git a/README.md b/README.md
index d8f60f0..4dc3dd9 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
 # Apache PredictionIO PHP SDK
 
-
-[![Build Status](https://travis-ci.org/apache/incubator-predictionio-sdk-php.svg?branch=develop)](https://travis-ci.org/apache/incubator-predictionio-sdk-php)
+[![Build
+Status](https://travis-ci.org/apache/predictionio-sdk-php.svg?branch=develop)](https://travis-ci.org/apache/predictionio-sdk-php)
 
 ## Prerequisites
 
-* PHP 5.4+ (http://php.net/)
+* PHP 5.6+ (http://php.net/)
 * PHP: cURL (http://php.net/manual/en/book.curl.php)
 * Phing (http://www.phing.info/)
 * ApiGen (http://apigen.org/)
@@ -14,9 +14,11 @@
 
 ## Getting Started
 
-The easiest way to install PredictionIO PHP client is to use [Composer](http://getcomposer.org/).
+The easiest way to install PredictionIO PHP client is to use
+[Composer](http://getcomposer.org/).
 
-1. `predictionio` is available on [Packagist](https://packagist.org) and can be installed using [Composer](https://getcomposer.org/):
+1. `predictionio` is available on [Packagist](https://packagist.org) and can be
+installed using [Composer](https://getcomposer.org/):
 
         composer require predictionio/predictionio
 
@@ -75,19 +77,22 @@
 
 ## Bugs and Feature Requests
 
-Use [Apache JIRA](https://issues.apache.org/jira/browse/PIO) to report bugs or request new features.
+Use [Apache JIRA](https://issues.apache.org/jira/browse/PIO) to report bugs or
+request new features.
 
 ## Community
 
 Keep track of development and community news.
 
-*   Subscribe to the user mailing list <mailto:user-subscribe@predictionio.apache.org>
-    and the dev mailing list <mailto:dev-subscribe@predictionio.apache.org>
+*   Subscribe to the [user mailing
+    list](mailto:user-subscribe@predictionio.apache.org) and the [dev mailing
+    list](mailto:dev-subscribe@predictionio.apache.org).
 *   Follow [@PredictionIO](https://twitter.com/PredictionIO) on Twitter.
 
 ## Contributing
 
-Read the [Contribute Code](http://predictionio.apache.org/community/contribute-code/) page.
+Read the [Contribute
+Code](http://predictionio.apache.org/community/contribute-code/) page.
 
 ## License
 
diff --git a/build.xml b/build.xml
index 4355efe..309634f 100644
--- a/build.xml
+++ b/build.xml
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
 <project name="predictionio" default="install-dependencies">
 
   <target name="install-dependencies">
@@ -10,8 +25,10 @@
       </then>
       <else>
         <echo message="Installing composer" />
-        <exec command="curl -s http://getcomposer.org/installer | php" passthru="true" />
-        <exec command="php composer.phar install --dev" passthru="true" />
+        <exec command="php -r &quot;copy('https://getcomposer.org/installer', 'composer-setup.php');&quot;" passthru="true" />
+        <exec command="php -r &quot;if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;&quot;" passthru="true" />
+        <exec command="php composer-setup.php" passthru="true" />
+        <exec command="php -r &quot;unlink('composer-setup.php');&quot;" passthru="true" />
       </else>
     </if>
   </target>
@@ -26,7 +43,11 @@
   </target>
 
   <target name="apigen">
-    <exec command="apigen -s src -d docs --title 'PredictionIO API PHP Client'" passthru="true" />
+    <exec command="vendor/apigen/apigen/bin/apigen generate -s src -d docs --title 'PredictionIO API PHP Client'" passthru="true" />
+  </target>
+
+  <target name="test">
+    <exec command="vendor/phpunit/phpunit/phpunit" passthru="true" />
   </target>
 
 </project>
diff --git a/composer.json b/composer.json
index 570dac5..917e5b6 100644
--- a/composer.json
+++ b/composer.json
@@ -15,17 +15,18 @@
     "authors": [
         {
             "name": "Apache PredictionIO",
-            "email": "user@predictionio.apache.org",
+            "email": "dev@predictionio.apache.org",
             "homepage": "http://predictionio.apache.org"
         }
     ],
     "require": {
-        "php": ">=5.5.0",
+        "php": ">=5.6.0",
         "guzzlehttp/guzzle": "^6.1"
     },
     "require-dev": {
-        "symfony/class-loader": "~2.3",
-        "phpunit/phpunit": "^4.7"
+        "symfony/class-loader": "^2.3",
+        "phpunit/phpunit": "^5",
+        "apigen/apigen": "^4.1.2"
     },
     "autoload": {
         "psr-4": {
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..09c15f2
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,3767 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "bae15d857f4a61c45b8021628d1b2f72",
+    "packages": [
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "6.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
+                "shasum": ""
+            },
+            "require": {
+                "guzzlehttp/promises": "^1.0",
+                "guzzlehttp/psr7": "^1.4",
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "ext-curl": "*",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+                "psr/log": "^1.0"
+            },
+            "suggest": {
+                "psr/log": "Required for using the Log middleware"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "6.3-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "homepage": "http://guzzlephp.org/",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "rest",
+                "web service"
+            ],
+            "time": "2018-04-22T15:46:56+00:00"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "v1.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "time": "2016-12-20T10:07:11+00:00"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "1.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+                "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4.0",
+                "psr/http-message": "~1.0"
+            },
+            "provide": {
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                },
+                "files": [
+                    "src/functions_include.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "time": "2017-03-20T17:10:46+00:00"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "time": "2016-08-06T14:39:51+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "andrewsville/php-token-reflection",
+            "version": "1.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Andrewsville/PHP-Token-Reflection.git",
+                "reference": "e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Andrewsville/PHP-Token-Reflection/zipball/e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee",
+                "reference": "e6d0ac2baf66cdf154be34c3d2a2aa1bd4b426ee",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "TokenReflection": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3"
+            ],
+            "authors": [
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                }
+            ],
+            "description": "Library emulating the PHP internal reflection using just the tokenized source code.",
+            "homepage": "http://andrewsville.github.com/PHP-Token-Reflection/",
+            "keywords": [
+                "library",
+                "reflection",
+                "tokenizer"
+            ],
+            "time": "2014-08-06T16:37:08+00:00"
+        },
+        {
+            "name": "apigen/apigen",
+            "version": "v4.1.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ApiGen.git",
+                "reference": "3365433ea3433b0e5c8f763608f8e63cbedb2a3a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ApiGen/zipball/3365433ea3433b0e5c8f763608f8e63cbedb2a3a",
+                "reference": "3365433ea3433b0e5c8f763608f8e63cbedb2a3a",
+                "shasum": ""
+            },
+            "require": {
+                "andrewsville/php-token-reflection": "~1.4",
+                "apigen/theme-bootstrap": "~1.1.2",
+                "apigen/theme-default": "~1.0.1",
+                "herrera-io/phar-update": "~2.0",
+                "kdyby/events": "~2.0",
+                "kukulich/fshl": "~2.1",
+                "latte/latte": ">=2.2.0,<2.3.5",
+                "michelf/php-markdown": "~1.4",
+                "nette/application": "~2.2",
+                "nette/bootstrap": "~2.2",
+                "nette/di": "~2.2",
+                "nette/mail": "~2.2",
+                "nette/neon": "~2.2",
+                "nette/robot-loader": "~2.2",
+                "nette/safe-stream": "~2.2",
+                "php": ">=5.4",
+                "symfony/console": "~2.6",
+                "symfony/options-resolver": "~2.6.1",
+                "symfony/yaml": "~2.6",
+                "tracy/tracy": "~2.2"
+            },
+            "require-dev": {
+                "herrera-io/box": "~1.6",
+                "mockery/mockery": "~0.9"
+            },
+            "bin": [
+                "bin/apigen"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.1.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ApiGen\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                },
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "PHP source code API generator",
+            "homepage": "http://apigen.org/",
+            "keywords": [
+                "api",
+                "documentation",
+                "generator",
+                "phpdoc"
+            ],
+            "time": "2015-11-29T20:11:30+00:00"
+        },
+        {
+            "name": "apigen/theme-bootstrap",
+            "version": "v1.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ThemeBootstrap.git",
+                "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ThemeBootstrap/zipball/55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c",
+                "reference": "55a35b4a3a9a5fcaa6a8fc43fb304983cab98c6c",
+                "shasum": ""
+            },
+            "require": {
+                "latte/latte": "~2.2"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "Twitter Bootstrap theme for ApiGen",
+            "homepage": "http://apigen.org/",
+            "abandoned": "apigen/apigen",
+            "time": "2015-10-11T14:52:50+00:00"
+        },
+        {
+            "name": "apigen/theme-default",
+            "version": "v1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ApiGen/ThemeDefault.git",
+                "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ApiGen/ThemeDefault/zipball/51648cf83645d9ae6c655fe46bcd26a347d45336",
+                "reference": "51648cf83645d9ae6c655fe46bcd26a347d45336",
+                "shasum": ""
+            },
+            "require": {
+                "latte/latte": "~2.2"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Ondřej Nešpor",
+                    "homepage": "https://github.com/andrewsville"
+                },
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                },
+                {
+                    "name": "Tomáš Votruba",
+                    "email": "tomas.vot@gmail.com"
+                },
+                {
+                    "name": "Olivier Laviale",
+                    "homepage": "https://github.com/olvlvl"
+                }
+            ],
+            "description": "Default theme for ApiGen",
+            "homepage": "http://apigen.org/",
+            "abandoned": "apigen/apigen",
+            "time": "2015-10-11T14:55:30+00:00"
+        },
+        {
+            "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-14T21:17:01+00:00"
+        },
+        {
+            "name": "herrera-io/json",
+            "version": "1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-php/json.git",
+                "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-php/json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1",
+                "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "justinrainbow/json-schema": ">=1.0,<2.0-dev",
+                "php": ">=5.3.3",
+                "seld/jsonlint": ">=1.0,<2.0-dev"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "mikey179/vfsstream": "1.1.0",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/lib/json_version.php"
+                ],
+                "psr-0": {
+                    "Herrera\\Json": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for simplifying JSON linting and validation.",
+            "homepage": "http://herrera-io.github.com/php-json",
+            "keywords": [
+                "json",
+                "lint",
+                "schema",
+                "validate"
+            ],
+            "abandoned": "kherge/json",
+            "time": "2013-10-30T16:51:34+00:00"
+        },
+        {
+            "name": "herrera-io/phar-update",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-abandoned/php-phar-update.git",
+                "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/15643c90d3d43620a4f45c910e6afb7a0ad4b488",
+                "reference": "15643c90d3d43620a4f45c910e6afb7a0ad4b488",
+                "shasum": ""
+            },
+            "require": {
+                "herrera-io/json": "1.*",
+                "herrera-io/version": "1.*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "mikey179/vfsstream": "1.1.0",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/lib/constants.php"
+                ],
+                "psr-0": {
+                    "Herrera\\Phar\\Update": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for self-updating Phars.",
+            "homepage": "http://herrera-io.github.com/php-phar-update",
+            "keywords": [
+                "phar",
+                "update"
+            ],
+            "abandoned": true,
+            "time": "2013-11-09T17:13:13+00:00"
+        },
+        {
+            "name": "herrera-io/version",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kherge-abandoned/php-version.git",
+                "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kherge-abandoned/php-version/zipball/d39d9642b92a04d8b8a28b871b797a35a2545e85",
+                "reference": "d39d9642b92a04d8b8a28b871b797a35a2545e85",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "herrera-io/phpunit-test-case": "1.*",
+                "phpunit/phpunit": "3.7.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Herrera\\Version": "src/lib"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kevin Herrera",
+                    "email": "kevin@herrera.io",
+                    "homepage": "http://kevin.herrera.io"
+                }
+            ],
+            "description": "A library for creating, editing, and comparing semantic versioning numbers.",
+            "homepage": "http://github.com/herrera-io/php-version",
+            "keywords": [
+                "semantic",
+                "version"
+            ],
+            "abandoned": true,
+            "time": "2014-05-27T05:29:25+00:00"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "1.6.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/cc84765fb7317f6b07bd8ac78364747f95b86341",
+                "reference": "cc84765fb7317f6b07bd8ac78364747f95b86341",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.29"
+            },
+            "require-dev": {
+                "json-schema/json-schema-test-suite": "1.1.0",
+                "phpdocumentor/phpdocumentor": "~2",
+                "phpunit/phpunit": "~3.7"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "JsonSchema\\": "src/JsonSchema/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "time": "2016-01-25T15:43:01+00:00"
+        },
+        {
+            "name": "kdyby/events",
+            "version": "v2.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Kdyby/Events.git",
+                "reference": "d8a0e8a64a59f501996f8f9591aa3f950208f091"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Kdyby/Events/zipball/d8a0e8a64a59f501996f8f9591aa3f950208f091",
+                "reference": "d8a0e8a64a59f501996f8f9591aa3f950208f091",
+                "shasum": ""
+            },
+            "require": {
+                "nette/di": "~2.3@dev",
+                "nette/utils": "~2.3@dev"
+            },
+            "require-dev": {
+                "latte/latte": "~2.3@dev",
+                "nette/application": "~2.3@dev",
+                "nette/bootstrap": "~2.3@dev",
+                "nette/caching": "~2.3@dev",
+                "nette/component-model": "~2.2@dev",
+                "nette/database": "~2.3@dev",
+                "nette/deprecated": "~2.3@dev",
+                "nette/di": "~2.3@dev",
+                "nette/finder": "~2.3@dev",
+                "nette/forms": "~2.3@dev",
+                "nette/http": "~2.3@dev",
+                "nette/mail": "~2.3@dev",
+                "nette/neon": "~2.3@dev",
+                "nette/php-generator": "~2.3@dev",
+                "nette/reflection": "~2.3@dev",
+                "nette/robot-loader": "~2.3@dev",
+                "nette/safe-stream": "~2.3@dev",
+                "nette/security": "~2.3@dev",
+                "nette/tester": "~1.4",
+                "nette/tokenizer": "~2.2@dev",
+                "nette/utils": "~2.3@dev",
+                "symfony/event-dispatcher": "~2.3",
+                "tracy/tracy": "~2.3@dev"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Kdyby\\Events\\": "src/"
+                },
+                "classmap": [
+                    "src/Kdyby/Events/exceptions.php"
+                ],
+                "files": [
+                    "src/Doctrine/compatibility.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Filip Procházka",
+                    "email": "filip@prochazka.su",
+                    "homepage": "http://filip-prochazka.com"
+                }
+            ],
+            "description": "Events for Nette Framework",
+            "homepage": "http://kdyby.org",
+            "keywords": [
+                "kdyby",
+                "nette"
+            ],
+            "time": "2016-04-19T11:19:31+00:00"
+        },
+        {
+            "name": "kukulich/fshl",
+            "version": "2.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kukulich/fshl.git",
+                "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kukulich/fshl/zipball/974c294ade5d76c0c16b6fe3fd3a584ba999b24f",
+                "reference": "974c294ade5d76c0c16b6fe3fd3a584ba999b24f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "FSHL": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+"
+            ],
+            "authors": [
+                {
+                    "name": "Jaroslav Hanslík",
+                    "homepage": "https://github.com/kukulich"
+                }
+            ],
+            "description": "FSHL is a free, open source, universal, fast syntax highlighter written in PHP.",
+            "homepage": "http://fshl.kukulich.cz/",
+            "keywords": [
+                "highlight",
+                "library",
+                "syntax"
+            ],
+            "time": "2012-09-08T19:00:07+00:00"
+        },
+        {
+            "name": "latte/latte",
+            "version": "v2.3.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/latte.git",
+                "reference": "5e891af999776d2204a9d06ad66ad8fa0bcd4f8b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/latte/zipball/5e891af999776d2204a9d06ad66ad8fa0bcd4f8b",
+                "reference": "5e891af999776d2204a9d06ad66ad8fa0bcd4f8b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.1"
+            },
+            "require-dev": {
+                "nette/tester": "~1.3"
+            },
+            "suggest": {
+                "ext-fileinfo": "to use filter |datastream",
+                "ext-mbstring": "to use filters like lower, upper, capitalize, ..."
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "http://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "http://nette.org/contributors"
+                }
+            ],
+            "description": "Latte: the amazing template engine for PHP",
+            "homepage": "http://latte.nette.org",
+            "keywords": [
+                "templating",
+                "twig"
+            ],
+            "time": "2015-08-23T12:36:55+00:00"
+        },
+        {
+            "name": "michelf/php-markdown",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/michelf/php-markdown.git",
+                "reference": "01ab082b355bf188d907b9929cd99b2923053495"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495",
+                "reference": "01ab082b355bf188d907b9929cd99b2923053495",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Michelf\\": "Michelf/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Michel Fortin",
+                    "email": "michel.fortin@michelf.ca",
+                    "homepage": "https://michelf.ca/",
+                    "role": "Developer"
+                },
+                {
+                    "name": "John Gruber",
+                    "homepage": "https://daringfireball.net/"
+                }
+            ],
+            "description": "PHP Markdown",
+            "homepage": "https://michelf.ca/projects/php-markdown/",
+            "keywords": [
+                "markdown"
+            ],
+            "time": "2018-01-15T00:49:33+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.0",
+                "doctrine/common": "^2.6",
+                "phpunit/phpunit": "^4.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                },
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "time": "2017-10-19T19:58:43+00:00"
+        },
+        {
+            "name": "nette/application",
+            "version": "v2.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/application.git",
+                "reference": "fe1915f880d8e5d16217bad467950733fd5cbad3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/application/zipball/fe1915f880d8e5d16217bad467950733fd5cbad3",
+                "reference": "fe1915f880d8e5d16217bad467950733fd5cbad3",
+                "shasum": ""
+            },
+            "require": {
+                "nette/component-model": "^2.3",
+                "nette/http": "^2.2",
+                "nette/reflection": "^2.2",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/di": "<2.4",
+                "nette/forms": "<2.4",
+                "nette/latte": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "^2.4.3",
+                "mockery/mockery": "^0.9.5",
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/forms": "^2.4",
+                "nette/robot-loader": "^2.4.2 || ^3.0",
+                "nette/security": "^2.4",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "latte/latte": "Allows using Latte in templates",
+                "nette/forms": "Allows to use Nette\\Application\\UI\\Form"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ],
+                "files": [
+                    "src/compatibility.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🏆 Nette Application: a full-stack component-based MVC kernel for PHP that helps you write powerful and modern web applications. Write less, have cleaner code and your work will bring you joy.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "Forms",
+                "component-based",
+                "control",
+                "framework",
+                "mvc",
+                "mvp",
+                "nette",
+                "presenter",
+                "routing",
+                "seo"
+            ],
+            "time": "2018-05-16T09:28:51+00:00"
+        },
+        {
+            "name": "nette/bootstrap",
+            "version": "v2.4.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/bootstrap.git",
+                "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/bootstrap/zipball/268816e3f1bb7426c3a4ceec2bd38a036b532543",
+                "reference": "268816e3f1bb7426c3a4ceec2bd38a036b532543",
+                "shasum": ""
+            },
+            "require": {
+                "nette/di": "~2.4.7",
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "~2.2",
+                "nette/application": "~2.3",
+                "nette/caching": "~2.3",
+                "nette/database": "~2.3",
+                "nette/forms": "~2.3",
+                "nette/http": "~2.4.0",
+                "nette/mail": "~2.3",
+                "nette/robot-loader": "^2.4.2 || ^3.0",
+                "nette/safe-stream": "~2.2",
+                "nette/security": "~2.3",
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.4.1"
+            },
+            "suggest": {
+                "nette/robot-loader": "to use Configurator::createRobotLoader()",
+                "tracy/tracy": "to use Configurator::enableTracy()"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🅱 Nette Bootstrap: the simple way to configure and bootstrap your Nette application.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "bootstrapping",
+                "configurator",
+                "nette"
+            ],
+            "time": "2018-05-17T12:52:20+00:00"
+        },
+        {
+            "name": "nette/caching",
+            "version": "v2.5.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/caching.git",
+                "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/caching/zipball/7fba7c7ab2585fafb7b31152f2595e1551120555",
+                "reference": "7fba7c7ab2585fafb7b31152f2595e1551120555",
+                "shasum": ""
+            },
+            "require": {
+                "nette/finder": "^2.2 || ~3.0.0",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "latte/latte": "^2.4",
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "cache",
+                "journal",
+                "memcached",
+                "nette",
+                "sqlite"
+            ],
+            "time": "2018-03-21T11:04:32+00:00"
+        },
+        {
+            "name": "nette/component-model",
+            "version": "v2.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/component-model.git",
+                "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/component-model/zipball/6e7980f5ddec31f68a39e767799b1b0be9dd1014",
+                "reference": "6e7980f5ddec31f68a39e767799b1b0be9dd1014",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.5 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/application": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "⚛ Nette Component Model",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "components",
+                "nette"
+            ],
+            "time": "2018-03-20T16:32:50+00:00"
+        },
+        {
+            "name": "nette/di",
+            "version": "v2.4.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/di.git",
+                "reference": "3f8f212b02d5c17feb97a7e0a39ab306f40c06ca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/di/zipball/3f8f212b02d5c17feb97a7e0a39ab306f40c06ca",
+                "reference": "3f8f212b02d5c17feb97a7e0a39ab306f40c06ca",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/neon": "^2.3.3 || ~3.0.0",
+                "nette/php-generator": "^2.6.1 || ~3.0.0",
+                "nette/utils": "^2.4.3 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/bootstrap": "<2.4",
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "💎 Nette Dependency Injection Container: Flexible, compiled and full-featured DIC with perfectly usable autowiring and support for all new PHP 7.1 features.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "compiled",
+                "di",
+                "dic",
+                "factory",
+                "ioc",
+                "nette",
+                "static"
+            ],
+            "time": "2018-06-11T08:46:01+00:00"
+        },
+        {
+            "name": "nette/finder",
+            "version": "v2.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/finder.git",
+                "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/finder/zipball/ee951a656cb8ac622e5dd33474a01fd2470505a0",
+                "reference": "ee951a656cb8ac622e5dd33474a01fd2470505a0",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🔍 Nette Finder: find files and directories with an intuitive API.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "filesystem",
+                "glob",
+                "iterator",
+                "nette"
+            ],
+            "time": "2018-06-28T11:49:23+00:00"
+        },
+        {
+            "name": "nette/http",
+            "version": "v2.4.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/http.git",
+                "reference": "a36e6bad0aae8bacf849c150b5e0ecacef0d9eca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/http/zipball/a36e6bad0aae8bacf849c150b5e0ecacef0d9eca",
+                "reference": "a36e6bad0aae8bacf849c150b5e0ecacef0d9eca",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4.8 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-fileinfo": "to detect type of uploaded files",
+                "nette/security": "allows use Nette\\Http\\UserStorage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🌐 Nette Http: abstraction for HTTP request, response and session. Provides careful data sanitization and utility for URL and cookies manipulation.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "cookies",
+                "http",
+                "nette",
+                "proxy",
+                "request",
+                "response",
+                "security",
+                "session",
+                "url"
+            ],
+            "time": "2018-09-03T19:16:55+00:00"
+        },
+        {
+            "name": "nette/mail",
+            "version": "v2.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/mail.git",
+                "reference": "13312eb627d913f2630018a07a9e40cb7003dc76"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/mail/zipball/13312eb627d913f2630018a07a9e40cb7003dc76",
+                "reference": "13312eb627d913f2630018a07a9e40cb7003dc76",
+                "shasum": ""
+            },
+            "require": {
+                "ext-iconv": "*",
+                "nette/utils": "^2.4 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4 || ~3.0.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "suggest": {
+                "ext-fileinfo": "to detect type of attached files"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "📧 Nette Mail: handy email creation and transfer library for PHP with both text and MIME-compliant support.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "mail",
+                "mailer",
+                "mime",
+                "nette",
+                "smtp"
+            ],
+            "time": "2018-03-18T16:30:02+00:00"
+        },
+        {
+            "name": "nette/neon",
+            "version": "v2.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/neon.git",
+                "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/neon/zipball/5e72b1dd3e2d34f0863c5561139a19df6a1ef398",
+                "reference": "5e72b1dd3e2d34f0863c5561139a19df6a1ef398",
+                "shasum": ""
+            },
+            "require": {
+                "ext-iconv": "*",
+                "ext-json": "*",
+                "php": ">=5.6.0"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🍸 Nette NEON: encodes and decodes NEON file format.",
+            "homepage": "http://ne-on.org",
+            "keywords": [
+                "export",
+                "import",
+                "neon",
+                "nette",
+                "yaml"
+            ],
+            "time": "2018-03-21T12:12:21+00:00"
+        },
+        {
+            "name": "nette/php-generator",
+            "version": "v2.6.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/php-generator.git",
+                "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/php-generator/zipball/c1f6b2163c5471c4d94cd94b93362f12bceef183",
+                "reference": "c1f6b2163c5471c4d94cd94b93362f12bceef183",
+                "shasum": ""
+            },
+            "require": {
+                "nette/utils": "^2.4.2 || ~3.0.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 7.1 features.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "code",
+                "nette",
+                "php",
+                "scaffolding"
+            ],
+            "time": "2018-04-26T16:47:39+00:00"
+        },
+        {
+            "name": "nette/reflection",
+            "version": "v2.4.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/reflection.git",
+                "reference": "b12327e98ead74e87a1315e0d48182a702adf901"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/reflection/zipball/b12327e98ead74e87a1315e0d48182a702adf901",
+                "reference": "b12327e98ead74e87a1315e0d48182a702adf901",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/caching": "^2.2 || ^3.0",
+                "nette/utils": "^2.4 || ^3.0",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/di": "^2.4 || ^3.0",
+                "nette/tester": "^2.0",
+                "tracy/tracy": "^2.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "Nette Reflection: docblock annotations parser and common reflection classes",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "annotation",
+                "nette",
+                "reflection"
+            ],
+            "time": "2017-07-11T19:28:57+00:00"
+        },
+        {
+            "name": "nette/robot-loader",
+            "version": "v2.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/robot-loader.git",
+                "reference": "1f7f8792ce4d94162959e6b766822d6051623bca"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/robot-loader/zipball/1f7f8792ce4d94162959e6b766822d6051623bca",
+                "reference": "1f7f8792ce4d94162959e6b766822d6051623bca",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "nette/caching": "~2.2",
+                "nette/finder": "~2.3",
+                "nette/utils": "~2.4",
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🍀 Nette RobotLoader: high performance and comfortable autoloader that will search and autoload classes within your application.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "autoload",
+                "class",
+                "interface",
+                "nette",
+                "trait"
+            ],
+            "time": "2017-08-14T20:23:02+00:00"
+        },
+        {
+            "name": "nette/safe-stream",
+            "version": "v2.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/safe-stream.git",
+                "reference": "0fcd45ae82be5817f4b3ad25bc8955968f355412"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/safe-stream/zipball/0fcd45ae82be5817f4b3ad25bc8955968f355412",
+                "reference": "0fcd45ae82be5817f4b3ad25bc8955968f355412",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.1"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~1.7",
+                "tracy/tracy": "^2.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.3-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/loader.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "Nette SafeStream: atomic and safe manipulation with files via native PHP functions.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "atomic",
+                "filesystem",
+                "nette",
+                "safe"
+            ],
+            "time": "2017-07-13T18:20:37+00:00"
+        },
+        {
+            "name": "nette/utils",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/utils.git",
+                "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/utils/zipball/183069866dc477fcfbac393ed486aaa6d93d19a5",
+                "reference": "183069866dc477fcfbac393ed486aaa6d93d19a5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "conflict": {
+                "nette/nette": "<2.2"
+            },
+            "require-dev": {
+                "nette/tester": "~2.0",
+                "tracy/tracy": "^2.3"
+            },
+            "suggest": {
+                "ext-gd": "to use Image",
+                "ext-iconv": "to use Strings::webalize() and toAscii()",
+                "ext-intl": "for script transliteration in Strings::webalize() and toAscii()",
+                "ext-json": "to use Nette\\Utils\\Json",
+                "ext-mbstring": "to use Strings::lower() etc...",
+                "ext-xml": "to use Strings::length() etc. when mbstring is not available"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ],
+                "files": [
+                    "src/loader.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause",
+                "GPL-2.0",
+                "GPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
+            "homepage": "https://nette.org",
+            "keywords": [
+                "array",
+                "core",
+                "datetime",
+                "images",
+                "json",
+                "nette",
+                "paginator",
+                "password",
+                "slugify",
+                "string",
+                "unicode",
+                "utf-8",
+                "utility",
+                "validation"
+            ],
+            "time": "2018-05-02T17:16:08+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-common",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jaap van Otterdijk",
+                    "email": "opensource@ijaap.nl"
+                }
+            ],
+            "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+            "homepage": "http://www.phpdoc.org",
+            "keywords": [
+                "FQSEN",
+                "phpDocumentor",
+                "phpdoc",
+                "reflection",
+                "static analysis"
+            ],
+            "time": "2017-09-11T18:02:19+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "3.3.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0.0",
+                "phpdocumentor/type-resolver": "^0.4.0",
+                "webmozart/assert": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^4.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+            "time": "2017-11-10T14:09:06+00:00"
+        },
+        {
+            "name": "phpdocumentor/type-resolver",
+            "version": "0.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/TypeResolver.git",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5 || ^7.0",
+                "phpdocumentor/reflection-common": "^1.0"
+            },
+            "require-dev": {
+                "mockery/mockery": "^0.9.4",
+                "phpunit/phpunit": "^5.2||^4.8.24"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "phpDocumentor\\Reflection\\": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "me@mikevanriel.com"
+                }
+            ],
+            "time": "2017-07-14T14:27:02+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "1.8.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.3|^7.0",
+                "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+                "sebastian/comparator": "^1.1|^2.0|^3.0",
+                "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "^2.5|^3.2",
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.8.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "time": "2018-08-05T17:53:17+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "4.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-xmlwriter": "*",
+                "php": "^5.6 || ^7.0",
+                "phpunit/php-file-iterator": "^1.3",
+                "phpunit/php-text-template": "^1.2",
+                "phpunit/php-token-stream": "^1.4.2 || ^2.0",
+                "sebastian/code-unit-reverse-lookup": "^1.0",
+                "sebastian/environment": "^1.3.2 || ^2.0",
+                "sebastian/version": "^1.0 || ^2.0"
+            },
+            "require-dev": {
+                "ext-xdebug": "^2.1.4",
+                "phpunit/phpunit": "^5.7"
+            },
+            "suggest": {
+                "ext-xdebug": "^2.5.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "time": "2017-04-02T07:44:40+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "1.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "time": "2017-02-26T11:10:40+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "time": "2017-12-04T08:55:13+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "5.7.27",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "myclabs/deep-copy": "~1.3",
+                "php": "^5.6 || ^7.0",
+                "phpspec/prophecy": "^1.6.2",
+                "phpunit/php-code-coverage": "^4.0.4",
+                "phpunit/php-file-iterator": "~1.4",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": "^1.0.6",
+                "phpunit/phpunit-mock-objects": "^3.2",
+                "sebastian/comparator": "^1.2.4",
+                "sebastian/diff": "^1.4.3",
+                "sebastian/environment": "^1.3.4 || ^2.0",
+                "sebastian/exporter": "~2.0",
+                "sebastian/global-state": "^1.1",
+                "sebastian/object-enumerator": "~2.0",
+                "sebastian/resource-operations": "~1.0",
+                "sebastian/version": "^1.0.6|^2.0.1",
+                "symfony/yaml": "~2.1|~3.0|~4.0"
+            },
+            "conflict": {
+                "phpdocumentor/reflection-docblock": "3.0.2"
+            },
+            "require-dev": {
+                "ext-pdo": "*"
+            },
+            "suggest": {
+                "ext-xdebug": "*",
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.7.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "time": "2018-02-01T05:50:59+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "3.4.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+                "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": "^5.6 || ^7.0",
+                "phpunit/php-text-template": "^1.2",
+                "sebastian/exporter": "^1.2 || ^2.0"
+            },
+            "conflict": {
+                "phpunit/phpunit": "<5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.4"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "time": "2017-06-30T09:13:00+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "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",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "time": "2016-10-10T12:19:37+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "time": "2017-03-04T06:30:41+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2 || ~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "time": "2017-01-29T09:50:25+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "time": "2017-05-22T07:24:03+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+                "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "time": "2016-11-26T07:53:53+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+                "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~2.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "time": "2016-11-19T08:54:04+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "time": "2015-10-12T03:26:01+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7",
+                "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6",
+                "sebastian/recursion-context": "~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "time": "2017-02-18T15:18:39+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+                "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "time": "2016-11-19T07:33:16+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "time": "2015-07-28T20:34:47+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "time": "2016-10-03T07:35:21+00:00"
+        },
+        {
+            "name": "seld/jsonlint",
+            "version": "1.7.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/jsonlint.git",
+                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38",
+                "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+            },
+            "bin": [
+                "bin/jsonlint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "JSON Linter",
+            "keywords": [
+                "json",
+                "linter",
+                "parser",
+                "validator"
+            ],
+            "time": "2018-01-24T12:46:19+00:00"
+        },
+        {
+            "name": "symfony/class-loader",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/class-loader.git",
+                "reference": "f65a559906874b194eda635eacf7ffeef0fbff3d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/class-loader/zipball/f65a559906874b194eda635eacf7ffeef0fbff3d",
+                "reference": "f65a559906874b194eda635eacf7ffeef0fbff3d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/polyfill-apcu": "~1.1"
+            },
+            "require-dev": {
+                "symfony/finder": "^2.0.5|~3.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\ClassLoader\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony ClassLoader Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T11:13:39+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/0c1fcbb9afb5cff992c982ff99c0434f0146dcfc",
+                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/debug": "^2.7.2|~3.0.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "require-dev": {
+                "psr/log": "~1.0",
+                "symfony/event-dispatcher": "~2.1|~3.0.0",
+                "symfony/process": "~2.1|~3.0.0"
+            },
+            "suggest": {
+                "psr/log-implementation": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Console Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T11:13:39+00:00"
+        },
+        {
+            "name": "symfony/debug",
+            "version": "v3.0.9",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/debug.git",
+                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
+                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5.9",
+                "psr/log": "~1.0"
+            },
+            "conflict": {
+                "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+            },
+            "require-dev": {
+                "symfony/class-loader": "~2.8|~3.0",
+                "symfony/http-kernel": "~2.8|~3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Debug\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Debug Component",
+            "homepage": "https://symfony.com",
+            "time": "2016-07-30T07:22:48+00:00"
+        },
+        {
+            "name": "symfony/options-resolver",
+            "version": "v2.6.13",
+            "target-dir": "Symfony/Component/OptionsResolver",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/options-resolver.git",
+                "reference": "31e56594cee489e9a235b852228b0598b52101c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/31e56594cee489e9a235b852228b0598b52101c1",
+                "reference": "31e56594cee489e9a235b852228b0598b52101c1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "~2.7"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.6-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Symfony\\Component\\OptionsResolver\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony OptionsResolver Component",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "config",
+                "configuration",
+                "options"
+            ],
+            "time": "2015-05-13T11:33:56+00:00"
+        },
+        {
+            "name": "symfony/polyfill-apcu",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-apcu.git",
+                "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/19e1b73bf255265ad0b568f81766ae2a3266d8d2",
+                "reference": "19e1b73bf255265ad0b568f81766ae2a3266d8d2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Apcu\\": ""
+                },
+                "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 apcu_* functions to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "apcu",
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                },
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                },
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "time": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
+                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.9-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": "2018-08-06T14:22:27+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v2.8.45",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "fbf876678e29dc634430dcf0096e216eb0004467"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/fbf876678e29dc634430dcf0096e216eb0004467",
+                "reference": "fbf876678e29dc634430dcf0096e216eb0004467",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.9",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.8-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "time": "2018-07-26T09:03:18+00:00"
+        },
+        {
+            "name": "tracy/tracy",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nette/tracy.git",
+                "reference": "93f89fbff33db4d583062104c71d6083b717371a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nette/tracy/zipball/93f89fbff33db4d583062104c71d6083b717371a",
+                "reference": "93f89fbff33db4d583062104c71d6083b717371a",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-session": "*",
+                "php": ">=5.4.4"
+            },
+            "require-dev": {
+                "nette/di": "~2.3",
+                "nette/tester": "~1.7"
+            },
+            "suggest": {
+                "https://nette.org/donate": "Please support Tracy via a donation"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.5-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src"
+                ],
+                "files": [
+                    "src/shortcuts.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "David Grudl",
+                    "homepage": "https://davidgrudl.com"
+                },
+                {
+                    "name": "Nette Community",
+                    "homepage": "https://nette.org/contributors"
+                }
+            ],
+            "description": "😎 Tracy: the addictive tool to ease debugging PHP code for cool developers. Friendly design, logging, profiler, advanced features like debugging AJAX calls or CLI support. You will love it.",
+            "homepage": "https://tracy.nette.org",
+            "keywords": [
+                "Xdebug",
+                "debug",
+                "debugger",
+                "nette",
+                "profiler"
+            ],
+            "time": "2018-08-13T16:46:17+00:00"
+        },
+        {
+            "name": "webmozart/assert",
+            "version": "1.3.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/webmozart/assert.git",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+                "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.3 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.6",
+                "sebastian/version": "^1.0.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Webmozart\\Assert\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Assertions to validate method input/output with nice error messages.",
+            "keywords": [
+                "assert",
+                "check",
+                "validate"
+            ],
+            "time": "2018-01-29T19:49:41+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.6.0"
+    },
+    "platform-dev": []
+}
diff --git a/examples/ItemrankImport.php b/examples/ItemrankImport.php
index 4266a7f..4bdd0e5 100644
--- a/examples/ItemrankImport.php
+++ b/examples/ItemrankImport.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EventClient;
@@ -10,24 +26,21 @@
 
 // set user - generate 10 users
 for ($u=1; $u<=10; $u++) {
-  $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M'));
-  print_r($response);
+    $response=$client->setUser($u, array('age'=>20+$u, 'gender'=>'M'));
+    print_r($response);
 }
 
 // set item - generate 50 items
 for ($i=1; $i<=50; $i++) {
-  $response=$client->setItem($i, array('itypes'=>array('1')));
-  print_r($response);
+    $response=$client->setItem($i, array('itypes'=>array('1')));
+    print_r($response);
 }
 
 // record event - each user randomly views 10 items
 for ($u=1; $u<=10; $u++) {
-  for ($count=0; $count<10; $count++) {
-    $i = rand(1,50);
-    $response=$client->recordUserActionOnItem('view', $u, $i);
-    print_r($response);
-  }
-} 
-
-
-?>
+    for ($count=0; $count<10; $count++) {
+        $i = rand(1, 50);
+        $response=$client->recordUserActionOnItem('view', $u, $i);
+        print_r($response);
+    }
+}
diff --git a/examples/ItemrankQuery.php b/examples/ItemrankQuery.php
index 2d06346..0598a51 100644
--- a/examples/ItemrankQuery.php
+++ b/examples/ItemrankQuery.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EngineClient;
@@ -9,8 +25,6 @@
 
 // Rank item 1 to 5 for each user
 for ($i=1; $i<=10; $i++) {
-  $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5)));
-  print_r($response);
+    $response=$client->sendQuery(array('uid'=>$i, 'iids'=>array(1,2,3,4,5)));
+    print_r($response);
 }
-
-?>
diff --git a/examples/SampleEvent.php b/examples/SampleEvent.php
index b41fc07..f813a45 100644
--- a/examples/SampleEvent.php
+++ b/examples/SampleEvent.php
@@ -1,68 +1,89 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 require_once("vendor/autoload.php");
 
 use predictionio\EventClient;
 use predictionio\PredictionIOAPIError;
 
 try {
-  // check Event Server status
-  $client = new EventClient(
-    "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O");
-  $response=$client->getStatus();
-  echo($response);
+    // check Event Server status
+    $client = new EventClient(
+        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"
+    );
+    $response=$client->getStatus();
+    echo($response);
 
-  // set user with event time
-  $response=$client->setUser(9, array('age'=>10), 
-                        '2014-01-01T10:20:30.400+08:00');
-  print_r($response);
+    // set user with event time
+    $response=$client->setUser(
+        9,
+        array('age'=>10),
+        '2014-01-01T10:20:30.400+08:00'
+    );
+    print_r($response);
 
-  // set user 
-  $response=$client->setUser(8, array('age'=>20, 'gender'=>'M'));
-  print_r($response);
+    // set user
+    $response=$client->setUser(8, array('age'=>20, 'gender'=>'M'));
+    print_r($response);
 
-  // unset user
-  $response=$client->unsetUser(8, array('age'=>20));
-  print_r($response);
+    // unset user
+    $response=$client->unsetUser(8, array('age'=>20));
+    print_r($response);
 
-  // delete user
-  $response=$client->deleteUser(9);
-  print_r($response);
-  
-  // set item with event time
-  $response=$client->setItem(3, array('itypes'=>array('1')), 
-                        '2013-12-20T05:15:25.350+08:00');
-  print_r($response);
+    // delete user
+    $response=$client->deleteUser(9);
+    print_r($response);
 
-  // set item 
-  $response=$client->setItem(2, array('itypes'=>array('1')));
-  print_r($response);
+    // set item with event time
+    $response=$client->setItem(
+        3,
+        array('itypes'=>array('1')),
+        '2013-12-20T05:15:25.350+08:00'
+    );
+    print_r($response);
 
-  // unset item 
-  $response=$client->unsetItem(2, array('itypes'=>array('1')));
-  print_r($response);
+    // set item
+    $response=$client->setItem(2, array('itypes'=>array('1')));
+    print_r($response);
 
-  // delete item 
-  $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00');
-  print_r($response);
+    // unset item
+    $response=$client->unsetItem(2, array('itypes'=>array('1')));
+    print_r($response);
 
-  // record user action on item
-  $response=$client->recordUserActionOnItem('view', 8, 2);
-  print_r($response);
+    // delete item
+    $response=$client->deleteItem(3, '2000-01-01T01:01:01.001+01:00');
+    print_r($response);
 
-  // create event
-  $response=$client->createEvent(array(
-                        'event' => 'my_event',
-                        'entityType' => 'user',
-                        'entityId' => '8',
-                        'properties' => array('prop1'=>1, 'prop2'=>2),
-                   ));
-  print_r($response); 
+    // record user action on item
+    $response=$client->recordUserActionOnItem('view', 8, 2);
+    print_r($response);
 
-  // get event
-  $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo');
-  print_r($response);                       
+    // create event
+    $response=$client->createEvent(array(
+        'event' => 'my_event',
+        'entityType' => 'user',
+        'entityId' => '8',
+        'properties' => array('prop1'=>1, 'prop2'=>2),
+    ));
+    print_r($response);
 
+    // get event
+    $response=$client->getEvent('U_7eotSbeeK0BwshqEfRFAAAAUm-8gOyjP3FR73aBFo');
+    print_r($response);
 } catch (PredictionIOAPIError $e) {
-  echo $e->getMessage();
+    echo $e->getMessage();
 }
-?>
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index d313305..80c60eb 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -1,5 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+   http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
 <phpunit colors="true"
          verbose="false"
          convertErrorsToExceptions="true"
diff --git a/src/predictionio/BaseClient.php b/src/predictionio/BaseClient.php
index ecec355..83da150 100644
--- a/src/predictionio/BaseClient.php
+++ b/src/predictionio/BaseClient.php
@@ -1,5 +1,20 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 use GuzzleHttp\Client;
@@ -9,59 +24,61 @@
  * Base client for Event and Engine client
  *
  */
-abstract class BaseClient {
-  private $baseUrl;
-  public $client;
+abstract class BaseClient
+{
+    private $baseUrl;
+    public $client;
 
-  /**
-   * @param string $baseUrl Base URL to the server
-   * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely
-   * @param float $connectTimeout Number of seconds to wait while trying to connect to a server
-   */  
-  public function __construct($baseUrl, $timeout, $connectTimeout) {
-    $this->baseUrl = $baseUrl;
-    $this->client = new Client([
+    /**
+     * @param string $baseUrl Base URL to the server
+     * @param float $timeout Timeout of the request in seconds. Use 0 to wait indefinitely
+     * @param float $connectTimeout Number of seconds to wait while trying to connect to a server
+     */
+    public function __construct($baseUrl, $timeout, $connectTimeout)
+    {
+        $this->baseUrl = $baseUrl;
+        $this->client = new Client([
            'base_uri' => $this->baseUrl,
            'timeout' => $timeout,
            'connect_timeout' => $connectTimeout
-    ]);
-
-  }
-
-  /**
-   * Get the status of the Event Server or Engine Instance
-   *
-   * @return string status
-   */
-  public function getStatus() {
-    return $this->client->get('/')->getBody();
-  }
-
-  /**
-   * Send a HTTP request to the server
-   *
-   * @param string $method HTTP request method
-   * @param string $url Relative or absolute url
-   * @param string $body HTTP request body
-   *
-   * @return array JSON response
-   * @throws PredictionIOAPIError Request error
-   */
-  protected function sendRequest($method, $url, $body) {
-    $options = [
-      'headers' => [
-        'Accept-Encoding' => 'gzip',
-        'Content-Type' => 'application/json',
-      ],
-      'body' => $body,
-    ];
-
-    try {
-      $response = $this->client->request($method, $url, $options);
-      return json_decode($response->getBody(), true);
-    } catch (ClientException $e) {
-      throw new PredictionIOAPIError($e->getMessage()); 
+        ]);
     }
-  }
+
+    /**
+     * Get the status of the Event Server or Engine Instance
+     *
+     * @return string status
+     */
+    public function getStatus()
+    {
+        return $this->client->get('/')->getBody();
+    }
+
+    /**
+     * Send a HTTP request to the server
+     *
+     * @param string $method HTTP request method
+     * @param string $url Relative or absolute url
+     * @param string $body HTTP request body
+     *
+     * @return array JSON response
+     * @throws PredictionIOAPIError Request error
+     */
+    protected function sendRequest($method, $url, $body)
+    {
+        $options = [
+            'headers' => [
+                'Accept-Encoding' => 'gzip',
+                'Content-Type' => 'application/json',
+            ],
+            'body' => $body,
+        ];
+
+        try {
+            $response = $this->client->request($method, $url, $options);
+            return json_decode($response->getBody(), true);
+        } catch (ClientException $e) {
+            throw new PredictionIOAPIError($e->getMessage());
+        }
+    }
 }
-?>
diff --git a/src/predictionio/EngineClient.php b/src/predictionio/EngineClient.php
index f45ac35..7355937 100644
--- a/src/predictionio/EngineClient.php
+++ b/src/predictionio/EngineClient.php
@@ -1,12 +1,28 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 /**
  * Client for connecting to an Engine Instance
  *
  */
-class EngineClient extends BaseClient {
+class EngineClient extends BaseClient
+{
 
   /**
    * @param string Base URL to the Engine Instance. Default is localhost:8000.
@@ -15,23 +31,25 @@
    * @param float Number of seconds to wait while trying to connect to a server.
    *              Default is 5.
    */
-  public function __construct($baseUrl="http://localhost:8000",
-                              $timeout=0, $connectTimeout=5 ) {
-    parent::__construct($baseUrl, $timeout, $connectTimeout);
-  }
+    public function __construct(
+        $baseUrl="http://localhost:8000",
+        $timeout=0,
+        $connectTimeout=5
+    ) {
+        parent::__construct($baseUrl, $timeout, $connectTimeout);
+    }
 
-  /**
-   * Send prediction query to an Engine Instance
-   *
-   * @param array Query
-   *
-   * @return array JSON response
-   *
-   * @throws PredictionIOAPIError Request error
-   */
-  public function sendQuery(array $query) {
-    return $this->sendRequest("POST", "/queries.json", json_encode($query));
-  }
+    /**
+     * Send prediction query to an Engine Instance
+     *
+     * @param array Query
+     *
+     * @return array JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function sendQuery(array $query)
+    {
+        return $this->sendRequest("POST", "/queries.json", json_encode($query));
+    }
 }
-
-?>
diff --git a/src/predictionio/EventClient.php b/src/predictionio/EventClient.php
index df4286f..7a31bc7 100644
--- a/src/predictionio/EventClient.php
+++ b/src/predictionio/EventClient.php
@@ -1,267 +1,310 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
+
 use GuzzleHttp\Client;
 use \DateTime;
- 
+
 /**
  * Client for connecting to an Event Server
  *
  */
-class EventClient extends BaseClient {
-  const DATE_TIME_FORMAT = DateTime::ISO8601;
-  private $accessKey;
-  private $eventUrl;
+class EventClient extends BaseClient
+{
+    const DATE_TIME_FORMAT = DateTime::ISO8601;
+    private $accessKey;
+    private $eventUrl;
 
-  /**
-   * @param string Access Key
-   * @param string Base URL to the Event Server. Default is localhost:7070.
-   * @param float Timeout of the request in seconds. Use 0 to wait indefinitely
-   *              Default is 0.
-   * @param float Number of seconds to wait while trying to connect to a server.
-   *              Default is 5.                
-   */
-  public function __construct($accessKey, $baseUrl='http://localhost:7070',
-                              $timeout=0, $connectTimeout=5 ) {
-    parent::__construct($baseUrl, $timeout, $connectTimeout);
-    $this->accessKey = $accessKey;
-    $this->eventUrl = "/events.json?accessKey=$this->accessKey";
-  }
+    /**
+     * @param string Access Key
+     * @param string Base URL to the Event Server. Default is localhost:7070.
+     * @param float Timeout of the request in seconds. Use 0 to wait indefinitely
+     *              Default is 0.
+     * @param float Number of seconds to wait while trying to connect to a server.
+     *              Default is 5.
+     */
+    public function __construct(
+        $accessKey,
+        $baseUrl='http://localhost:7070',
+        $timeout=0,
+        $connectTimeout=5
+    ) {
+        parent::__construct($baseUrl, $timeout, $connectTimeout);
+        $this->accessKey = $accessKey;
+        $this->eventUrl = "/events.json?accessKey=$this->accessKey";
+    }
 
-  private function getEventTime($eventTime) {
-    $result = $eventTime;
-    if (!isset($eventTime)) {
-      $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT);
-    } 
+    private function getEventTime($eventTime)
+    {
+        $result = $eventTime;
+        if (!isset($eventTime)) {
+            $result = (new DateTime('NOW'))->format(self::DATE_TIME_FORMAT);
+        }
 
-    return $result;
-  }
+        return $result;
+    }
 
-  /**
-   * Set a user entity
-   *
-   * @param int|string User Id 
-   * @param array Properties of the user entity to set
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function setUser($uid, array $properties=array(), $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+    /**
+     * Set a user entity
+     *
+     * @param int|string User Id
+     * @param array Properties of the user entity to set
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function setUser($uid, array $properties=array(), $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    // casting to object so that an empty array would be represented as {}
-    if (empty($properties)) $properties = (object)$properties;
+        // casting to object so that an empty array would be represented as {}
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
 
-    $json = json_encode([
-        'event' => '$set',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$set',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-  /**
-   * Unset a user entity
-   *
-   * @param int|string User Id 
-   * @param array Properties of the user entity to unset
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function unsetUser($uid, array $properties, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) 
-      throw new PredictionIOAPIError('Specify at least one property'); 
+    /**
+     * Unset a user entity
+     *
+     * @param int|string User Id
+     * @param array Properties of the user entity to unset
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function unsetUser($uid, array $properties, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            throw new PredictionIOAPIError('Specify at least one property');
+        }
 
-    $json = json_encode([
-        'event' => '$unset',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$unset',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-  /**
-   * Delete a user entity
-   *
-   * @param int|string User Id 
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function deleteUser($uid, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+    /**
+     * Delete a user entity
+     *
+     * @param int|string User Id
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function deleteUser($uid, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    $json = json_encode([
-        'event' => '$delete',
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'eventTime' => $eventTime,
-    ]);
+        $json = json_encode([
+            'event' => '$delete',
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'eventTime' => $eventTime,
+        ]);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
- 
-  /**
-   * Set an item entity
-   *
-   * @param int|string Item Id 
-   * @param array Properties of the item entity to set
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-   public function setItem($iid, array $properties=array(), $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) $properties = (object)$properties;
-    $json = json_encode([
-        'event' => '$set',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Set an item entity
+     *
+     * @param int|string Item Id
+     * @param array Properties of the item entity to set
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function setItem($iid, array $properties=array(), $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
+        $json = json_encode([
+            'event' => '$set',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Unset an item entity
-   *
-   * @param int|string Item Id 
-   * @param array Properties of the item entity to unset
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function unsetItem($iid, array $properties, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties))
-        throw new PredictionIOAPIError('Specify at least one property'); 
-    $json = json_encode([
-        'event' => '$unset',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Unset an item entity
+     *
+     * @param int|string Item Id
+     * @param array Properties of the item entity to unset
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function unsetItem($iid, array $properties, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            throw new PredictionIOAPIError('Specify at least one property');
+        }
+        $json = json_encode([
+            'event' => '$unset',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Delete an item entity
-   *
-   * @param int|string Item Id 
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function deleteItem($iid, $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    $json = json_encode([
-        'event' => '$delete',
-        'entityType' => 'item',
-        'entityId' => $iid,
-        'eventTime' => $eventTime,
-    ]);
+    /**
+     * Delete an item entity
+     *
+     * @param int|string Item Id
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function deleteItem($iid, $eventTime=null)
+    {
+        $eventTime = $this->getEventTime($eventTime);
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+        $json = json_encode([
+            'event' => '$delete',
+            'entityType' => 'item',
+            'entityId' => $iid,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Record a user action on an item
-   *
-   * @param string Event name
-   * @param int|string User Id 
-   * @param int|string Item Id 
-   * @param array Properties of the event
-   * @param string Time of the event in ISO 8601 format
-   *               (e.g. 2014-09-09T16:17:42.937-08:00).
-   *               Default is the current time.
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-   public function recordUserActionOnItem($event, $uid, $iid, 
-                                         array $properties=array(),
-                                         $eventTime=null) {
-    $eventTime = $this->getEventTime($eventTime);
-    if (empty($properties)) $properties = (object)$properties;
-    $json = json_encode([
-        'event' => $event,
-        'entityType' => 'user',
-        'entityId' => $uid,
-        'targetEntityType' => 'item',
-        'targetEntityId' => $iid,
-        'properties' => $properties,
-        'eventTime' => $eventTime,
-    ]);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Record a user action on an item
+     *
+     * @param string Event name
+     * @param int|string User Id
+     * @param int|string Item Id
+     * @param array Properties of the event
+     * @param string Time of the event in ISO 8601 format
+     *               (e.g. 2014-09-09T16:17:42.937-08:00).
+     *               Default is the current time.
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function recordUserActionOnItem(
+       $event,
+       $uid,
+       $iid,
+       array $properties=array(),
+       $eventTime=null
+   ) {
+        $eventTime = $this->getEventTime($eventTime);
+        if (empty($properties)) {
+            $properties = (object)$properties;
+        }
+        $json = json_encode([
+            'event' => $event,
+            'entityType' => 'user',
+            'entityId' => $uid,
+            'targetEntityType' => 'item',
+            'targetEntityId' => $iid,
+            'properties' => $properties,
+            'eventTime' => $eventTime,
+        ]);
 
-  /**
-   * Create an event
-   *
-   * @param array An array describing the event
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function createEvent(array $data) {
-    $json = json_encode($data);
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
 
-    return $this->sendRequest('POST', $this->eventUrl, $json);
-  }
+    /**
+     * Create an event
+     *
+     * @param array An array describing the event
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function createEvent(array $data)
+    {
+        $json = json_encode($data);
 
-  /**
-   * Retrieve an event
-   *
-   * @param string Event ID
-   *
-   * @return string JSON response
-   * 
-   * @throws PredictionIOAPIError Request error
-   */
-  public function getEvent($eventId) {
-    return $this->sendRequest('GET', 
-      "/events/$eventId.json?accessKey=$this->accessKey", '');
-  }
+        return $this->sendRequest('POST', $this->eventUrl, $json);
+    }
+
+    /**
+     * Retrieve an event
+     *
+     * @param string Event ID
+     *
+     * @return string JSON response
+     *
+     * @throws PredictionIOAPIError Request error
+     */
+    public function getEvent($eventId)
+    {
+        return $this->sendRequest(
+            'GET',
+            "/events/$eventId.json?accessKey=$this->accessKey",
+            ''
+        );
+    }
 }
-
-?>
diff --git a/src/predictionio/Exporter.php b/src/predictionio/Exporter.php
index 35b7a03..c965dc7 100644
--- a/src/predictionio/Exporter.php
+++ b/src/predictionio/Exporter.php
@@ -1,13 +1,28 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
-
-trait Exporter {
-
+trait Exporter
+{
     abstract public function export($json);
 
-    public function jsonEncode($data) {
+    public function jsonEncode($data)
+    {
         return json_encode($data);
     }
 
@@ -24,10 +39,15 @@
      * @param array $properties
      * @param $eventTime
      */
-    public function createEvent($event, $entityType, $entityId,
-                                $targetEntityType=null, $targetEntityId=null, array $properties=null,
-                                $eventTime=null) {
-
+    public function createEvent(
+        $event,
+        $entityType,
+        $entityId,
+        $targetEntityType=null,
+        $targetEntityId=null,
+        array $properties=null,
+        $eventTime=null
+    ) {
         if (!isset($eventTime)) {
             $eventTime = new \DateTime();
         } elseif (!($eventTime instanceof \DateTime)) {
@@ -58,5 +78,4 @@
 
         $this->export($json);
     }
-
-}
\ No newline at end of file
+}
diff --git a/src/predictionio/FileExporter.php b/src/predictionio/FileExporter.php
index d0ee711..8e820dc 100644
--- a/src/predictionio/FileExporter.php
+++ b/src/predictionio/FileExporter.php
@@ -1,5 +1,20 @@
 <?php
 
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
 
 /**
@@ -7,21 +22,24 @@
  *
  * @package predictionio
  */
-class FileExporter {
-
+class FileExporter
+{
     use Exporter;
 
     private $file;
 
-    public function __construct($fileName) {
+    public function __construct($fileName)
+    {
         $this->file = fopen($fileName, 'w');
     }
 
-    public function export($json) {
+    public function export($json)
+    {
         fwrite($this->file, "$json\n");
     }
 
-    public function close() {
+    public function close()
+    {
         fclose($this->file);
     }
-}
\ No newline at end of file
+}
diff --git a/src/predictionio/PredictionIOAPIError.php b/src/predictionio/PredictionIOAPIError.php
index ca4cacd..b51414f 100644
--- a/src/predictionio/PredictionIOAPIError.php
+++ b/src/predictionio/PredictionIOAPIError.php
@@ -1,9 +1,25 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio;
+
 /**
  * Thrown when there is an error with the request.
  */
-class PredictionIOAPIError extends \Exception {
-
+class PredictionIOAPIError extends \Exception
+{
 }
-?>
diff --git a/tests/Unit/EngineClientTest.php b/tests/Unit/EngineClientTest.php
index 66c43b9..2f5fbbf 100644
--- a/tests/Unit/EngineClientTest.php
+++ b/tests/Unit/EngineClientTest.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio\tests\Unit;
 
 use GuzzleHttp\Middleware;
@@ -9,36 +25,35 @@
 use GuzzleHttp\HandlerStack;
 use GuzzleHttp\Psr7\Response;
 
+class EngineClientTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var EngineClient $engineClient */
+    protected $engineClient;
+    protected $container = [];
 
-class EngineClientTest extends \PHPUnit_Framework_TestCase {
-  /** @var EngineClient $engineClient */
-  protected $engineClient;
-  protected $container = [];
+    protected function setUp()
+    {
+        $history=Middleware::History($this->container);
+        $mock=new MockHandler([new Response(200)]);
+        $handler=HandlerStack::create($mock);
+        $handler->push($history);
+        $this->engineClient=new EngineClient();
+        $existingOptions = $this->engineClient->client->getConfig();
+        $existingOptions['handler'] = $handler;
+        $mockClient=new Client($existingOptions);
+        $this->engineClient->client = $mockClient;
+    }
 
-  protected function setUp() {
-    $history=Middleware::History($this->container);
-    $mock=new MockHandler([new Response(200)]);
-    $handler=HandlerStack::create($mock);
-    $handler->push($history);
-    $this->engineClient=new EngineClient();
-    $existingOptions = $this->engineClient->client->getConfig();
-    $existingOptions['handler'] = $handler;
-    $mockClient=new Client($existingOptions);
-    $this->engineClient->client = $mockClient;
-  }
+    public function testSendQuery()
+    {
+        $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3)));
+        $result=array_shift($this->container);
+        /** @var Request[] $result['request'] */
+        $body=json_decode($result['request']->getBody(), true);
 
-  public function testSendQuery() {
-    $this->engineClient->sendQuery(array('uid'=>5, 'iids'=>array(1,2,3)));
-    $result=array_shift($this->container);
-    /** @var Request[] $result['request'] */
-    $body=json_decode($result['request']->getBody(), true);
-
-    $this->assertEquals(5,$body['uid']);
-    $this->assertEquals(array(1,2,3),$body['iids']);
-    $this->assertEquals('POST',$result['request']->getMethod());
-    $this->assertEquals('http://localhost:8000/queries.json',$result['request']->getUri());
-  }
-
+        $this->assertEquals(5, $body['uid']);
+        $this->assertEquals(array(1,2,3), $body['iids']);
+        $this->assertEquals('POST', $result['request']->getMethod());
+        $this->assertEquals('http://localhost:8000/queries.json', $result['request']->getUri());
+    }
 }
-
-?>
diff --git a/tests/Unit/EventClientTest.php b/tests/Unit/EventClientTest.php
index 7a463ff..6c442ea 100644
--- a/tests/Unit/EventClientTest.php
+++ b/tests/Unit/EventClientTest.php
@@ -1,4 +1,20 @@
 <?php
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 namespace predictionio\tests\Unit;
 
 use GuzzleHttp\Client;
@@ -9,243 +25,263 @@
 use GuzzleHttp\Psr7\Response;
 use predictionio\EventClient;
 
-class EventClientTest extends \PHPUnit_Framework_TestCase {
-  /** @var  EventClient $eventClient */
-  protected $eventClient;
-  protected $container = [];
+class EventClientTest extends \PHPUnit_Framework_TestCase
+{
+    /** @var  EventClient $eventClient */
+    protected $eventClient;
+    protected $container = [];
 
-  protected function setUp() {
-    $history=Middleware::History($this->container);
-    $mock=new MockHandler([new Response(200)]);
-    $handler=HandlerStack::create($mock);
-    $handler->push($history);
-    $this->eventClient=new EventClient(
-        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O");
-    $existingOptions = $this->eventClient->client->getConfig();
-    $existingOptions['handler'] = $handler;
-    $mockClient=new Client($existingOptions);
-    $this->eventClient->client = $mockClient;
-  }
+    protected function setUp()
+    {
+        $history=Middleware::History($this->container);
+        $mock=new MockHandler([new Response(200)]);
+        $handler=HandlerStack::create($mock);
+        $handler->push($history);
+        $this->eventClient=new EventClient(
+        "j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O"
+    );
+        $existingOptions = $this->eventClient->client->getConfig();
+        $existingOptions['handler'] = $handler;
+        $mockClient=new Client($existingOptions);
+        $this->eventClient->client = $mockClient;
+    }
 
-  public function testSetUser() {
-    $this->eventClient->setUser(1,array('age'=>20));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testSetUser()
+    {
+        $this->eventClient->setUser(1, array('age'=>20));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals(20,$body['properties']['age']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals(20, $body['properties']['age']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testSetUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+    public function testSetUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->eventClient->setUser(1,array('age'=>20), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->eventClient->setUser(1, array('age'=>20), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  public function testUnsetUser() {
-    $this->eventClient->unsetUser(1,array('age'=>20));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testUnsetUser()
+    {
+        $this->eventClient->unsetUser(1, array('age'=>20));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals(20,$body['properties']['age']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals(20, $body['properties']['age']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testUnsetUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+    public function testUnsetUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->eventClient->unsetUser(1,array('age'=>20), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->eventClient->unsetUser(1, array('age'=>20), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  /**
-   * @expectedException \predictionio\PredictionIOAPIError
-   */
-  public function testUnsetUserWithoutProperties() {
-    $this->eventClient->unsetUser(1, array());
-  }
-  
-  public function testDeleteUser() {
-    $this->eventClient->deleteUser(1);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    /**
+     * @expectedException \predictionio\PredictionIOAPIError
+     */
+    public function testUnsetUserWithoutProperties()
+    {
+        $this->eventClient->unsetUser(1, array());
+    }
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testDeleteUser()
+    {
+        $this->eventClient->deleteUser(1);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testDeleteUserWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->deleteUser(1, $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testDeleteUserWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->deleteUser(1, $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testSetItem() {
-    $this->eventClient->setItem(1,array('type'=>'book'));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('book',$body['properties']['type']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testSetItem()
+    {
+        $this->eventClient->setItem(1, array('type'=>'book'));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testSetItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('book', $body['properties']['type']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->setItem(1,array('type'=>'book'), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testSetItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$set',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->setItem(1, array('type'=>'book'), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testUnsetItem() {
-    $this->eventClient->unsetItem(1,array('type'=>'book'));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$set', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('book',$body['properties']['type']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testUnsetItem()
+    {
+        $this->eventClient->unsetItem(1, array('type'=>'book'));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testUnsetItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('book', $body['properties']['type']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->unsetItem(1,array('type'=>'book'), $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testUnsetItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$unset',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->unsetItem(1, array('type'=>'book'), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  /**
-   * @expectedException \predictionio\PredictionIOAPIError
-   */
-  public function testUnsetItemWithoutProperties() {
-    $this->eventClient->unsetItem(1, array());
-  }
+        $this->assertEquals('$unset', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-  public function testDeleteItem() {
-    $this->eventClient->deleteItem(1);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    /**
+     * @expectedException \predictionio\PredictionIOAPIError
+     */
+    public function testUnsetItemWithoutProperties()
+    {
+        $this->eventClient->unsetItem(1, array());
+    }
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals('item',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testDeleteItem()
+    {
+        $this->eventClient->deleteItem(1);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testDeleteItemWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals('item', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->deleteItem(1, $eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testDeleteItemWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('$delete',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->deleteItem(1, $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testRecordAction() {
-    $this->eventClient->recordUserActionOnItem('view',1,888, array('count'=>2));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $this->assertEquals('$delete', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
 
-    $this->assertEquals('view',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals(1,$body['entityId']);
-    $this->assertEquals('item',$body['targetEntityType']);
-    $this->assertEquals(888,$body['targetEntityId']);
-    $this->assertEquals(2,$body['properties']['count']);
-    $this->assertNotNull($body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+    public function testRecordAction()
+    {
+        $this->eventClient->recordUserActionOnItem('view', 1, 888, array('count'=>2));
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testRecordActionWithEventTime() {
-    $eventTime='1982-09-25T01:23:45+0800';
+        $this->assertEquals('view', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals(1, $body['entityId']);
+        $this->assertEquals('item', $body['targetEntityType']);
+        $this->assertEquals(888, $body['targetEntityId']);
+        $this->assertEquals(2, $body['properties']['count']);
+        $this->assertNotNull($body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-    $this->eventClient->recordUserActionOnItem('view',1, 8, array(),$eventTime);
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testRecordActionWithEventTime()
+    {
+        $eventTime='1982-09-25T01:23:45+0800';
 
-    $this->assertEquals('view',$body['event']);
-    $this->assertEquals($eventTime, $body['eventTime']);
-  }
+        $this->eventClient->recordUserActionOnItem('view', 1, 8, array(), $eventTime);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-  public function testCreateEvent() {
-    $this->eventClient->createEvent(array(
+        $this->assertEquals('view', $body['event']);
+        $this->assertEquals($eventTime, $body['eventTime']);
+    }
+
+    public function testCreateEvent()
+    {
+        $this->eventClient->createEvent(array(
                         'event' => 'my_event',
                         'entityType' => 'user',
                         'entityId' => 'uid',
@@ -255,43 +291,40 @@
                                               'prop4'=>true,
                                               'prop5'=>array('a','b','c'),
                                               'prop6'=>4.56
-                                        ),
+                        ),
                         'eventTime' => '2004-12-13T21:39:45.618-07:00'
                        ));
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('my_event',$body['event']);
-    $this->assertEquals('user',$body['entityType']);
-    $this->assertEquals('uid',$body['entityId']);
-    $this->assertEquals(1,$body['properties']['prop1']);
-    $this->assertEquals('value2',$body['properties']['prop2']);
-    $this->assertEquals(array(1,2,3),$body['properties']['prop3']);
-    $this->assertEquals(true,$body['properties']['prop4']);
-    $this->assertEquals(array('a','b','c'),$body['properties']['prop5']);
-    $this->assertEquals(4.56,$body['properties']['prop6']);
-    $this->assertEquals('2004-12-13T21:39:45.618-07:00',$body['eventTime']);
-    $this->assertEquals('POST',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',$request->getUri());
-  }
+        $this->assertEquals('my_event', $body['event']);
+        $this->assertEquals('user', $body['entityType']);
+        $this->assertEquals('uid', $body['entityId']);
+        $this->assertEquals(1, $body['properties']['prop1']);
+        $this->assertEquals('value2', $body['properties']['prop2']);
+        $this->assertEquals(array(1,2,3), $body['properties']['prop3']);
+        $this->assertEquals(true, $body['properties']['prop4']);
+        $this->assertEquals(array('a','b','c'), $body['properties']['prop5']);
+        $this->assertEquals(4.56, $body['properties']['prop6']);
+        $this->assertEquals('2004-12-13T21:39:45.618-07:00', $body['eventTime']);
+        $this->assertEquals('POST', $request->getMethod());
+        $this->assertEquals('http://localhost:7070/events.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O', $request->getUri());
+    }
 
-  public function testGetEvent() {
-    $this->eventClient->getEvent('event_id');
-    $result=array_shift($this->container);
-    /** @var Request $request */
-    $request=$result['request'];
-    $body=json_decode($request->getBody(), true);
+    public function testGetEvent()
+    {
+        $this->eventClient->getEvent('event_id');
+        $result=array_shift($this->container);
+        /** @var Request $request */
+        $request=$result['request'];
+        $body=json_decode($request->getBody(), true);
 
-    $this->assertEquals('GET',$request->getMethod());
-    $this->assertEquals('http://localhost:7070/events/event_id.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',
-                $request->getUri());
-  }
-
-
-
-
+        $this->assertEquals('GET', $request->getMethod());
+        $this->assertEquals(
+            'http://localhost:7070/events/event_id.json?accessKey=j4jIdbq59JsF2f4CXwwkIiVHNFnyNvWXqMqXxcIbQDqFRz5K0fe9e3QfqjKwvW3O',
+            $request->getUri()
+        );
+    }
 }
-?>
-
diff --git a/tests/Unit/ExporterTest.php b/tests/Unit/ExporterTest.php
index fb2377b..7f3690a 100644
--- a/tests/Unit/ExporterTest.php
+++ b/tests/Unit/ExporterTest.php
@@ -1,11 +1,26 @@
 <?php
 
-namespace predictionio\tests\Unit;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
+namespace predictionio\tests\Unit;
 
 use predictionio\Exporter;
 
-class TestExporter {
+class TestExporter
+{
     use Exporter {
         jsonEncode as traitJsonEncode;
     }
@@ -13,31 +28,37 @@
     public $json;
     public $data;
 
-    public function __construct() {
+    public function __construct()
+    {
         $this->json = [];
         $this->data = [];
     }
 
-    public function jsonEncode($data) {
+    public function jsonEncode($data)
+    {
         $this->data[] = $data;
         return $this->traitJsonEncode($data);
     }
 
-    public function export($json) {
+    public function export($json)
+    {
         $this->json[] = $json;
     }
 }
 
-class ExporterTest extends \PHPUnit_Framework_TestCase {
+class ExporterTest extends \PHPUnit_Framework_TestCase
+{
 
     /** @var TestExporter $exporter */
     private $exporter;
 
-    protected function setUp() {
+    protected function setUp()
+    {
         $this->exporter = new TestExporter();
     }
 
-    public function testTimeIsNow() {
+    public function testTimeIsNow()
+    {
         $time = new \DateTime();
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id');
@@ -56,7 +77,8 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testTimeIsString() {
+    public function testTimeIsString()
+    {
         $time = new \DateTime('2015-04-01');
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, '2015-04-01');
@@ -75,7 +97,8 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testTimeIsDateTime() {
+    public function testTimeIsDateTime()
+    {
         $time = new \DateTime('2015-04-01');
 
         $this->exporter->createEvent('event', 'entity-type', 'entity-id', null, null, null, $time);
@@ -94,11 +117,19 @@
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
 
-    public function testOptionalFields() {
+    public function testOptionalFields()
+    {
         $time = new \DateTime('2015-04-01');
 
-        $this->exporter->createEvent('event', 'entity-type', 'entity-id',
-            'target-entity-type', 'target-entity-id', ['property' => true], $time);
+        $this->exporter->createEvent(
+            'event',
+            'entity-type',
+            'entity-id',
+            'target-entity-type',
+            'target-entity-id',
+            ['property' => true],
+            $time
+        );
 
         $this->assertEquals(1, count($this->exporter->data));
         $data = $this->exporter->data[0];
@@ -116,5 +147,4 @@
         $pattern = '/^{"event":"event","entityType":"entity-type","entityId":"entity-id","eventTime":"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}","targetEntityType":"target-entity-type","targetEntityId":"target-entity-id","properties":{"property":true}}$/';
         $this->assertTrue(preg_match($pattern, $json) === 1, 'json');
     }
-
-}
\ No newline at end of file
+}
diff --git a/tests/Unit/FileExporterTest.php b/tests/Unit/FileExporterTest.php
index f23affa..f7f43cd 100644
--- a/tests/Unit/FileExporterTest.php
+++ b/tests/Unit/FileExporterTest.php
@@ -1,12 +1,26 @@
 <?php
 
-namespace predictionio\tests\Unit;
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 
+namespace predictionio\tests\Unit;
 
 use predictionio\FileExporter;
 
-class FileExporterTest extends \PHPUnit_Framework_TestCase {
-
+class FileExporterTest extends \PHPUnit_Framework_TestCase
+{
     public function setUp()
     {
         register_shutdown_function(function () {
@@ -16,12 +30,27 @@
         });
     }
 
-    public function testExporter() {
+    public function testExporter()
+    {
         $exporter = new FileExporter('temp.file');
-        $exporter->createEvent('event-1', 'entity-type-1', 'entity-id-1',
-            null, null, null, '2015-04-01');
-        $exporter->createEvent('event-2', 'entity-type-2', 'entity-id-2',
-            'target-entity-type-2', 'target-entity-id-2', ['property' => 'blue'], '2015-04-01');
+        $exporter->createEvent(
+            'event-1',
+            'entity-type-1',
+            'entity-id-1',
+            null,
+            null,
+            null,
+            '2015-04-01'
+        );
+        $exporter->createEvent(
+            'event-2',
+            'entity-type-2',
+            'entity-id-2',
+            'target-entity-type-2',
+            'target-entity-id-2',
+            ['property' => 'blue'],
+            '2015-04-01'
+        );
         $exporter->close();
 
         $exported = file_get_contents('temp.file');
@@ -37,4 +66,4 @@
 
         $this->assertEquals($expected, $exported);
     }
-}
\ No newline at end of file
+}
