diff --git a/html2pdf-master/composer.lock b/html2pdf-master/composer.lock
new file mode 100644
index 00000000..712f4ad5
--- /dev/null
+++ b/html2pdf-master/composer.lock
@@ -0,0 +1,1668 @@
+{
+ "_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": "82df5cbef3144d106e2df0bf8f7cd2c1",
+ "packages": [
+ {
+ "name": "tecnickcom/tcpdf",
+ "version": "6.4.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tecnickcom/TCPDF.git",
+ "reference": "172540dcbfdf8dc983bc2fe78feff48ff7ec1c76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/172540dcbfdf8dc983bc2fe78feff48ff7ec1c76",
+ "reference": "172540dcbfdf8dc983bc2fe78feff48ff7ec1c76",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "config",
+ "include",
+ "tcpdf.php",
+ "tcpdf_parser.php",
+ "tcpdf_import.php",
+ "tcpdf_barcodes_1d.php",
+ "tcpdf_barcodes_2d.php",
+ "include/tcpdf_colors.php",
+ "include/tcpdf_filters.php",
+ "include/tcpdf_font_data.php",
+ "include/tcpdf_fonts.php",
+ "include/tcpdf_images.php",
+ "include/tcpdf_static.php",
+ "include/barcodes/datamatrix.php",
+ "include/barcodes/pdf417.php",
+ "include/barcodes/qrcode.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "Nicola Asuni",
+ "email": "info@tecnick.com",
+ "role": "lead"
+ }
+ ],
+ "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
+ "homepage": "http://www.tcpdf.org/",
+ "keywords": [
+ "PDFD32000-2008",
+ "TCPDF",
+ "barcodes",
+ "datamatrix",
+ "pdf",
+ "pdf417",
+ "qrcode"
+ ],
+ "support": {
+ "issues": "https://github.com/tecnickcom/TCPDF/issues",
+ "source": "https://github.com/tecnickcom/TCPDF/tree/6.4.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project",
+ "type": "custom"
+ }
+ ],
+ "time": "2021-07-20T14:43:20+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/master"
+ },
+ "time": "2015-06-14T21:17:01+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"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
+ },
+ "time": "2017-10-19T19:58:43+00:00"
+ },
+ {
+ "name": "phake/phake",
+ "version": "v2.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phake/Phake.git",
+ "reference": "d5832f1a0dd2370e14d38bcbaeb6770e8546cff2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phake/Phake/zipball/d5832f1a0dd2370e14d38bcbaeb6770e8546cff2",
+ "reference": "d5832f1a0dd2370e14d38bcbaeb6770e8546cff2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/comparator": "~1.1"
+ },
+ "require-dev": {
+ "codeclimate/php-test-reporter": "dev-master",
+ "doctrine/common": "2.3.*",
+ "ext-soap": "*",
+ "hamcrest/hamcrest-php": "1.1.*",
+ "phpunit/phpunit": "3.7.*"
+ },
+ "suggest": {
+ "doctrine/common": "Allows mock annotations to use import statements for classes.",
+ "hamcrest/hamcrest-php": "Use Hamcrest matchers."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Phake": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Mike Lively",
+ "email": "m@digitalsandwich.com"
+ }
+ ],
+ "description": "The Phake mock testing library",
+ "homepage": "https://github.com/mlively/Phake",
+ "keywords": [
+ "mock",
+ "testing"
+ ],
+ "support": {
+ "issues": "https://github.com/phake/Phake/issues",
+ "source": "https://github.com/phake/Phake/tree/v2.3.2"
+ },
+ "time": "2017-03-20T05:16:34+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"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
+ },
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpdocumentor/type-resolver": "0.4.*",
+ "phpunit/phpunit": "^6.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.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"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
+ },
+ "time": "2019-12-28T18:55:12+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "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"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
+ },
+ "time": "2017-12-30T13:23:38+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.10.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.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.10.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
+ },
+ "time": "2020-03-05T15:02:03+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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/4.0"
+ },
+ "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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/master"
+ },
+ "time": "2017-02-26T11:10:40+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
+ },
+ "abandoned": true,
+ "time": "2017-11-27T05:48:46+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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/5.7.27"
+ },
+ "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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.4"
+ },
+ "abandoned": true,
+ "time": "2017-06-30T09:13:00+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5"
+ },
+ "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/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-30T08:15:22+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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/1.2"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/1.4"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/master"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/master"
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/1.1.1"
+ },
+ "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/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master"
+ },
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
+ },
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
+ },
+ "abandoned": true,
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/master"
+ },
+ "time": "2016-10-03T07:35:21+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.3.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "require-dev": {
+ "symfony/console": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-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",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/3.3"
+ },
+ "time": "2017-07-23T12:43:26+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
+ },
+ "time": "2020-07-08T17:02:28+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^5.6 || ^7.0",
+ "ext-mbstring": "*",
+ "ext-gd": "*"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/html2pdf-master/vendor/autoload.php b/html2pdf-master/vendor/autoload.php
new file mode 100644
index 00000000..4bf6b403
--- /dev/null
+++ b/html2pdf-master/vendor/autoload.php
@@ -0,0 +1,7 @@
+ var_export($binPath, true),
+ '__DIR__' => var_export(dirname($binPath), true),
+ ));
+
+ eval($contents);
+ exit(0);
+}
+include $binPath;
diff --git a/html2pdf-master/vendor/bin/phpunit.bat b/html2pdf-master/vendor/bin/phpunit.bat
new file mode 100644
index 00000000..b1779234
--- /dev/null
+++ b/html2pdf-master/vendor/bin/phpunit.bat
@@ -0,0 +1,4 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit
+php "%BIN_TARGET%" %*
diff --git a/html2pdf-master/vendor/composer/ClassLoader.php b/html2pdf-master/vendor/composer/ClassLoader.php
new file mode 100644
index 00000000..6d0c3f2d
--- /dev/null
+++ b/html2pdf-master/vendor/composer/ClassLoader.php
@@ -0,0 +1,481 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ private $vendorDir;
+
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+ private $classMapAuthoritative = false;
+ private $missingClasses = array();
+ private $apcuPrefix;
+
+ private static $registeredLoaders = array();
+
+ public function __construct($vendorDir = null)
+ {
+ $this->vendorDir = $vendorDir;
+ }
+
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
+ }
+
+ return array();
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+
+ if (null === $this->vendorDir) {
+ return;
+ }
+
+ if ($prepend) {
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
+ } else {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ self::$registeredLoaders[$this->vendorDir] = $this;
+ }
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+
+ if (null !== $this->vendorDir) {
+ unset(self::$registeredLoaders[$this->vendorDir]);
+ }
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return true|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+
+ return null;
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ /**
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
+ *
+ * @return self[]
+ */
+ public static function getRegisteredLoaders()
+ {
+ return self::$registeredLoaders;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/html2pdf-master/vendor/composer/InstalledVersions.php b/html2pdf-master/vendor/composer/InstalledVersions.php
new file mode 100644
index 00000000..b3a4e161
--- /dev/null
+++ b/html2pdf-master/vendor/composer/InstalledVersions.php
@@ -0,0 +1,337 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer;
+
+use Composer\Autoload\ClassLoader;
+use Composer\Semver\VersionParser;
+
+/**
+ * This class is copied in every Composer installed project and available to all
+ *
+ * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
+ *
+ * To require it's presence, you can require `composer-runtime-api ^2.0`
+ */
+class InstalledVersions
+{
+ private static $installed;
+ private static $canGetVendors;
+ private static $installedByVendor = array();
+
+ /**
+ * Returns a list of all package names which are present, either by being installed, replaced or provided
+ *
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackages()
+ {
+ $packages = array();
+ foreach (self::getInstalled() as $installed) {
+ $packages[] = array_keys($installed['versions']);
+ }
+
+ if (1 === \count($packages)) {
+ return $packages[0];
+ }
+
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
+ }
+
+ /**
+ * Returns a list of all package names with a specific type e.g. 'library'
+ *
+ * @param string $type
+ * @return string[]
+ * @psalm-return list
+ */
+ public static function getInstalledPackagesByType($type)
+ {
+ $packagesByType = array();
+
+ foreach (self::getInstalled() as $installed) {
+ foreach ($installed['versions'] as $name => $package) {
+ if (isset($package['type']) && $package['type'] === $type) {
+ $packagesByType[] = $name;
+ }
+ }
+ }
+
+ return $packagesByType;
+ }
+
+ /**
+ * Checks whether the given package is installed
+ *
+ * This also returns true if the package name is provided or replaced by another package
+ *
+ * @param string $packageName
+ * @param bool $includeDevRequirements
+ * @return bool
+ */
+ public static function isInstalled($packageName, $includeDevRequirements = true)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (isset($installed['versions'][$packageName])) {
+ return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Checks whether the given package satisfies a version constraint
+ *
+ * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call:
+ *
+ * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3')
+ *
+ * @param VersionParser $parser Install composer/semver to have access to this class and functionality
+ * @param string $packageName
+ * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package
+ * @return bool
+ */
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
+ {
+ $constraint = $parser->parseConstraints($constraint);
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+ return $provided->matches($constraint);
+ }
+
+ /**
+ * Returns a version constraint representing all the range(s) which are installed for a given package
+ *
+ * It is easier to use this via isInstalled() with the $constraint argument if you need to check
+ * whether a given version of a package is installed, and not just whether it exists
+ *
+ * @param string $packageName
+ * @return string Version constraint usable with composer/semver
+ */
+ public static function getVersionRanges($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ $ranges = array();
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
+ }
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
+ }
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
+ }
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
+ }
+
+ return implode(' || ', $ranges);
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present
+ */
+ public static function getPrettyVersion($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['pretty_version'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference
+ */
+ public static function getReference($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ if (!isset($installed['versions'][$packageName]['reference'])) {
+ return null;
+ }
+
+ return $installed['versions'][$packageName]['reference'];
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @param string $packageName
+ * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path.
+ */
+ public static function getInstallPath($packageName)
+ {
+ foreach (self::getInstalled() as $installed) {
+ if (!isset($installed['versions'][$packageName])) {
+ continue;
+ }
+
+ return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null;
+ }
+
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+ }
+
+ /**
+ * @return array
+ * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}
+ */
+ public static function getRootPackage()
+ {
+ $installed = self::getInstalled();
+
+ return $installed[0]['root'];
+ }
+
+ /**
+ * Returns the raw installed.php data for custom implementations
+ *
+ * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
+ * @return array[]
+ * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array}
+ */
+ public static function getRawData()
+ {
+ @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED);
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = include __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+
+ return self::$installed;
+ }
+
+ /**
+ * Returns the raw data of all installed.php which are currently loaded for custom implementations
+ *
+ * @return array[]
+ * @psalm-return list}>
+ */
+ public static function getAllRawData()
+ {
+ return self::getInstalled();
+ }
+
+ /**
+ * Lets you reload the static array from another file
+ *
+ * This is only useful for complex integrations in which a project needs to use
+ * this class but then also needs to execute another project's autoloader in process,
+ * and wants to ensure both projects have access to their version of installed.php.
+ *
+ * A typical case would be PHPUnit, where it would need to make sure it reads all
+ * the data it needs from this class, then call reload() with
+ * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure
+ * the project in which it runs can then also use this class safely, without
+ * interference between PHPUnit's dependencies and the project's dependencies.
+ *
+ * @param array[] $data A vendor/composer/installed.php data set
+ * @return void
+ *
+ * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array} $data
+ */
+ public static function reload($data)
+ {
+ self::$installed = $data;
+ self::$installedByVendor = array();
+ }
+
+ /**
+ * @return array[]
+ * @psalm-return list}>
+ */
+ private static function getInstalled()
+ {
+ if (null === self::$canGetVendors) {
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
+ }
+
+ $installed = array();
+
+ if (self::$canGetVendors) {
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
+ if (isset(self::$installedByVendor[$vendorDir])) {
+ $installed[] = self::$installedByVendor[$vendorDir];
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
+ if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
+ self::$installed = $installed[count($installed) - 1];
+ }
+ }
+ }
+ }
+
+ if (null === self::$installed) {
+ // only require the installed.php file if this file is loaded from its dumped location,
+ // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
+ if (substr(__DIR__, -8, 1) !== 'C') {
+ self::$installed = require __DIR__ . '/installed.php';
+ } else {
+ self::$installed = array();
+ }
+ }
+ $installed[] = self::$installed;
+
+ return $installed;
+ }
+}
diff --git a/html2pdf-master/vendor/composer/LICENSE b/html2pdf-master/vendor/composer/LICENSE
new file mode 100644
index 00000000..f27399a0
--- /dev/null
+++ b/html2pdf-master/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/html2pdf-master/vendor/composer/autoload_classmap.php b/html2pdf-master/vendor/composer/autoload_classmap.php
new file mode 100644
index 00000000..e6691bce
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_classmap.php
@@ -0,0 +1,489 @@
+ $vendorDir . '/composer/InstalledVersions.php',
+ 'Datamatrix' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
+ 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php',
+ 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php',
+ 'PDF417' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
+ 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
+ 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
+ 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
+ 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
+ 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
+ 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
+ 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
+ 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
+ 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
+ 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php',
+ 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php',
+ 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php',
+ 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit_Framework_Constraint_DirectoryExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
+ 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit_Framework_Constraint_IsFinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit_Framework_Constraint_IsInfinite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit_Framework_Constraint_IsNan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit_Framework_Constraint_IsReadable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit_Framework_Constraint_IsWritable' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
+ 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
+ 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
+ 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
+ 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
+ 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
+ 'PHPUnit_Framework_CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php',
+ 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit_Framework_MissingCoversAnnotationException' => $vendorDir . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
+ 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit_Framework_WarningTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php',
+ 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
+ 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
+ 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php',
+ 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit_Util_ConfigurationGenerator' => $vendorDir . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php',
+ 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php',
+ 'PHPUnit_Util_Log_TeamCity' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php',
+ 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php',
+ 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php',
+ 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php',
+ 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php',
+ 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_XML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
+ 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
+ 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php',
+ 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php',
+ 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php',
+ 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
+ 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php',
+ 'QRcode' => $vendorDir . '/tecnickcom/tcpdf/include/barcodes/qrcode.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => $vendorDir . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => $vendorDir . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => $vendorDir . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => $vendorDir . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\RuntimeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => $vendorDir . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util' => $vendorDir . '/phpunit/php-code-coverage/src/Util.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => $vendorDir . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
+ 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => $vendorDir . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => $vendorDir . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => $vendorDir . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => $vendorDir . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
+ 'TCPDF' => $vendorDir . '/tecnickcom/tcpdf/tcpdf.php',
+ 'TCPDF2DBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php',
+ 'TCPDFBarcode' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php',
+ 'TCPDF_COLORS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_colors.php',
+ 'TCPDF_FILTERS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_filters.php',
+ 'TCPDF_FONTS' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_fonts.php',
+ 'TCPDF_FONT_DATA' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_font_data.php',
+ 'TCPDF_IMAGES' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_images.php',
+ 'TCPDF_IMPORT' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_import.php',
+ 'TCPDF_PARSER' => $vendorDir . '/tecnickcom/tcpdf/tcpdf_parser.php',
+ 'TCPDF_STATIC' => $vendorDir . '/tecnickcom/tcpdf/include/tcpdf_static.php',
+ 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php',
+);
diff --git a/html2pdf-master/vendor/composer/autoload_files.php b/html2pdf-master/vendor/composer/autoload_files.php
new file mode 100644
index 00000000..814add31
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_files.php
@@ -0,0 +1,11 @@
+ $vendorDir . '/symfony/polyfill-ctype/bootstrap.php',
+ '6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
+);
diff --git a/html2pdf-master/vendor/composer/autoload_namespaces.php b/html2pdf-master/vendor/composer/autoload_namespaces.php
new file mode 100644
index 00000000..f3fab528
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,10 @@
+ array($vendorDir . '/phake/phake/src'),
+);
diff --git a/html2pdf-master/vendor/composer/autoload_psr4.php b/html2pdf-master/vendor/composer/autoload_psr4.php
new file mode 100644
index 00000000..244df3f0
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_psr4.php
@@ -0,0 +1,17 @@
+ array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'),
+ 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'),
+ 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'),
+ 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
+ 'Spipu\\Html2Pdf\\' => array($baseDir . '/src'),
+ 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'),
+ 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'),
+ 'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
+);
diff --git a/html2pdf-master/vendor/composer/autoload_real.php b/html2pdf-master/vendor/composer/autoload_real.php
new file mode 100644
index 00000000..7e6dcc6c
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_real.php
@@ -0,0 +1,75 @@
+= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+ if ($useStaticLoader) {
+ require __DIR__ . '/autoload_static.php';
+
+ call_user_func(\Composer\Autoload\ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::getInitializer($loader));
+ } else {
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+ }
+
+ $loader->register(true);
+
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequiree513fabb38f4f77898ca9b42d74ddbc3($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
+
+function composerRequiree513fabb38f4f77898ca9b42d74ddbc3($fileIdentifier, $file)
+{
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
+}
diff --git a/html2pdf-master/vendor/composer/autoload_static.php b/html2pdf-master/vendor/composer/autoload_static.php
new file mode 100644
index 00000000..c234b2a7
--- /dev/null
+++ b/html2pdf-master/vendor/composer/autoload_static.php
@@ -0,0 +1,580 @@
+ __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
+ '6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'p' =>
+ array (
+ 'phpDocumentor\\Reflection\\' => 25,
+ ),
+ 'W' =>
+ array (
+ 'Webmozart\\Assert\\' => 17,
+ ),
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Ctype\\' => 23,
+ 'Symfony\\Component\\Yaml\\' => 23,
+ 'Spipu\\Html2Pdf\\' => 15,
+ ),
+ 'P' =>
+ array (
+ 'Prophecy\\' => 9,
+ ),
+ 'D' =>
+ array (
+ 'Doctrine\\Instantiator\\' => 22,
+ 'DeepCopy\\' => 9,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'phpDocumentor\\Reflection\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src',
+ 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src',
+ 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src',
+ ),
+ 'Webmozart\\Assert\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/webmozart/assert/src',
+ ),
+ 'Symfony\\Polyfill\\Ctype\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype',
+ ),
+ 'Symfony\\Component\\Yaml\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/yaml',
+ ),
+ 'Spipu\\Html2Pdf\\' =>
+ array (
+ 0 => __DIR__ . '/../..' . '/src',
+ ),
+ 'Prophecy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy',
+ ),
+ 'Doctrine\\Instantiator\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator',
+ ),
+ 'DeepCopy\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
+ ),
+ );
+
+ public static $prefixesPsr0 = array (
+ 'P' =>
+ array (
+ 'Phake' =>
+ array (
+ 0 => __DIR__ . '/..' . '/phake/phake/src',
+ ),
+ ),
+ );
+
+ public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
+ 'Datamatrix' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/datamatrix.php',
+ 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php',
+ 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php',
+ 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php',
+ 'PDF417' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/pdf417.php',
+ 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php',
+ 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php',
+ 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php',
+ 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php',
+ 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php',
+ 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php',
+ 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php',
+ 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php',
+ 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php',
+ 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php',
+ 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php',
+ 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php',
+ 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php',
+ 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php',
+ 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php',
+ 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php',
+ 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php',
+ 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php',
+ 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php',
+ 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php',
+ 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php',
+ 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php',
+ 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php',
+ 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php',
+ 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php',
+ 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php',
+ 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php',
+ 'PHPUnit_Framework_Constraint_DirectoryExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/DirectoryExists.php',
+ 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php',
+ 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php',
+ 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php',
+ 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php',
+ 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php',
+ 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php',
+ 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php',
+ 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php',
+ 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php',
+ 'PHPUnit_Framework_Constraint_IsFinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFinite.php',
+ 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php',
+ 'PHPUnit_Framework_Constraint_IsInfinite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInfinite.php',
+ 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php',
+ 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php',
+ 'PHPUnit_Framework_Constraint_IsNan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNan.php',
+ 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php',
+ 'PHPUnit_Framework_Constraint_IsReadable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsReadable.php',
+ 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php',
+ 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php',
+ 'PHPUnit_Framework_Constraint_IsWritable' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsWritable.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php',
+ 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php',
+ 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php',
+ 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php',
+ 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php',
+ 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php',
+ 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php',
+ 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php',
+ 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php',
+ 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php',
+ 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php',
+ 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php',
+ 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php',
+ 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php',
+ 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php',
+ 'PHPUnit_Framework_CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CoveredCodeNotExecutedException.php',
+ 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php',
+ 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php',
+ 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php',
+ 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php',
+ 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php',
+ 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php',
+ 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php',
+ 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php',
+ 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php',
+ 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php',
+ 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php',
+ 'PHPUnit_Framework_MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/MissingCoversAnnotationException.php',
+ 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php',
+ 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php',
+ 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php',
+ 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php',
+ 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php',
+ 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php',
+ 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php',
+ 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php',
+ 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php',
+ 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php',
+ 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php',
+ 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php',
+ 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php',
+ 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php',
+ 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php',
+ 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php',
+ 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php',
+ 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php',
+ 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php',
+ 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php',
+ 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php',
+ 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php',
+ 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php',
+ 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php',
+ 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnReference' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnReference.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php',
+ 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php',
+ 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php',
+ 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php',
+ 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php',
+ 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php',
+ 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php',
+ 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php',
+ 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php',
+ 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php',
+ 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php',
+ 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php',
+ 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php',
+ 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php',
+ 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php',
+ 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php',
+ 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php',
+ 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php',
+ 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php',
+ 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php',
+ 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php',
+ 'PHPUnit_Framework_WarningTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/WarningTestCase.php',
+ 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php',
+ 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php',
+ 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php',
+ 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php',
+ 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php',
+ 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php',
+ 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php',
+ 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php',
+ 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php',
+ 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php',
+ 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php',
+ 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php',
+ 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php',
+ 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php',
+ 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php',
+ 'PHPUnit_Util_ConfigurationGenerator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ConfigurationGenerator.php',
+ 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php',
+ 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php',
+ 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php',
+ 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php',
+ 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php',
+ 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php',
+ 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php',
+ 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php',
+ 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php',
+ 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php',
+ 'PHPUnit_Util_Log_TeamCity' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TeamCity.php',
+ 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php',
+ 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php',
+ 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php',
+ 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php',
+ 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php',
+ 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php',
+ 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php',
+ 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php',
+ 'PHPUnit_Util_TestDox_ResultPrinter_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/XML.php',
+ 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php',
+ 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php',
+ 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php',
+ 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php',
+ 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php',
+ 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php',
+ 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php',
+ 'QRcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/barcodes/qrcode.php',
+ 'SebastianBergmann\\CodeCoverage\\CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php',
+ 'SebastianBergmann\\CodeCoverage\\CoveredCodeNotExecutedException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/CoveredCodeNotExecutedException.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Driver.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/HHVM.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/PHPDBG.php',
+ 'SebastianBergmann\\CodeCoverage\\Driver\\Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Driver/Xdebug.php',
+ 'SebastianBergmann\\CodeCoverage\\Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/Exception.php',
+ 'SebastianBergmann\\CodeCoverage\\Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Filter.php',
+ 'SebastianBergmann\\CodeCoverage\\InvalidArgumentException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/InvalidArgumentException.php',
+ 'SebastianBergmann\\CodeCoverage\\MissingCoversAnnotationException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/MissingCoversAnnotationException.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\AbstractNode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/AbstractNode.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Builder' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Builder.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Node\\Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Node/Iterator.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Clover.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Crap4j.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Html\\Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Html/Renderer.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/PHP.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Text.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Coverage.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Directory.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Facade' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Facade.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/File.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Method.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Node.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Project.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Report.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Tests.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Totals.php',
+ 'SebastianBergmann\\CodeCoverage\\Report\\Xml\\Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Report/Xml/Unit.php',
+ 'SebastianBergmann\\CodeCoverage\\RuntimeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/RuntimeException.php',
+ 'SebastianBergmann\\CodeCoverage\\UnintentionallyCoveredCodeException' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Exception/UnintentionallyCoveredCodeException.php',
+ 'SebastianBergmann\\CodeCoverage\\Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/Util.php',
+ 'SebastianBergmann\\CodeUnitReverseLookup\\Wizard' => __DIR__ . '/..' . '/sebastian/code-unit-reverse-lookup/src/Wizard.php',
+ 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php',
+ 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php',
+ 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php',
+ 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php',
+ 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php',
+ 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php',
+ 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php',
+ 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php',
+ 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php',
+ 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php',
+ 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php',
+ 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php',
+ 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php',
+ 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php',
+ 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php',
+ 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php',
+ 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php',
+ 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php',
+ 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php',
+ 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php',
+ 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php',
+ 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php',
+ 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php',
+ 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php',
+ 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php',
+ 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php',
+ 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php',
+ 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php',
+ 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php',
+ 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Enumerator' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Enumerator.php',
+ 'SebastianBergmann\\ObjectEnumerator\\Exception' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/Exception.php',
+ 'SebastianBergmann\\ObjectEnumerator\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/object-enumerator/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php',
+ 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php',
+ 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php',
+ 'SebastianBergmann\\ResourceOperations\\ResourceOperations' => __DIR__ . '/..' . '/sebastian/resource-operations/src/ResourceOperations.php',
+ 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
+ 'TCPDF' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf.php',
+ 'TCPDF2DBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_2d.php',
+ 'TCPDFBarcode' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_barcodes_1d.php',
+ 'TCPDF_COLORS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_colors.php',
+ 'TCPDF_FILTERS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_filters.php',
+ 'TCPDF_FONTS' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_fonts.php',
+ 'TCPDF_FONT_DATA' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_font_data.php',
+ 'TCPDF_IMAGES' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_images.php',
+ 'TCPDF_IMPORT' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_import.php',
+ 'TCPDF_PARSER' => __DIR__ . '/..' . '/tecnickcom/tcpdf/tcpdf_parser.php',
+ 'TCPDF_STATIC' => __DIR__ . '/..' . '/tecnickcom/tcpdf/include/tcpdf_static.php',
+ 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::$prefixDirsPsr4;
+ $loader->prefixesPsr0 = ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::$prefixesPsr0;
+ $loader->classMap = ComposerStaticInite513fabb38f4f77898ca9b42d74ddbc3::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/html2pdf-master/vendor/composer/installed.json b/html2pdf-master/vendor/composer/installed.json
new file mode 100644
index 00000000..cbe26b71
--- /dev/null
+++ b/html2pdf-master/vendor/composer/installed.json
@@ -0,0 +1,1762 @@
+{
+ "packages": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "version_normalized": "1.0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "time": "2015-06-14T21:17:01+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/master"
+ },
+ "install-path": "../doctrine/instantiator"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.7.0",
+ "version_normalized": "1.7.0.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"
+ },
+ "time": "2017-10-19T19:58:43+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
+ },
+ "install-path": "../myclabs/deep-copy"
+ },
+ {
+ "name": "phake/phake",
+ "version": "v2.3.2",
+ "version_normalized": "2.3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phake/Phake.git",
+ "reference": "d5832f1a0dd2370e14d38bcbaeb6770e8546cff2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phake/Phake/zipball/d5832f1a0dd2370e14d38bcbaeb6770e8546cff2",
+ "reference": "d5832f1a0dd2370e14d38bcbaeb6770e8546cff2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/comparator": "~1.1"
+ },
+ "require-dev": {
+ "codeclimate/php-test-reporter": "dev-master",
+ "doctrine/common": "2.3.*",
+ "ext-soap": "*",
+ "hamcrest/hamcrest-php": "1.1.*",
+ "phpunit/phpunit": "3.7.*"
+ },
+ "suggest": {
+ "doctrine/common": "Allows mock annotations to use import statements for classes.",
+ "hamcrest/hamcrest-php": "Use Hamcrest matchers."
+ },
+ "time": "2017-03-20T05:16:34+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Phake": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Mike Lively",
+ "email": "m@digitalsandwich.com"
+ }
+ ],
+ "description": "The Phake mock testing library",
+ "homepage": "https://github.com/mlively/Phake",
+ "keywords": [
+ "mock",
+ "testing"
+ ],
+ "support": {
+ "issues": "https://github.com/phake/Phake/issues",
+ "source": "https://github.com/phake/Phake/tree/v2.3.2"
+ },
+ "install-path": "../phake/phake"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "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"
+ },
+ "time": "2017-09-11T18:02:19+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
+ },
+ "install-path": "../phpdocumentor/reflection-common"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "4.3.4",
+ "version_normalized": "4.3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0",
+ "phpdocumentor/type-resolver": "~0.4 || ^1.0.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "doctrine/instantiator": "^1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpdocumentor/type-resolver": "0.4.*",
+ "phpunit/phpunit": "^6.4"
+ },
+ "time": "2019-12-28T18:55:12+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/4.x"
+ },
+ "install-path": "../phpdocumentor/reflection-docblock"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.5.1",
+ "version_normalized": "0.5.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/cf842904952e64e703800d094cdf34e715a8a3ae",
+ "reference": "cf842904952e64e703800d094cdf34e715a8a3ae",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
+ },
+ "time": "2017-12-30T13:23:38+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
+ },
+ "install-path": "../phpdocumentor/type-resolver"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.10.3",
+ "version_normalized": "1.10.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
+ "reference": "451c3cd1418cf640de218914901e51b064abb093",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
+ "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5 || ^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
+ },
+ "time": "2020-03-05T15:02:03+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.10.3"
+ },
+ "install-path": "../phpspec/prophecy"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "4.0.8",
+ "version_normalized": "4.0.8.0",
+ "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"
+ },
+ "time": "2017-04-02T07:44:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/4.0"
+ },
+ "install-path": "../phpunit/php-code-coverage"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.5",
+ "version_normalized": "1.4.5.0",
+ "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"
+ },
+ "time": "2017-11-27T13:52:08+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
+ },
+ "install-path": "../phpunit/php-file-iterator"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "version_normalized": "1.2.1.0",
+ "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"
+ },
+ "time": "2015-06-21T13:50:34+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
+ },
+ "install-path": "../phpunit/php-text-template"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "version_normalized": "1.0.9.0",
+ "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"
+ },
+ "time": "2017-02-26T11:10:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/master"
+ },
+ "install-path": "../phpunit/php-timer"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "2.0.2",
+ "version_normalized": "2.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.2.4"
+ },
+ "time": "2017-11-27T05:48:46+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
+ },
+ "abandoned": true,
+ "install-path": "../phpunit/php-token-stream"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "5.7.27",
+ "version_normalized": "5.7.27.0",
+ "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"
+ },
+ "time": "2018-02-01T05:50:59+00:00",
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.7.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/5.7.27"
+ },
+ "install-path": "../phpunit/phpunit"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "3.4.4",
+ "version_normalized": "3.4.4.0",
+ "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": "*"
+ },
+ "time": "2017-06-30T09:13:00+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.4"
+ },
+ "abandoned": true,
+ "install-path": "../phpunit/phpunit-mock-objects"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5"
+ },
+ "time": "2020-11-30T08:15:22+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "install-path": "../sebastian/code-unit-reverse-lookup"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.4",
+ "version_normalized": "1.2.4.0",
+ "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"
+ },
+ "time": "2017-01-29T09:50:25+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/1.2"
+ },
+ "install-path": "../sebastian/comparator"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.3",
+ "version_normalized": "1.4.3.0",
+ "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"
+ },
+ "time": "2017-05-22T07:24:03+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/1.4"
+ },
+ "install-path": "../sebastian/diff"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "2.0.0",
+ "version_normalized": "2.0.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"
+ },
+ "time": "2016-11-26T07:53:53+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/master"
+ },
+ "install-path": "../sebastian/environment"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "2.0.0",
+ "version_normalized": "2.0.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"
+ },
+ "time": "2016-11-19T08:54:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/master"
+ },
+ "install-path": "../sebastian/exporter"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "version_normalized": "1.1.1.0",
+ "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": "*"
+ },
+ "time": "2015-10-12T03:26:01+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/1.1.1"
+ },
+ "install-path": "../sebastian/global-state"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "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"
+ },
+ "time": "2017-02-18T15:18:39+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master"
+ },
+ "install-path": "../sebastian/object-enumerator"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "2.0.0",
+ "version_normalized": "2.0.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"
+ },
+ "time": "2016-11-19T07:33:16+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
+ },
+ "install-path": "../sebastian/recursion-context"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "version_normalized": "1.0.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"
+ },
+ "time": "2015-07-28T20:34:47+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
+ },
+ "abandoned": true,
+ "install-path": "../sebastian/resource-operations"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
+ "version_normalized": "2.0.1.0",
+ "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"
+ },
+ "time": "2016-10-03T07:35:21+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/master"
+ },
+ "install-path": "../sebastian/version"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.19.0",
+ "version_normalized": "1.19.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "time": "2020-10-23T09:01:57+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "install-path": "../symfony/polyfill-ctype"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.3.6",
+ "version_normalized": "3.3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5.9"
+ },
+ "require-dev": {
+ "symfony/console": "~2.8|~3.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "time": "2017-07-23T12:43:26+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.3-dev"
+ }
+ },
+ "installation-source": "dist",
+ "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",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/3.3"
+ },
+ "install-path": "../symfony/yaml"
+ },
+ {
+ "name": "tecnickcom/tcpdf",
+ "version": "6.4.2",
+ "version_normalized": "6.4.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tecnickcom/TCPDF.git",
+ "reference": "172540dcbfdf8dc983bc2fe78feff48ff7ec1c76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/172540dcbfdf8dc983bc2fe78feff48ff7ec1c76",
+ "reference": "172540dcbfdf8dc983bc2fe78feff48ff7ec1c76",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2021-07-20T14:43:20+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "config",
+ "include",
+ "tcpdf.php",
+ "tcpdf_parser.php",
+ "tcpdf_import.php",
+ "tcpdf_barcodes_1d.php",
+ "tcpdf_barcodes_2d.php",
+ "include/tcpdf_colors.php",
+ "include/tcpdf_filters.php",
+ "include/tcpdf_font_data.php",
+ "include/tcpdf_fonts.php",
+ "include/tcpdf_images.php",
+ "include/tcpdf_static.php",
+ "include/barcodes/datamatrix.php",
+ "include/barcodes/pdf417.php",
+ "include/barcodes/qrcode.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-3.0-only"
+ ],
+ "authors": [
+ {
+ "name": "Nicola Asuni",
+ "email": "info@tecnick.com",
+ "role": "lead"
+ }
+ ],
+ "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
+ "homepage": "http://www.tcpdf.org/",
+ "keywords": [
+ "PDFD32000-2008",
+ "TCPDF",
+ "barcodes",
+ "datamatrix",
+ "pdf",
+ "pdf417",
+ "qrcode"
+ ],
+ "support": {
+ "issues": "https://github.com/tecnickcom/TCPDF/issues",
+ "source": "https://github.com/tecnickcom/TCPDF/tree/6.4.2"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_donations¤cy_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20tcpdf%20project",
+ "type": "custom"
+ }
+ ],
+ "install-path": "../tecnickcom/tcpdf"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "version_normalized": "1.9.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "time": "2020-07-08T17:02:28+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "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"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
+ },
+ "install-path": "../webmozart/assert"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": [
+ "doctrine/instantiator",
+ "myclabs/deep-copy",
+ "phake/phake",
+ "phpdocumentor/reflection-common",
+ "phpdocumentor/reflection-docblock",
+ "phpdocumentor/type-resolver",
+ "phpspec/prophecy",
+ "phpunit/php-code-coverage",
+ "phpunit/php-file-iterator",
+ "phpunit/php-text-template",
+ "phpunit/php-timer",
+ "phpunit/php-token-stream",
+ "phpunit/phpunit",
+ "phpunit/phpunit-mock-objects",
+ "sebastian/code-unit-reverse-lookup",
+ "sebastian/comparator",
+ "sebastian/diff",
+ "sebastian/environment",
+ "sebastian/exporter",
+ "sebastian/global-state",
+ "sebastian/object-enumerator",
+ "sebastian/recursion-context",
+ "sebastian/resource-operations",
+ "sebastian/version",
+ "symfony/polyfill-ctype",
+ "symfony/yaml",
+ "webmozart/assert"
+ ]
+}
diff --git a/html2pdf-master/vendor/composer/installed.php b/html2pdf-master/vendor/composer/installed.php
new file mode 100644
index 00000000..d45840b8
--- /dev/null
+++ b/html2pdf-master/vendor/composer/installed.php
@@ -0,0 +1,275 @@
+ array(
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'reference' => NULL,
+ 'name' => 'spipu/html2pdf',
+ 'dev' => true,
+ ),
+ 'versions' => array(
+ 'doctrine/instantiator' => array(
+ 'pretty_version' => '1.0.5',
+ 'version' => '1.0.5.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../doctrine/instantiator',
+ 'aliases' => array(),
+ 'reference' => '8e884e78f9f0eb1329e445619e04456e64d8051d',
+ 'dev_requirement' => true,
+ ),
+ 'myclabs/deep-copy' => array(
+ 'pretty_version' => '1.7.0',
+ 'version' => '1.7.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../myclabs/deep-copy',
+ 'aliases' => array(),
+ 'reference' => '3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e',
+ 'dev_requirement' => true,
+ ),
+ 'phake/phake' => array(
+ 'pretty_version' => 'v2.3.2',
+ 'version' => '2.3.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phake/phake',
+ 'aliases' => array(),
+ 'reference' => 'd5832f1a0dd2370e14d38bcbaeb6770e8546cff2',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/reflection-common' => array(
+ 'pretty_version' => '1.0.1',
+ 'version' => '1.0.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common',
+ 'aliases' => array(),
+ 'reference' => '21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/reflection-docblock' => array(
+ 'pretty_version' => '4.3.4',
+ 'version' => '4.3.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock',
+ 'aliases' => array(),
+ 'reference' => 'da3fd972d6bafd628114f7e7e036f45944b62e9c',
+ 'dev_requirement' => true,
+ ),
+ 'phpdocumentor/type-resolver' => array(
+ 'pretty_version' => '0.5.1',
+ 'version' => '0.5.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver',
+ 'aliases' => array(),
+ 'reference' => 'cf842904952e64e703800d094cdf34e715a8a3ae',
+ 'dev_requirement' => true,
+ ),
+ 'phpspec/prophecy' => array(
+ 'pretty_version' => 'v1.10.3',
+ 'version' => '1.10.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpspec/prophecy',
+ 'aliases' => array(),
+ 'reference' => '451c3cd1418cf640de218914901e51b064abb093',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-code-coverage' => array(
+ 'pretty_version' => '4.0.8',
+ 'version' => '4.0.8.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-code-coverage',
+ 'aliases' => array(),
+ 'reference' => 'ef7b2f56815df854e66ceaee8ebe9393ae36a40d',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-file-iterator' => array(
+ 'pretty_version' => '1.4.5',
+ 'version' => '1.4.5.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-file-iterator',
+ 'aliases' => array(),
+ 'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-text-template' => array(
+ 'pretty_version' => '1.2.1',
+ 'version' => '1.2.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-text-template',
+ 'aliases' => array(),
+ 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-timer' => array(
+ 'pretty_version' => '1.0.9',
+ 'version' => '1.0.9.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-timer',
+ 'aliases' => array(),
+ 'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/php-token-stream' => array(
+ 'pretty_version' => '2.0.2',
+ 'version' => '2.0.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/php-token-stream',
+ 'aliases' => array(),
+ 'reference' => '791198a2c6254db10131eecfe8c06670700904db',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/phpunit' => array(
+ 'pretty_version' => '5.7.27',
+ 'version' => '5.7.27.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/phpunit',
+ 'aliases' => array(),
+ 'reference' => 'b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c',
+ 'dev_requirement' => true,
+ ),
+ 'phpunit/phpunit-mock-objects' => array(
+ 'pretty_version' => '3.4.4',
+ 'version' => '3.4.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../phpunit/phpunit-mock-objects',
+ 'aliases' => array(),
+ 'reference' => 'a23b761686d50a560cc56233b9ecf49597cc9118',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/code-unit-reverse-lookup' => array(
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/code-unit-reverse-lookup',
+ 'aliases' => array(),
+ 'reference' => '1de8cd5c010cb153fcd68b8d0f64606f523f7619',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/comparator' => array(
+ 'pretty_version' => '1.2.4',
+ 'version' => '1.2.4.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/comparator',
+ 'aliases' => array(),
+ 'reference' => '2b7424b55f5047b47ac6e5ccb20b2aea4011d9be',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/diff' => array(
+ 'pretty_version' => '1.4.3',
+ 'version' => '1.4.3.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/diff',
+ 'aliases' => array(),
+ 'reference' => '7f066a26a962dbe58ddea9f72a4e82874a3975a4',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/environment' => array(
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/environment',
+ 'aliases' => array(),
+ 'reference' => '5795ffe5dc5b02460c3e34222fee8cbe245d8fac',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/exporter' => array(
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/exporter',
+ 'aliases' => array(),
+ 'reference' => 'ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/global-state' => array(
+ 'pretty_version' => '1.1.1',
+ 'version' => '1.1.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/global-state',
+ 'aliases' => array(),
+ 'reference' => 'bc37d50fea7d017d3d340f230811c9f1d7280af4',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/object-enumerator' => array(
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/object-enumerator',
+ 'aliases' => array(),
+ 'reference' => '1311872ac850040a79c3c058bea3e22d0f09cbb7',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/recursion-context' => array(
+ 'pretty_version' => '2.0.0',
+ 'version' => '2.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/recursion-context',
+ 'aliases' => array(),
+ 'reference' => '2c3ba150cbec723aa057506e73a8d33bdb286c9a',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/resource-operations' => array(
+ 'pretty_version' => '1.0.0',
+ 'version' => '1.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/resource-operations',
+ 'aliases' => array(),
+ 'reference' => 'ce990bb21759f94aeafd30209e8cfcdfa8bc3f52',
+ 'dev_requirement' => true,
+ ),
+ 'sebastian/version' => array(
+ 'pretty_version' => '2.0.1',
+ 'version' => '2.0.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../sebastian/version',
+ 'aliases' => array(),
+ 'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
+ 'dev_requirement' => true,
+ ),
+ 'spipu/html2pdf' => array(
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../../',
+ 'aliases' => array(),
+ 'reference' => NULL,
+ 'dev_requirement' => false,
+ ),
+ 'symfony/polyfill-ctype' => array(
+ 'pretty_version' => 'v1.19.0',
+ 'version' => '1.19.0.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/polyfill-ctype',
+ 'aliases' => array(),
+ 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b',
+ 'dev_requirement' => true,
+ ),
+ 'symfony/yaml' => array(
+ 'pretty_version' => 'v3.3.6',
+ 'version' => '3.3.6.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../symfony/yaml',
+ 'aliases' => array(),
+ 'reference' => 'ddc23324e6cfe066f3dd34a37ff494fa80b617ed',
+ 'dev_requirement' => true,
+ ),
+ 'tecnickcom/tcpdf' => array(
+ 'pretty_version' => '6.4.2',
+ 'version' => '6.4.2.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../tecnickcom/tcpdf',
+ 'aliases' => array(),
+ 'reference' => '172540dcbfdf8dc983bc2fe78feff48ff7ec1c76',
+ 'dev_requirement' => false,
+ ),
+ 'webmozart/assert' => array(
+ 'pretty_version' => '1.9.1',
+ 'version' => '1.9.1.0',
+ 'type' => 'library',
+ 'install_path' => __DIR__ . '/../webmozart/assert',
+ 'aliases' => array(),
+ 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
+ 'dev_requirement' => true,
+ ),
+ ),
+);
diff --git a/html2pdf-master/vendor/composer/platform_check.php b/html2pdf-master/vendor/composer/platform_check.php
new file mode 100644
index 00000000..8b379f44
--- /dev/null
+++ b/html2pdf-master/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+= 50600)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 5.6.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/.gitignore b/html2pdf-master/vendor/doctrine/instantiator/.gitignore
new file mode 100644
index 00000000..e3e368dd
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/.gitignore
@@ -0,0 +1,5 @@
+phpunit.xml
+composer.lock
+build
+vendor
+coverage.clover
diff --git a/html2pdf-master/vendor/doctrine/instantiator/.scrutinizer.yml b/html2pdf-master/vendor/doctrine/instantiator/.scrutinizer.yml
new file mode 100644
index 00000000..aad5e403
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/.scrutinizer.yml
@@ -0,0 +1,46 @@
+before_commands:
+ - "composer install --prefer-source"
+
+tools:
+ external_code_coverage:
+ timeout: 600
+ php_code_coverage:
+ enabled: true
+ test_command: ./vendor/bin/phpunit
+ php_code_sniffer:
+ enabled: true
+ config:
+ standard: PSR2
+ filter:
+ paths: ["src/*", "tests/*"]
+ php_cpd:
+ enabled: true
+ excluded_dirs: ["build/*", "tests", "vendor"]
+ php_cs_fixer:
+ enabled: true
+ config:
+ level: all
+ filter:
+ paths: ["src/*", "tests/*"]
+ php_loc:
+ enabled: true
+ excluded_dirs: ["build", "tests", "vendor"]
+ php_mess_detector:
+ enabled: true
+ config:
+ ruleset: phpmd.xml.dist
+ design_rules: { eval_expression: false }
+ filter:
+ paths: ["src/*"]
+ php_pdepend:
+ enabled: true
+ excluded_dirs: ["build", "tests", "vendor"]
+ php_analyzer:
+ enabled: true
+ filter:
+ paths: ["src/*", "tests/*"]
+ php_hhvm:
+ enabled: true
+ filter:
+ paths: ["src/*", "tests/*"]
+ sensiolabs_security_checker: true
diff --git a/html2pdf-master/vendor/doctrine/instantiator/.travis.install.sh b/html2pdf-master/vendor/doctrine/instantiator/.travis.install.sh
new file mode 100644
index 00000000..2819188c
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/.travis.install.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+set -x
+if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ] || [ "$TRAVIS_PHP_VERSION" = 'hhvm-nightly' ] ; then
+ curl -sS https://getcomposer.org/installer > composer-installer.php
+ hhvm composer-installer.php
+ hhvm -v ResourceLimit.SocketDefaultTimeout=30 -v Http.SlowQueryThreshold=30000 composer.phar update --prefer-source
+elif [ "$TRAVIS_PHP_VERSION" = '5.3.3' ] ; then
+ composer self-update
+ composer update --prefer-source --no-dev
+ composer dump-autoload
+else
+ composer self-update
+ composer update --prefer-source
+fi
diff --git a/html2pdf-master/vendor/doctrine/instantiator/.travis.yml b/html2pdf-master/vendor/doctrine/instantiator/.travis.yml
new file mode 100644
index 00000000..7f1ec5f9
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/.travis.yml
@@ -0,0 +1,22 @@
+language: php
+
+php:
+ - 5.3.3
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - hhvm
+
+before_script:
+ - ./.travis.install.sh
+ - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then PHPUNIT_FLAGS="--coverage-clover coverage.clover"; else PHPUNIT_FLAGS=""; fi
+
+script:
+ - if [ $TRAVIS_PHP_VERSION = '5.3.3' ]; then phpunit; fi
+ - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpunit $PHPUNIT_FLAGS; fi
+ - if [ $TRAVIS_PHP_VERSION != '5.3.3' ]; then ./vendor/bin/phpcs --standard=PSR2 ./src/ ./tests/; fi
+ - if [[ $TRAVIS_PHP_VERSION != '5.3.3' && $TRAVIS_PHP_VERSION != '5.4.29' && $TRAVIS_PHP_VERSION != '5.5.13' ]]; then php -n ./vendor/bin/athletic -p ./tests/DoctrineTest/InstantiatorPerformance/ -f GroupedFormatter; fi
+
+after_script:
+ - if [ $TRAVIS_PHP_VERSION = '5.6' ]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
diff --git a/html2pdf-master/vendor/doctrine/instantiator/CONTRIBUTING.md b/html2pdf-master/vendor/doctrine/instantiator/CONTRIBUTING.md
new file mode 100644
index 00000000..75b84b2a
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/CONTRIBUTING.md
@@ -0,0 +1,35 @@
+# Contributing
+
+ * Coding standard for the project is [PSR-2](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)
+ * The project will follow strict [object calisthenics](http://www.slideshare.net/guilhermeblanco/object-calisthenics-applied-to-php)
+ * Any contribution must provide tests for additional introduced conditions
+ * Any un-confirmed issue needs a failing test case before being accepted
+ * Pull requests must be sent from a new hotfix/feature branch, not from `master`.
+
+## Installation
+
+To install the project and run the tests, you need to clone it first:
+
+```sh
+$ git clone git://github.com/doctrine/instantiator.git
+```
+
+You will then need to run a composer installation:
+
+```sh
+$ cd Instantiator
+$ curl -s https://getcomposer.org/installer | php
+$ php composer.phar update
+```
+
+## Testing
+
+The PHPUnit version to be used is the one installed as a dev- dependency via composer:
+
+```sh
+$ ./vendor/bin/phpunit
+```
+
+Accepted coverage for new contributions is 80%. Any contribution not satisfying this requirement
+won't be merged.
+
diff --git a/html2pdf-master/vendor/doctrine/instantiator/LICENSE b/html2pdf-master/vendor/doctrine/instantiator/LICENSE
new file mode 100644
index 00000000..4d983d1a
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014 Doctrine Project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/html2pdf-master/vendor/doctrine/instantiator/README.md b/html2pdf-master/vendor/doctrine/instantiator/README.md
new file mode 100644
index 00000000..393ec7ca
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/README.md
@@ -0,0 +1,40 @@
+# Instantiator
+
+This library provides a way of avoiding usage of constructors when instantiating PHP classes.
+
+[](https://travis-ci.org/doctrine/instantiator)
+[](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master)
+[](https://scrutinizer-ci.com/g/doctrine/instantiator/?branch=master)
+[](https://www.versioneye.com/package/php--doctrine--instantiator)
+[](http://hhvm.h4cc.de/package/doctrine/instantiator)
+
+[](https://packagist.org/packages/doctrine/instantiator)
+[](https://packagist.org/packages/doctrine/instantiator)
+
+## Installation
+
+The suggested installation method is via [composer](https://getcomposer.org/):
+
+```sh
+php composer.phar require "doctrine/instantiator:~1.0.3"
+```
+
+## Usage
+
+The instantiator is able to create new instances of any class without using the constructor or any API of the class
+itself:
+
+```php
+$instantiator = new \Doctrine\Instantiator\Instantiator();
+
+$instance = $instantiator->instantiate('My\\ClassName\\Here');
+```
+
+## Contributing
+
+Please read the [CONTRIBUTING.md](CONTRIBUTING.md) contents if you wish to help out!
+
+## Credits
+
+This library was migrated from [ocramius/instantiator](https://github.com/Ocramius/Instantiator), which
+has been donated to the doctrine organization, and which is now deprecated in favour of this package.
diff --git a/html2pdf-master/vendor/doctrine/instantiator/composer.json b/html2pdf-master/vendor/doctrine/instantiator/composer.json
new file mode 100644
index 00000000..4823890b
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/composer.json
@@ -0,0 +1,45 @@
+{
+ "name": "doctrine/instantiator",
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "type": "library",
+ "license": "MIT",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "instantiate",
+ "constructor"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "ext-pdo": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0",
+ "athletic/athletic": "~0.1.8"
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "autoload-dev": {
+ "psr-0": {
+ "DoctrineTest\\InstantiatorPerformance\\": "tests",
+ "DoctrineTest\\InstantiatorTest\\": "tests",
+ "DoctrineTest\\InstantiatorTestAsset\\": "tests"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/phpmd.xml.dist b/html2pdf-master/vendor/doctrine/instantiator/phpmd.xml.dist
new file mode 100644
index 00000000..82541056
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/phpmd.xml.dist
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/html2pdf-master/vendor/doctrine/instantiator/phpunit.xml.dist b/html2pdf-master/vendor/doctrine/instantiator/phpunit.xml.dist
new file mode 100644
index 00000000..0a8d5709
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/phpunit.xml.dist
@@ -0,0 +1,22 @@
+
+
+
+ ./tests/DoctrineTest/InstantiatorTest
+
+
+
+ ./src
+
+
+
diff --git a/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
new file mode 100644
index 00000000..3065375a
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/ExceptionInterface.php
@@ -0,0 +1,29 @@
+.
+ */
+
+namespace Doctrine\Instantiator\Exception;
+
+/**
+ * Base exception marker interface for the instantiator component
+ *
+ * @author Marco Pivetta
+ */
+interface ExceptionInterface
+{
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
new file mode 100644
index 00000000..ea8d28c5
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/InvalidArgumentException.php
@@ -0,0 +1,62 @@
+.
+ */
+
+namespace Doctrine\Instantiator\Exception;
+
+use InvalidArgumentException as BaseInvalidArgumentException;
+use ReflectionClass;
+
+/**
+ * Exception for invalid arguments provided to the instantiator
+ *
+ * @author Marco Pivetta
+ */
+class InvalidArgumentException extends BaseInvalidArgumentException implements ExceptionInterface
+{
+ /**
+ * @param string $className
+ *
+ * @return self
+ */
+ public static function fromNonExistingClass($className)
+ {
+ if (interface_exists($className)) {
+ return new self(sprintf('The provided type "%s" is an interface, and can not be instantiated', $className));
+ }
+
+ if (PHP_VERSION_ID >= 50400 && trait_exists($className)) {
+ return new self(sprintf('The provided type "%s" is a trait, and can not be instantiated', $className));
+ }
+
+ return new self(sprintf('The provided class "%s" does not exist', $className));
+ }
+
+ /**
+ * @param ReflectionClass $reflectionClass
+ *
+ * @return self
+ */
+ public static function fromAbstractClass(ReflectionClass $reflectionClass)
+ {
+ return new self(sprintf(
+ 'The provided class "%s" is abstract, and can not be instantiated',
+ $reflectionClass->getName()
+ ));
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
new file mode 100644
index 00000000..1681e56e
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Exception/UnexpectedValueException.php
@@ -0,0 +1,79 @@
+.
+ */
+
+namespace Doctrine\Instantiator\Exception;
+
+use Exception;
+use ReflectionClass;
+use UnexpectedValueException as BaseUnexpectedValueException;
+
+/**
+ * Exception for given parameters causing invalid/unexpected state on instantiation
+ *
+ * @author Marco Pivetta
+ */
+class UnexpectedValueException extends BaseUnexpectedValueException implements ExceptionInterface
+{
+ /**
+ * @param ReflectionClass $reflectionClass
+ * @param Exception $exception
+ *
+ * @return self
+ */
+ public static function fromSerializationTriggeredException(ReflectionClass $reflectionClass, Exception $exception)
+ {
+ return new self(
+ sprintf(
+ 'An exception was raised while trying to instantiate an instance of "%s" via un-serialization',
+ $reflectionClass->getName()
+ ),
+ 0,
+ $exception
+ );
+ }
+
+ /**
+ * @param ReflectionClass $reflectionClass
+ * @param string $errorString
+ * @param int $errorCode
+ * @param string $errorFile
+ * @param int $errorLine
+ *
+ * @return UnexpectedValueException
+ */
+ public static function fromUncleanUnSerialization(
+ ReflectionClass $reflectionClass,
+ $errorString,
+ $errorCode,
+ $errorFile,
+ $errorLine
+ ) {
+ return new self(
+ sprintf(
+ 'Could not produce an instance of "%s" via un-serialization, since an error was triggered '
+ . 'in file "%s" at line "%d"',
+ $reflectionClass->getName(),
+ $errorFile,
+ $errorLine
+ ),
+ 0,
+ new Exception($errorString, $errorCode)
+ );
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
new file mode 100644
index 00000000..6d5b3b65
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/Instantiator.php
@@ -0,0 +1,273 @@
+.
+ */
+
+namespace Doctrine\Instantiator;
+
+use Closure;
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Exception;
+use ReflectionClass;
+
+/**
+ * {@inheritDoc}
+ *
+ * @author Marco Pivetta
+ */
+final class Instantiator implements InstantiatorInterface
+{
+ /**
+ * Markers used internally by PHP to define whether {@see \unserialize} should invoke
+ * the method {@see \Serializable::unserialize()} when dealing with classes implementing
+ * the {@see \Serializable} interface.
+ */
+ const SERIALIZATION_FORMAT_USE_UNSERIALIZER = 'C';
+ const SERIALIZATION_FORMAT_AVOID_UNSERIALIZER = 'O';
+
+ /**
+ * @var \Closure[] of {@see \Closure} instances used to instantiate specific classes
+ */
+ private static $cachedInstantiators = array();
+
+ /**
+ * @var object[] of objects that can directly be cloned
+ */
+ private static $cachedCloneables = array();
+
+ /**
+ * {@inheritDoc}
+ */
+ public function instantiate($className)
+ {
+ if (isset(self::$cachedCloneables[$className])) {
+ return clone self::$cachedCloneables[$className];
+ }
+
+ if (isset(self::$cachedInstantiators[$className])) {
+ $factory = self::$cachedInstantiators[$className];
+
+ return $factory();
+ }
+
+ return $this->buildAndCacheFromFactory($className);
+ }
+
+ /**
+ * Builds the requested object and caches it in static properties for performance
+ *
+ * @param string $className
+ *
+ * @return object
+ */
+ private function buildAndCacheFromFactory($className)
+ {
+ $factory = self::$cachedInstantiators[$className] = $this->buildFactory($className);
+ $instance = $factory();
+
+ if ($this->isSafeToClone(new ReflectionClass($instance))) {
+ self::$cachedCloneables[$className] = clone $instance;
+ }
+
+ return $instance;
+ }
+
+ /**
+ * Builds a {@see \Closure} capable of instantiating the given $className without
+ * invoking its constructor.
+ *
+ * @param string $className
+ *
+ * @return Closure
+ */
+ private function buildFactory($className)
+ {
+ $reflectionClass = $this->getReflectionClass($className);
+
+ if ($this->isInstantiableViaReflection($reflectionClass)) {
+ return function () use ($reflectionClass) {
+ return $reflectionClass->newInstanceWithoutConstructor();
+ };
+ }
+
+ $serializedString = sprintf(
+ '%s:%d:"%s":0:{}',
+ $this->getSerializationFormat($reflectionClass),
+ strlen($className),
+ $className
+ );
+
+ $this->checkIfUnSerializationIsSupported($reflectionClass, $serializedString);
+
+ return function () use ($serializedString) {
+ return unserialize($serializedString);
+ };
+ }
+
+ /**
+ * @param string $className
+ *
+ * @return ReflectionClass
+ *
+ * @throws InvalidArgumentException
+ */
+ private function getReflectionClass($className)
+ {
+ if (! class_exists($className)) {
+ throw InvalidArgumentException::fromNonExistingClass($className);
+ }
+
+ $reflection = new ReflectionClass($className);
+
+ if ($reflection->isAbstract()) {
+ throw InvalidArgumentException::fromAbstractClass($reflection);
+ }
+
+ return $reflection;
+ }
+
+ /**
+ * @param ReflectionClass $reflectionClass
+ * @param string $serializedString
+ *
+ * @throws UnexpectedValueException
+ *
+ * @return void
+ */
+ private function checkIfUnSerializationIsSupported(ReflectionClass $reflectionClass, $serializedString)
+ {
+ set_error_handler(function ($code, $message, $file, $line) use ($reflectionClass, & $error) {
+ $error = UnexpectedValueException::fromUncleanUnSerialization(
+ $reflectionClass,
+ $message,
+ $code,
+ $file,
+ $line
+ );
+ });
+
+ $this->attemptInstantiationViaUnSerialization($reflectionClass, $serializedString);
+
+ restore_error_handler();
+
+ if ($error) {
+ throw $error;
+ }
+ }
+
+ /**
+ * @param ReflectionClass $reflectionClass
+ * @param string $serializedString
+ *
+ * @throws UnexpectedValueException
+ *
+ * @return void
+ */
+ private function attemptInstantiationViaUnSerialization(ReflectionClass $reflectionClass, $serializedString)
+ {
+ try {
+ unserialize($serializedString);
+ } catch (Exception $exception) {
+ restore_error_handler();
+
+ throw UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $exception);
+ }
+ }
+
+ /**
+ * @param ReflectionClass $reflectionClass
+ *
+ * @return bool
+ */
+ private function isInstantiableViaReflection(ReflectionClass $reflectionClass)
+ {
+ if (\PHP_VERSION_ID >= 50600) {
+ return ! ($this->hasInternalAncestors($reflectionClass) && $reflectionClass->isFinal());
+ }
+
+ return \PHP_VERSION_ID >= 50400 && ! $this->hasInternalAncestors($reflectionClass);
+ }
+
+ /**
+ * Verifies whether the given class is to be considered internal
+ *
+ * @param ReflectionClass $reflectionClass
+ *
+ * @return bool
+ */
+ private function hasInternalAncestors(ReflectionClass $reflectionClass)
+ {
+ do {
+ if ($reflectionClass->isInternal()) {
+ return true;
+ }
+ } while ($reflectionClass = $reflectionClass->getParentClass());
+
+ return false;
+ }
+
+ /**
+ * Verifies if the given PHP version implements the `Serializable` interface serialization
+ * with an incompatible serialization format. If that's the case, use serialization marker
+ * "C" instead of "O".
+ *
+ * @link http://news.php.net/php.internals/74654
+ *
+ * @param ReflectionClass $reflectionClass
+ *
+ * @return string the serialization format marker, either self::SERIALIZATION_FORMAT_USE_UNSERIALIZER
+ * or self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER
+ */
+ private function getSerializationFormat(ReflectionClass $reflectionClass)
+ {
+ if ($this->isPhpVersionWithBrokenSerializationFormat()
+ && $reflectionClass->implementsInterface('Serializable')
+ ) {
+ return self::SERIALIZATION_FORMAT_USE_UNSERIALIZER;
+ }
+
+ return self::SERIALIZATION_FORMAT_AVOID_UNSERIALIZER;
+ }
+
+ /**
+ * Checks whether the current PHP runtime uses an incompatible serialization format
+ *
+ * @return bool
+ */
+ private function isPhpVersionWithBrokenSerializationFormat()
+ {
+ return PHP_VERSION_ID === 50429 || PHP_VERSION_ID === 50513;
+ }
+
+ /**
+ * Checks if a class is cloneable
+ *
+ * @param ReflectionClass $reflection
+ *
+ * @return bool
+ */
+ private function isSafeToClone(ReflectionClass $reflection)
+ {
+ if (method_exists($reflection, 'isCloneable') && ! $reflection->isCloneable()) {
+ return false;
+ }
+
+ // not cloneable if it implements `__clone`, as we want to avoid calling it
+ return ! $reflection->hasMethod('__clone');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
new file mode 100644
index 00000000..b665bea8
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/src/Doctrine/Instantiator/InstantiatorInterface.php
@@ -0,0 +1,37 @@
+.
+ */
+
+namespace Doctrine\Instantiator;
+
+/**
+ * Instantiator provides utility methods to build objects without invoking their constructors
+ *
+ * @author Marco Pivetta
+ */
+interface InstantiatorInterface
+{
+ /**
+ * @param string $className
+ *
+ * @return object
+ *
+ * @throws \Doctrine\Instantiator\Exception\ExceptionInterface
+ */
+ public function instantiate($className);
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php
new file mode 100644
index 00000000..3e8fc6ff
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorPerformance/InstantiatorPerformanceEvent.php
@@ -0,0 +1,96 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorPerformance;
+
+use Athletic\AthleticEvent;
+use Doctrine\Instantiator\Instantiator;
+
+/**
+ * Performance tests for {@see \Doctrine\Instantiator\Instantiator}
+ *
+ * @author Marco Pivetta
+ */
+class InstantiatorPerformanceEvent extends AthleticEvent
+{
+ /**
+ * @var \Doctrine\Instantiator\Instantiator
+ */
+ private $instantiator;
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function setUp()
+ {
+ $this->instantiator = new Instantiator();
+
+ $this->instantiator->instantiate(__CLASS__);
+ $this->instantiator->instantiate('ArrayObject');
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset');
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset');
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset');
+ }
+
+ /**
+ * @iterations 20000
+ * @baseline
+ * @group instantiation
+ */
+ public function testInstantiateSelf()
+ {
+ $this->instantiator->instantiate(__CLASS__);
+ }
+
+ /**
+ * @iterations 20000
+ * @group instantiation
+ */
+ public function testInstantiateInternalClass()
+ {
+ $this->instantiator->instantiate('ArrayObject');
+ }
+
+ /**
+ * @iterations 20000
+ * @group instantiation
+ */
+ public function testInstantiateSimpleSerializableAssetClass()
+ {
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset');
+ }
+
+ /**
+ * @iterations 20000
+ * @group instantiation
+ */
+ public function testInstantiateSerializableArrayObjectAsset()
+ {
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset');
+ }
+
+ /**
+ * @iterations 20000
+ * @group instantiation
+ */
+ public function testInstantiateUnCloneableAsset()
+ {
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php
new file mode 100644
index 00000000..39d9b94d
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/InvalidArgumentExceptionTest.php
@@ -0,0 +1,83 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTest\Exception;
+
+use Doctrine\Instantiator\Exception\InvalidArgumentException;
+use PHPUnit_Framework_TestCase;
+use ReflectionClass;
+
+/**
+ * Tests for {@see \Doctrine\Instantiator\Exception\InvalidArgumentException}
+ *
+ * @author Marco Pivetta
+ *
+ * @covers \Doctrine\Instantiator\Exception\InvalidArgumentException
+ */
+class InvalidArgumentExceptionTest extends PHPUnit_Framework_TestCase
+{
+ public function testFromNonExistingTypeWithNonExistingClass()
+ {
+ $className = __CLASS__ . uniqid();
+ $exception = InvalidArgumentException::fromNonExistingClass($className);
+
+ $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\InvalidArgumentException', $exception);
+ $this->assertSame('The provided class "' . $className . '" does not exist', $exception->getMessage());
+ }
+
+ public function testFromNonExistingTypeWithTrait()
+ {
+ if (PHP_VERSION_ID < 50400) {
+ $this->markTestSkipped('Need at least PHP 5.4.0, as this test requires traits support to run');
+ }
+
+ $exception = InvalidArgumentException::fromNonExistingClass(
+ 'DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset'
+ );
+
+ $this->assertSame(
+ 'The provided type "DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset" is a trait, '
+ . 'and can not be instantiated',
+ $exception->getMessage()
+ );
+ }
+
+ public function testFromNonExistingTypeWithInterface()
+ {
+ $exception = InvalidArgumentException::fromNonExistingClass('Doctrine\\Instantiator\\InstantiatorInterface');
+
+ $this->assertSame(
+ 'The provided type "Doctrine\\Instantiator\\InstantiatorInterface" is an interface, '
+ . 'and can not be instantiated',
+ $exception->getMessage()
+ );
+ }
+
+ public function testFromAbstractClass()
+ {
+ $reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset');
+ $exception = InvalidArgumentException::fromAbstractClass($reflection);
+
+ $this->assertSame(
+ 'The provided class "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" is abstract, '
+ . 'and can not be instantiated',
+ $exception->getMessage()
+ );
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php
new file mode 100644
index 00000000..84154e73
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/Exception/UnexpectedValueExceptionTest.php
@@ -0,0 +1,69 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTest\Exception;
+
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Exception;
+use PHPUnit_Framework_TestCase;
+use ReflectionClass;
+
+/**
+ * Tests for {@see \Doctrine\Instantiator\Exception\UnexpectedValueException}
+ *
+ * @author Marco Pivetta
+ *
+ * @covers \Doctrine\Instantiator\Exception\UnexpectedValueException
+ */
+class UnexpectedValueExceptionTest extends PHPUnit_Framework_TestCase
+{
+ public function testFromSerializationTriggeredException()
+ {
+ $reflectionClass = new ReflectionClass($this);
+ $previous = new Exception();
+ $exception = UnexpectedValueException::fromSerializationTriggeredException($reflectionClass, $previous);
+
+ $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception);
+ $this->assertSame($previous, $exception->getPrevious());
+ $this->assertSame(
+ 'An exception was raised while trying to instantiate an instance of "'
+ . __CLASS__ . '" via un-serialization',
+ $exception->getMessage()
+ );
+ }
+
+ public function testFromUncleanUnSerialization()
+ {
+ $reflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset');
+ $exception = UnexpectedValueException::fromUncleanUnSerialization($reflection, 'foo', 123, 'bar', 456);
+
+ $this->assertInstanceOf('Doctrine\\Instantiator\\Exception\\UnexpectedValueException', $exception);
+ $this->assertSame(
+ 'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset" '
+ . 'via un-serialization, since an error was triggered in file "bar" at line "456"',
+ $exception->getMessage()
+ );
+
+ $previous = $exception->getPrevious();
+
+ $this->assertInstanceOf('Exception', $previous);
+ $this->assertSame('foo', $previous->getMessage());
+ $this->assertSame(123, $previous->getCode());
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php
new file mode 100644
index 00000000..0a2cb931
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTest/InstantiatorTest.php
@@ -0,0 +1,219 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTest;
+
+use Doctrine\Instantiator\Exception\UnexpectedValueException;
+use Doctrine\Instantiator\Instantiator;
+use PHPUnit_Framework_TestCase;
+use ReflectionClass;
+
+/**
+ * Tests for {@see \Doctrine\Instantiator\Instantiator}
+ *
+ * @author Marco Pivetta
+ *
+ * @covers \Doctrine\Instantiator\Instantiator
+ */
+class InstantiatorTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Instantiator
+ */
+ private $instantiator;
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function setUp()
+ {
+ $this->instantiator = new Instantiator();
+ }
+
+ /**
+ * @param string $className
+ *
+ * @dataProvider getInstantiableClasses
+ */
+ public function testCanInstantiate($className)
+ {
+ $this->assertInstanceOf($className, $this->instantiator->instantiate($className));
+ }
+
+ /**
+ * @param string $className
+ *
+ * @dataProvider getInstantiableClasses
+ */
+ public function testInstantiatesSeparateInstances($className)
+ {
+ $instance1 = $this->instantiator->instantiate($className);
+ $instance2 = $this->instantiator->instantiate($className);
+
+ $this->assertEquals($instance1, $instance2);
+ $this->assertNotSame($instance1, $instance2);
+ }
+
+ public function testExceptionOnUnSerializationException()
+ {
+ if (defined('HHVM_VERSION')) {
+ $this->markTestSkipped(
+ 'As of facebook/hhvm#3432, HHVM has no PDORow, and therefore '
+ . ' no internal final classes that cannot be instantiated'
+ );
+ }
+
+ $className = 'DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset';
+
+ if (\PHP_VERSION_ID >= 50600) {
+ $className = 'PDORow';
+ }
+
+ if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) {
+ $className = 'DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset';
+ }
+
+ $this->setExpectedException('Doctrine\\Instantiator\\Exception\\UnexpectedValueException');
+
+ $this->instantiator->instantiate($className);
+ }
+
+ public function testNoticeOnUnSerializationException()
+ {
+ if (\PHP_VERSION_ID >= 50600) {
+ $this->markTestSkipped(
+ 'PHP 5.6 supports `ReflectionClass#newInstanceWithoutConstructor()` for some internal classes'
+ );
+ }
+
+ try {
+ $this->instantiator->instantiate('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset');
+
+ $this->fail('No exception was raised');
+ } catch (UnexpectedValueException $exception) {
+ $wakeUpNoticesReflection = new ReflectionClass('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset');
+ $previous = $exception->getPrevious();
+
+ $this->assertInstanceOf('Exception', $previous);
+
+ // in PHP 5.4.29 and PHP 5.5.13, this case is not a notice, but an exception being thrown
+ if (! (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513)) {
+ $this->assertSame(
+ 'Could not produce an instance of "DoctrineTest\\InstantiatorTestAsset\WakeUpNoticesAsset" '
+ . 'via un-serialization, since an error was triggered in file "'
+ . $wakeUpNoticesReflection->getFileName() . '" at line "36"',
+ $exception->getMessage()
+ );
+
+ $this->assertSame('Something went bananas while un-serializing this instance', $previous->getMessage());
+ $this->assertSame(\E_USER_NOTICE, $previous->getCode());
+ }
+ }
+ }
+
+ /**
+ * @param string $invalidClassName
+ *
+ * @dataProvider getInvalidClassNames
+ */
+ public function testInstantiationFromNonExistingClass($invalidClassName)
+ {
+ $this->setExpectedException('Doctrine\\Instantiator\\Exception\\InvalidArgumentException');
+
+ $this->instantiator->instantiate($invalidClassName);
+ }
+
+ public function testInstancesAreNotCloned()
+ {
+ $className = 'TemporaryClass' . uniqid();
+
+ eval('namespace ' . __NAMESPACE__ . '; class ' . $className . '{}');
+
+ $instance = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className);
+
+ $instance->foo = 'bar';
+
+ $instance2 = $this->instantiator->instantiate(__NAMESPACE__ . '\\' . $className);
+
+ $this->assertObjectNotHasAttribute('foo', $instance2);
+ }
+
+ /**
+ * Provides a list of instantiable classes (existing)
+ *
+ * @return string[][]
+ */
+ public function getInstantiableClasses()
+ {
+ $classes = array(
+ array('stdClass'),
+ array(__CLASS__),
+ array('Doctrine\\Instantiator\\Instantiator'),
+ array('Exception'),
+ array('PharException'),
+ array('DoctrineTest\\InstantiatorTestAsset\\SimpleSerializableAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\ExceptionAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\FinalExceptionAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\PharExceptionAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\UnCloneableAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\XMLReaderAsset'),
+ );
+
+ if (\PHP_VERSION_ID === 50429 || \PHP_VERSION_ID === 50513) {
+ return $classes;
+ }
+
+ $classes = array_merge(
+ $classes,
+ array(
+ array('PharException'),
+ array('ArrayObject'),
+ array('DoctrineTest\\InstantiatorTestAsset\\ArrayObjectAsset'),
+ array('DoctrineTest\\InstantiatorTestAsset\\SerializableArrayObjectAsset'),
+ )
+ );
+
+ if (\PHP_VERSION_ID >= 50600) {
+ $classes[] = array('DoctrineTest\\InstantiatorTestAsset\\WakeUpNoticesAsset');
+ $classes[] = array('DoctrineTest\\InstantiatorTestAsset\\UnserializeExceptionArrayObjectAsset');
+ }
+
+ return $classes;
+ }
+
+ /**
+ * Provides a list of instantiable classes (existing)
+ *
+ * @return string[][]
+ */
+ public function getInvalidClassNames()
+ {
+ $classNames = array(
+ array(__CLASS__ . uniqid()),
+ array('Doctrine\\Instantiator\\InstantiatorInterface'),
+ array('DoctrineTest\\InstantiatorTestAsset\\AbstractClassAsset'),
+ );
+
+ if (\PHP_VERSION_ID >= 50400) {
+ $classNames[] = array('DoctrineTest\\InstantiatorTestAsset\\SimpleTraitAsset');
+ }
+
+ return $classNames;
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php
new file mode 100644
index 00000000..fbe28ddd
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/AbstractClassAsset.php
@@ -0,0 +1,29 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+/**
+ * A simple asset for an abstract class
+ *
+ * @author Marco Pivetta
+ */
+abstract class AbstractClassAsset
+{
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php
new file mode 100644
index 00000000..56146d70
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ArrayObjectAsset.php
@@ -0,0 +1,41 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use ArrayObject;
+use BadMethodCallException;
+
+/**
+ * Test asset that extends an internal PHP class
+ *
+ * @author Marco Pivetta
+ */
+class ArrayObjectAsset extends ArrayObject
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php
new file mode 100644
index 00000000..43bbe46b
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/ExceptionAsset.php
@@ -0,0 +1,41 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use Exception;
+
+/**
+ * Test asset that extends an internal PHP base exception
+ *
+ * @author Marco Pivetta
+ */
+class ExceptionAsset extends Exception
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php
new file mode 100644
index 00000000..7d268f5b
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/FinalExceptionAsset.php
@@ -0,0 +1,41 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use Exception;
+
+/**
+ * Test asset that extends an internal PHP base exception
+ *
+ * @author Marco Pivetta
+ */
+final class FinalExceptionAsset extends Exception
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php
new file mode 100644
index 00000000..553fd561
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharAsset.php
@@ -0,0 +1,41 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use Phar;
+
+/**
+ * Test asset that extends an internal PHP class
+ *
+ * @author Marco Pivetta
+ */
+class PharAsset extends Phar
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php
new file mode 100644
index 00000000..42bf73e7
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/PharExceptionAsset.php
@@ -0,0 +1,44 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use PharException;
+
+/**
+ * Test asset that extends an internal PHP class
+ * This class should be serializable without problems
+ * and without getting the "Erroneous data format for unserializing"
+ * error
+ *
+ * @author Marco Pivetta
+ */
+class PharExceptionAsset extends PharException
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php
new file mode 100644
index 00000000..ba19aaf6
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SerializableArrayObjectAsset.php
@@ -0,0 +1,62 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use ArrayObject;
+use BadMethodCallException;
+use Serializable;
+
+/**
+ * Serializable test asset that also extends an internal class
+ *
+ * @author Marco Pivetta
+ */
+class SerializableArrayObjectAsset extends ArrayObject implements Serializable
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function serialize()
+ {
+ return '';
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * Should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function unserialize($serialized)
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php
new file mode 100644
index 00000000..39f84a6c
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleSerializableAsset.php
@@ -0,0 +1,61 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use Serializable;
+
+/**
+ * Base serializable test asset
+ *
+ * @author Marco Pivetta
+ */
+class SimpleSerializableAsset implements Serializable
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function serialize()
+ {
+ return '';
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * Should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function unserialize($serialized)
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php
new file mode 100644
index 00000000..04e78069
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/SimpleTraitAsset.php
@@ -0,0 +1,29 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+/**
+ * A simple trait with no attached logic
+ *
+ * @author Marco Pivetta
+ */
+trait SimpleTraitAsset
+{
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php
new file mode 100644
index 00000000..7d03bdab
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnCloneableAsset.php
@@ -0,0 +1,50 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+
+/**
+ * Base un-cloneable asset
+ *
+ * @author Marco Pivetta
+ */
+class UnCloneableAsset
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+
+ /**
+ * Magic `__clone` - should not be invoked
+ *
+ * @throws BadMethodCallException
+ */
+ public function __clone()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php
new file mode 100644
index 00000000..b348a405
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/UnserializeExceptionArrayObjectAsset.php
@@ -0,0 +1,39 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use ArrayObject;
+use BadMethodCallException;
+
+/**
+ * A simple asset for an abstract class
+ *
+ * @author Marco Pivetta
+ */
+class UnserializeExceptionArrayObjectAsset extends ArrayObject
+{
+ /**
+ * {@inheritDoc}
+ */
+ public function __wakeup()
+ {
+ throw new BadMethodCallException();
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php
new file mode 100644
index 00000000..18dc6711
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/WakeUpNoticesAsset.php
@@ -0,0 +1,38 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use ArrayObject;
+
+/**
+ * A simple asset for an abstract class
+ *
+ * @author Marco Pivetta
+ */
+class WakeUpNoticesAsset extends ArrayObject
+{
+ /**
+ * Wakeup method called after un-serialization
+ */
+ public function __wakeup()
+ {
+ trigger_error('Something went bananas while un-serializing this instance');
+ }
+}
diff --git a/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php
new file mode 100644
index 00000000..39ee6992
--- /dev/null
+++ b/html2pdf-master/vendor/doctrine/instantiator/tests/DoctrineTest/InstantiatorTestAsset/XMLReaderAsset.php
@@ -0,0 +1,41 @@
+.
+ */
+
+namespace DoctrineTest\InstantiatorTestAsset;
+
+use BadMethodCallException;
+use XMLReader;
+
+/**
+ * Test asset that extends an internal PHP class
+ *
+ * @author Dave Marshall
+ */
+class XMLReaderAsset extends XMLReader
+{
+ /**
+ * Constructor - should not be called
+ *
+ * @throws BadMethodCallException
+ */
+ public function __construct()
+ {
+ throw new BadMethodCallException('Not supposed to be called!');
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/.gitattributes b/html2pdf-master/vendor/myclabs/deep-copy/.gitattributes
new file mode 100644
index 00000000..8018068b
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/.gitattributes
@@ -0,0 +1,7 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+*.png binary
+
+tests/ export-ignore
+phpunit.xml.dist export-ignore
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/.gitignore b/html2pdf-master/vendor/myclabs/deep-copy/.gitignore
new file mode 100644
index 00000000..eef72f75
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/.gitignore
@@ -0,0 +1,3 @@
+/composer.phar
+/composer.lock
+/vendor/*
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/.travis.yml b/html2pdf-master/vendor/myclabs/deep-copy/.travis.yml
new file mode 100644
index 00000000..89dc02af
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/.travis.yml
@@ -0,0 +1,40 @@
+language: php
+
+sudo: false
+
+php:
+ - '5.6'
+ - '7.0'
+ - '7.1'
+ - nightly
+
+matrix:
+ fast_finish: true
+ include:
+ - php: '5.6'
+ env: COMPOSER_FLAGS="--prefer-lowest"
+ allow_failures:
+ - php: nightly
+
+cache:
+ directories:
+ - $HOME/.composer/cache/files
+
+before_install:
+ - |
+ if [ "$TRAVIS_PHP_VERSION" = "nightly" ]; then
+ COMPOSER_FLAGS="$COMPOSER_FLAGS --ignore-platform-reqs"
+ fi;
+
+install:
+ - composer update --no-interaction --no-progress --no-suggest --prefer-dist $COMPOSER_FLAGS
+ - wget https://github.com/satooshi/php-coveralls/releases/download/v1.0.0/coveralls.phar
+
+before_script:
+ - mkdir -p build/logs
+
+script:
+ - vendor/bin/phpunit --coverage-clover build/logs/clover.xml
+
+after_script:
+ - php coveralls.phar -v
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/LICENSE b/html2pdf-master/vendor/myclabs/deep-copy/LICENSE
new file mode 100644
index 00000000..c3e83500
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 My C-Sense
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/README.md b/html2pdf-master/vendor/myclabs/deep-copy/README.md
new file mode 100644
index 00000000..7f010df2
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/README.md
@@ -0,0 +1,372 @@
+# DeepCopy
+
+DeepCopy helps you create deep copies (clones) of your objects. It is designed to handle cycles in the association graph.
+
+[](https://travis-ci.org/myclabs/DeepCopy)
+[](https://coveralls.io/r/myclabs/DeepCopy?branch=master)
+[](https://scrutinizer-ci.com/g/myclabs/DeepCopy/)
+[](https://packagist.org/packages/myclabs/deep-copy)
+
+
+## Table of Contents
+
+1. [How](#how)
+1. [Why](#why)
+ 1. [Using simply `clone`](#using-simply-clone)
+ 1. [Overridding `__clone()`](#overridding-__clone)
+ 1. [With `DeepCopy`](#with-deepcopy)
+1. [How it works](#how-it-works)
+1. [Going further](#going-further)
+ 1. [Matchers](#matchers)
+ 1. [Property name](#property-name)
+ 1. [Specific property](#specific-property)
+ 1. [Type](#type)
+ 1. [Filters](#filters)
+ 1. [`SetNullFilter`](#setnullfilter-filter)
+ 1. [`KeepFilter`](#keepfilter-filter)
+ 1. [`DoctrineCollectionFilter`](#doctrinecollectionfilter-filter)
+ 1. [`DoctrineEmptyCollectionFilter`](#doctrineemptycollectionfilter-filter)
+ 1. [`DoctrineProxyFilter`](#doctrineproxyfilter-filter)
+ 1. [`ReplaceFilter`](#replacefilter-type-filter)
+ 1. [`ShallowCopyFilter`](#doctrinecollectionfilter-type-filter)
+1. [Edge cases](#edge-cases)
+1. [Contributing](#contributing)
+ 1. [Tests](#tests)
+
+
+## How?
+
+Install with Composer:
+
+```json
+composer require myclabs/deep-copy
+```
+
+Use simply:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy();
+$myCopy = $copier->copy($myObject);
+```
+
+
+## Why?
+
+- How do you create copies of your objects?
+
+```php
+$myCopy = clone $myObject;
+```
+
+- How do you create **deep** copies of your objects (i.e. copying also all the objects referenced in the properties)?
+
+You use [`__clone()`](http://www.php.net/manual/en/language.oop5.cloning.php#object.clone) and implement the behavior
+yourself.
+
+- But how do you handle **cycles** in the association graph?
+
+Now you're in for a big mess :(
+
+
+
+
+### Using simply `clone`
+
+
+
+
+### Overridding `__clone()`
+
+
+
+
+### With `DeepCopy`
+
+
+
+
+## How it works
+
+DeepCopy recursively traverses all the object's properties and clones them. To avoid cloning the same object twice it
+keeps a hash map of all instances and thus preserves the object graph.
+
+To use it:
+
+```php
+use function DeepCopy\deep_copy;
+
+$copy = deep_copy($var);
+```
+
+Alternatively, you can create your own `DeepCopy` instance to configure it differently for example:
+
+```php
+use DeepCopy\DeepCopy;
+
+$copier = new DeepCopy(true);
+
+$copy = $copier->copy($var);
+```
+
+You may want to roll your own deep copy function:
+
+```php
+namespace Acme;
+
+use DeepCopy\DeepCopy;
+
+function deep_copy($var)
+{
+ static $copier = null;
+
+ if (null === $copier) {
+ $copier = new DeepCopy(true);
+ }
+
+ return $copier->copy($var);
+}
+```
+
+
+## Going further
+
+You can add filters to customize the copy process.
+
+The method to add a filter is `DeepCopy\DeepCopy::addFilter($filter, $matcher)`,
+with `$filter` implementing `DeepCopy\Filter\Filter`
+and `$matcher` implementing `DeepCopy\Matcher\Matcher`.
+
+We provide some generic filters and matchers.
+
+
+### Matchers
+
+ - `DeepCopy\Matcher` applies on a object attribute.
+ - `DeepCopy\TypeMatcher` applies on any element found in graph, including array elements.
+
+
+#### Property name
+
+The `PropertyNameMatcher` will match a property by its name:
+
+```php
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+// Will apply a filter to any property of any objects named "id"
+$matcher = new PropertyNameMatcher('id');
+```
+
+
+#### Specific property
+
+The `PropertyMatcher` will match a specific property of a specific class:
+
+```php
+use DeepCopy\Matcher\PropertyMatcher;
+
+// Will apply a filter to the property "id" of any objects of the class "MyClass"
+$matcher = new PropertyMatcher('MyClass', 'id');
+```
+
+
+#### Type
+
+The `TypeMatcher` will match any element by its type (instance of a class or any value that could be parameter of
+[gettype()](http://php.net/manual/en/function.gettype.php) function):
+
+```php
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+// Will apply a filter to any object that is an instance of Doctrine\Common\Collections\Collection
+$matcher = new TypeMatcher('Doctrine\Common\Collections\Collection');
+```
+
+
+### Filters
+
+- `DeepCopy\Filter` applies a transformation to the object attribute matched by `DeepCopy\Matcher`
+- `DeepCopy\TypeFilter` applies a transformation to any element matched by `DeepCopy\TypeMatcher`
+
+
+#### `SetNullFilter` (filter)
+
+Let's say for example that you are copying a database record (or a Doctrine entity), so you want the copy not to have
+any ID:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\SetNullFilter;
+use DeepCopy\Matcher\PropertyNameMatcher;
+
+$object = MyClass::load(123);
+echo $object->id; // 123
+
+$copier = new DeepCopy();
+$copier->addFilter(new SetNullFilter(), new PropertyNameMatcher('id'));
+
+$copy = $copier->copy($object);
+
+echo $copy->id; // null
+```
+
+
+#### `KeepFilter` (filter)
+
+If you want a property to remain untouched (for example, an association to an object):
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\KeepFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new KeepFilter(), new PropertyMatcher('MyClass', 'category'));
+
+$copy = $copier->copy($object);
+// $copy->category has not been touched
+```
+
+
+#### `DoctrineCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity, you will need to use the `DoctrineCollectionFilter`:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineCollectionFilter;
+use DeepCopy\Matcher\PropertyTypeMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineCollectionFilter(), new PropertyTypeMatcher('Doctrine\Common\Collections\Collection'));
+
+$copy = $copier->copy($object);
+```
+
+
+#### `DoctrineEmptyCollectionFilter` (filter)
+
+If you use Doctrine and want to copy an entity who contains a `Collection` that you want to be reset, you can use the
+`DoctrineEmptyCollectionFilter`
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineEmptyCollectionFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineEmptyCollectionFilter(), new PropertyMatcher('MyClass', 'myProperty'));
+
+$copy = $copier->copy($object);
+
+// $copy->myProperty will return an empty collection
+```
+
+
+#### `DoctrineProxyFilter` (filter)
+
+If you use Doctrine and use cloning on lazy loaded entities, you might encounter errors mentioning missing fields on a
+Doctrine proxy class (...\\\_\_CG\_\_\Proxy).
+You can use the `DoctrineProxyFilter` to load the actual entity behind the Doctrine proxy class.
+**Make sure, though, to put this as one of your very first filters in the filter chain so that the entity is loaded
+before other filters are applied!**
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\Doctrine\DoctrineProxyFilter;
+use DeepCopy\Matcher\Doctrine\DoctrineProxyMatcher;
+
+$copier = new DeepCopy();
+$copier->addFilter(new DoctrineProxyFilter(), new DoctrineProxyMatcher());
+
+$copy = $copier->copy($object);
+
+// $copy should now contain a clone of all entities, including those that were not yet fully loaded.
+```
+
+
+#### `ReplaceFilter` (type filter)
+
+1. If you want to replace the value of a property:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\Filter\ReplaceFilter;
+use DeepCopy\Matcher\PropertyMatcher;
+
+$copier = new DeepCopy();
+$callback = function ($currentValue) {
+ return $currentValue . ' (copy)'
+};
+$copier->addFilter(new ReplaceFilter($callback), new PropertyMatcher('MyClass', 'title'));
+
+$copy = $copier->copy($object);
+
+// $copy->title will contain the data returned by the callback, e.g. 'The title (copy)'
+```
+
+2. If you want to replace whole element:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ReplaceFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+
+$copier = new DeepCopy();
+$callback = function (MyClass $myClass) {
+ return get_class($myClass);
+};
+$copier->addTypeFilter(new ReplaceFilter($callback), new TypeMatcher('MyClass'));
+
+$copy = $copier->copy([new MyClass, 'some string', new MyClass]);
+
+// $copy will contain ['MyClass', 'some string', 'MyClass']
+```
+
+
+The `$callback` parameter of the `ReplaceFilter` constructor accepts any PHP callable.
+
+
+#### `ShallowCopyFilter` (type filter)
+
+Stop *DeepCopy* from recursively copying element, using standard `clone` instead:
+
+```php
+use DeepCopy\DeepCopy;
+use DeepCopy\TypeFilter\ShallowCopyFilter;
+use DeepCopy\TypeMatcher\TypeMatcher;
+use Mockery as m;
+
+$this->deepCopy = new DeepCopy();
+$this->deepCopy->addTypeFilter(
+ new ShallowCopyFilter,
+ new TypeMatcher(m\MockInterface::class)
+);
+
+$myServiceWithMocks = new MyService(m::mock(MyDependency1::class), m::mock(MyDependency2::class));
+// All mocks will be just cloned, not deep copied
+```
+
+
+## Edge cases
+
+The following structures cannot be deep-copied with PHP Reflection. As a result they are shallow cloned and filters are
+not applied. There is two ways for you to handle them:
+
+- Implement your own `__clone()` method
+- Use a filter with a type matcher
+
+
+## Contributing
+
+DeepCopy is distributed under the MIT license.
+
+
+### Tests
+
+Running the tests is simple:
+
+```php
+vendor/bin/phpunit
+```
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/composer.json b/html2pdf-master/vendor/myclabs/deep-copy/composer.json
new file mode 100644
index 00000000..d5d3a779
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "myclabs/deep-copy",
+ "type": "library",
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": ["clone", "copy", "duplicate", "object", "object graph"],
+ "license": "MIT",
+
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "DeepCopy\\": "fixtures/",
+ "DeepCopyTest\\": "tests/DeepCopyTest/"
+ }
+ },
+
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^4.1"
+ },
+
+ "config": {
+ "sort-packages": true
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/doc/clone.png b/html2pdf-master/vendor/myclabs/deep-copy/doc/clone.png
new file mode 100644
index 00000000..376afd49
Binary files /dev/null and b/html2pdf-master/vendor/myclabs/deep-copy/doc/clone.png differ
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-clone.png b/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-clone.png
new file mode 100644
index 00000000..2b37a6d7
Binary files /dev/null and b/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-clone.png differ
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-copy.png b/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-copy.png
new file mode 100644
index 00000000..68c508ae
Binary files /dev/null and b/html2pdf-master/vendor/myclabs/deep-copy/doc/deep-copy.png differ
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/doc/graph.png b/html2pdf-master/vendor/myclabs/deep-copy/doc/graph.png
new file mode 100644
index 00000000..4d5c9428
Binary files /dev/null and b/html2pdf-master/vendor/myclabs/deep-copy/doc/graph.png differ
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/A.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/A.php
new file mode 100644
index 00000000..648d5dff
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/A.php
@@ -0,0 +1,20 @@
+aProp;
+ }
+
+ public function setAProp($prop)
+ {
+ $this->aProp = $prop;
+
+ return $this;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/B.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/B.php
new file mode 100644
index 00000000..462bb44e
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f001/B.php
@@ -0,0 +1,20 @@
+bProp;
+ }
+
+ public function setBProp($prop)
+ {
+ $this->bProp = $prop;
+
+ return $this;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f002/A.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f002/A.php
new file mode 100644
index 00000000..d9aa5c35
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f002/A.php
@@ -0,0 +1,33 @@
+prop1;
+ }
+
+ public function setProp1($prop)
+ {
+ $this->prop1 = $prop;
+
+ return $this;
+ }
+
+ public function getProp2()
+ {
+ return $this->prop2;
+ }
+
+ public function setProp2($prop)
+ {
+ $this->prop2 = $prop;
+
+ return $this;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f003/Foo.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f003/Foo.php
new file mode 100644
index 00000000..9cd76224
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f003/Foo.php
@@ -0,0 +1,26 @@
+name = $name;
+ }
+
+ public function getProp()
+ {
+ return $this->prop;
+ }
+
+ public function setProp($prop)
+ {
+ $this->prop = $prop;
+
+ return $this;
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f004/UnclonableItem.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f004/UnclonableItem.php
new file mode 100644
index 00000000..82c6c67c
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f004/UnclonableItem.php
@@ -0,0 +1,13 @@
+cloned = true;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/A.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/A.php
new file mode 100644
index 00000000..d9efb116
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/A.php
@@ -0,0 +1,26 @@
+aProp;
+ }
+
+ public function setAProp($prop)
+ {
+ $this->aProp = $prop;
+
+ return $this;
+ }
+
+ public function __clone()
+ {
+ $this->cloned = true;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/B.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/B.php
new file mode 100644
index 00000000..1f80b3d4
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f006/B.php
@@ -0,0 +1,26 @@
+bProp;
+ }
+
+ public function setBProp($prop)
+ {
+ $this->bProp = $prop;
+
+ return $this;
+ }
+
+ public function __clone()
+ {
+ $this->cloned = true;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateInterval.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateInterval.php
new file mode 100644
index 00000000..e16bc6aa
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateInterval.php
@@ -0,0 +1,15 @@
+cloned = true;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateTimeZone.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateTimeZone.php
new file mode 100644
index 00000000..6f4e61fe
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f007/FooDateTimeZone.php
@@ -0,0 +1,15 @@
+cloned = true;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/A.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/A.php
new file mode 100644
index 00000000..88471d01
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/A.php
@@ -0,0 +1,18 @@
+foo = $foo;
+ }
+
+ public function getFoo()
+ {
+ return $this->foo;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/B.php b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/B.php
new file mode 100644
index 00000000..6053092d
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/fixtures/f008/B.php
@@ -0,0 +1,7 @@
+ Filter, 'matcher' => Matcher] pairs.
+ */
+ private $filters = [];
+
+ /**
+ * Type Filters to apply.
+ *
+ * @var array Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ */
+ private $typeFilters = [];
+
+ /**
+ * @var bool
+ */
+ private $skipUncloneable = false;
+
+ /**
+ * @var bool
+ */
+ private $useCloneMethod;
+
+ /**
+ * @param bool $useCloneMethod If set to true, when an object implements the __clone() function, it will be used
+ * instead of the regular deep cloning.
+ */
+ public function __construct($useCloneMethod = false)
+ {
+ $this->useCloneMethod = $useCloneMethod;
+
+ $this->addTypeFilter(new DateIntervalFilter(), new TypeMatcher(DateInterval::class));
+ $this->addTypeFilter(new SplDoublyLinkedListFilter($this), new TypeMatcher(SplDoublyLinkedList::class));
+ }
+
+ /**
+ * If enabled, will not throw an exception when coming across an uncloneable property.
+ *
+ * @param $skipUncloneable
+ *
+ * @return $this
+ */
+ public function skipUncloneable($skipUncloneable = true)
+ {
+ $this->skipUncloneable = $skipUncloneable;
+
+ return $this;
+ }
+
+ /**
+ * Deep copies the given object.
+ *
+ * @param mixed $object
+ *
+ * @return mixed
+ */
+ public function copy($object)
+ {
+ $this->hashMap = [];
+
+ return $this->recursiveCopy($object);
+ }
+
+ public function addFilter(Filter $filter, Matcher $matcher)
+ {
+ $this->filters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ public function addTypeFilter(TypeFilter $filter, TypeMatcher $matcher)
+ {
+ $this->typeFilters[] = [
+ 'matcher' => $matcher,
+ 'filter' => $filter,
+ ];
+ }
+
+ private function recursiveCopy($var)
+ {
+ // Matches Type Filter
+ if ($filter = $this->getFirstMatchedTypeFilter($this->typeFilters, $var)) {
+ return $filter->apply($var);
+ }
+
+ // Resource
+ if (is_resource($var)) {
+ return $var;
+ }
+
+ // Array
+ if (is_array($var)) {
+ return $this->copyArray($var);
+ }
+
+ // Scalar
+ if (! is_object($var)) {
+ return $var;
+ }
+
+ // Object
+ return $this->copyObject($var);
+ }
+
+ /**
+ * Copy an array
+ * @param array $array
+ * @return array
+ */
+ private function copyArray(array $array)
+ {
+ foreach ($array as $key => $value) {
+ $array[$key] = $this->recursiveCopy($value);
+ }
+
+ return $array;
+ }
+
+ /**
+ * Copies an object.
+ *
+ * @param object $object
+ *
+ * @throws CloneException
+ *
+ * @return object
+ */
+ private function copyObject($object)
+ {
+ $objectHash = spl_object_hash($object);
+
+ if (isset($this->hashMap[$objectHash])) {
+ return $this->hashMap[$objectHash];
+ }
+
+ $reflectedObject = new ReflectionObject($object);
+ $isCloneable = $reflectedObject->isCloneable();
+
+ if (false === $isCloneable) {
+ if ($this->skipUncloneable) {
+ $this->hashMap[$objectHash] = $object;
+
+ return $object;
+ }
+
+ throw new CloneException(
+ sprintf(
+ 'The class "%s" is not cloneable.',
+ $reflectedObject->getName()
+ )
+ );
+ }
+
+ $newObject = clone $object;
+ $this->hashMap[$objectHash] = $newObject;
+
+ if ($this->useCloneMethod && $reflectedObject->hasMethod('__clone')) {
+ return $newObject;
+ }
+
+ if ($newObject instanceof DateTimeInterface || $newObject instanceof DateTimeZone) {
+ return $newObject;
+ }
+
+ foreach (ReflectionHelper::getProperties($reflectedObject) as $property) {
+ $this->copyObjectProperty($newObject, $property);
+ }
+
+ return $newObject;
+ }
+
+ private function copyObjectProperty($object, ReflectionProperty $property)
+ {
+ // Ignore static properties
+ if ($property->isStatic()) {
+ return;
+ }
+
+ // Apply the filters
+ foreach ($this->filters as $item) {
+ /** @var Matcher $matcher */
+ $matcher = $item['matcher'];
+ /** @var Filter $filter */
+ $filter = $item['filter'];
+
+ if ($matcher->matches($object, $property->getName())) {
+ $filter->apply(
+ $object,
+ $property->getName(),
+ function ($object) {
+ return $this->recursiveCopy($object);
+ }
+ );
+
+ // If a filter matches, we stop processing this property
+ return;
+ }
+ }
+
+ $property->setAccessible(true);
+ $propertyValue = $property->getValue($object);
+
+ // Copy the property
+ $property->setValue($object, $this->recursiveCopy($propertyValue));
+ }
+
+ /**
+ * Returns first filter that matches variable, `null` if no such filter found.
+ *
+ * @param array $filterRecords Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and
+ * 'matcher' with value of type {@see TypeMatcher}
+ * @param mixed $var
+ *
+ * @return TypeFilter|null
+ */
+ private function getFirstMatchedTypeFilter(array $filterRecords, $var)
+ {
+ $matched = $this->first(
+ $filterRecords,
+ function (array $record) use ($var) {
+ /* @var TypeMatcher $matcher */
+ $matcher = $record['matcher'];
+
+ return $matcher->matches($var);
+ }
+ );
+
+ return isset($matched) ? $matched['filter'] : null;
+ }
+
+ /**
+ * Returns first element that matches predicate, `null` if no such element found.
+ *
+ * @param array $elements Array of ['filter' => Filter, 'matcher' => Matcher] pairs.
+ * @param callable $predicate Predicate arguments are: element.
+ *
+ * @return array|null Associative array with 2 members: 'filter' with value of type {@see TypeFilter} and 'matcher'
+ * with value of type {@see TypeMatcher} or `null`.
+ */
+ private function first(array $elements, callable $predicate)
+ {
+ foreach ($elements as $element) {
+ if (call_user_func($predicate, $element)) {
+ return $element;
+ }
+ }
+
+ return null;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
new file mode 100644
index 00000000..c046706a
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php
@@ -0,0 +1,9 @@
+setAccessible(true);
+ $oldCollection = $reflectionProperty->getValue($object);
+
+ $newCollection = $oldCollection->map(
+ function ($item) use ($objectCopier) {
+ return $objectCopier($item);
+ }
+ );
+
+ $reflectionProperty->setValue($object, $newCollection);
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
new file mode 100644
index 00000000..7b33fd54
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineEmptyCollectionFilter.php
@@ -0,0 +1,28 @@
+setAccessible(true);
+
+ $reflectionProperty->setValue($object, new ArrayCollection());
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
new file mode 100644
index 00000000..8bee8f76
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Doctrine/DoctrineProxyFilter.php
@@ -0,0 +1,22 @@
+__load();
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
new file mode 100644
index 00000000..85ba18ce
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/Filter.php
@@ -0,0 +1,18 @@
+callback = $callable;
+ }
+
+ /**
+ * Replaces the object property by the result of the callback called with the object property.
+ *
+ * {@inheritdoc}
+ */
+ public function apply($object, $property, $objectCopier)
+ {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ $reflectionProperty->setAccessible(true);
+
+ $value = call_user_func($this->callback, $reflectionProperty->getValue($object));
+
+ $reflectionProperty->setValue($object, $value);
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
new file mode 100644
index 00000000..bea86b88
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Filter/SetNullFilter.php
@@ -0,0 +1,24 @@
+setAccessible(true);
+ $reflectionProperty->setValue($object, null);
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
new file mode 100644
index 00000000..ec8856f5
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/Doctrine/DoctrineProxyMatcher.php
@@ -0,0 +1,22 @@
+class = $class;
+ $this->property = $property;
+ }
+
+ /**
+ * Matches a specific property of a specific class.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return ($object instanceof $this->class) && $property == $this->property;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
new file mode 100644
index 00000000..c8ec0d2b
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyNameMatcher.php
@@ -0,0 +1,32 @@
+property = $property;
+ }
+
+ /**
+ * Matches a property by its name.
+ *
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ return $property == $this->property;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
new file mode 100644
index 00000000..a6b0c0bc
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Matcher/PropertyTypeMatcher.php
@@ -0,0 +1,46 @@
+propertyType = $propertyType;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function matches($object, $property)
+ {
+ try {
+ $reflectionProperty = ReflectionHelper::getProperty($object, $property);
+ } catch (ReflectionException $exception) {
+ return false;
+ }
+
+ $reflectionProperty->setAccessible(true);
+
+ return $reflectionProperty->getValue($object) instanceof $this->propertyType;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
new file mode 100644
index 00000000..742410cb
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/Reflection/ReflectionHelper.php
@@ -0,0 +1,78 @@
+getProperties() does not return private properties from ancestor classes.
+ *
+ * @author muratyaman@gmail.com
+ * @see http://php.net/manual/en/reflectionclass.getproperties.php
+ *
+ * @param ReflectionClass $ref
+ *
+ * @return ReflectionProperty[]
+ */
+ public static function getProperties(ReflectionClass $ref)
+ {
+ $props = $ref->getProperties();
+ $propsArr = array();
+
+ foreach ($props as $prop) {
+ $propertyName = $prop->getName();
+ $propsArr[$propertyName] = $prop;
+ }
+
+ if ($parentClass = $ref->getParentClass()) {
+ $parentPropsArr = self::getProperties($parentClass);
+ foreach ($propsArr as $key => $property) {
+ $parentPropsArr[$key] = $property;
+ }
+
+ return $parentPropsArr;
+ }
+
+ return $propsArr;
+ }
+
+ /**
+ * Retrieves property by name from object and all its ancestors.
+ *
+ * @param object|string $object
+ * @param string $name
+ *
+ * @throws PropertyException
+ * @throws ReflectionException
+ *
+ * @return ReflectionProperty
+ */
+ public static function getProperty($object, $name)
+ {
+ $reflection = is_object($object) ? new ReflectionObject($object) : new ReflectionClass($object);
+
+ if ($reflection->hasProperty($name)) {
+ return $reflection->getProperty($name);
+ }
+
+ if ($parentClass = $reflection->getParentClass()) {
+ return self::getProperty($parentClass->getName(), $name);
+ }
+
+ throw new PropertyException(
+ sprintf(
+ 'The class "%s" doesn\'t have a property with the given name: "%s".',
+ is_object($object) ? get_class($object) : $object,
+ $name
+ )
+ );
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
new file mode 100644
index 00000000..becd1cff
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/Date/DateIntervalFilter.php
@@ -0,0 +1,33 @@
+ $propertyValue) {
+ $copy->{$propertyName} = $propertyValue;
+ }
+
+ return $copy;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
new file mode 100644
index 00000000..164f8b8e
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ReplaceFilter.php
@@ -0,0 +1,30 @@
+callback = $callable;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ return call_user_func($this->callback, $element);
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
new file mode 100644
index 00000000..a5fbd7a2
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/ShallowCopyFilter.php
@@ -0,0 +1,17 @@
+copier = $copier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function apply($element)
+ {
+ $newElement = clone $element;
+
+ $copy = $this->createCopyClosure();
+
+ return $copy($newElement);
+ }
+
+ private function createCopyClosure()
+ {
+ $copier = $this->copier;
+
+ $copy = function (SplDoublyLinkedList $list) use ($copier) {
+ // Replace each element in the list with a deep copy of itself
+ for ($i = 1; $i <= $list->count(); $i++) {
+ $copy = $copier->recursiveCopy($list->shift());
+
+ $list->push($copy);
+ }
+
+ return $list;
+ };
+
+ return Closure::bind($copy, null, DeepCopy::class);
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
new file mode 100644
index 00000000..5785a7da
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/TypeFilter/TypeFilter.php
@@ -0,0 +1,13 @@
+type = $type;
+ }
+
+ /**
+ * @param mixed $element
+ *
+ * @return boolean
+ */
+ public function matches($element)
+ {
+ return is_object($element) ? is_a($element, $this->type) : gettype($element) === $this->type;
+ }
+}
diff --git a/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
new file mode 100644
index 00000000..272652ca
--- /dev/null
+++ b/html2pdf-master/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
@@ -0,0 +1,16 @@
+copy($value);
+}
diff --git a/html2pdf-master/vendor/phake/phake/.codeclimate.yml b/html2pdf-master/vendor/phake/phake/.codeclimate.yml
new file mode 100644
index 00000000..349ac7ef
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/.codeclimate.yml
@@ -0,0 +1,7 @@
+languages:
+ PHP: true
+exclude_paths:
+- "docs/*"
+- "bin/*"
+- "tests/*"
+- "vendor/*"
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/.gitignore b/html2pdf-master/vendor/phake/phake/.gitignore
new file mode 100644
index 00000000..974b6898
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/.gitignore
@@ -0,0 +1,12 @@
+.buildpath
+.project
+.settings
+.idea
+nbproject
+vendor
+bin
+composer.lock
+composer.phar
+phpunit.xml
+docs/_build
+rtd-docs/_build
diff --git a/html2pdf-master/vendor/phake/phake/.scrutinizer.yml b/html2pdf-master/vendor/phake/phake/.scrutinizer.yml
new file mode 100644
index 00000000..ea65e8f6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/.scrutinizer.yml
@@ -0,0 +1,18 @@
+filter:
+ paths: [src/*]
+ excluded_paths: [vendor/*, tests/*]
+before_commands:
+ - 'composer install --dev --prefer-source'
+tools:
+ external_code_coverage: true
+ php_mess_detector: true
+ php_code_sniffer: true
+ sensiolabs_security_checker: true
+ php_code_coverage: true
+ php_pdepend: true
+ php_loc:
+ enabled: true
+ excluded_dirs: [vendor, tests]
+ php_cpd:
+ enabled: true
+ excluded_dirs: [vendor, tests]
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/.travis.yml b/html2pdf-master/vendor/phake/phake/.travis.yml
new file mode 100644
index 00000000..ff613ae6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/.travis.yml
@@ -0,0 +1,67 @@
+language: php
+
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - hhvm
+ - nightly
+
+env:
+ - PHPUNIT_VERSION=4.8.*
+ - PHPUNIT_VERSION=4.8.x-dev
+ - PHPUNIT_VERSION=5.0.x-dev
+ - PHPUNIT_VERSION=5.1.x-dev
+ - PHPUNIT_VERSION=6.0.x-dev
+
+
+script:
+ - |
+ if [[ $TRAVIS_PHP_VERSION = "hhv"* ]]; then
+ hhvm -vEval.EnableHipHopSyntax=true ./bin/phpunit --coverage-clover=build/logs/clover.xml
+ else
+ ./bin/phpunit --coverage-clover=build/logs/clover.xml
+ fi
+ -
+
+matrix:
+ allow_failures:
+ - php: nightly
+ - env: PHPUNIT_VERSION=4.8.x-dev
+ - env: PHPUNIT_VERSION=5.0.x-dev
+ - env: PHPUNIT_VERSION=5.1.x-dev
+ - env: PHPUNIT_VERSION=6.0.x-dev
+ exclude:
+ - php: 5.3
+ env: PHPUNIT_VERSION=5.0.x-dev
+ - php: 5.4
+ env: PHPUNIT_VERSION=5.0.x-dev
+ - php: 5.5
+ env: PHPUNIT_VERSION=5.0.x-dev
+ - php: 5.3
+ env: PHPUNIT_VERSION=5.1.x-dev
+ - php: 5.4
+ env: PHPUNIT_VERSION=5.1.x-dev
+ - php: 5.5
+ env: PHPUNIT_VERSION=5.1.x-dev
+ - php: 5.3
+ env: PHPUNIT_VERSION=6.0.x-dev
+ - php: 5.4
+ env: PHPUNIT_VERSION=6.0.x-dev
+ - php: 5.5
+ env: PHPUNIT_VERSION=6.0.x-dev
+ - php: 5.6
+ env: PHPUNIT_VERSION=6.0.x-dev
+ - php: hhvm
+ env: PHPUNIT_VERSION=6.0.x-dev
+
+install:
+ - composer require --dev phpunit/phpunit:${PHPUNIT_VERSION}
+ - composer install --dev
+
+after_script:
+ - wget https://scrutinizer-ci.com/ocular.phar
+ - php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml
+ - CODECLIMATE_REPO_TOKEN=74f9cd376c20c19d09d6c73e4bac9dad48209fa7f3fb44b650ec7d70db81a51a ./bin/test-reporter
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/.travis/install-hhvm-nightly.sh b/html2pdf-master/vendor/phake/phake/.travis/install-hhvm-nightly.sh
new file mode 100644
index 00000000..844a4e6f
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/.travis/install-hhvm-nightly.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+set -e
+set -o pipefail
+
+if [ "$TRAVIS_PHP_VERSION" = "hhvm" ]; then
+
+ # Install the nightly build of HHVM ...
+ curl http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add -
+ echo deb http://dl.hhvm.com/ubuntu precise main | sudo tee /etc/apt/sources.list.d/hhvm.list
+ sudo apt-get update
+ sudo apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install hhvm-nightly
+ hhvm --version
+
+ # Ensure the PHP symlink points to the nightly HHVM build ...
+ PHP_PATH=$(which php)
+ HHVM_PATH=$(which hhvm)
+ sudo rm "$PHP_PATH"
+ sudo ln -s "$HHVM_PATH" "$PHP_PATH"
+
+ echo
+ php --version
+fi
diff --git a/html2pdf-master/vendor/phake/phake/CHANGELOG.markdown b/html2pdf-master/vendor/phake/phake/CHANGELOG.markdown
new file mode 100644
index 00000000..1ef87a6c
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/CHANGELOG.markdown
@@ -0,0 +1,20 @@
+## What's New in 2.1.0
+
+### New Features
+
+**#158 - Allow direct calling of protected methods for mocks**
+Allow for calling of private and protected methods on mocks using new Phake::makeVisible() and Phake::makeStaticsVisible() wrappers. This will allow for slightly easier testing of legacy code and abstracts. http://phake.readthedocs.org/en/2.1/mocks.html#calling-private-and-protected-methods-on-mocks
+
+### Changes
+
+**#178 - Renamed thenGetReturnByLambda to thenReturnCallback**
+The thenGetReturnByLambda just didn't quite sound right and was difficult to remember so we changed the name. While the original method will still work, a deprecation error will be emitted by the code when thenGetReturnByLambda is called with a message that you should use thenReturnCallback instead. The great news is that no other project in their right mind would ever use that method name, so a search and replace should be pretty reliable.
+
+**#144 - Improve Phake::verify error message**
+When a method doesn't match you will now be given a more appropriate diff as to why. This should help make life a little easier when debugging failing tests.
+
+**Enhanced integration with Travis-CI**
+We are now testing all the things!
+
+**Integrated with Scrutenizer**
+We are also measuring all the things
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/LICENSE b/html2pdf-master/vendor/phake/phake/LICENSE
new file mode 100644
index 00000000..aefd6359
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/LICENSE
@@ -0,0 +1,33 @@
+Phake - Mocking Framework
+
+Copyright (c) 2010-2012, Mike Lively
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+
+ Neither the name of Mike Lively nor the names of his
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/html2pdf-master/vendor/phake/phake/README.markdown b/html2pdf-master/vendor/phake/phake/README.markdown
new file mode 100644
index 00000000..436bf350
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/README.markdown
@@ -0,0 +1,53 @@
+Phake
+=======
+[](https://readthedocs.org/projects/phake/?badge=2.1)
+[](http://travis-ci.org/mlively/Phake)
+[](https://packagist.org/packages/phake/phake) [](https://packagist.org/packages/phake/phake) [](https://packagist.org/packages/phake/phake) [](https://packagist.org/packages/phake/phake)
+
+Phake is a framework for PHP that aims to provide mock objects, test doubles
+and method stubs.
+
+Phake was inspired by a lack of flexibility and ease of use in the current
+mocking frameworks combined with a recent experience with Mockito for Java.
+
+A key conceptual difference in mocking between Phake and most of php mocking
+frameworks (ie: mock functionality in PHPUnit, PHPMock, and mock functionality
+in SimpleTest) is that Phake (like Mockito) employs a verification strategy to
+ensure that calls get made. That is to say, you call your code as normal and
+then after you have finished the code being tested you can verify whether or
+not expected methods were called. This is very different from the
+aforementioned products for php which use an expectation strategy where you
+lay out your expectations prior to any calls being made.
+
+Installation - Composer
+-----------------------
+
+Phake can be installed using [Composer](https://github.com/composer/composer).
+
+1. Add Phake as a dependency.
+
+You'll usually want this as a development dependency, so the example shows it
+in the require-dev section.
+
+``` json
+"require-dev": {
+ "phake/phake": "2.*"
+}
+```
+
+2. Run Composer: `php composer.phar install --dev` or `php composer.phar update phake/phake`
+
+Installation - Source
+---------------------
+
+You can also of course install it from source by downloading it from our github repository: https://github.com/mlively/Phake
+
+Links
+-------------
+
+There are a few links that have information on how you can utilize Phake.
+
+* [Phake Documentation](http://phake.readthedocs.org/en/latest/)
+* [Initial Phake Announcement](http://digitalsandwich.com/archives/84-introducing-phake-mocking-framework.html)
+
+If you have an article or tutorial that you would like to share, feel free to open an [issue](https://github.com/mlively/Phake/issues) on github and I will add it to this list
diff --git a/html2pdf-master/vendor/phake/phake/composer.json b/html2pdf-master/vendor/phake/phake/composer.json
new file mode 100644
index 00000000..738144f3
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/composer.json
@@ -0,0 +1,44 @@
+{
+ "name": "phake/phake",
+ "type": "library",
+ "description": "The Phake mock testing library",
+ "keywords": ["testing", "mock"],
+ "homepage": "https://github.com/mlively/Phake",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Mike Lively",
+ "email": "m@digitalsandwich.com"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/comparator": "~1.1"
+ },
+ "require-dev": {
+ "ext-soap": "*",
+ "doctrine/common": "2.3.*",
+ "phpunit/phpunit": "3.7.*",
+ "hamcrest/hamcrest-php": "1.1.*",
+ "codeclimate/php-test-reporter": "dev-master"
+ },
+ "config": {
+ "bin-dir": "bin"
+ },
+ "autoload": {
+ "psr-0": {
+ "Phake": "src/"
+ }
+ },
+ "suggest": {
+ "doctrine/common": "Allows mock annotations to use import statements for classes.",
+ "hamcrest/hamcrest-php": "Use Hamcrest matchers."
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.0-dev"
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/html2pdf-master/vendor/phake/phake/docs/Makefile b/html2pdf-master/vendor/phake/phake/docs/Makefile
new file mode 100644
index 00000000..7eafdf58
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/Makefile
@@ -0,0 +1,89 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS =
+SPHINXBUILD = sphinx-build
+PAPER =
+BUILDDIR = _build
+
+# Internal variables.
+PAPEROPT_a4 = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
+
+help:
+ @echo "Please use \`make ' where is one of"
+ @echo " html to make standalone HTML files"
+ @echo " dirhtml to make HTML files named index.html in directories"
+ @echo " pickle to make pickle files"
+ @echo " json to make JSON files"
+ @echo " htmlhelp to make HTML files and a HTML help project"
+ @echo " qthelp to make HTML files and a qthelp project"
+ @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+ @echo " changes to make an overview of all changed/added/deprecated items"
+ @echo " linkcheck to check all external links for integrity"
+ @echo " doctest to run all doctests embedded in the documentation (if enabled)"
+
+clean:
+ -rm -rf $(BUILDDIR)/*
+
+html:
+ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
+
+dirhtml:
+ $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
+ @echo
+ @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
+
+pickle:
+ $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
+ @echo
+ @echo "Build finished; now you can process the pickle files."
+
+json:
+ $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
+ @echo
+ @echo "Build finished; now you can process the JSON files."
+
+htmlhelp:
+ $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
+ @echo
+ @echo "Build finished; now you can run HTML Help Workshop with the" \
+ ".hhp project file in $(BUILDDIR)/htmlhelp."
+
+qthelp:
+ $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
+ @echo
+ @echo "Build finished; now you can run "qcollectiongenerator" with the" \
+ ".qhcp project file in $(BUILDDIR)/qthelp, like this:"
+ @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Phake-PHPMockingFramework.qhcp"
+ @echo "To view the help file:"
+ @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Phake-PHPMockingFramework.qhc"
+
+latex:
+ $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
+ @echo
+ @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
+ @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+ "run these through (pdf)latex."
+
+changes:
+ $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
+ @echo
+ @echo "The overview file is in $(BUILDDIR)/changes."
+
+linkcheck:
+ $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
+ @echo
+ @echo "Link check complete; look for any errors in the above output " \
+ "or in $(BUILDDIR)/linkcheck/output.txt."
+
+doctest:
+ $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
+ @echo "Testing of doctests in the sources finished, look at the " \
+ "results in $(BUILDDIR)/doctest/output.txt."
diff --git a/html2pdf-master/vendor/phake/phake/docs/answers.rst b/html2pdf-master/vendor/phake/phake/docs/answers.rst
new file mode 100644
index 00000000..49402ed7
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/answers.rst
@@ -0,0 +1,163 @@
+.. _answers:
+
+*******
+Answers
+*******
+
+In all of the examples so far, the ``thenReturn()`` answer is being used. There are other answers that are remarkably
+useful writing your tests.
+
+Throwing Exceptions
+===================
+
+Exception handling is a common aspect of most object oriented systems that should be tested. The key to being able to
+test your exception handling is to be able to control the throwing of your exceptions. Phake allows this using the
+``thenThrow()`` answer. This answer allows you to throw a specific exception from any mocked method. Below is an
+example of a piece of code that catches an exception from the method foo() and then logs a message with the exception
+message.
+
+.. code-block:: php
+
+ class MyClass
+ {
+ private $logger;
+
+ public function __construct(LOGGER $logger)
+ {
+ $this->logger = $logger;
+ }
+
+ public function processSomeData(MyDataProcessor $processor, MyData $data)
+ {
+ try
+ {
+ $processor->process($data);
+ }
+ catch (Exception $e)
+ {
+ $this->logger->log($e->getMessage());
+ }
+ }
+ }
+
+In order to test this we must mock ``foo()`` so that it throws an exception when it is called. Then we can verify that
+``log()`` is called with the appropriate message.
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testProcessSomeDataLogsExceptions()
+ {
+ $logger = Phake::mock('LOGGER');
+ $data = Phake::mock('MyData');
+ $processor = Phake::mock('MyDataProcessor');
+
+ Phake::when($processor)->process($data)->thenThrow(new Exception('My error message!'));
+
+ $sut = new MyClass($logger);
+ $sut->processSomeData($processor, $data);
+
+ //This comes from the exception we created above
+ Phake::verify($logger)->log('My error message!');
+ }
+ }
+
+.. _then-call-parent:
+Calling the Parent
+==================
+
+Phake provides the ability to allow calling the actual method of an object on a method by method
+basis by using the ``thenCallParent()`` answer. This will result in the actual method being called.
+Consider the following class.
+
+.. code-block:: php
+
+ class MyClass
+ {
+ public function foo()
+ {
+ return '42';
+ }
+ }
+
+The ``thenCallParent()`` answer can be used here to ensure that the actual method in the class is
+called resulting in the value 42 being returned from calls to that mocked method.
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testCallingParent()
+ {
+ $mock = Phake::mock('MyClass');
+ Phake::when($mock)->foo()->thenCallParent();
+
+ $this->assertEquals(42, $mock->foo());
+ }
+ }
+
+Please avoid using this answer as much as possible especially when testing newly written code. If you find yourself
+requiring a class to be only partially mocked then that is a code smell for a class that is likely doing too much. An
+example of when this is being done is why you are testing a class that has a singular method that has a lot of side
+effects that you want to mock while you allow the other methods to be called as normal. In this case that method that
+you are desiring to mock should belong to a completely separate class. It is obvious by the very fact that you are able
+to mock it without needing to mock other messages that it performs a different function.
+
+Even though partial mocking should be avoided with new code, it is often very necessary to allow creating tests while
+refactoring legacy code, tests involving 3rd party code that can’t be changed, or new tests of already written code
+that cannot yet be changed. This is precisely the reason why this answer exists and is also why it is not the default
+answer in Phake.
+
+Capturing a Return Value
+========================
+
+Another tool in Phake for testing legacy code is the ``captureReturnTo()`` answer. This performs a function similar to
+argument capturing, however it instead captures what the actual method of a mock object returns to the variable passed
+as its parameter. Again, this should never be needed if you are testing newly written code. However I have ran across
+cases several times where legacy code calls protected factory methods and the result of the method call is never
+exposed. This answer gives you a way to access that variable to ensure that the factory was called and is operating
+correctly in the context of your method that is being tested.
+
+Answer Callbacks
+================
+
+While the answers provided in Phake should be able to cover most of the scenarios you will run into when using mocks in
+your unit tests there may occasionally be times when you need more control over what is returned from your mock
+methods. When this is the case, you can use a callback answer. These do generally increase the complexity of tests and
+you really should only use them if you won't know what you need to return until call time.
+
+You can specify a callback answer using the thenReturnCallback method. This argument takes a callback or a closure.
+The callback will be passed the same arguments as were passed to the method being stubbed. This allows you to use them
+to help determine the answer.
+
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testCallback()
+ {
+ $mock = Phake::mock('MyClass');
+ Phake::when($mock)->foo->thenReturnCallback(function ($val) { return $val * 2; });
+
+ $this->assertEquals(42, $mock->foo(21));
+ }
+ }
+
+Custom Answers
+==============
+
+You can also create custom answers. All answers in Phake implement the ``Phake_Stubber_IAnswer`` interface. This
+interface defines a single method called ``getAnswer()`` that can be used to return what will be returned from a call
+to the method being stubbed. If you need to get access to how the method you are stubbing was invoked, there is a more
+complex set of interfaces that can be implemented: ``Phake_Stubber_Answers_IDelegator`` and
+``Phake_Stubber_IAnswerDelegate``.
+
+``Phake_Stubber_Answers_IDelegator`` extends ``Phake_Stubber_IAnswer`` and defines an additional method called
+``processAnswer()`` that is used to perform processing on the results of ``getAnswer()`` prior to passing it on to the
+stub’s caller. ``Phake_Stubber_IAnswerDelegate`` defines an interface that allows you to create a callback that is
+called to generate the answer from the stub. It defines ``getCallBack()`` which allows you to generate a PHP callback
+based on the object, method, and arguments that a stub was called with. It also defines ``getArguments()`` which allows
+you to generate the arguments that will be passed to the callback based on the method name and arguments the stub was
+called with.
diff --git a/html2pdf-master/vendor/phake/phake/docs/conf.py b/html2pdf-master/vendor/phake/phake/docs/conf.py
new file mode 100644
index 00000000..23ad75dc
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/conf.py
@@ -0,0 +1,194 @@
+# -*- coding: utf-8 -*-
+#
+# Phake - PHP Mocking Framework documentation build configuration file, created by
+# sphinx-quickstart on Wed Apr 2 02:02:12 2014.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.append(os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = []
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Phake - PHP Mocking Framework'
+copyright = u'2014, Mike Lively '
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '1.0'
+# The full version, including alpha/beta/rc tags.
+release = '1.0.3'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directory, that shouldn't be searched
+# for source files.
+exclude_trees = ['_build']
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages. Major themes that come with
+# Sphinx are currently 'default' and 'sphinxdoc'.
+html_theme = 'default'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further. For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents. If None, it defaults to
+# " v documentation".
+#html_title = None
+
+# A shorter title for the navigation bar. Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a tag referring to it. The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Phake-PHPMockingFrameworkdoc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+ ('index', 'Phake-PHPMockingFramework.tex', u'Phake - PHP Mocking Framework Documentation',
+ u'Mike Lively \\textless{}m@digitalsandwich.com\\textgreater{}', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/html2pdf-master/vendor/phake/phake/docs/configuration.rst b/html2pdf-master/vendor/phake/phake/docs/configuration.rst
new file mode 100644
index 00000000..22ff95f4
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/configuration.rst
@@ -0,0 +1,51 @@
+*************
+Configuration
+*************
+
+There are some options you can use to configure and customize Phake. None of these options are required and
+Phake can always just be used straight out of the box, however some configuration options are available to
+provide more convenient integration with PHPUnit and ability to debug your mock objects.
+
+Setting the Phake Client
+========================
+
+While Phake does not have a direct dependency on PHPUnit, there is a PHPUnit specific client that improves
+error reporting and allows you to utilize strict mode with PHPUnit. Without using the PHPUnit client, any
+failed verifications will result in an errored test. Generally speaking, with PHPUnit, the error result is
+reserved for bad tests, not failed tests.
+
+The other issue you would run into when using Phake with PHPUnit without using the PHPUnit Phake client is
+that any test runs utilizing the --strict flag will fail when an assertion is not recorded. By default Phake
+does not register assertions with PHPUnit. When the PHPUnit client is used however, the assertions are
+recorded and --strict mode can be safely used with your tests.
+
+To enable the PHPUnit Phake client, you can register it in your test bootstrap.
+
+.. code-block:: php
+
+ require_once('Phake.php');
+ Phake::setClient(Phake::CLIENT_PHPUNIT);
+
+Setting the Mock Class Loader
+=============================
+
+When generating mock classes, Phake will load them into memory utilizing the PHP ``eval()`` function. This can
+make the code inside of mock classes difficult to debug or diagnose when errors occur in this code. Using
+the ``Phake::setMockLoader()`` method you can change this behavior to instead dump the generated class to a
+file and then require that file. This will allow for accurate and easily researchable errors when running
+tests. This shouldn't typically be required for most users of Phake, however if your are having errors or
+working on code for Phake itself it can be incredibly useful.
+
+``Phake::setMockLoader()`` accepts a single parameter of type ``Phake_ClassGenerator_ILoader``. The default
+behavior is contained in the ``Phake_ClassGenerator_EvalLoader`` class. If you would instead like to dump the
+classes to files you can instead use the ``Phake_ClassGenerator_FileLoader`` class. The constructor accepts a
+single parameter containing the directory you would like to dump the classes to. The classes will be stored
+in files with the same name as the generated class.
+
+Below is an example of the code required to dump mock classes into the /tmp folder.
+
+.. code-block:: php
+
+ require_once('Phake.php');
+ require_once('Phake/ClassGenerator/FileLoader.php');
+ Phake::setMockLoader(new Phake_ClassGenerator_FileLoader('/tmp'));
diff --git a/html2pdf-master/vendor/phake/phake/docs/getting-started.rst b/html2pdf-master/vendor/phake/phake/docs/getting-started.rst
new file mode 100644
index 00000000..4e4735ec
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/getting-started.rst
@@ -0,0 +1,39 @@
+Getting Started
+===============
+
+Phake depends on PHP 5.3.3 or greater. It has no dependency on PHPUnit and should be usable with
+any version of PHPUnit so long as the PHP version is 5.3.3 or greater.
+
+Composer Install
+----------------
+Phake can be installed via `Composer `_. You will typically want to install Phake
+as a development requirement. To do so you can add the following to your ``composer.json`` file:
+
+.. code-block:: js
+
+ {
+ // ..
+ "require-dev": {
+ "phake/phake": "@stable"
+ }
+ // ..
+ }
+
+Once this is added to ``composer.json`` you can run ``composer update phake/phake``
+
+Install from Source
+-------------------
+You can also clone a copy of Phake from the `Phake GitHub repository `_.
+Every attempt is made to keep the master branch stable and this should be usable for those that
+immediately need features before they get released or in the event that you enjoy the bleeding edge.
+Always remember, until something goes into a rc state, there is always a chance that the functionality
+may change. However as an early adopter that uses GitHub, you can have a chance to mold the software
+as it is built.
+
+Support
+-------
+
+If you think you have found a bug or an issue with Phake, please feel free to open up an issue on the
+`Phake Issue Tracker `_
+
+
diff --git a/html2pdf-master/vendor/phake/phake/docs/index.rst b/html2pdf-master/vendor/phake/phake/docs/index.rst
new file mode 100644
index 00000000..5981a80e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/index.rst
@@ -0,0 +1,28 @@
+.. Phake - PHP Mocking Framework documentation master file, created by
+ sphinx-quickstart on Wed Apr 2 02:02:12 2014.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+Welcome to Phake - PHP Mocking Framework's documentation!
+=========================================================
+
+.. toctree::
+ :maxdepth: 2
+
+ introduction
+ getting-started
+ mocks
+ method-stubbing
+ method-verification
+ mocking-statics
+ answers
+ method-parameter-matchers
+ configuration
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
diff --git a/html2pdf-master/vendor/phake/phake/docs/introduction.rst b/html2pdf-master/vendor/phake/phake/docs/introduction.rst
new file mode 100644
index 00000000..10f422de
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/introduction.rst
@@ -0,0 +1,144 @@
+Introduction to Phake
+=====================
+
+**Phake** is a mocking framework for PHP. It allows for the creation of objects that mimic a real
+object in a predictable and controlled manner. This allows you to treat external method calls
+made by your system under test (SUT) as just another form of input to your SUT and output from
+your SUT. This is done by stubbing methods that supply indirect input into your test and by
+verifying parameters to methods that receive indirect output from your test.
+
+In true Las Vegas spirit I am implementing a new framework that allows you to easily create
+new card games. Most every card game at one point or another needs a dealer. In the example below
+I have created a new class called ``CardGame`` that implements the basic functionality for a card game:
+
+.. code-block:: php
+
+ class CardGame
+ {
+ private $dealerStrategy;
+ private $deck;
+ private $players;
+
+ public function CardGame(DealerStrategy $dealerStrategy, CardCollection $deck, PlayerCollection $players)
+ {
+ $this->dealerStrategy = $dealerStrategy;
+ $this->deck = $deck;
+ $this->players = $players;
+ }
+
+ public function dealCards()
+ {
+ $this->deck->shuffle();
+ $this->dealerStrategy->deal($deck, $players);
+ }
+ }
+
+If I want to create a new test to ensure that ``dealCards()`` works properly, what do I need to test?
+Everything I read about testing says that I need to establish known input for my test, and then
+test its output. However, in this case, I don’t have any parameters that are passed into ``dealCards()``
+nor do I have any return values I can check. I could just run the ``dealCards()`` method and make sure
+I don’t get any errors or exceptions, but that proves little more than my method isn’t blowing up
+spectacularly. It is apparent that I need to ensure that what I actually assert is that
+the ``shuffle()`` and ``deal()`` methods are being called. If
+I want to continue testing this using concrete
+classes that already exist in my system, I could conjure up one of my implementations of ``DealerStrategy``,
+``CardCollection`` and ``PlayerCollection``. All of those
+objects are closer to being true value objects
+with a testable state. I could feasibly construct instances of those objects, pass them into an
+instance of ``CardGame``, call ``dealCards()`` and then assert
+the state of those same objects. A test doing
+this might look something like:
+
+.. code-block:: php
+
+ class CardGameTest1 extends PHPUnit_Framework_TestCase
+ {
+ public function testDealCards()
+ {
+ $dealer = new FiveCardPokerDealer();
+ $deck = new StandardDeck();
+ $player1 = new Player();
+ $player2 = new Player();
+ $player3 = new Player();
+ $player4 = new Player();
+ $players = new PlayerCollection(array($player1, $player2, $player3, $player4));
+
+ $cardGame = new CardGame($dealer, $deck, $players);
+ $cardGame->dealCards();
+
+ $this->assertEquals(5, count($player1->getCards()));
+ $this->assertEquals(5, count($player2->getCards()));
+ $this->assertEquals(5, count($player3->getCards()));
+ $this->assertEquals(5, count($player4->getCards()));
+ }
+ }
+
+This test isn’t all that bad, it’s not difficult to understand and it does make sure that cards
+are dealt through making sure that each player has 5 cards. There are at least two significant problems
+with this test however. The first problem is that there is not any isolation of the SUT which in
+this case is ``dealCards()``. If something is broken in the ``FiveCardPokerDealer``
+class, the ``Player`` class,
+or the ``PlayerCollection`` class, it will manifest itself here as a broken ``CardGame``
+class. Thinking
+about how each of these classes might be implemented, one could easily make the argument that this
+really tests the ``FiveCardPokerDealer`` class much more than the ``dealCards()`` method.
+The second problem
+is significantly more problematic. It is perfectly feasible that I could remove the call to ``$this->deck->shuffle()``
+in my SUT and the test I have created will still test just fine. In order to solidify my test I
+need to introduce logic to ensure that the deck has been shuffled. With the current mindset of using
+real objects in my tests I could wind up with incredibly complicated logic. I could feasibly add
+an identifier of some sort to ``DealerStrategy::shuffle()`` to mark the deck as shuffled thereby making
+it checkable state, however that makes my design more fragile as I would have to ensure that identifier
+was set probably on every implementation of ``DealerStrategy::shuffle()``.
+
+This is the type of problem that mock frameworks solve. A mock framework such as Phake can
+be used to create implementations of my ``DealerStrategy``, ``CardCollection``, and ``PlayerCollection`` classes.
+I can then exercise my SUT. Finally, I can verify that the methods that should be called on these
+objects were called correctly. If this test were
+re-written to use Phake, it would become:
+
+.. code-block:: php
+
+ class CardGameTest2 extends PHPUnit_Framework_TestCase
+ {
+ public function testDealCards()
+ {
+ $dealer = Phake::mock('DealerStrategy');
+ $deck = Phake::mock('CardCollection');
+ $players = Phake::mock('PlayerCollection');
+
+ $cardGame = new CardGame($dealer, $deck, $players);
+ $cardGame->dealCards();
+
+ Phake::verify($deck)->shuffle();
+ Phake::verify($dealer)->deal($deck, $players);
+ }
+ }
+
+There are three benefits of using mock objects that can be seen through this example. The first benefit
+is that the brittleness of the fixture is reduced. In our previous example you see that I have to construct
+a full object graph based on the dependencies of all of the classes involved. I am fortunate in
+the first example that there are only 4 classes involved. In real world problems and especially
+long lived, legacy code the object graphs can be much, much larger. When using mock objects you
+typically only have to worry about the direct dependencies of your SUT. Specifically, direct dependencies
+required to instantiate the dependencies of the class under test, the parameters passed to the method
+under test (direct dependencies,) and the values returned by additional method calls within the
+method under test (indirect dependencies.)
+
+The second benefit is the test is only testing the SUT. If this test fails due to a change in anything
+but the interfaces of the classes involved, the change would have had to been made in either the
+constructor of ``CardGame``, or the ``dealCards()`` method itself.
+Obviously, if an interface change is
+made (such as removing the ``shuffle()``) method, then I would have a scenario
+where the changed code is outside of this class. However, provided the removal of that method was
+intentional, I will know that this code needs to be addressed as it is depending on a method that no longer exists.
+
+The third benefit is that I have truer verification and assertions of the outcome of exercising
+my SUT. In this case for instance, I can be sure that if the call to ``shuffle()`` is removed, this
+test will fail. It also does it in a way that keeps the code necessary to assert your final state
+simple and concise. This makes my test overall much easier to understand and maintain. There is
+still one flaw with this example however. There is nothing here to ensure that ``shuffle()`` is called
+before ``deal()`` it is quite possible for someone to mistakenly reverse the order of these two calls.
+The Phake framework does have the ability to track call order to make this test even more bullet
+proof via the ``Phake::inOrder()`` method. I will go over this in more detail later.
+
diff --git a/html2pdf-master/vendor/phake/phake/docs/method-parameter-matchers.rst b/html2pdf-master/vendor/phake/phake/docs/method-parameter-matchers.rst
new file mode 100644
index 00000000..a72b24eb
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/method-parameter-matchers.rst
@@ -0,0 +1,340 @@
+.. _method-parameter-matchers-section:
+
+
+*************************
+Method Parameter Matchers
+*************************
+
+The verification and stubbing functionality in Phake both rely heavily on parameter matching to help the system
+understand exactly which calls need to be verified or stubbed. Phake provides several options for setting up parameter
+matches.
+
+The most common scenario for matching parameters as you use mock objects is matching on equal variables For this reason
+the default matcher will ensure that the parameter you pass to the mock method is equal (essentially using the '=='
+notation) to the parameter passed to the actual invocation before validating the call or returning the mocked stub. So
+going back to the card game demonstration from the introduction. Consider the following interface:
+
+.. code-block:: php
+
+ interface DealerStrategy
+ {
+ public function deal(CardCollection $deck, PlayerCollection $players);
+ }
+
+Here we have a ``deal()`` method that accepts two parameters. If you want to verify that ``deal()`` was called, chances
+are very good that you want to verify the the parameters as well. To do this is as simple as passing those parameters
+to the ``deal()`` method on the ``Phake::verify($deal)`` object just as you would if you were calling the actual
+``deal()`` method itself. Here is a short albeit silly example:
+
+.. code-block:: php
+
+ //I don't have Concrete versions of
+ // CardCollection or PlayerCollection yet
+ $deck = Phake::mock('CardCollection');
+ $players = Phake::mock('PlayerCollection');
+
+
+ $dealer = Phake::mock('DealerStrategy');
+
+ $dealer->deal($deck, $players);
+
+ Phake::verify($dealer)->deal($deck, $players);
+
+In this example, if I were to have accidentally made the call to ``deal()`` with a property that was set to null as the
+first parameter then my test would fail with the following exception::
+
+ Expected DealerStrategy->deal(equal to
+ , equal to )
+ to be called exactly 1 times, actually called 0 times.
+ Other Invocations:
+ PhakeTest_MockedClass->deal(,
+ equal to )
+
+Determining the appropriate method to stub works in exactly the same way.
+
+There may be cases when it is necessary to verify or stub parameters based on something slightly more complex then
+basic equality. This is what we will talk about next.
+
+Using PHPUnit Matchers
+======================
+Phake was developed with PHPUnit in mind. It is not dependent on PHPUnit, however if PHPUnit is your testing framework
+of choice there is some special integration available. Any constraints made available by the PHPUnit framework will
+work seamlessly inside of Phake. Here is an example of how the `PHPUnit constraints `_ can be used:
+
+.. code-block:: php
+
+ class TestPHPUnitConstraint extends PHPUnit_Framework_TestCase
+ {
+ public function testDealNumberOfCards()
+ {
+ $deck = Phake::mock('CardCollection');
+ $players = Phake::mock('PlayerCollection');
+
+ $dealer = Phake::mock('DealerStrategy');
+ $dealer->deal($deck, $players, 11);
+
+ Phake::verify($dealer)
+ ->deal($deck, $players, $this->greaterThan(10));
+ }
+ }
+
+
+I have added another parameter to my ``deal()`` method that allows me to specify the number of cards to deal to each
+player. In the test above I wanted to verify that the number passed to this parameter was greater than 10.
+
+For a list of the constraints you have available to you through PHPUnit, I recommend reading the PHPUnit's
+documentation on assertions and constraints. Any constraint that can be used with ``assertThat()`` in PHPUnit can also
+be used in Phake.
+
+Using Hamcrest Matchers
+=======================
+If you do not use PHPUnit, Phake also supports `Hamcrest matchers `_. This is in-line with the Phake's design goal of being
+usable with any testing framework. Here is a repeat of the PHPUnit example, this time using SimpleTest and Hamcrest
+matchers.
+
+.. code-block:: php
+
+ class TestHamcrestMatcher extends UnitTestCase
+ {
+ public function testDealNumberOfCards()
+ {
+ $deck = Phake::mock('CardCollection');
+ $players = Phake::mock('PlayerCollection');
+
+ $dealer = Phake::mock('DealerStrategy');
+ $dealer->deal($deck, $players, 11);
+
+ Phake::verify($dealer)->deal($deck, $players, greaterThan(10));
+ }
+ }
+
+.. _wildcard-parameters:
+Wildcard Parameters
+===================
+Frequently when stubbing methods, you do not really care about matching parameters. Often times matching every
+parameter for a stub can result in overly brittle tests. If you find yourself in this situation you can use Phake's
+shorthand stubbing to instruct Phake that a mock should be stubbed on any invocation. You could also use it to verify a
+method call regardless of parameters. This is not a very common use case but it is possible.
+
+To specify that a given stub or verification method should match any parameters, you call the method you are stubbing
+or mocking as a property of ``Phake::when()`` or ``Phake::verify()``. The code below will mock any invocation of
+$obj->foo() regardless of parameters to return bar.
+
+.. code-block:: php
+
+ class FooTest extends PHPUnit_Framework_TestCase
+ {
+ public function testAddItemsToCart()
+ {
+ $obj = Phake::mock('MyObject');
+
+ Phake::when($obj)->foo->thenReturn('bar');
+
+ $this->assertEquals('bar', $obj->foo());
+ $this->assertEquals('bar', $obj->foo('a parameter'));
+ $this->assertEquals('bar', $obj->foo('multiple', 'parameters'));
+ }
+ }
+
+If you are familiar with ``Phake::anyParameters()`` then you will recognize that the shorthand functionality is really
+just short hand of ``Phake::anyParameters()``. You can still use ``Phake::anyParameters()`` but it will likely be
+deprecated at some point in the future.
+
+Default and Variable Parameters
+-------------------------------
+Wildcards can also come in handy when stubbing or verifying methods with default parameters or variable parameters. In
+addition to ``Phake::anyParameters()``, ``Phake::ignoreRemaining()`` can be used to instruct Phake to not attempt to
+match any further parameters.
+
+A good example of where this could be handy is if you are mocking or verifying a method where the first parameter is
+important to stubbing but maybe the remaining parameters aren't. The code below stubs a factory method where the first
+parameter sets an item's name, but the remaining parameters are all available as defaults.
+
+.. code-block:: php
+
+ class MyFactory
+ {
+ public function createItem($name, $color = 'red', $size = 'large')
+ {
+ //...
+ }
+ }
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testUsingItemFactory()
+ {
+ $factory = Phake::mock('MyFactory');
+
+ $factory->createItem('Item1', 'blue', 'small');
+
+ //Verification below will succeed
+ Phake::verify($factory)->createItem('Item1', Phake::ignoreRemaining());
+ }
+ }
+
+Parameter Capturing
+===================
+As you can see there are a variety of methods for verifying that the appropriate parameters are being passed to
+methods. However, there may be times when the prebuilt constraints and matchers simply do not fit your needs. Perhaps
+there is method that accepts a complex object where only certain components of the object need to be validated.
+Parameter capturing will allow you to store the parameter that was used to call your method so that it can be used in
+assertions later on.
+
+Consider the following example where I have defined a ``getNumberOfCards()`` method on the ``CardCollection`` interface.
+
+.. code-block:: php
+
+ interface CardCollection
+ {
+ public function getNumberOfCards();
+ }
+
+I want to create new functionality for a my poker dealer strategy that will check to make sure we are playing with a
+full deck of 52 cards when the ``deal()`` call is made. It would be rather cumbersome to create a copy of a
+``CardCollection`` implementation that I could be sure would match in an equals scenario. Such a test would look
+something like this.
+
+Please note, I do not generally advocate this type of design. I prefer dependency injection to instantiation. So
+please remember, this is not an example of clean design, simply an example of what you can do with argument capturing.
+
+.. code-block:: php
+
+ class MyPokerGameTest extends PHPUnit_Framework_TestCase
+ {
+ public function testDealCards()
+ {
+ $dealer = Phake::mock('MyPokerDealer');
+ $players = Phake::mock('PlayerCollection');
+
+ $cardGame = new MyPokerGame($dealer, $players);
+
+ Phake::verify($dealer)->deal(Phake::capture($deck), $players);
+
+ $this->assertEquals(52, $deck->getNumberOfCards());
+ }
+ }
+
+You can also capture parameters if they meet a certain condition. For instance, if someone mistakenly passed an array
+as the first parameter to the ``deal()`` method then PHPUnit would fatal error out. This can be protected against by
+using the the ``Phake::capture()->when()`` method. The ``when()`` method accepts the same constraints that
+``Phake::verify()`` accepts. Here is how you could leverage that functionality to bulletproof your captures a little
+bit.
+
+.. code-block:: php
+
+ class MyBetterPokerGameTest extends PHPUnit_Framework_TestCase
+ {
+ public function testDealCards()
+ {
+ $dealer = Phake::mock('MyPokerDealer');
+ $players = Phake::mock('PlayerCollection');
+
+ $cardGame = new MyPokerGame($dealer, $players);
+
+ Phake::verify($dealer)->deal(
+ Phake::capture($deck)
+ ->when($this->isInstanceOf('CardCollection')),
+ $players
+ );
+
+ $this->assertEquals(52, $deck->getNumberOfCards());
+ }
+ }
+
+
+This could also be done by using PHPUnit's assertions later on with the captured parameter, however this also has a
+side effect of better localizing your error. Here is the error you would see if the above test failed.
+::
+
+ Exception: Expected MyPokerDealer->deal(,
+ equal to ) to be called exactly 1
+ times, actually called 0 times.
+ Other Invocations:
+ PhakeTest_MockedClass->deal(,
+ )
+
+It should be noted that while it is possible to use argument capturing for stubbing with ``Phake::when()`` I would
+discourage it. When stubbing a method, you should only be concerned about making sure an expected value is returned.
+Argument capturing in no way helps with that goal. In the worst case scenario, you will have some incredibly difficult
+test failures to diagnose.
+
+Beginning in Phake 2.1 you can also capture all values for a given parameter for every matching invocation. For
+instance imagine if you have a method ``$foo->process($eventManager)`` that should send a series of events.
+
+.. code-block:: php
+
+ class Foo
+ {
+ // ...
+ public function process(Request $request, EventManager $eventManager)
+ {
+ $eventManager->fire(new PreProcessEvent($request));
+ // ... do stuff
+ $eventManager->fire(new PostProcessEvent($request, $result));
+ }
+ }
+
+If you wanted to verify different aspects of the ``$eventManager->fire()`` calls this would have been very difficult
+and brittle using standard argument captors. There is now a new method ``Phake::captureAll()`` that can be used to
+capture all otherwise matching invocations of method. The variable passed to ``Phake::captureAll()`` will be set to an
+array containing all of the values used for that parameter. So with this function the following test can be written.
+
+.. code-block:: php
+
+ class FooTest
+ {
+ public function testProcess()
+ {
+ $foo = new Foo();
+ $request = Phake::mock('Request');
+ $eventManager = Phake::mock('EventManager');
+
+ $foo->process($request, $eventManager);
+
+ Phake::verify($eventManager, Phake::atLeast(1))->fire(Phake::captureAll($events));
+
+ $this->assertInstanceOf('PreProcessEvent', $events[0]);
+ $this->assertEquals($request, $events[0]->getRequest());
+
+ $this->assertInstanceOf('PostProcessEvent', $events[1]);
+ $this->assertEquals($request, $events[1]->getRequest());
+ }
+ }
+
+Custom Parameter Matchers
+=========================
+
+An alternative to using argument capturing is creating custom matchers. All parameter matchers implement the interface
+``Phake_Matchers_IArgumentMatcher``. You can create custom implementations of this interface. This is especially useful
+if you find yourself using a similar capturing pattern over and over again. If I were to rewriting the test above using
+a customer argument matcher it would look something like this.
+
+.. code-block:: php
+
+ class FiftyTwoCardDeckMatcher implements Phake_Matchers_IArgumentMatcher
+ {
+ public function matches(&$argument)
+ {
+ return ($argument instanceof CardCollection
+ && $argument->getNumberOfCards() == 52);
+ }
+
+ public function __toString()
+ {
+ return '';
+ }
+ }
+
+ class MyBestPokerGameTest extends PHPUnit_Framework_TestCase
+ {
+ public function testDealCards()
+ {
+ $dealer = Phake::mock('MyPokerDealer');
+ $players = Phake::mock('PlayerCollection');
+
+ $cardGame = new MyPokerGame($dealer, $players);
+
+ Phake::verify($dealer)->deal(new FiftyTwoCardDeckMatcher(), $players);
+ }
+ }
diff --git a/html2pdf-master/vendor/phake/phake/docs/method-stubbing.rst b/html2pdf-master/vendor/phake/phake/docs/method-stubbing.rst
new file mode 100644
index 00000000..2a1d2a36
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/method-stubbing.rst
@@ -0,0 +1,808 @@
+.. _method-stubbing-section:
+
+Method Stubbing
+===============
+
+The ``Phake::when()`` method is used to stub methods in Phake. As discussed in the introduction,
+stubbing allows an object method to be forced to return a particular value given a set of parameters. Similarly to
+``Phake::verify()``, ``Phake::when()`` accepts a mock object generated from
+``Phake::mock()`` as its first parameter.
+
+Imagine I was in the process of building the next great online shopping cart. The first thing any
+good shopping cart allows is to be able to add items. The most important thing I want to know from
+the shopping cart is how much money in merchandise is in there. So, I need to make myself a
+ShoppingCart class. I also am going to need some class to define my items.
+I am more worried about the money right now and because of that I am keenly aware that any item
+in a shopping cart is going to have a price. So I will just create an interface to represent those
+items called Item. Now take a minute to marvel at the creativity of those
+names. Great, now check out the initial definitions for my objects.
+
+.. code-block:: php
+
+ /**
+ * An item that is going to make me rich.
+ */
+ interface Item
+ {
+ /**
+ * @return money
+ */
+ public function getPrice();
+ }
+
+ /**
+ * A customer's cart that will contain items that are going to make me rich.
+ */
+ class ShoppingCart
+ {
+ private $items = array();
+
+ /**
+ * Adds an item to the customer's order
+ * @param Item $item
+ */
+ public function addItem(Item $item)
+ {
+ $this->items[] = $item;
+ }
+
+ /**
+ * Returns the current sub total of the customer's order
+ * @return money
+ */
+ public function getSubTotal()
+ {
+ }
+ }
+
+So, I am furiously coding away at this fantastic new ``ShoppingCart`` class when I
+realize, I am doing it wrong! You see, a few years ago I went to this conference with a bunch of
+other geeky people to talk about how to make quality software. I am supposed to be writing unit
+tests. Here I am, a solid thirteen lines (not counting comments) of code into my awe inspiring
+new software and I haven't written a single test. I tell myself, "There's no better time to change
+than right now!" So I decide to start testing. After looking at the options I decide PHPUnit with
+this sweet new mock library called Phake is the way to go.
+
+My first test is going to be for the currently unimplemented ``ShoppingCart::getSubTotal()``
+method. I already have a pretty good idea of what this function is going to need to do. It will
+need to look at all of the items in the cart, retrieve their price, add it all together and return
+the result. So, in my test I know I am going to need a fixture that sets up a shopping cart with
+a few items added. Then I am going to need a test that calls ``ShoppingCart::getSubTotal()``
+and asserts that it returns a value equal to the price of the items I added to the cart. One catch
+though, I don't have any concrete instances of an ``Item``. I wasn't even planning on doing any of
+that until tomorrow. I really want to just focus on the ``ShoppingCart`` class.
+Never fear, this is why I decided to use Phake. I remember reading about how it will allow me to
+quickly create instance of my classes and interfaces that I can set up stubs for so that method
+calls return predictable values. This project is all coming together and I am really excited.
+
+.. code-block:: php
+
+ class ShoppingCartTest extends PHPUnit_Framework_TestCase
+ {
+ private $shoppingCart;
+
+ private $item1;
+
+ private $item2;
+
+ private $item3;
+
+ protected function setUp()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ Phake::when($this->item1)->getPrice()->thenReturn(100);
+ Phake::when($this->item2)->getPrice()->thenReturn(200);
+ Phake::when($this->item3)->getPrice()->thenReturn(300);
+
+ $this->shoppingCart = new ShoppingCart();
+ $this->shoppingCart->addItem($this->item1);
+ $this->shoppingCart->addItem($this->item2);
+ $this->shoppingCart->addItem($this->item3);
+ }
+
+ public function testGetSub()
+ {
+ $this->assertEquals(600, $this->shoppingCart->getSubTotal());
+ }
+ }
+
+My test here shows a very basic use of Phake for creating method stubs. I am creating three different mock
+implementations of the ``Item`` class. Then for each of those item classes, I am creating
+a stub using ``Phake::when()`` that will return 100, 200, and 300 respectively. I know my method
+that I am getting ready to implement will need to call those methods in order to calculate the total cost of the
+order.
+
+My test is written so now it is time to see how it fails. I run it with phpunit and see the output below::
+
+ $ phpunit ExampleTests/ShoppingCartTest.php
+ PHPUnit 3.5.13 by Sebastian Bergmann.
+
+ F
+
+ Time: 0 seconds, Memory: 8.50Mb
+
+ There was 1 failure:
+
+ 1) ShoppingCartTest::testGetSub
+ Failed asserting that matches expected .
+
+ /home/mikel/Documents/Projects/Phake/tests/ShoppingCartTest.php:69
+
+ FAILURES!
+ Tests: 1, Assertions: 1, Failures: 1.
+
+ Generating code coverage report, this may take a moment.
+
+
+Now that I have a working (and I by working I mean breaking!) test it is time to look at the code necessary to make
+the test pass.
+
+.. code-block:: php
+
+ class ShoppingCart
+ {
+ // I am cutting out the already seen code. If you want to see it again look at the previous examples!
+
+ /**
+ * Returns the current sub total of the customer's order
+ * @return money
+ */
+ public function getSubTotal()
+ {
+ $total = 0;
+
+ foreach ($this->items as $item)
+ {
+ $total += $item->getPrice();
+ }
+
+ return $total;
+ }
+ }
+
+The code here is pretty simple. I am just iterating over the ``ShoppingCart::$item`` property,
+calling the ``Item::getPrice()`` method, and adding them all together. Now when I run phpunit, the tests were successful
+and I am getting off to a great start with my shopping cart.
+::
+
+ $ phpunit ExampleTests/ShoppingCartTest.php
+ PHPUnit 3.5.13 by Sebastian Bergmann.
+
+ .
+
+ Time: 0 seconds, Memory: 8.25Mb
+
+ OK (1 test, 1 assertion)
+
+ Generating code coverage report, this may take a moment.
+
+So, what is Phake doing here? Phake is providing us a predictable implementation of the ``Item::getPrice()``
+method that we can use in our test. It helps me to ensure the when my test breaks I know exactly where it is breaking.
+I will not have to be worried that a bad implementation of ``Item::getPrice()`` is breaking my tests.
+
+.. _how-phake-when-works:
+
+How Phake::when() Works
+-----------------------
+Internally Phake is doing quite a bit when this test runs. The three calls to ``Phake::mock()`` are
+creating three new classes that in this case each implement the ``Item`` interface. These new classes
+each define implementations of any method defined in the ``Item`` interface. If ``Item``
+extended another interface, implementations of all of that parent's defined methods would be created as well. Each
+method being implemented in these new classes does a few different things. The first thing that it does is record
+the fact that the method was called and stores the parameters that were used to call it. The next significant thing
+it does is looks at the stub map for that mock object. The stub map is a map that associates answers to method matchers.
+An answer is what a mocked object will return when it is called. By default, a call to a mock object returns a static
+answer of NULL. We will discuss answers more in :ref:`answers`. A method matcher has two parts. The
+first is the method name. The second is an array of arguments. The array of arguments will then contain various constraints
+that are applied to each argument to see if a given argument will match. The most common constraint is an equality constraint
+that will match loosely along the same lines as the double equals sign in PHP. We will talk about matchers more in
+:ref:`method-parameter-matchers-section`.
+
+When each mock object is initially created, its stub map will be empty. This means that any call to a method on a mock object
+is going to return a default answer of NULL. If you want your mock object's methods to return something else you must add answers
+to the stub map. The ``Phake::when()`` method allows you to map an answer to a method matcher for a given mock object.
+The mock object you want to add the mapping to is passed as the first parameter to ``Phake::when()``. The
+``Phake::when()`` method will then return a proxy that can be used add answers to your mock object's stub
+map. The answers are added by making method calls on the proxy just as you would on the mock object you are proxying. In
+the first example above you saw a call to ``Phake::when($this->item1)->getPrice()``.
+The ``getPrice()`` call here was telling Phake that I am about to define a new answer that will be returned
+any time ``$this->item->getPrice()`` is called in my code. The call to ``$this->item->getPrice()``
+returns another object that you can set the answer on using Phake's fluent api. In the example I called
+``Phake::when($this->item1)->getPrice()->thenReturn(100)``. The ``thenReturn()`` method will
+bind a static answer to a matcher for ``getPrice()`` in the stub map for $this->item1.
+
+Why do Phake stubs return Null by default?
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The reasoning behind this is that generally speaking, each method you test should depend on only what it needs to perform the
+(hopefully one) responsibility assigned to it. Normally you will have very controlled delegation to other objects. To help with
+localization of errors in your test it is assumed that you will always want to mock external dependencies to keep them from
+influencing the results of unit tests dedicated to the behavior of other parts of the system. Another reason for this default
+behavior is that it provides consistent and predictable behavior regardless of whether you are testing concrete classes, abstract
+classes, or interfaces. It should be noted that this default behavior for concrete methods in classes is different then the default
+behavior in PHPUnit. In PHPUnit, you have to explicitly indicate that you are mocking a method, otherwise it will call the actual
+method code. There are certainly cases where this is useful and this behavior can be achieved in Phake. I will discuss this aspect
+of Phake in :ref:`partial-mocks`.
+
+Overwriting Existing Stubs
+--------------------------
+
+My shopping cart application is coming right along. I can add items and the total price seems to be accurate. However,
+while I was playing around with my new cart I noticed a very strange problem. I was playing around with the idea of
+allowing discounts to be applied to a cart as just additional items that would have a negative price. So while I am
+playing around with this idea I notice that the math isn't always adding up. If I start with an item that is $100 and
+then add a discount that is $81.40 I see that the total price isn't adding up to $18.60. This is definitely problematic
+After doing some further research, I realize I made a silly mistake. I am just using simple floats to calculate the
+costs. Floats are by nature inaccurate. Once you start using them in mathematical operations they start to show their
+inadequacy for precision. In keeping with the test driven method of creating code I need to create a unit test that
+shows this flaw.
+
+.. code-block:: php
+
+ class ShoppingCartTest extends PHPUnit_Framework_TestCase
+ {
+ private $shoppingCart;
+
+ private $item1;
+
+ private $item2;
+
+ private $item3;
+
+ public function setUp()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ Phake::when($this->item1)->getPrice()->thenReturn(100);
+ Phake::when($this->item2)->getPrice()->thenReturn(200);
+ Phake::when($this->item3)->getPrice()->thenReturn(300);
+
+ $this->shoppingCart = new ShoppingCart();
+ $this->shoppingCart->addItem($this->item1);
+ $this->shoppingCart->addItem($this->item2);
+ $this->shoppingCart->addItem($this->item3);
+ }
+
+ public function testGetSub()
+ {
+ $this->assertEquals(600, $this->shoppingCart->getSubTotal());
+ }
+
+ public function testGetSubTotalWithPrecision()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ Phake::when($this->item1)->getPrice()->thenReturn(100);
+ Phake::when($this->item2)->getPrice()->thenReturn(-81.4);
+ Phake::when($this->item3)->getPrice()->thenReturn(20);
+
+ $this->shoppingCart = new ShoppingCart();
+ $this->shoppingCart->addItem($this->item1);
+ $this->shoppingCart->addItem($this->item2);
+ $this->shoppingCart->addItem($this->item3);
+
+ $this->assertEquals(38.6, $this->shoppingCart->getSubTotal());
+ }
+ }
+
+You can see that I added another test method that uses actual floats for some of the prices as opposed to round numbers.
+Now when I run my test suite I can see the fantastic floating point issue.
+::
+
+ $ phpunit ExampleTests/ShoppingCartTest.php
+ PHPUnit 3.5.13 by Sebastian Bergmann.
+
+ .F
+
+ Time: 0 seconds, Memory: 10.25Mb
+
+ There was 1 failure:
+
+ 1) ShoppingCartTest::testGetSubTotalWithPrecision
+ Failed asserting that matches expected .
+
+ /home/mikel/Documents/Projects/Phake/tests/ShoppingCartTest.php:95
+
+ FAILURES!
+ Tests: 2, Assertions: 2, Failures: 1.
+
+ Generating code coverage report, this may take a moment.
+
+Once you get over the strangeness of 38.6 not equaling 38.6 I want to discuss streamlining test cases with you. You
+will notice that the code in ``ShoppingCartTest::testGetSubTotalWithPrecision()`` contains almost
+all duplicate code when compared to ``ShoppingCartTest::setUp()``. If I were to continue following
+this pattern of doing things I would eventually have tests that are difficult to maintain. Phake allows you to very
+easily override stubs. This is very important in helping you to reduce duplication in your tests and leads to tests
+that will be easier to maintain. To overwrite a previous stub you simply have to redefine it. I am going to change
+``ShoppingCartTest::testGetSubTotalWithPrecision()`` to instead just redefine the ``getPrice()``
+stubs.
+
+.. code-block:: php
+
+ class ShoppingCartTest extends PHPUnit_Framework_TestCase
+ {
+ private $shoppingCart;
+
+ private $item1;
+
+ private $item2;
+
+ private $item3;
+
+ public function setUp()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ Phake::when($this->item1)->getPrice()->thenReturn(100);
+ Phake::when($this->item2)->getPrice()->thenReturn(200);
+ Phake::when($this->item3)->getPrice()->thenReturn(300);
+
+ $this->shoppingCart = new ShoppingCart();
+ $this->shoppingCart->addItem($this->item1);
+ $this->shoppingCart->addItem($this->item2);
+ $this->shoppingCart->addItem($this->item3);
+ }
+
+ public function testGetSub()
+ {
+ $this->assertEquals(600, $this->shoppingCart->getSubTotal());
+ }
+
+ public function testGetSubTotalWithPrecision()
+ {
+ Phake::when($this->item1)->getPrice()->thenReturn(100);
+ Phake::when($this->item2)->getPrice()->thenReturn(-81.4);
+ Phake::when($this->item3)->getPrice()->thenReturn(20);
+
+ $this->assertEquals(38.6, $this->shoppingCart->getSubTotal());
+ }
+ }
+
+If you rerun this test you will get the same results shown in before.
+The test itself is much simpler though there is much less unnecessary duplication. The reason this works is because
+the stub map I was referring to in :ref:`how-phake-when-works` isn't really a map at all. It is more of
+a stack in reality. When a new matcher and answer pair is added to a mock object, it is added to the top of the stack.
+Then whenever a stub method is called, the stack is checked from the top down to find the first matcher that matches
+the method that was called. So, when I created the additional stubs for the various ``Item::getPrice()``
+calls, I was just adding additional matchers to the top of the stack that would always get matched first by virtue
+of the parameters all being the same.
+
+Resetting A Mock's Stubs
+------------------------
+If overriding a stub does not work for your particular case and you would rather start over with all default stubs then
+you can use ``Phake::reset()`` and ``Phake::staticReset()``. These will remove all stubs from a mock and also empty
+out all recorded calls against a mock. ``Phake::reset()`` will do this for instance methods on the mock and
+``Phake::staticReset()`` will do this for all static methods on the mock.
+
+.. code-block:: php
+ public function testResettingStubMapper()
+ {
+ $mock = Phake::mock('PhakeTest_MockedClass');
+ Phake::when($mock)->foo()->thenReturn(42);
+
+ $this->assertEquals(42, $mock->foo());
+
+ Phake::reset($mock);
+ //$mock->foo() now returns the default stub which in this case is null
+ $this->assertNull($mock->foo());
+ }
+
+ public function testResettingCallRecorder()
+ {
+ $mock = Phake::mock('PhakeTest_MockedClass');
+ $mock->foo();
+
+ //Will work as normal
+ Phake::verify($mock)->foo();
+
+ Phake::reset($mock);
+
+ //Will now throw an error that foo was not called
+ Phake::verify($mock)->foo();
+ }
+
+.. _stubbing-multiple-calls:
+
+Stubbing Multiple Calls
+-----------------------
+
+Another benefit of the stub mapping in Phake is that it allows you to very easily stub multiple calls to the same
+method that use different parameters. In my shopping cart I have decided to add some functionality that will allow
+me to easily add multiple products that are a part of a group to the shopping cart. To facilitate this I have decided
+to create a new class called ``ItemGroup``. The ``ItemGroup`` object will be
+constructed with an array of ``Items``. It will have a method on the class that will add all of
+the items in the group to the given cart and then the total price of items in the cart will be returned.
+
+It should be noted that earlier I decided to make a small change to the ``ShoppingCart::addItem()``
+method to have it return the total price of items in the cart. I figured that this would be nice api level functionality
+to make working with the system a little bit easier. I would like to take advantage of that change with this code.
+Here's a stub of the functionality I am considering.
+
+.. code-block:: php
+
+ /**
+ * A group of items that can be added to a cart all at the same time
+ */
+ class ItemGroup
+ {
+ /**
+ * @param array $items an array of Item objects
+ */
+ public function __construct(array $items)
+ {
+ }
+
+ /**
+ * @param ShoppingCart $cart
+ * @return money The new total value of the cart
+ */
+ public function addItemsToCart(ShoppingCart $cart)
+ {
+ }
+ }
+
+The next test I am going to write now is going to be focusing on this new ``ItemGroup::addItemsToCart()``
+method. In my test's ``setUp()`` method I'll create a new instance of ``ItemGroup``
+which will require one or more ``Item`` implementations. I'll use mocks for those. Then the actual
+test case I am going to start with will be a test to assert that ``ItemGroup::addItemsToCart()``
+returns the new shopping cart value. I already know that I am going to need to get this value by looking at the
+last return value from calls to ``ShoppingCart::addItem()``. To allow for checking this I will mock
+``ShoppingCart`` and create three stubs for ``ShoppingCart::addItem()``. Each
+stub will be for a call with a different ``Item``.
+
+.. code-block:: php
+
+ class ItemGroupTest extends PHPUnit_Framework_TestCase
+ {
+ private $itemGroup;
+
+ private $item1;
+
+ private $item2;
+
+ private $item3;
+
+ public function setUp()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ $this->itemGroup = new ItemGroup(array($this->item1, $this->item2, $this->item3));
+ }
+
+ public function testAddItemsToCart()
+ {
+ $cart = Phake::mock('ShoppingCart');
+ Phake::when($cart)->addItem($this->item1)->thenReturn(10);
+ Phake::when($cart)->addItem($this->item2)->thenReturn(20);
+ Phake::when($cart)->addItem($this->item3)->thenReturn(30);
+
+ $totalCost = $this->itemGroup->addItemsToCart($cart);
+ $this->assertEquals(30, $totalCost);
+ }
+ }
+
+In this example the ``ShoppingCart::addItem()`` method is being stubbed three times. Each time it
+is being stubbed with a different parameter being passed to ``addItem()``. This a good example of
+how parameters are also checked whenever Phake looks at a mock object's stub map for answers. The default behavior
+of argument matching is again a loose equality check. Similar to how you would use the double equals operator in PHP.
+The other options for argument matching are discussed further in :ref:`method-parameter-matchers-section`.
+
+Stubbing Consecutive Calls
+--------------------------
+
+The previous test was a great example for how you can make multiple stubs for a single method however in reality it
+is not the best way for that particular test to be written. What if the ``Item`` objects in an
+``ItemGroup`` aren't stored in the order they were passed in? I am needlessly binding my test
+to the order in which objects are stored. Phake provides the ability to map multiple answers to the same stub. This is
+done simply by chaining the answers together. I could rewrite the test from the previous chapter to utilize this
+feature of Phake.
+
+.. code-block:: php
+
+ class ItemGroupTest extends PHPUnit_Framework_TestCase
+ {
+ private $itemGroup;
+
+ private $item1;
+
+ private $item2;
+
+ private $item3;
+
+ public function setUp()
+ {
+ $this->item1 = Phake::mock('Item');
+ $this->item2 = Phake::mock('Item');
+ $this->item3 = Phake::mock('Item');
+
+ $this->itemGroup = new ItemGroup(array($this->item1, $this->item2, $this->item3));
+ }
+
+ public function testAddItemsToCart()
+ {
+ $cart = Phake::mock('ShoppingCart');
+ Phake::when($cart)->addItem(Phake::anyParameters())->thenReturn(10)
+ ->thenReturn(20)
+ ->thenReturn(30);
+
+ $totalCost = $this->itemGroup->addItemsToCart($cart);
+ $this->assertEquals(30, $totalCost);
+ }
+ }
+
+You will notice a few of differences between this example and the example in :ref:`stubbing-multiple-calls`. The first
+difference is that there is only one call to ``Phake::when()``. The second difference is that I have chained together three
+calls to ``thenReturn()``. The third difference is instead of passing one of my mock Item
+objects I have passed the result of the ``Phake::anyParameters()`` method. This is a special argument
+matcher in Phake that essentially says match any call to the method regardless of the number of parameters or the
+value of those parameters. You can learn more about ``Phake::anyParameters()`` in :ref:`wildcard-parameters`.
+
+So, this single call to ``Phake::when()`` is saying: "Whenever a call to ``$cart->addItem()``
+is made, regardless of the parameters, return 10 for the first call, 20 for the second call, and 30 for the third
+call." If you are using consecutive call stubbing and you call the method more times than you have answers set, the
+last answer will continue to be returned. In this example, if ``$cart->addItem()`` were called a fourth
+time, then 30 would be returned again.
+
+Stubbing Reference Parameters
+-----------------------------
+
+Occasionally you may run into code that utilizes reference parameters to provide additional output
+from a method. This is not an uncommon thing to run into with legacy code. Phake provides a custom
+parameter matcher (these are discussed further in :ref:`method-parameter-matchers-section`)
+that allows you to set reference parameters. It can be accessed using ``Phake::setReference()``.
+The only parameter to this matcher is the value you would like to set the reference parameter
+to provided all other parameters match.
+
+.. code-block:: php
+
+ interface IValidator
+ {
+ /**
+ * @parm array $data Data to validate
+ * @parm array &$errors contains all validation errors if the data is not valid
+ * @return boolean True when the data is valid
+ */
+ public function validate(array $data, array &$errors);
+ }
+
+ class ValidationLogger implements IValidator
+ {
+ private $validator;
+ private $log;
+
+ public function __construct(IValidator $validator, Logger $log)
+ {
+ $this->validator = $validator;
+ $this->log = $log;
+ }
+
+ public function validate(array $data, array &$errors)
+ {
+ if (!$this->validator->validate($data, $errors))
+ {
+ foreach ($errors as $error)
+ {
+ $this->log->info("Validation Error: {$error}");
+ }
+
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+ }
+
+ class ValidationLoggerTest extends PHPUnit_Framework_TestCase
+ {
+ public function testValidate()
+ {
+ //Mock the dependencies
+ $validator = Phake::mock('IValidator');
+ $log = Phake::mock('Logger');
+ $data = array('data1' => 'value');
+ $expectedErrors = array('data1 is not valid');
+
+ //Setup the stubs (Notice the Phake::setReference()
+ Phake::when($validator)->validate($data, Phake::setReference($expectedErrors))->thenReturn(FALSE);
+
+ //Instantiate the SUT
+ $validationLogger = new ValidationLogger($validator, $log);
+
+ //verify the validation is false and the message is logged
+ $errors = array();
+ $this->assertFalse($validationLogger->validate($data, $errors));
+ Phake::verify($log)->info('Validation Error: data1 is not valid');
+ }
+ }
+
+
+In the example above, I am testing a new class I have created called ``ValidationLogger``.
+It is a decorator for other implementations of ``IValidator`` that allows adding
+logging to any other validator. The ``IValidator::validate()`` method will always
+return an array of errors into the second parameter (a reference parameter) provided to the method.
+These errors are what my logger is responsible for logging. So in order for my test to work properly,
+I will need to be able to set that second parameter as a part of my stubbing call.
+
+In the call to ``Phake::when($validator)->validate()`` I have passed a call to
+``Phake::setReference()`` as the second parameter. This is causing the mock
+implementation of ``IValidator`` to set ``$errors`` in
+``ValidationLogger::validate()`` to the array specified by ``$expectedErrors``.
+This allows me to quickly and easily validate that I am actually logging the errors returned back
+in the reference parameter.
+
+By default ``Phake::setReference()`` will always return true regardless of the
+parameter initially passed in. If you would like to only set a reference parameter when that reference
+parameter was passed in as a certain value you can use the ``when()`` modifier.
+This takes a single parameter matcher as an argument. Below,
+you will see that the test has been modified to call ``when()`` on the result
+of `Phake::setReference()``. This modification will cause the reference parameter
+to be set only if the $errors parameter passed to ``IValidator::validate()``
+is initially passed as an empty array.
+
+.. code-block:: php
+
+ class ValidationLoggerTest extends PHPUnit_Framework_TestCase
+ {
+ public function testValidate()
+ {
+ //Mock the dependencies
+ $validator = Phake::mock('IValidator');
+ $log = Phake::mock('Logger');
+ $data = array('data1' => 'value');
+ $expectedErrors = array('data1 is not valid');
+
+ //Setup the stubs (Notice the Phake::setReference()
+ Phake::when($validator)->validate($data, Phake::setReference($expectedErrors)->when(array())->thenReturn(FALSE);
+
+ //Instantiate the SUT
+ $validationLogger = new ValidationLogger($validator, $log);
+
+ //verify the validation is false and the message is logged
+ $errors = array();
+ $this->assertFalse($validationLogger->validate($data, $errors));
+ Phake::verify($log)->info('Validation Error: data1 is not valid');
+ }
+ }
+
+
+Please note, when you are using ``Phake::setReference()`` you still must provide
+an answer for the stub. If you use this function and your reference parameter is never changed,
+that is generally the most common reason.
+
+.. _partial-mocks:
+
+Partial Mocks
+-------------
+
+When testing legacy code, if you find that the majority of the methods in the mock are using the ``thenCallParent()``
+answer, you may find it easier to just use a partial mock in Phake. Phake partial mocks also allow you to call the
+actual constructor of the class being mocked. They are created using ``Phake::partialMock()``. Like ``Phake::mock()``,
+the first parameter is the name of the class that you are mocking. However, you can pass additional parameters that
+will then be passed as the respective parameters to that class’ constructor. The other notable feature of a partial
+mock in Phake is that its default answer is to pass the call through to the parent as if you were using
+``thenCallParent()``.
+
+Consider the following class that has a method that simply returns the value passed into the constructor.
+
+.. code-block:: php
+
+ class MyClass
+ {
+ private $value;
+
+ public __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ public function foo()
+ {
+ return $this->value;
+ }
+ }
+
+Using ``Phake::partialMock()`` you can instantiate a mock object that will allow this object to function
+as designed while still allowing verification as well as selective stubbing of certain calls.
+Below is an example that shows the usage of ``Phake::partialMock()``.
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testCallingParent()
+ {
+ $mock = Phake::partialMock('MyClass', 42);
+
+ $this->assertEquals(42, $mock->foo());
+ }
+ }
+
+Again, partial mocks should not be used when you are testing new code. If you find yourself using them be sure to
+inspect your design to make sure that the class you are creating a partial mock for is not doing too much.
+
+Setting Default Stubs
+---------------------
+
+You can also change the default stubbing for mocks created with ``Phake::mock()``. This is done by using the second
+parameter to ``Phake::mock()`` in conjunction with the ``Phake::ifUnstubbed()`` method. The second parameter to
+``Phake::mock()`` is reserved for configuring the behavior of an individual mock. ``Phake::ifUnstubbed()`` allows you
+to specify any of the matchers mentioned above as the default answer if any method invocation is not explicitly
+stubbed. If this configuration directive is not provided then the method will return NULL by default. An example of
+this can be seen below.
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testDefaultStubs()
+ {
+ $mock = Phake::mock('MyClass', Phake::ifUnstubbed()->thenReturn(42));
+
+ $this->assertEquals(42, $mock->foo());
+ }
+ }
+
+Stubbing Magic Methods
+----------------------
+
+Most magic methods can be stubbed using the method name just like you would any other method. The one exception to this
+is the ``__call()`` method. This method is overwritten on each mock already to allow for the fluent api that Phake
+utilizes. If you want to stub a particular invocation of ``__call()`` you can create a stub for the method you are
+targetting in the first parameter to ``__call()``.
+
+Consider the following class.
+
+.. code-block:: php
+
+ class MagicClass
+ {
+ public function __call($method, $args)
+ {
+ return '__call';
+ }
+ }
+
+You could stub an invocation of the ``__call()`` method through a userspace call to ``magicCall()`` with the following code.
+
+.. code-block:: php
+
+ class MagicClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testMagicCall()
+ {
+ $mock = Phake::mock('MagicClass');
+
+ Phake::when($mock)->magicCall()->thenReturn(42);
+
+ $this->assertEquals(42, $mock->magicCall());
+ }
+ }
+
+If for any reason you need to explicitly stub calls to ``__call()`` then you can use ``Phake::whenCallMethodWith()``.
+The matchers passed to ``Phake::whenCallMethod()`` will be matched to the method name and array of arguments similar to
+what you would expect to be passed to a ``__call()`` method. You can also use Phake::anyParameters() instead.
+
+.. code-block:: php
+
+ class MagicClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testMagicCall()
+ {
+ $mock = Phake::mock('MagicClass');
+
+ Phake::whenCallMethodWith('magicCall', array())->isCalledOn($mock)->thenReturn(42);
+
+ $this->assertEquals(42, $mock->magicCall());
+ }
+ }
diff --git a/html2pdf-master/vendor/phake/phake/docs/method-verification.rst b/html2pdf-master/vendor/phake/phake/docs/method-verification.rst
new file mode 100644
index 00000000..671aee4b
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/method-verification.rst
@@ -0,0 +1,278 @@
+.. _method-verification-section:
+
+*******************
+Method Verification
+*******************
+
+The ``Phake::verify()`` method is used to assert that method calls have been
+made on a mock object that you can create with ``Phake::mock()``.
+``Phake::verify()`` accepts the mock object you want to verify calls against.
+Mock objects in Phake can almost be viewed as a tape recorder. Any time the code you are testing
+calls a method on an object you create with ``Phake::mock()`` it is going to
+record the method that you called along with all of the parameters used to call that method. Then
+``Phake::verify()`` will look at that recording and allow you to assert whether
+or not a certain call was made.
+
+.. code-block:: php
+
+ class PhakeTest1 extends PHPUnit_Framework_TestCase
+ {
+ public function testBasicVerify()
+ {
+ $mock = Phake::mock('MyClass');
+
+ $mock->foo();
+
+ Phake::verify($mock)->foo();
+ }
+ }
+
+The ``Phake::verify()`` call here, verifies that the method ``foo()`` has been called once (and only once) with no
+parameters on the object ``$mock``. A very important thing to note here that is a departure from most (if not all)
+other PHP mocking frameworks is that you want to verify the method call AFTER the method call takes place. Other
+mocking frameworks such as the one built into PHPUnit depend on you setting the expectations of what will get called
+prior to running the system under test.
+
+Phake strives to allow you to follow the four phases of a unit test as laid out in xUnit Test Patterns: setup,
+exercise, verify, and teardown. The setup phase of a test using Phake for mocking will now include calls to
+``Phake::mock()`` for each class you want to mock. The exercise portion of your code will remain the same. The verify
+section of your code will include calls to ``Phake::verify()``. The exercise and teardown phases will remain unchanged.
+
+Verifying Method Parameters
+===========================
+
+Verifying method parameters using Phake is very simple yet can be very flexible. There are a wealth of options for
+matching parameters that are discussed later on in :ref:`method-parameter-matchers-section`.
+
+Verifying Multiple Invocations
+==============================
+
+A common need for mock objects is the ability to have variable multiple invocations on that object. Phake allows you to
+use ``Phake::verify()`` multiple times on the same object. A notable difference between Phake and PHPUnit’s mocking
+framework is the ability to mock multiple invocations of the same method with no regard for call sequences. The PHPUnit
+mocking test below would fail for this reason.
+
+.. code-block:: php
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testPHPUnitMock()
+ {
+ $mock = $this->getMock('PhakeTest_MockedClass');
+
+ $mock->expects($this->once())->method('fooWithArgument')
+ ->with('foo');
+
+ $mock->expects($this->once())->method('fooWithArgument')
+ ->with('bar');
+
+ $mock->fooWithArgument('foo');
+ $mock->fooWithArgument('bar');
+ }
+ }
+
+The reason this test fails is because by default PHPUnit only allows a single expectation per method. The way you can
+fix this is by using the `at()` matcher. This allows you to specify the index of the invocation you want to match
+again. So to make the test above work you would have to change it.
+
+.. code-block:: php
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testPHPUnitMock()
+ {
+ $mock = $this->getMock('PhakeTest_MockedClass');
+
+ //NOTICE this is now at() instead of once()
+ $mock->expects($this->at(0))->method('fooWithArgument')
+ ->with('foo');
+
+ //NOTICE this is now at() instead of once()
+ $mock->expects($this->at(1))->method('fooWithArgument')
+ ->with('bar');
+
+ $mock->fooWithArgument('foo');
+ $mock->fooWithArgument('bar');
+ }
+ }
+
+This test will now run as expected. There is still one small problem however and that is that you are now testing not
+just the invocations but also the order of invocations. Many times the order in which two calls are made really do not
+matter. If swapping the order of two method calls will not break your application then there is no reason to enforce
+that code structure through a unit test. Unfortunately, you cannot have multiple invocations of a method in PHPUnit
+without enforcing call order. In Phake these two notions of call order and multiple invocations are kept completely
+distinct. Here is the same test written using Phake.
+
+.. code-block:: php
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testPHPUnitMock()
+ {
+ $mock = Phake::mock('PhakeTest_MockedClass');
+
+ $mock->fooWithArgument('foo');
+ $mock->fooWithArgument('bar');
+
+ Phake::verify($mock)->fooWithArgument('foo');
+ Phake::verify($mock)->fooWithArgument('bar');
+ }
+ }
+
+You can switch the calls around in this example as much as you like and the test will still pass. You can mock as many
+different invocations of the same method as you need.
+
+If you would like to verify the exact same parameters are used on a method multiple times (or they all match the same
+constraints multiple times) then you can use the verification mode parameter of ``Phake::verify()``. The second
+parameter to ``Phake::verify()`` allows you to specify how many times you expect that method to be called with matching
+parameters. If no value is specified then the default of one is used. The other options are:
+
+* ``Phake::times($n)`` – Where ``$n`` equals the exact number of times you expect the method to be called.
+* ``Phake::atLeast($n)`` – Where ``$n`` is the minimum number of times you expect the method to be called.
+* ``Phake::atMost($n)`` – Where ``$n`` is the most number of times you would expect the method to be called.
+* ``Phake::never()`` - Same as calling ``Phake::times(0)``.
+
+Here is an example of this in action.
+
+.. code-block:: php
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testPHPUnitMock()
+ {
+ $mock = Phake::mock('PhakeTest_MockedClass');
+
+ $mock->fooWithArgument('foo');
+ $mock->fooWithArgument('foo');
+
+ Phake::verify($mock, Phake::times(2))->fooWithArgument('foo');
+ }
+ }
+
+Verifying Calls Happen in a Particular Order
+============================================
+
+Sometimes the desired behavior is that you verify calls happen in a particular order. Say there is a functional reason
+for the two variants of ``fooWithArgument()`` to be called in the order of the original test. You can utilize
+``Phake::inOrder()`` to ensure the order of your call invocations. ``Phake::inOrder()`` takes one or more arguments and
+errors out in the event that one of the verified calls was invoked out of order. The calls don’t have to be in exact
+sequential order, there can be other calls in between, it just ensures the specified calls themselves are called in
+order relative to each other. Below is an example Phake test that behaves similarly to the PHPUnit test that utilized
+``at()``.
+
+.. code-block:: php
+
+ class MyTest extends PHPUnit_Framework_TestCase
+ {
+ public function testPHPUnitMock()
+ {
+ $mock = Phake::mock('PhakeTest_MockedClass');
+
+ $mock->fooWithArgument('foo');
+ $mock->fooWithArgument('bar');
+
+ Phake::inOrder(
+ Phake::verify($mock)->fooWithArgument('foo'),
+ Phake::verify($mock)->fooWithArgument('bar')
+ );
+ }
+ }
+
+Verifying No Interaction with a Mock so Far
+===========================================
+
+Occasionally you may want to ensure that no interactions have occurred with a mock object. This can be done
+by passing your mock object to ``Phake::verifyNoInteraction($mock)``. This will not prevent further interaction
+with your mock, it will simply tell you whether or not any interaction up to that point has happened. You
+can pass multiple arguments to this method to verify no interaction with multiple mock objects.
+
+Verifying No Further Interaction with a Mock
+============================================
+
+There is a similar method to prevent any future interaction with a mock. This can be done by passing a mock
+object to ``Phake::verifyNoFurtherInteraction($mock)``. You can pass multiple arguments to this method to
+verify no further interaction occurs with multiple mock objects.
+
+Verifying No Unverified Interaction with a Mock
+============================================
+
+By default any unverified calls to a mock are ignored. That is to say, if a call is made to `$mock->foo()` but
+`Phake::verify($mock)->foo()` is never used, then no failures are thrown. If you want to be stricter and ensure that
+all calls have been verified you can call `Phake::verifyNoOtherInteractions($mock)` at the end of your test. This will
+check and make sure that all calls to your mock have been verified by one or more calls to Phake verify. This method
+should only be used in those cases where you can clearly say that it is important that your test knows about all calls
+on a particular object. One useful case for instance could be in testing a method that returns a filtered array.
+
+.. code-block:: php
+
+ class FilterTest {
+ public function testFilteredList()
+ {
+ $filter = new MyFilter();
+ $list = Phake::Mock('MyList');
+
+ $filter->addEvenToList(array(1, 2, 3, 4, 5), $list);
+
+ Phake::verify($list)->push(2);
+ Phake::verify($list)->push(4);
+
+ Phake::verifyNoOtherInteractions($list);
+ }
+ }
+
+Without `Phake::verifyNoOtherInteractions($list)` you would have to add additional verifications that `$list->push()`
+was not called for the odd values in the list. This method should be used only when necessary. Using it in every test
+is an anti-pattern that will lead to brittle tests.
+
+Verifying Magic Methods
+=======================
+
+Most magic methods can be verified using the method name just like you would any other method. The one exception to this
+is the ``__call()`` method. This method is overwritten on each mock already to allow for the fluent api that Phake
+utilizes. If you want to verify a particular invocation of ``__call()`` you can verify the actual method call by
+mocking the method passed in as the first parameter.
+
+Consider the following class.
+
+.. code-block:: php
+
+ class MagicClass
+ {
+ public function __call($method, $args)
+ {
+ return '__call';
+ }
+ }
+
+You could mock an invocation of the `__call()` method through a userspace call to magicCall() with the following code.
+
+.. code-block:: php
+
+ class MagicClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testMagicCall()
+ {
+ $mock = Phake::mock('MagicClass');
+
+ $mock->magicCall();
+
+ Phake::verify($mock)->magicCall();
+ }
+ }
+
+If for any reason you need to explicitly verify calls to ``__call()`` then you can use ``Phake::verifyCallMethodWith()``.
+
+.. code-block:: php
+
+ class MagicClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testMagicCall()
+ {
+ $mock = Phake::mock('MagicClass');
+
+ $mock->magicCall(42);
+
+ Phake::verifyCallMethodWith('magicCall', array(42))->isCalledOn($mock);
+ }
+ }
+
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/docs/mocking-statics.rst b/html2pdf-master/vendor/phake/phake/docs/mocking-statics.rst
new file mode 100644
index 00000000..3b55bbce
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/mocking-statics.rst
@@ -0,0 +1,116 @@
+**********************
+Mocking Static Methods
+**********************
+
+Phake can be used to verify as well as stub polymorphic calls to static methods. It is important to note that you
+cannot verify or stub all static calls. In order for Phake to record or stub a method call, it needs to intercept the
+call so that it can record it. Consider the following class
+
+.. code-block:: php
+
+ class StaticCaller
+ {
+ public function callStaticMethod()
+ {
+ Foo::staticMethod();
+ }
+ }
+
+You will not be able to stub or verify the call to Foo::staticMethod() because the call was made directly on the class.
+This prevents Phake from seeing that the call was made. However, say you have an abstract class that has an abstract
+static method.
+
+.. code-block:: php
+
+ abstract class StaticFactory
+ {
+ protected static function factory()
+ {
+ // ...
+ }
+
+ public static function getInstance()
+ {
+ return static::factory();
+ }
+ }
+
+In this case, because the ``static::`` keyword will cause the called class to be determined at runtime, you will be able
+to verify and stub calls to StaticFactory::factory(). It is important to note that if self::factory() was called then
+stubs and verifications would not work, because again the class is determined at compile time with the self:: keyword.
+The key thing to remember with testing statics using Phake is that you can only test statics that leverage Late Static
+Binding: http://www.php.net/manual/en/language.oop5.late-static-bindings.php
+
+The key to testing static methods using Phake is that you need to create a "seam" for your static methods. If you are
+not familiar with that term, a seam is a location where Phake is able to override and intercept calls to your code.
+The typical seem for Phake is a parameter that allows you to pass your object. Typically you would pass a real object,
+however during testing you pass in a mock object created by Phake. This is taking advantage of an instance seam.
+
+Thankfully in php now you can do something along the lines of $myVar::myStatic() where if $myVar is a string it
+resolves as you would think for a static method. The useful piece though is that if $myVar is an object, it will
+resolve that object down to the class name and use that for the static.
+
+So, the general idea here is that you can take code that is in class Foo:
+
+.. code-block:: php
+
+ class Foo
+ {
+ public function doSomething()
+ {
+ // ... code that does stuff ...
+ Logger::logData();
+ }
+ }
+
+which does not provide a seam for mocking Logger::logData() and provide that seem by changing it to:
+
+.. code-block:: php
+
+ class Foo
+ {
+ public $logger = 'Logger';
+ public function doSomething()
+ {
+ // ... code that does stuff ...
+ $logger = $this->logger;
+ $logger::logData($data);
+ }
+ }
+
+Now you can mock logData as follows:
+
+.. code-block:: php
+
+ class FooTest
+ {
+ public function testDoSomething()
+ {
+ $foo = new Foo();
+ $foo->logger = Phake::mock('Logger');
+ $foo->doSomething();
+ Phake::verifyStatic($foo->logger)->logData(Phake::anyParameters());
+ }
+ }
+
+Phake has alternative methods to handle interacting with static methods on your mock class. ``Phake::mock()`` is still
+used to create the mock class, but the remaining interactions with static methods use more specialized methods. The
+table below shows the Phake methods that have a separate counterpart for interacting with static calls.
+
++-----------------------------------+-----------------------------------------+
+| Instance Method | Static Method |
++===================================+=========================================+
+| ``Phake::when()`` | ``Phake::whenStatic()`` |
++-----------------------------------+-----------------------------------------+
+| ``Phake::verify()`` | ``Phake::verifyStatic()`` |
++-----------------------------------+-----------------------------------------+
+| ``Phake::verifyCallMethodWith()`` | ``Phake::verifyStaticCallMethodWith()`` |
++-----------------------------------+-----------------------------------------+
+| ``Phake::whenCallMethodWith()`` | ``Phake::whenStaticCallMethodWith()`` |
++-----------------------------------+-----------------------------------------+
+| ``Phake::reset()`` | ``Phake::resetStatic()`` |
++-----------------------------------+-----------------------------------------+
+
+If you are using Phake to stub or verify static methods then you should call ``Phake::resetStaticInfo()`` in the
+the ``tearDown()`` method. This is necessary to reset the stubs and call recorder for the static calls in the event
+that the mock class gets re-used.
diff --git a/html2pdf-master/vendor/phake/phake/docs/mocks.rst b/html2pdf-master/vendor/phake/phake/docs/mocks.rst
new file mode 100644
index 00000000..dfb598d6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/docs/mocks.rst
@@ -0,0 +1,217 @@
+Creating Mocks
+==============
+
+The ``Phake::mock()`` method is how you create new test doubles in Phake. You pass in the class name of what you would
+like to mock.
+
+.. code-block:: php
+
+ $mock = Phake::mock('ClassToMock');
+
+The ``$mock`` variable is now an instance of a generated class that inherits from ``ClassToMock`` with hooks that allow
+you to force functions to return known values. By default, all methods on a mock object will return null. This behavior
+can be overridden on a per method and even per parameter basis. This will be covered in depth in
+:ref:`method-stubbing-section`.
+
+The mock will also record all calls made to this class so that you can later verify that specific methods were called
+with the proper parameters. This will be covered in depth in :ref:`method-verification-section`.
+
+In addition to classes you can also mock interfaces directly. This is done in much the same way as a class name, you
+simply pass the interface name as the first parameter to ``Phake::mock()``.
+
+.. code-block:: php
+
+ $mock = Phake::mock('InterfaceToMock');
+
+You can also pass an array of interface names to ``Phake::mock()`` that also contains up to 1 class name. This allows
+for easier mocking of a dependency that is required to implement multiple interfaces.
+
+.. code-block:: php
+
+ $mock = Phake::mock(array('Interface1', 'Interface2'));
+
+Partial Mocks
+-------------
+
+When testing legacy code, you may find that a better default behavior for the methods is to actually call the original
+method. This can be accomplished by stubbing each of the methods to return ``thenCallParent()``. You can learn more
+about this in :ref:`then-call-parent`.
+
+While this is certainly possible, you may find it easier to just use a partial mock in Phake. Phake partial mocks also
+allow you to call the actual constructor of the class being mocked. They are created using ``Phake::partialMock()``.
+Like ``Phake::mock()``, the first parameter is the name of the class that you are mocking. However, you can pass
+additional parameters that will then be passed as the respective parameters to that class’ constructor. The other
+notable feature of a partial mock in Phake is that its default answer is to pass the call through to the parent as if
+you were using ``thenCallParent()``.
+
+Consider the following class that has a method that simply returns the value passed into the constructor.
+
+.. code-block:: php
+
+ class MyClass
+ {
+ private $value;
+
+ public __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ public function foo()
+ {
+ return $this->value;
+ }
+ }
+
+Using ``Phake::partialMock()`` you can instantiate a mock object that will allow this object to function
+as designed while still allowing verification as well as selective stubbing of certain calls.
+Below is an example that shows the usage of ``Phake::partialMock()``.
+
+.. code-block:: php
+
+ class MyClassTest extends PHPUnit_Framework_TestCase
+ {
+ public function testCallingParent()
+ {
+ $mock = Phake::partialMock('MyClass', 42);
+
+ $this->assertEquals(42, $mock->foo());
+ }
+ }
+
+Again, partial mocks should not be used when you are testing new code. If you find yourself using them be sure to
+inspect your design to make sure that the class you are creating a partial mock for is not doing too much.
+
+Calling Private and Protected Methods on Mocks
+----------------------------------------------
+Beginning in Phake 2.1 it is possible to invoke protected and private methods on your mocks using Phake. When you mock
+a class, the mocked version will retain the same visibility on each of its functions as you would have had on your
+original class. However, using ``Phake::makeVisible()`` and ``Phake::makeStaticsVisible()`` you can allow direct
+invocation of instance methods and static methods accordingly. Both of these methods accept a mock object as its only
+parameter and returns a proxy class that you can invoke the methods on. Method calls on these proxies will still
+return whatever value was previously stubbed for that method call. So if you intend on the original method being called
+and you aren't using :ref:`partial-mocks`, then you can just enable :ref:`calling-the-parent` for that method call using
+the ``thenCallParent()`` answer. This is all discussed in greater depth in :ref:`method-stubbing` and :ref:`answers`.
+
+.. code-block:: php
+
+ class MyClass
+ {
+ private function foo()
+ {
+ }
+
+ private static function bar()
+ {
+ }
+ }
+
+Given the class above, you can invoke both private methods with the code below.
+
+.. code-block:: php
+
+ $mock = Phake::mock('MyClass');
+
+ Phake::makeVisible($mock)->foo();
+
+ Phake::makeStaticVisible($mock)->bar();
+
+As you can see above when using the static variant you still call the method as though it were an instance method. The
+other thing to take note of is that there is no modification done on $mock itself. If you use ``Phake::makeVisible()``
+you will only be able to make those private and protected calls off of the return of that method itself.
+
+The best use case for this feature of Phake is if you have private or protected calls that are nested deep inside of
+public methods. Generally speaking you would always just test from your class's public interface. However these large
+legacy classes often require a significant amount of setup within fixtures to allow for calling those private and
+protected methods. If you are only intending on refactoring the private and protected method then using
+``Phake::makeVisible()`` removes the need for these complex fixtures.
+
+Consider this really poor object oriented code. The cleanRowContent() function does some basic text processing such as
+stripping html tags, cleaning up links, etc. It turns out that the original version of this method is written in a very
+unperformant manner and I have been tasked with rewriting it.
+
+.. code-block:: php
+
+ class MyReallyTerribleOldClass
+ {
+ public function __construct(Database $db)
+ {
+ //...
+ }
+
+ public function doWayTooMuch($data)
+ {
+ $result = $this->db->query($this->getQueryForData($data))
+
+ $rows = array();
+ while ($row = $this->db->fetch($result))
+ {
+ $rows[] = $this->cleanRowContent($row);
+ }
+
+ return $rows;
+ }
+
+ private function cleanRowContent($row)
+ {
+ //...
+ }
+
+ private function getQueryForData($data)
+ {
+ //...
+ }
+ }
+
+If I was about to make changes to cleanRowContent and wanted to make sure I didn't break previous functionality, in order to
+do so with the traditional fixture I would have to write a test similar to the following:
+
+.. code-block:: php
+
+ class Test extends PHPUnit_Framework_TestCase
+ {
+ public function testProcessRow()
+ {
+ $dbRow = array('id' => '1', 'content' => 'Text to be processed with tags stripped');
+ $expectedValue = array(array('id' => 1', 'content' => 'Text to be processed with tags stripped');
+
+ $db = Phake::mock('Database');
+ $result = Phake::mock('DatabaseResult');
+ $oldClass = new MyReallyTerribleOldClass($db);
+
+ Phake::when($db)->query->thenReturn($result);
+
+ Phake::when($db)->fetch->thenReturn($dbRow)->thenReturn(null);
+
+ $data = $oldClass->doWayTooMuch(array());
+
+ $this->assertEquals($expectedValue, $data);
+ }
+ }
+
+Using test helpers or PHPUnit data providers I could reuse this test to make sure I fully cover the various logic paths
+and use cases for the cleanRowContent(). However this test is doing alot of work to just set up this scenario. Whenever
+your test is hitting code not relevant to your test in increases the test's fragility. Here is how you could test the
+same code using ``Phake::makeVisible()``.
+
+.. code-block:: php
+
+ class Test extends PHPUnit_Framework_TestCase
+ {
+ public function testProcessRow()
+ {
+ $dbRow = array('id' => '1', 'content' => 'Text to be processed with tags stripped');
+ $expectedValue = array('id' => 1', 'content' => 'Text to be processed with tags stripped');
+
+ $oldClass = new Phake::partialMock('MyReallyTerribleOldClass');
+
+ $data = Phake::makeVisible($oldClass)->cleanRowContent($dbRow);
+ $this->assertEquals($expectedValue, $dbRow);
+ }
+ }
+
+As you can see the test is significantly simpler. One final note, if you find yourself using this strategy on newly
+written code, it could be a code smell indicitive of a class or public method doing too much. It is very reasonable
+to argue that in my example, the ``cleanRowContent()`` method should be a class in and of itself or possibly a method
+on a string manipulation type of class that my class then calls out to. This is a better design and also a much easier
+to test design.
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/phpunit.xml.dist b/html2pdf-master/vendor/phake/phake/phpunit.xml.dist
new file mode 100644
index 00000000..c2f670b1
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/phpunit.xml.dist
@@ -0,0 +1,13 @@
+
+
+
+
+ tests
+
+
+
+
+ src
+
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake.php b/html2pdf-master/vendor/phake/phake/src/Phake.php
new file mode 100644
index 00000000..96e7fe71
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake.php
@@ -0,0 +1,699 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Phake - PHP Test Doubles Framework
+ *
+ * Phake provides the functionality required for create mocks, stubs and spies. This is to allow
+ * a developer to isolate the code in a system under test (SUT) to provide better control of what
+ * code is being exercised in a particular test.
+ *
+ * @author Mike Lively
+ */
+class Phake
+{
+ /**
+ * @var Phake_Facade
+ */
+ private static $phake;
+
+ /**
+ * @var Phake_Client_IClient
+ */
+ private static $client;
+
+ /**
+ * @var Phake_ClassGenerator_ILoader
+ */
+ private static $loader;
+
+ /**
+ * @var Phake_Matchers_Factory
+ */
+ private static $matchersFactory;
+
+ /**
+ * Constants identifying supported clients
+ */
+ const CLIENT_DEFAULT = 'DEFAULT';
+ const CLIENT_PHPUNIT = 'PHPUNIT';
+
+ /**
+ * Returns a new mock object based on the given class name.
+ *
+ * @param string $className
+ * @param Phake_Stubber_IAnswerContainer $defaultAnswer
+ *
+ * @return mixed
+ */
+ public static function mock($className, Phake_Stubber_IAnswerContainer $defaultAnswer = null)
+ {
+ if ($defaultAnswer === null) {
+ $answer = new Phake_Stubber_Answers_SmartDefaultAnswer();
+ } else {
+ $answer = $defaultAnswer->getAnswer();
+ }
+
+ return self::getPhake()->mock(
+ $className,
+ new Phake_ClassGenerator_MockClass(self::getMockLoader()),
+ new Phake_CallRecorder_Recorder(),
+ $answer
+ );
+ }
+
+ /**
+ * Returns a partial mock that is constructed with the given parameters
+ *
+ * Calls to this class will be recorded however they will still call the original functionality by default.
+ *
+ * @param string $className class name
+ * @param mixed $args,... the remaining arguments will be passed as constructor arguments
+ * @return Phake_IMock
+ */
+ public static function partialMock($className, $args = null)
+ {
+ $args = array_slice(func_get_args(), 1);
+ $answer = new Phake_Stubber_Answers_ParentDelegate();
+
+ return self::getPhake()->mock(
+ $className,
+ new Phake_ClassGenerator_MockClass(self::getMockLoader()),
+ new Phake_CallRecorder_Recorder(),
+ $answer,
+ $args
+ );
+ }
+
+ /**
+ * For backwards compatibility
+ *
+ * @see Phake::partialMock()
+ * @param string $className class name
+ * @param mixed $args,... the remaining arguments will be passed as constructor arguments
+ * @return Phake_IMock
+ * @deprecated Please use Phake::partialMock() instead
+ */
+ public static function partMock($className, $args = null)
+ {
+ $args = func_get_args();
+ return call_user_func_array('Phake::partialMock', $args);
+ }
+
+ /**
+ * Create a Phake_Matchers_Factory that we can re-use multiple times. Creating too many
+ * instances of this object is expensive.
+ *
+ * @return Phake_Matchers_Factory
+ */
+ private static function getMatchersFactory ()
+ {
+ if (!self::$matchersFactory)
+ {
+ self::$matchersFactory = new Phake_Matchers_Factory();
+ }
+
+ return self::$matchersFactory;
+ }
+
+ /**
+ * Creates a new verifier for the given mock object.
+ *
+ * @param Phake_IMock $mock
+ * @param Phake_CallRecorder_IVerifierMode $mode
+ *
+ * @return Phake_Proxies_VerifierProxy
+ */
+ public static function verify(Phake_IMock $mock, Phake_CallRecorder_IVerifierMode $mode = null)
+ {
+ if (is_null($mode)) {
+ $mode = self::times(1);
+ }
+
+ /* @var $info Phake_Mock_Info */
+ $info = Phake::getInfo($mock);
+ $verifier = new Phake_CallRecorder_Verifier($info->getCallRecorder(), $mock);
+
+ return new Phake_Proxies_VerifierProxy($verifier, self::getMatchersFactory(), $mode, self::getClient());
+ }
+
+ /**
+ * Creates a new verifier for the given mock object.
+ *
+ * @param Phake_IMock $mock
+ * @param Phake_CallRecorder_IVerifierMode $mode
+ *
+ * @return Phake_Proxies_VerifierProxy
+ */
+ public static function verifyStatic(Phake_IMock $mock, Phake_CallRecorder_IVerifierMode $mode = null)
+ {
+ if (is_null($mode)) {
+ $mode = self::times(1);
+ }
+
+ /* @var $info Phake_Mock_Info */
+ $info = Phake::getInfo(get_class($mock));
+ $verifier = new Phake_CallRecorder_Verifier($info->getCallRecorder(), get_class($mock));
+
+ return new Phake_Proxies_VerifierProxy($verifier, self::getMatchersFactory(), $mode, self::getClient());
+ }
+
+
+ /**
+ * Creates a new verifier for verifying the magic __call method
+ *
+ * @param mixed ... A vararg containing the expected arguments for this call
+ *
+ * @return Phake_Proxies_CallVerifierProxy
+ */
+ public static function verifyCallMethodWith()
+ {
+ $arguments = func_get_args();
+ $factory = self::getMatchersFactory();
+ return new Phake_Proxies_CallVerifierProxy($factory->createMatcherChain(
+ $arguments
+ ), self::getClient(), false);
+ }
+
+ /**
+ * Creates a new verifier for verifying the magic __call method
+ *
+ * @param mixed ... A vararg containing the expected arguments for this call
+ *
+ * @return Phake_Proxies_CallVerifierProxy
+ */
+ public static function verifyStaticCallMethodWith()
+ {
+ $arguments = func_get_args();
+ $factory = self::getMatchersFactory();
+ return new Phake_Proxies_CallVerifierProxy($factory->createMatcherChain(
+ $arguments
+ ), self::getClient(), true);
+ }
+
+ /**
+ * Allows verification of methods in a particular order
+ */
+ public static function inOrder()
+ {
+ $calls = func_get_args();
+ $orderVerifier = new Phake_CallRecorder_OrderVerifier();
+
+ if (!$orderVerifier->verifyCallsInOrder(self::pullPositionsFromCallInfos($calls))) {
+ $result = new Phake_CallRecorder_VerifierResult(false, array(), "Calls not made in order");
+ self::getClient()->processVerifierResult($result);
+ }
+ }
+
+ /**
+ * Allows for verifying that a mock object has no further calls made to it.
+ *
+ * @param Phake_IMock $mock
+ */
+ public static function verifyNoFurtherInteraction(Phake_IMock $mock)
+ {
+ $mockFreezer = new Phake_Mock_Freezer();
+
+ foreach (func_get_args() as $mock) {
+ $mockFreezer->freeze(Phake::getInfo($mock), self::getClient());
+ $mockFreezer->freeze(Phake::getInfo(get_class($mock)), self::getClient());
+ }
+ }
+
+ /**
+ * Allows for verifying that no interaction occurred with a mock object
+ *
+ * @param Phake_IMock $mock
+ */
+ public static function verifyNoInteraction(Phake_IMock $mock)
+ {
+ foreach (func_get_args() as $mock) {
+ $callRecorder = Phake::getInfo($mock)->getCallRecorder();
+ $verifier = new Phake_CallRecorder_Verifier($callRecorder, $mock);
+ self::getClient()->processVerifierResult($verifier->verifyNoCalls());
+
+ $sCallRecorder = Phake::getInfo(get_class($mock))->getCallRecorder();
+ $sVerifier = new Phake_CallRecorder_Verifier($sCallRecorder, get_class($mock));
+ self::getClient()->processVerifierResult($sVerifier->verifyNoCalls());
+ }
+ }
+
+ /**
+ * Allows for verifying that no other interaction occurred with a mock object outside of what has already been
+ * verified
+ *
+ * @param Phake_IMock $mock
+ */
+ public static function verifyNoOtherInteractions(Phake_IMock $mock)
+ {
+ $callRecorder = Phake::getInfo($mock)->getCallRecorder();
+ $verifier = new Phake_CallRecorder_Verifier($callRecorder, $mock);
+ self::getClient()->processVerifierResult($verifier->verifyNoOtherCalls());
+
+ $sCallRecorder = Phake::getInfo(get_class($mock))->getCallRecorder();
+ $sVerifier = new Phake_CallRecorder_Verifier($sCallRecorder, get_class($mock));
+ self::getClient()->processVerifierResult($sVerifier->verifyNoOtherCalls());
+ }
+
+ /**
+ * Converts a bunch of call info objects to position objects.
+ *
+ * @param array $calls
+ *
+ * @return array
+ */
+ private static function pullPositionsFromCallInfos(array $calls)
+ {
+ $transformed = array();
+ foreach ($calls as $callList) {
+ $transformedList = array();
+ foreach ($callList as $call) {
+ $transformedList[] = $call->getPosition();
+ }
+ $transformed[] = $transformedList;
+ }
+ return $transformed;
+ }
+
+ /**
+ * Returns a new stubber for the given mock object.
+ *
+ * @param Phake_IMock $mock
+ *
+ * @return Phake_Proxies_StubberProxy
+ */
+ public static function when(Phake_IMock $mock)
+ {
+ return new Phake_Proxies_StubberProxy($mock, self::getMatchersFactory());
+ }
+
+ /**
+ * Returns a new static stubber for the given mock object.
+ *
+ * @param Phake_IMock $mock
+ *
+ * @return Phake_Proxies_StubberProxy
+ */
+ public static function whenStatic(Phake_IMock $mock)
+ {
+ return new Phake_Proxies_StubberProxy(get_class($mock), self::getMatchersFactory());
+ }
+
+ /**
+ * Returns a new stubber specifically for the __call() method
+ *
+ * @param mixed ... A vararg containing the expected arguments for this call
+ *
+ * @return \Phake_Proxies_CallStubberProxy
+ */
+ public static function whenCallMethodWith()
+ {
+ $arguments = func_get_args();
+ $factory = self::getMatchersFactory();
+ return new Phake_Proxies_CallStubberProxy($factory->createMatcherChain($arguments), false);
+ }
+
+ /**
+ * Returns a new stubber specifically for the __call() method
+ *
+ * @param mixed ... A vararg containing the expected arguments for this call
+ *
+ * @return \Phake_Proxies_CallStubberProxy
+ */
+ public static function whenStaticCallMethodWith()
+ {
+ $arguments = func_get_args();
+ $factory = self::getMatchersFactory();
+ return new Phake_Proxies_CallStubberProxy($factory->createMatcherChain($arguments), true);
+ }
+
+ /**
+ * Resets all calls and stubs on the given mock object
+ *
+ * @param Phake_IMock $mock
+ */
+ public static function reset(Phake_IMock $mock)
+ {
+ self::getInfo($mock)->resetInfo();
+ }
+
+ /**
+ * Resets all calls and stubs on the given mock object and return the original class name
+ *
+ * @param Phake_IMock $mock
+ * @return string $name
+ */
+ public static function resetStatic(Phake_IMock $mock)
+ {
+ $info = self::getInfo(get_class($mock));
+ $info->resetInfo();
+ return $info->getName();
+ }
+
+ /**
+ * Resets all static calls, should be ran on tear downs
+ */
+ public static function resetStaticInfo()
+ {
+ self::getPhake()->resetStaticInfo();
+ }
+
+ /**
+ * Provides methods for creating answers. Used in the api as a fluent way to set default stubs.
+ * @return Phake_Proxies_AnswerBinderProxy
+ */
+ public static function ifUnstubbed()
+ {
+ $binder = new Phake_Stubber_SelfBindingAnswerBinder();
+ return new Phake_Proxies_AnswerBinderProxy($binder);
+ }
+
+ /**
+ * @param Phake_Facade $phake
+ */
+ public static function setPhake(Phake_Facade $phake)
+ {
+ self::$phake = $phake;
+ }
+
+ /**
+ *
+ * @return Phake_Facade
+ */
+ public static function getPhake()
+ {
+ if (empty(self::$phake)) {
+ self::setPhake(self::createPhake());
+ }
+
+ return self::$phake;
+ }
+
+ /**
+ * @return Phake_Facade
+ */
+ public static function createPhake()
+ {
+ return new Phake_Facade(new Phake_Mock_InfoRegistry());
+ }
+
+ /**
+ * Returns an equals matcher for the given value.
+ *
+ * @param mixed $value
+ *
+ * @return Phake_Matchers_EqualsMatcher
+ */
+ public static function equalTo($value)
+ {
+ return new Phake_Matchers_EqualsMatcher($value, new \SebastianBergmann\Comparator\Factory());
+ }
+
+ /**
+ * Returns a capturing matcher that will set the value of a given argument to given variable.
+ *
+ * @param mixed $value - Will be set to the value of the called argument.
+ *
+ * @return Phake_Matchers_ArgumentCaptor
+ */
+ public static function capture(&$value)
+ {
+ return new Phake_Matchers_ArgumentCaptor($value);
+ }
+
+
+ /**
+ * Returns a capturing matcher that is bound to store ALL of its calls in the variable passed in.
+ *
+ * $value will initially be set to an empty array;
+ *
+ * @param mixed $value - Will be set to the value of the called argument.
+ *
+ * @return Phake_Matchers_ArgumentCaptor
+ */
+ public static function captureAll(&$value)
+ {
+ $ignore = null;
+ $captor = new Phake_Matchers_ArgumentCaptor($ignore);
+ $captor->bindAllCapturedValues($value);
+ return $captor;
+ }
+
+
+ /**
+ * Returns a setter matcher that will set a reference parameter passed in as an argument to the
+ * given value.
+ *
+ * @param mixed $value - Will be written the reference parameter used by the calling method.
+ *
+ * @return Phake_Matchers_ReferenceSetter
+ */
+ public static function setReference($value)
+ {
+ return new Phake_Matchers_ReferenceSetter($value);
+ }
+
+ /**
+ * Allows verifying an exact number of invocations.
+ *
+ * @param int $count
+ *
+ * @return Phake_CallRecorder_IVerifierMode
+ */
+ public static function times($count)
+ {
+ return new Phake_CallRecorder_VerifierMode_Times((int)$count);
+ }
+
+ /**
+ * Allows verifying that there were no invocations. Alias of times(0).
+ * @return Phake_CallRecorder_IVerifierMode
+ */
+ public static function never()
+ {
+ return new Phake_CallRecorder_VerifierMode_Times(0);
+ }
+
+ /**
+ * Allows verifying at least $count invocations.
+ *
+ * @param int $count
+ *
+ * @return Phake_CallRecorder_IVerifierMode
+ */
+ public static function atLeast($count)
+ {
+ return new Phake_CallRecorder_VerifierMode_AtLeast((int)$count);
+ }
+
+ /**
+ * Allows verifying at most $count invocations.
+ *
+ * @param int $count
+ *
+ * @return Phake_CallRecorder_IVerifierMode
+ */
+ public static function atMost($count)
+ {
+ return new Phake_CallRecorder_VerifierMode_AtMost((int)$count);
+ }
+
+ /**
+ * Returns an any parameters matcher to allow matching all invocations of a particular method.
+ *
+ * @return Phake_Matchers_AnyParameters
+ */
+ public static function anyParameters()
+ {
+ return new Phake_Matchers_AnyParameters();
+ }
+
+ /**
+ * Returns an any parameters matcher to allow matching all invocations of a particular method.
+ *
+ * @return Phake_Matchers_AnyParameters
+ */
+ public static function ignoreRemaining()
+ {
+ return new Phake_Matchers_IgnoreRemainingMatcher();
+ }
+
+ /**
+ * Returns the client currently being used by Phake
+ *
+ * @return Phake_Client_IClient
+ */
+ public static function getClient()
+ {
+ if (!isset(self::$client)) {
+ if (class_exists('PHPUnit_Framework_TestCase')) {
+ return self::$client = new Phake_Client_PHPUnit();
+ }
+ return self::$client = new Phake_Client_Default();
+ } else {
+ return self::$client;
+ }
+ }
+
+ /**
+ * Sets the client currently being used by Phake.
+ *
+ * Accepts either an instance of a Phake_Client_IClient object OR a string identifying such an object.
+ *
+ * @param Phake_Client_IClient|string $client
+ */
+ public static function setClient($client)
+ {
+ if ($client instanceof Phake_Client_IClient) {
+ self::$client = $client;
+ } elseif ($client == self::CLIENT_PHPUNIT) {
+ self::$client = new Phake_Client_PHPUnit();
+ } else {
+ self::$client = new Phake_Client_Default();
+ }
+ }
+
+ public static function getMockLoader()
+ {
+ if (isset(self::$loader)) {
+ return self::$loader;
+ } else {
+ return new Phake_ClassGenerator_EvalLoader();
+ }
+ }
+
+ public static function setMockLoader(Phake_ClassGenerator_ILoader $loader)
+ {
+ self::$loader = $loader;
+ }
+
+ public static function initAnnotations($obj)
+ {
+ $initializer = new Phake_Annotation_MockInitializer();
+ $initializer->initialize($obj);
+ }
+
+ /**
+ * Used internally to validate mocks.
+ *
+ * @internal
+ * @param Phake_IMock|string $mock
+ * @throws InvalidArgumentException
+ */
+ public static function assertValidMock($mock)
+ {
+ if ($mock instanceof Phake_IMock)
+ {
+ return;
+ }
+
+ if (is_string($mock) && class_exists($mock, false))
+ {
+ $reflClass = new ReflectionClass($mock);
+ if ($reflClass->implementsInterface('Phake_IMock'))
+ {
+ return;
+ }
+ }
+
+ throw new InvalidArgumentException("Received '" . (is_object($mock) ? get_class($mock) : $mock) . "' Expected an instance of Phake_IMock or the name of a class that implements Phake_IMock");
+ }
+
+ /**
+ * Used internally to standardize pulling mock names.
+ *
+ * @internal
+ * @param Phake_IMock|string $mock
+ * @throws InvalidArgumentException
+ * @return string
+ */
+ public static function getName($mock)
+ {
+ static::assertValidMock($mock);
+ return $mock::__PHAKE_name;
+ }
+
+ /**
+ * Used internally to standardize pulling mock names.
+ *
+ * @internal
+ * @param Phake_IMock|string $mock
+ * @throws InvalidArgumentException
+ * @return Phake_Mock_Info
+ */
+ public static function getInfo($mock)
+ {
+ static::assertValidMock($mock);
+ if ($mock instanceof Phake_IMock)
+ {
+ return isset($mock->__PHAKE_info) ? $mock->__PHAKE_info : null;
+ }
+ else
+ {
+ return $mock::$__PHAKE_staticInfo;
+ }
+ }
+
+ /**
+ * Increases allows calling private and protected instance methods on the given mock.
+ *
+ * @param Phake_IMock $mock
+ * @return Phake_Proxies_VisibilityProxy $mock
+ */
+ public static function makeVisible(Phake_IMock $mock)
+ {
+ return new Phake_Proxies_VisibilityProxy($mock);
+ }
+
+ /**
+ * Increases allows calling private and protected static methods on the given mock.
+ *
+ * @param Phake_IMock $mock
+ * @return Phake_Proxies_VisibilityProxy $mock
+ */
+ public static function makeStaticsVisible(Phake_IMock $mock)
+ {
+ return new Phake_Proxies_StaticVisibilityProxy($mock);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/MockInitializer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/MockInitializer.php
new file mode 100644
index 00000000..da71f368
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/MockInitializer.php
@@ -0,0 +1,98 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Initializes all properties of a given object that have the @Mock annotation.
+ *
+ * The class can be passed to the Mock annotation or it can also read the standard @var -annotation.
+ *
+ * In either case the fully qualified class name should be used. The use statements are not observed.
+ */
+class Phake_Annotation_MockInitializer
+{
+ public function initialize($object)
+ {
+ $reflectionClass = new ReflectionClass($object);
+ $reader = new Phake_Annotation_Reader($reflectionClass);
+
+ if ($this->useDoctrineParser()) {
+ $parser = new \Doctrine\Common\Annotations\PhpParser();
+ }
+
+ $properties = $reader->getPropertiesWithAnnotation('Mock');
+
+ foreach ($properties as $property) {
+ $annotations = $reader->getPropertyAnnotations($property);
+
+ if ($annotations['Mock'] !== true) {
+ $mockedClass = $annotations['Mock'];
+ } else {
+ $mockedClass = $annotations['var'];
+ }
+
+ if (isset($parser)) {
+ // Ignore it if the class start with a backslash
+ if (substr($mockedClass, 0, 1) !== '\\') {
+ $useStatements = $parser->parseClass($reflectionClass);
+ $key = strtolower($mockedClass);
+
+ if (array_key_exists($key, $useStatements)) {
+ $mockedClass = $useStatements[$key];
+ }
+ }
+ }
+
+ $reflProp = new ReflectionProperty(get_class($object), $property);
+
+ $reflProp->setAccessible(true);
+ $reflProp->setValue($object, Phake::mock($mockedClass));
+ }
+ }
+
+ protected function useDoctrineParser()
+ {
+ return version_compare(PHP_VERSION, "5.3.3", ">=") && class_exists('Doctrine\Common\Annotations\PhpParser');
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/Reader.php b/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/Reader.php
new file mode 100644
index 00000000..45c46f24
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Annotation/Reader.php
@@ -0,0 +1,121 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows reading annotations from various components
+ */
+class Phake_Annotation_Reader
+{
+ /**
+ * @var ReflectionClass
+ */
+ private $clazz;
+
+ /**
+ * @param ReflectionClass $clazz
+ *
+ * @throws InvalidArgumentException
+ */
+ public function __construct(ReflectionClass $clazz)
+ {
+ $this->clazz = $clazz;
+ }
+
+ /**
+ * Returns an associative array containing a property's annotations and their values.
+ *
+ * @param string $property
+ *
+ * @return array
+ */
+ public function getPropertyAnnotations($property)
+ {
+ $property = $this->clazz->getProperty($property);
+
+ return $this->readReflectionAnnotation($property);
+ }
+
+ /**
+ * Returns an array containing the names of all properties containing a particular annotation.
+ *
+ * @param string $annotation
+ *
+ * @return array
+ */
+ public function getPropertiesWithAnnotation($annotation)
+ {
+ $properties = array();
+ foreach ($this->clazz->getProperties() as $property) {
+ $annotations = $this->getPropertyAnnotations($property->getName());
+
+ if (array_key_exists($annotation, $annotations)) {
+ $properties[] = $property->getName();
+ }
+ }
+ return $properties;
+ }
+
+ /**
+ * Returns all annotations for the given reflection object.
+ *
+ * @internal
+ *
+ * @param mixed $reflVar - must be an object that has the 'getDocComment' method.
+ *
+ * @return array
+ */
+ private function readReflectionAnnotation($reflVar)
+ {
+ $comment = $reflVar->getDocComment();
+
+ $annotations = array();
+ foreach (explode("\n", $comment) as $line) {
+ if (preg_match('#^\s+\*\s*@(\w+)(?:\s+(.*))?\s*$#', $line, $matches)) {
+ $annotations[$matches[1]] = isset($matches[2]) ? $matches[2] : true;
+ }
+ }
+ return $annotations;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Call.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Call.php
new file mode 100644
index 00000000..a3e93491
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Call.php
@@ -0,0 +1,118 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Represents a call. For use in storing with a call recorder.
+ *
+ * @author Mike Lively
+ */
+class Phake_CallRecorder_Call
+{
+ /**
+ * @var object
+ */
+ private $object;
+
+ /**
+ * @var string
+ */
+ private $method;
+
+ /**
+ * @var array
+ */
+ private $arguments;
+
+ /**
+ * @param string|\Phake_IMock $context - The object the method was called on
+ * @param string $method - The method that was made
+ * @param array $arguments
+ */
+ public function __construct($context, $method, array $arguments)
+ {
+ $this->object = $context;
+ $this->method = $method;
+ $this->arguments = $arguments;
+ }
+
+ /**
+ * @return object
+ */
+ public function getObject()
+ {
+ return $this->object;
+ }
+
+ /**
+ * @return string
+ */
+ public function getMethod()
+ {
+ return $this->method;
+ }
+
+ /**
+ * @return array
+ */
+ public function getArguments()
+ {
+ return $this->arguments;
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ $converter = new Phake_String_Converter();
+ $arguments = array();
+ foreach ($this->arguments as $argument) {
+ $arguments[] = $converter->convertToString($argument);
+ }
+
+ $name = Phake::getName($this->object);
+ $access = is_string($this->object) ? '::' : '->';
+ return "{$name}{$access}{$this->method}(" . implode(', ', $arguments) . ")";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallExpectation.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallExpectation.php
new file mode 100644
index 00000000..600badeb
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallExpectation.php
@@ -0,0 +1,140 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A call or set of calls that was expected
+ */
+class Phake_CallRecorder_CallExpectation
+{
+ /**
+ * @var Phake_IMock
+ */
+ private $object;
+
+ /**
+ * @var string
+ */
+ private $method;
+
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $argumentMatcher;
+
+ /**
+ * @var Phake_CallRecorder_IVerifierMode
+ */
+ private $verifierMode;
+
+ /**
+ * @param Phake_IMock|mixed $object
+ * @param string $method
+ * @param Phake_Matchers_IChainableArgumentMatcher $argumentMatcher
+ * @param Phake_CallRecorder_IVerifierMode $verificationMode
+ */
+ public function __construct(
+ $object,
+ $method,
+ Phake_Matchers_IChainableArgumentMatcher $argumentMatcher = null,
+ Phake_CallRecorder_IVerifierMode $verificationMode
+ ) {
+ $this->object = $object;
+ $this->method = $method;
+ $this->argumentMatcher = $argumentMatcher;
+ $this->verifierMode = $verificationMode;
+ }
+
+ /**
+ * @return Phake_IMock
+ */
+ public function getObject()
+ {
+ return $this->object;
+ }
+
+ /**
+ * @return string
+ */
+ public function getMethod()
+ {
+ return $this->method;
+ }
+
+ /**
+ * @return Phake_Matchers_IChainableArgumentMatcher
+ */
+ public function getArgumentMatcher()
+ {
+ return $this->argumentMatcher;
+ }
+
+ /**
+ * @return Phake_CallRecorder_IVerifierMode
+ */
+ public function getVerifierMode()
+ {
+ return $this->verifierMode;
+ }
+
+ public function __toString()
+ {
+ $arguments = array();
+
+ $argumentMatcher = $this->argumentMatcher;
+
+ while (!empty($argumentMatcher))
+ {
+ $arguments[] = $argumentMatcher->__toString();
+ $argumentMatcher = $argumentMatcher->getNextMatcher();
+ }
+
+ $name = Phake::getName($this->getObject());
+ $access = is_string($this->object) ? '::' : '->';
+
+ return "Expected {$name}{$access}{$this->getMethod()}(" . implode(
+ ', ',
+ $arguments
+ ) . ") to be called {$this->getVerifierMode()->__toString()}";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallInfo.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallInfo.php
new file mode 100644
index 00000000..9acc500f
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/CallInfo.php
@@ -0,0 +1,85 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Aggregates various objects holding information about a particular call.
+ */
+class Phake_CallRecorder_CallInfo
+{
+ /**
+ * @var Phake_CallRecorder_Call
+ */
+ private $call;
+
+ /**
+ * @var Phake_CallRecorder_Position
+ */
+ private $position;
+
+ /**
+ * @param Phake_CallRecorder_Call $call
+ * @param Phake_CallRecorder_Position $position
+ */
+ public function __construct(Phake_CallRecorder_Call $call, Phake_CallRecorder_Position $position)
+ {
+ $this->call = $call;
+ $this->position = $position;
+ }
+
+ /**
+ * @return Phake_CallRecorder_Call
+ */
+ public function getCall()
+ {
+ return $this->call;
+ }
+
+ /**
+ * @return Phake_CallRecorder_Position
+ */
+ public function getPosition()
+ {
+ return $this->position;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerificationFailureHandler.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerificationFailureHandler.php
new file mode 100644
index 00000000..6e22de62
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerificationFailureHandler.php
@@ -0,0 +1,60 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An api to process verification failures found by Phake_CallRecorder_Verifier
+ *
+ * @see Phake_CallRecorder_Verifier
+ */
+interface Phake_CallRecorder_IVerificationFailureHandler
+{
+ public function verificationFailed(
+ $object,
+ $method,
+ array $argumentMatchers,
+ $mode,
+ $matches,
+ array $callsToMethod
+ );
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerifierMode.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerifierMode.php
new file mode 100644
index 00000000..057b8c42
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/IVerifierMode.php
@@ -0,0 +1,66 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows verifying that call invocations occurred some number of times.
+ *
+ * @author Brian Feaver
+ */
+interface Phake_CallRecorder_IVerifierMode
+{
+ /**
+ * Verifies that the number of $matchedCalls matches the number of invocations expected.
+ *
+ * @param array $matchedCalls
+ *
+ * @return Phake_CallRecorder_VerifierMode_Result
+ */
+ public function verify(array $matchedCalls);
+
+ /**
+ * Returns a human readable description of the verifier mode
+ * @return string
+ */
+ public function __toString();
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/OrderVerifier.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/OrderVerifier.php
new file mode 100644
index 00000000..0d65e80b
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/OrderVerifier.php
@@ -0,0 +1,80 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Verifies whether given positions are given in order.
+ */
+class Phake_CallRecorder_OrderVerifier
+{
+ /**
+ * @param array $calls
+ *
+ * @return bool
+ */
+ public function verifyCallsInOrder(array $calls)
+ {
+ $call1 = array_shift($calls);
+ $call2 = array_shift($call1);
+
+ while (count($calls)) {
+ $callList = array_shift($calls);
+
+ $callFound = false;
+ foreach ($callList as $call) {
+ /* @var $call Phake_CallRecorder_Position */
+ if ($call->thisIsAfter($call2)) {
+ $callFound = true;
+ $call2 = $call;
+ break;
+ }
+ }
+
+ if (!$callFound) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Position.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Position.php
new file mode 100644
index 00000000..6a8675f1
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Position.php
@@ -0,0 +1,74 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Provides information on the position of a given call.
+ */
+class Phake_CallRecorder_Position
+{
+ /**
+ * @var int
+ */
+ private $position;
+
+ /**
+ * @param int $position
+ */
+ public function __construct($position)
+ {
+ $this->position = $position;
+ }
+
+ /**
+ * Determines if this call position is after the given position
+ *
+ * @param Phake_CallRecorder_Position $other
+ *
+ * @return boolean
+ */
+ public function thisIsAfter(Phake_CallRecorder_Position $other)
+ {
+ return ($this->position > $other->position);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Recorder.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Recorder.php
new file mode 100644
index 00000000..0c18a8d9
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Recorder.php
@@ -0,0 +1,143 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Records calls made to particular objects.
+ *
+ * It is assumed that calls will be recorded in the order that they are made.
+ *
+ * Provides methods to playback calls again in order.
+ *
+ * @author Mike Lively
+ */
+class Phake_CallRecorder_Recorder
+{
+ /**
+ * @var array
+ */
+ private $calls = array();
+
+ /**
+ * @var array
+ */
+ private $positions = array();
+
+ /**
+ * @var array
+ */
+ private $unverifiedCalls = array();
+
+ /**
+ * @var int
+ */
+ private static $lastPosition = 0;
+
+ /**
+ * Records that a given
+ *
+ * @param Phake_CallRecorder_Call $call
+ */
+ public function recordCall(Phake_CallRecorder_Call $call)
+ {
+ $this->calls[] = $call;
+ $this->positions[spl_object_hash($call)] = new Phake_CallRecorder_Position(self::$lastPosition++);
+ $this->unverifiedCalls[spl_object_hash($call)] = $call;
+ }
+
+ /**
+ * Returns all calls recorded in the order they were recorded.
+ * @return array
+ */
+ public function getAllCalls()
+ {
+ return $this->calls;
+ }
+
+ /**
+ * Removes all calls from the call recorder.
+ *
+ * Also removes all positions
+ */
+ public function removeAllCalls()
+ {
+ $this->calls = array();
+ $this->positions = array();
+ }
+
+ /**
+ * Retrieves call info for a particular call
+ *
+ * @param Phake_CallRecorder_Call $call
+ *
+ * @return Phake_CallRecorder_CallInfo
+ */
+ public function getCallInfo(Phake_CallRecorder_Call $call)
+ {
+ if (in_array($call, $this->calls, true)) {
+ return new Phake_CallRecorder_CallInfo($call, $this->positions[spl_object_hash($call)]);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Marks an individual call as being verified
+ *
+ * @param Phake_CallRecorder_Call $call
+ */
+ public function markCallVerified(Phake_CallRecorder_Call $call)
+ {
+ unset($this->unverifiedCalls[spl_object_hash($call)]);
+ }
+
+ /**
+ * Returns all unverified calls from the recorder
+ *
+ * @return array
+ */
+ public function getUnverifiedCalls()
+ {
+ return array_values($this->unverifiedCalls);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Verifier.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Verifier.php
new file mode 100644
index 00000000..b3c9787a
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/Verifier.php
@@ -0,0 +1,185 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Can verify calls recorded into the given recorder.
+ *
+ * @author Mike Lively
+ */
+class Phake_CallRecorder_Verifier
+{
+
+ /**
+ * @var Phake_CallRecorder_Recorder
+ */
+ protected $recorder;
+
+ /**
+ * @var Phake_IMock
+ */
+ protected $obj;
+
+ /**
+ * @param Phake_CallRecorder_Recorder $recorder
+ * @param $obj
+ */
+ public function __construct(Phake_CallRecorder_Recorder $recorder, $obj)
+ {
+ $this->recorder = $recorder;
+ $this->obj = $obj;
+ }
+
+ /**
+ * Returns whether or not a call has been made in the associated call recorder.
+ *
+ * @todo Maybe rename this to findMatchedCalls?
+ *
+ * @param Phake_CallRecorder_CallExpectation $expectation
+ *
+ * @return Phake_CallRecorder_VerifierResult
+ */
+ public function verifyCall(Phake_CallRecorder_CallExpectation $expectation)
+ {
+ $matcher = new Phake_Matchers_MethodMatcher($expectation->getMethod(), $expectation->getArgumentMatcher());
+ $calls = $this->recorder->getAllCalls();
+
+ $matchedCalls = array();
+ $methodNonMatched = array();
+ $obj_interactions = false;
+ foreach ($calls as $call) {
+ /* @var $call Phake_CallRecorder_Call */
+ if ($call->getObject() === $expectation->getObject()) {
+ $obj_interactions = true;
+ $args = $call->getArguments();
+ try
+ {
+ $matcher->assertMatches($call->getMethod(), $args);
+ $matchedCalls[] = $this->recorder->getCallInfo($call);
+ $this->recorder->markCallVerified($call);
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ if ($call->getMethod() == $expectation->getMethod()) {
+ $message = $e->getMessage();
+ if (strlen($message))
+ {
+ $message = "\n{$message}";
+ }
+ $methodNonMatched[] = $call->__toString() . $message;
+ }
+ }
+ }
+ }
+
+ $verifierModeResult = $expectation->getVerifierMode()->verify($matchedCalls);
+ if (!$verifierModeResult->getVerified()) {
+ $additions = '';
+ if (!$obj_interactions) {
+ $additions .= ' In fact, there are no interactions with this mock.';
+ }
+
+ if (count($methodNonMatched)) {
+ $additions .= "\nOther Invocations:\n===\n " . implode("\n===\n ", str_replace("\n", "\n ", $methodNonMatched)) . "\n===";
+ }
+
+ return new Phake_CallRecorder_VerifierResult(
+ false,
+ array(),
+ $expectation->__toString() . ', ' . $verifierModeResult->getFailureDescription() . '.' . $additions
+ );
+ }
+
+
+ return new Phake_CallRecorder_VerifierResult(true, $matchedCalls);
+ }
+
+ public function verifyNoCalls()
+ {
+ $result = true;
+
+ $reportedCalls = array();
+ foreach ($this->recorder->getAllCalls() as $call) {
+ $result = false;
+ $reportedCalls[] = $call->__toString();
+ }
+
+ if ($result) {
+ return new Phake_CallRecorder_VerifierResult(true, array());
+ } else {
+ $desc = 'Expected no interaction with mock' . "\n"
+ . 'Invocations:' . "\n ";
+ return new Phake_CallRecorder_VerifierResult(false, array(), $desc . implode("\n ", $reportedCalls));
+ }
+ }
+
+ /**
+ * Ensures all calls for this verifier have actually been verified
+ *
+ * @return Phake_CallRecorder_VerifierResult
+ */
+ public function verifyNoOtherCalls()
+ {
+ $result = true;
+
+ $reportedCalls = array();
+ foreach ($this->recorder->getUnverifiedCalls() as $call)
+ {
+ $result = false;
+ $reportedCalls[] = $call->__toString();
+ }
+
+ if ($result) {
+ return new Phake_CallRecorder_VerifierResult(true, array());
+ } else {
+ $desc = 'Expected no interaction with mock' . "\n"
+ . 'Invocations:' . "\n ";
+ return new Phake_CallRecorder_VerifierResult(false, array(), $desc . implode("\n ", $reportedCalls));
+ }
+ }
+
+ public function getObject()
+ {
+ return $this->obj;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtLeast.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtLeast.php
new file mode 100644
index 00000000..e1ef4c00
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtLeast.php
@@ -0,0 +1,91 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Verifier mode that checks that the number of matched items are equal to or greater than the expected amount.
+ * @author Brian Feaver
+ */
+class Phake_CallRecorder_VerifierMode_AtLeast implements Phake_CallRecorder_IVerifierMode
+{
+ /**
+ * @var int
+ */
+ private $times;
+
+ /**
+ * Constructs a verifier with the given $times.
+ *
+ * @param int $times
+ */
+ public function __construct($times)
+ {
+ $this->times = $times;
+ }
+
+ /**
+ * Verifies that the number of $matchedCalls is equal to or greater than the
+ * value this object was instantiated with.
+ *
+ * @param array $matchedCalls
+ *
+ * @return boolean
+ */
+ public function verify(array $matchedCalls)
+ {
+ $calledTimes = count($matchedCalls);
+ if ($calledTimes >= $this->times) {
+ return new Phake_CallRecorder_VerifierMode_Result(true, '');
+ } else {
+ return new Phake_CallRecorder_VerifierMode_Result(false, sprintf(
+ 'actually called <%s> times',
+ count($matchedCalls)
+ ));
+ }
+ }
+
+ public function __toString()
+ {
+ return "at least <{$this->times}> times";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtMost.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtMost.php
new file mode 100644
index 00000000..810a4420
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/AtMost.php
@@ -0,0 +1,91 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Verifier mode that checks that the number of matched items is less than or equal than the set amount.
+ * @author Brian Feaver
+ */
+class Phake_CallRecorder_VerifierMode_AtMost implements Phake_CallRecorder_IVerifierMode
+{
+ /**
+ * @var int
+ */
+ private $times;
+
+ /**
+ * Constructs a verifier with the given $times.
+ *
+ * @param int $times
+ */
+ public function __construct($times)
+ {
+ $this->times = $times;
+ }
+
+ /**
+ * Verifies that the number of $matchedCalls is less than or equal to the
+ * value this object was instantiated with.
+ *
+ * @param array $matchedCalls
+ *
+ * @return boolean
+ */
+ public function verify(array $matchedCalls)
+ {
+ $calledTimes = count($matchedCalls);
+ if ($calledTimes <= $this->times) {
+ return new Phake_CallRecorder_VerifierMode_Result(true, '');
+ } else {
+ return new Phake_CallRecorder_VerifierMode_Result(false, sprintf(
+ 'actually called <%s> times',
+ count($matchedCalls)
+ ));
+ }
+ }
+
+ public function __toString()
+ {
+ return "at most <{$this->times}> times";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Result.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Result.php
new file mode 100644
index 00000000..3e1d03c6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Result.php
@@ -0,0 +1,67 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+class Phake_CallRecorder_VerifierMode_Result
+{
+ private $verified;
+
+ private $failureDescription;
+
+ function __construct($verified, $failureDescription)
+ {
+ $this->verified = $verified;
+ $this->failureDescription = $failureDescription;
+ }
+
+ public function getVerified()
+ {
+ return $this->verified;
+ }
+
+ public function getFailureDescription()
+ {
+ return $this->failureDescription;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Times.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Times.php
new file mode 100644
index 00000000..4151d9e7
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierMode/Times.php
@@ -0,0 +1,92 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Verifier mode that checks that the number of matched items are exactly equal
+ * to the expected amount.
+ * @author Brian Feaver
+ */
+class Phake_CallRecorder_VerifierMode_Times implements Phake_CallRecorder_IVerifierMode
+{
+ /**
+ * @var int
+ */
+ private $times;
+
+ /**
+ * Constructs a Times verifier with the given $times.
+ *
+ * @param int $times
+ */
+ public function __construct($times)
+ {
+ $this->times = $times;
+ }
+
+ /**
+ * Verifies that the number of $matchedCalls is equal to the
+ * value this object was instantiated with.
+ *
+ * @param array $matchedCalls
+ *
+ * @return boolean
+ */
+ public function verify(array $matchedCalls)
+ {
+ $calledTimes = count($matchedCalls);
+ if ($calledTimes == $this->times) {
+ return new Phake_CallRecorder_VerifierMode_Result(true, '');
+ } else {
+ return new Phake_CallRecorder_VerifierMode_Result(false, sprintf(
+ 'actually called <%s> times',
+ count($matchedCalls)
+ ));
+ }
+ }
+
+ public function __toString()
+ {
+ return "exactly <{$this->times}> times";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierResult.php b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierResult.php
new file mode 100644
index 00000000..ca7d1fea
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/CallRecorder/VerifierResult.php
@@ -0,0 +1,92 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A value object containing the results of a run of verifyCall()
+ */
+class Phake_CallRecorder_VerifierResult
+{
+ private $verified;
+
+ private $matchedCalls;
+
+ private $failureDescription;
+
+ /**
+ * @param boolean $verified
+ * @param array $matchedCalls
+ * @param string $failureDescription
+ */
+ function __construct($verified, array $matchedCalls, $failureDescription = '')
+ {
+ $this->verified = $verified;
+ $this->matchedCalls = $matchedCalls;
+ $this->failureDescription = $failureDescription;
+ }
+
+ /**
+ * @return boolean
+ */
+ public function getVerified()
+ {
+ return $this->verified;
+ }
+
+ /**
+ * @return array
+ */
+ public function getMatchedCalls()
+ {
+ return $this->matchedCalls;
+ }
+
+ /**
+ * @return string
+ */
+ public function getFailureDescription()
+ {
+ return $this->failureDescription;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/EvalLoader.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/EvalLoader.php
new file mode 100644
index 00000000..9ab14c70
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/EvalLoader.php
@@ -0,0 +1,60 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Loads classes into the system via the eval method
+ */
+class Phake_ClassGenerator_EvalLoader implements Phake_ClassGenerator_ILoader
+{
+ /**
+ * @param string $className
+ * @param string $classDef
+ *
+ * @return void
+ */
+ public function loadClassByString($className, $classDef)
+ {
+ eval($classDef);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/FileLoader.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/FileLoader.php
new file mode 100644
index 00000000..86d36089
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/FileLoader.php
@@ -0,0 +1,72 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Saves the files into a store directory with a file name the same as the class and then includes that file.
+ */
+class Phake_ClassGenerator_FileLoader implements Phake_ClassGenerator_ILoader
+{
+ private $dir;
+
+ /**
+ * @param string $dir
+ */
+ public function __construct($dir)
+ {
+ $this->dir = $dir;
+ }
+
+ /**
+ * @param string $className
+ * @param string $classDef
+ *
+ * @return void
+ */
+ public function loadClassByString($className, $classDef)
+ {
+ $file = rtrim($this->dir, '/') . '/' . $className . '.php';
+ file_put_contents($file, "
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Loads classes into the system.
+ */
+interface Phake_ClassGenerator_ILoader
+{
+ /**
+ * @param string $className
+ * @param string $classDef
+ *
+ * @return void
+ */
+ public function loadClassByString($className, $classDef);
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/CallRecorder.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/CallRecorder.php
new file mode 100644
index 00000000..92c8a38a
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/CallRecorder.php
@@ -0,0 +1,71 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Records calls to a mock object's call recorder.
+ */
+class Phake_ClassGenerator_InvocationHandler_CallRecorder implements Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @var Phake_CallRecorder_Recorder
+ */
+ private $callRecorder;
+
+ /**
+ * @param Phake_CallRecorder_Recorder $callRecorder
+ */
+ public function __construct(Phake_CallRecorder_Recorder $callRecorder)
+ {
+ $this->callRecorder = $callRecorder;
+ }
+
+ public function invoke($mock, $method, array $arguments, array &$argumentReference)
+ {
+ $this->callRecorder->recordCall(
+ new Phake_CallRecorder_Call($mock, $method, $arguments)
+ );
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/Composite.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/Composite.php
new file mode 100644
index 00000000..d297e4fe
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/Composite.php
@@ -0,0 +1,73 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A composite invocation handler
+ */
+class Phake_ClassGenerator_InvocationHandler_Composite implements Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @var array
+ */
+ private $handlers;
+
+ /**
+ * @param array $handlers
+ */
+ public function __construct(array $handlers)
+ {
+ $this->handlers = $handlers;
+ }
+
+ public function invoke($mock, $method, array $arguments, array &$argumentReference)
+ {
+ foreach ($this->handlers as $handler) {
+ $result = $handler->invoke($mock, $method, $arguments, $argumentReference);
+ }
+
+ return $result;
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/FrozenObjectCheck.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/FrozenObjectCheck.php
new file mode 100644
index 00000000..f91fd6df
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/FrozenObjectCheck.php
@@ -0,0 +1,72 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Tests a mock to see if it is frozen.
+ */
+class Phake_ClassGenerator_InvocationHandler_FrozenObjectCheck implements Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @var Phake_Mock_Info
+ */
+ private $mockInfo;
+
+ /**
+ * @param Phake_Mock_Info $mockInfo
+ */
+ public function __construct(Phake_Mock_Info $mockInfo)
+ {
+ $this->mockInfo = $mockInfo;
+ }
+
+ public function invoke($mock, $method, array $arguments, array &$argumentReference)
+ {
+ if ($this->mockInfo->isObjectFrozen()) {
+ $result = new Phake_CallRecorder_VerifierResult(false, array(), 'This object has been frozen.');
+ Phake::getClient()->processVerifierResult($result);
+ }
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/IInvocationHandler.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/IInvocationHandler.php
new file mode 100644
index 00000000..eee14974
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/IInvocationHandler.php
@@ -0,0 +1,61 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An interface for invocation handlers.
+ *
+ * Invocation handlers are used to provide various functionality in reaction to a method invocation on a mock object.
+ */
+interface Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @param Phake_IMock|string $mock
+ * @param $method
+ * @param array $arguments
+ * @param array $argumentReference
+ * @return mixed
+ */
+ public function invoke($mock, $method, array $arguments, array &$argumentReference);
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/MagicCallRecorder.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/MagicCallRecorder.php
new file mode 100644
index 00000000..66f43b17
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/MagicCallRecorder.php
@@ -0,0 +1,75 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Records calls to a mock object's call recorder for the magic __call method.
+ *
+ * If the invocation isn't of __call...does nothing.
+ */
+class Phake_ClassGenerator_InvocationHandler_MagicCallRecorder implements Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @var Phake_CallRecorder_Recorder
+ */
+ private $callRecorder;
+
+ /**
+ * @param Phake_CallRecorder_Recorder $callRecorder
+ */
+ public function __construct(Phake_CallRecorder_Recorder $callRecorder)
+ {
+ $this->callRecorder = $callRecorder;
+ }
+
+ public function invoke($mock, $method, array $arguments, array &$argumentReference)
+ {
+ if ($method == '__call' || $method == '__callStatic') {
+ $this->callRecorder->recordCall(
+ new Phake_CallRecorder_Call($mock, $arguments[0], $arguments[1])
+ );
+ }
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/StubCaller.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/StubCaller.php
new file mode 100644
index 00000000..b76f26fe
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/InvocationHandler/StubCaller.php
@@ -0,0 +1,92 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Records calls to a mock object's call recorder.
+ */
+class Phake_ClassGenerator_InvocationHandler_StubCaller implements Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+{
+ /**
+ * @var Phake_Stubber_StubMapper
+ */
+ private $stubMapper;
+
+ /**
+ * @var Phake_Stubber_IAnswer
+ */
+ private $defaultAnswer;
+
+ /**
+ * @param Phake_Stubber_StubMapper $stubMapper
+ * @param Phake_Stubber_IAnswer $defaultAnswer
+ */
+ public function __construct(Phake_Stubber_StubMapper $stubMapper, Phake_Stubber_IAnswer $defaultAnswer)
+ {
+ $this->stubMapper = $stubMapper;
+ $this->defaultAnswer = $defaultAnswer;
+ }
+
+ public function invoke($mock, $method, array $arguments, array &$argumentReference)
+ {
+ $stub = null;
+
+ if ($method == '__call' || $method == '__callStatic') {
+ $stub = $this->stubMapper->getStubByCall($arguments[0], $argumentReference[1]);
+ }
+
+ if ($stub === null) {
+ $stub = $this->stubMapper->getStubByCall($method, $argumentReference);
+ }
+
+ if ($stub === null) {
+ $answer = $this->defaultAnswer;
+ } else {
+ $answer = $stub->getAnswer();
+ }
+
+ return $answer;
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/MockClass.php b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/MockClass.php
new file mode 100644
index 00000000..9c80608d
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/ClassGenerator/MockClass.php
@@ -0,0 +1,657 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Creates and executes the code necessary to create a mock class.
+ *
+ * @author Mike Lively
+ */
+class Phake_ClassGenerator_MockClass
+{
+ private static $unsafeClasses = array('Memcached');
+ /**
+ * @var \Phake_ClassGenerator_ILoader
+ */
+ private $loader;
+
+ private $reservedWords = array(
+ 'abstract' => 'abstract',
+ 'and' => 'and',
+ 'array' => 'array',
+ 'as' => 'as',
+ 'break' => 'break',
+ 'case' => 'case',
+ 'catch' => 'catch',
+ 'class' => 'class',
+ 'clone' => 'clone',
+ 'const' => 'const',
+ 'continue' => 'continue',
+ 'declare' => 'declare',
+ 'default' => 'default',
+ 'do' => 'do',
+ 'else' => 'else',
+ 'elseif' => 'elseif',
+ 'enddeclare' => 'enddeclare',
+ 'endfor' => 'endfor',
+ 'endforeach' => 'endforeach',
+ 'endif' => 'endif',
+ 'endswitch' => 'endswitch',
+ 'endwhile' => 'endwhile',
+ 'extends' => 'extends',
+ 'final' => 'final',
+ 'for' => 'for',
+ 'foreach' => 'foreach',
+ 'function' => 'function',
+ 'global' => 'global',
+ 'goto' => 'goto',
+ 'if' => 'if',
+ 'implements' => 'implements',
+ 'interface' => 'interface',
+ 'instanceof' => 'instanceof',
+ 'namespace' => 'namespace',
+ 'new' => 'new',
+ 'or' => 'or',
+ 'private' => 'private',
+ 'protected' => 'protected',
+ 'public' => 'public',
+ 'static' => 'static',
+ 'switch' => 'switch',
+ 'throw' => 'throw',
+ 'try' => 'try',
+ 'use' => 'use',
+ 'var' => 'var',
+ 'while' => 'while',
+ 'xor' => 'xor',
+ 'die' => 'die',
+ 'echo' => 'echo',
+ 'empty' => 'empty',
+ 'exit' => 'exit',
+ 'eval' => 'eval',
+ 'include' => 'include',
+ 'include_once' => 'include_once',
+ 'isset' => 'isset',
+ 'list' => 'list',
+ 'require' => 'require',
+ 'require_once' => 'require_once',
+ 'return' => 'return',
+ 'print' => 'print',
+ 'unset' => 'unset',
+ '__halt_compiler' => '__halt_compiler'
+ );
+
+ /**
+ * @param Phake_ClassGenerator_ILoader $loader
+ */
+ public function __construct(Phake_ClassGenerator_ILoader $loader = null)
+ {
+ if (empty($loader)) {
+ $loader = new Phake_ClassGenerator_EvalLoader();
+ }
+
+ $this->loader = $loader;
+ }
+
+ /**
+ * Generates a new class with the given class name
+ *
+ * @param string $newClassName - The name of the new class
+ * @param string $mockedClassName - The name of the class being mocked
+ * @param Phake_Mock_InfoRegistry $infoRegistry
+
+ * @return NULL
+ */
+ public function generate($newClassName, $mockedClassName, Phake_Mock_InfoRegistry $infoRegistry)
+ {
+ $extends = '';
+ $implements = '';
+ $interfaces = array();
+ $parent = null;
+ $constructor = '';
+
+ $mockedClassNames = (array)$mockedClassName;
+ $mockedClasses = array();
+
+ foreach ($mockedClassNames as $mockedClassName)
+ {
+ $mockedClass = new ReflectionClass($mockedClassName);
+ $mockedClasses[] = $mockedClass;
+
+ if (!$mockedClass->isInterface()) {
+ if (!empty($parent))
+ {
+ throw new RuntimeException("You cannot use two classes in the same mock: {$parent->getName()}, {$mockedClass->getName()}. Use interfaces instead.");
+ }
+ $parent = $mockedClass;
+ } else {
+ if ($mockedClass->implementsInterface('Traversable') &&
+ !$mockedClass->implementsInterface('Iterator') &&
+ !$mockedClass->implementsInterface('IteratorAggregate')
+ ) {
+ $interfaces[] = new ReflectionClass('Iterator');
+ if ($mockedClass->getName() != 'Traversable') {
+ $interfaces[] = $mockedClass;
+ }
+ }
+ else
+ {
+ $interfaces[] = $mockedClass;
+ }
+ }
+ }
+
+ $interfaces = array_unique($interfaces);
+
+ if (!empty($parent))
+ {
+ $extends = "extends {$parent->getName()}";
+ }
+
+ $interfaceNames = array_map(function (ReflectionClass $c) { return $c->getName(); }, $interfaces);
+ if(($key = array_search('Phake_IMock', $interfaceNames)) !== false) {
+ unset($interfaceNames[$key]);
+ }
+ if (!empty($interfaceNames))
+ {
+ $implements = ', ' . implode(',', $interfaceNames);
+ }
+
+ if (empty($parent))
+ {
+ $mockedClass = array_shift($interfaces);
+ }
+ else
+ {
+ $mockedClass = $parent;
+ }
+
+ $classDef = "
+class {$newClassName} {$extends}
+ implements Phake_IMock {$implements}
+{
+ public \$__PHAKE_info;
+
+ public static \$__PHAKE_staticInfo;
+
+ const __PHAKE_name = '{$mockedClassName}';
+
+ public \$__PHAKE_constructorArgs;
+
+ {$constructor}
+
+ /**
+ * @return void
+ */
+ public function __destruct() {}
+
+ {$this->generateSafeConstructorOverride($mockedClasses)}
+
+ {$this->generateMockedMethods($mockedClass, $interfaces)}
+}
+";
+
+ $this->loadClass($newClassName, $mockedClassName, $classDef);
+ $newClassName::$__PHAKE_staticInfo = $this->createMockInfo($mockedClassName, new Phake_CallRecorder_Recorder(), new Phake_Stubber_StubMapper(), new Phake_Stubber_Answers_NoAnswer());
+ $infoRegistry->addInfo($newClassName::$__PHAKE_staticInfo);
+ }
+
+ private function loadClass($newClassName, $mockedClassName, $classDef)
+ {
+ $isUnsafe = in_array($mockedClassName, self::$unsafeClasses);
+
+ $oldErrorReporting = ini_get('error_reporting');
+ if ($isUnsafe)
+ {
+ error_reporting($oldErrorReporting & ~E_STRICT);
+ }
+ $this->loader->loadClassByString($newClassName, $classDef);
+ if ($isUnsafe)
+ {
+ error_reporting($oldErrorReporting);
+ }
+ }
+
+ /**
+ * Instantiates a new instance of the given mocked class, and configures Phake data structures on said object.
+ *
+ * @param string $newClassName
+ * @param Phake_CallRecorder_Recorder $recorder
+ * @param Phake_Stubber_StubMapper $mapper
+ * @param Phake_Stubber_IAnswer $defaultAnswer
+ * @param array $constructorArgs
+ *
+ * @return Phake_IMock of type $newClassName
+ */
+ public function instantiate(
+ $newClassName,
+ Phake_CallRecorder_Recorder $recorder,
+ Phake_Stubber_StubMapper $mapper,
+ Phake_Stubber_IAnswer $defaultAnswer,
+ array $constructorArgs = null
+ ) {
+
+ $mockObject = $this->instanciateMockObject($newClassName);
+ $mockObject->__PHAKE_info = $this->createMockInfo($newClassName::__PHAKE_name, $recorder, $mapper, $defaultAnswer);
+ $mockObject->__PHAKE_constructorArgs = $constructorArgs;
+
+ if (null !== $constructorArgs && method_exists($mockObject, '__construct')) {
+ call_user_func_array(array($mockObject, '__construct'), $constructorArgs);
+ }
+
+ return $mockObject;
+ }
+
+ /**
+ * Instantiates a new instance of the given mocked class.
+ *
+ * @param $newClassName
+ * @return object
+ */
+ protected function instanciateMockObject ($newClassName) {
+
+ $reflClass = new ReflectionClass($newClassName);
+ $constructor = $reflClass->getConstructor();
+
+ if ($constructor == null || ($constructor->class == $newClassName && $constructor->getNumberOfParameters() == 0)) {
+ return new $newClassName;
+ }
+
+ if (method_exists($reflClass, "newInstanceWithoutConstructor")) {
+ try {
+ return $reflClass->newInstanceWithoutConstructor();
+ } catch (ReflectionException $ignore) {
+ /* Failed to create object, the class might be final. */
+ }
+ }
+
+ if (!is_subclass_of($newClassName, "Serializable")) {
+ /* Try to unserialize, this skips the constructor */
+ return unserialize(sprintf('O:%d:"%s":0:{}', strlen($newClassName), $newClassName));
+ }
+
+ /* Object implements custom unserialization */
+ return unserialize(sprintf('C:%d:"%s":0:{}', strlen($newClassName), $newClassName));
+ }
+
+ /**
+ * Generate mock implementations of all public and protected methods in the mocked class.
+ *
+ * @param ReflectionClass $mockedClass
+ * @param ReflectionClass[] $mockedInterfaces
+ *
+ * @return string
+ */
+ protected function generateMockedMethods(ReflectionClass $mockedClass, array $mockedInterfaces = array(), &$implementedMethods = array())
+ {
+ $methodDefs = '';
+ $filter = ReflectionMethod::IS_ABSTRACT | ReflectionMethod::IS_PROTECTED | ReflectionMethod::IS_PUBLIC | ~ReflectionMethod::IS_FINAL;
+
+ if (empty($implementedMethods))
+ {
+ $implementedMethods = $this->reservedWords;
+ }
+ foreach ($mockedClass->getMethods($filter) as $method) {
+ $methodName = $method->getName();
+ if (!$method->isConstructor() && !$method->isDestructor() && !$method->isFinal()
+ && !isset($implementedMethods[$methodName])
+ ) {
+ $implementedMethods[$methodName] = $methodName;
+ $methodDefs .= $this->implementMethod($method, $method->isStatic()) . "\n";
+ }
+ }
+
+ foreach ($mockedInterfaces as $interface) {
+ $methodDefs .= $this->generateMockedMethods($interface, array(), $implementedMethods);
+ }
+
+ return $methodDefs;
+ }
+
+
+ private function isConstructorDefinedInInterface(ReflectionClass $mockedClass)
+ {
+ $constructor = $mockedClass->getConstructor();
+
+ if (empty($constructor) && $mockedClass->hasMethod('__construct'))
+ {
+ $constructor = $mockedClass->getMethod('__construct');
+ }
+
+ if (empty($constructor))
+ {
+ return false;
+ }
+
+ $reflectionClass = $constructor->getDeclaringClass();
+
+ if ($reflectionClass->isInterface())
+ {
+ return true;
+ }
+
+ /* @var ReflectionClass $interface */
+ foreach ($reflectionClass->getInterfaces() as $interface)
+ {
+ if ($interface->getConstructor() !== null || $interface->hasMethod('__construct'))
+ {
+ return true;
+ }
+ }
+
+ $parent = $reflectionClass->getParentClass();
+ if (!empty($parent))
+ {
+ return $this->isConstructorDefinedInInterface($parent);
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ private function isConstructorDefinedAndFinal(ReflectionClass $mockedClass)
+ {
+ $constructor = $mockedClass->getConstructor();
+ if (!empty($constructor) && $constructor->isFinal()) {
+ return true;
+ }
+
+ return false;
+ }
+
+ private function generateSafeConstructorOverride(array $mockedClasses)
+ {
+ $overrideConstructor = true;
+
+ foreach ($mockedClasses as $class)
+ {
+ $overrideConstructor = $overrideConstructor
+ && !$this->isConstructorDefinedAndFinal($class)
+ && !$this->isConstructorDefinedInInterface($class);
+
+ if (!$class->isInterface())
+ {
+ $realClass = $class;
+ }
+ }
+ if ($overrideConstructor && !empty($realClass))
+ {
+ $constructorDef = "
+ public function __construct()
+ {
+ {$this->getConstructorChaining($realClass)}
+ }
+";
+ return $constructorDef;
+ }
+ else
+ {
+ return '';
+ }
+ }
+
+
+ /**
+ * Creates the constructor implementation
+ *
+ * @param ReflectionClass $originalClass
+ * @return string
+ */
+ protected function getConstructorChaining(ReflectionClass $originalClass)
+ {
+ return $originalClass->hasMethod('__construct') ? "
+
+ if (is_array(\$this->__PHAKE_constructorArgs))
+ {
+ call_user_func_array(array(\$this, 'parent::__construct'), \$this->__PHAKE_constructorArgs);
+ \$this->__PHAKE_constructorArgs = null;
+ }
+ " : "";
+ }
+
+ /**
+ * Creates the implementation of a single method
+ *
+ * @param ReflectionMethod $method
+ *
+ * @return string
+ */
+ protected function implementMethod(ReflectionMethod $method, $static = false)
+ {
+ $modifiers = implode(
+ ' ',
+ Reflection::getModifierNames($method->getModifiers() & ~ReflectionMethod::IS_ABSTRACT)
+ );
+
+ $reference = $method->returnsReference() ? '&' : '';
+
+ if ($static)
+ {
+ $context = '__CLASS__';
+ }
+ else
+ {
+ $context = '$this';
+ }
+
+ $returnHint = '';
+ $nullReturn = 'null';
+ $resultReturn = '$__PHAKE_result';
+ if (method_exists($method, 'hasReturnType') && $method->hasReturnType())
+ {
+ $returnType = $method->getReturnType();
+ $returnHint = ' : ' . $returnType;
+
+ if ($returnType == 'void')
+ {
+ $nullReturn = '';
+ $resultReturn = '';
+ }
+ }
+
+ $docComment = $method->getDocComment() ?: '';
+ $methodDef = "
+ {$docComment}
+ {$modifiers} function {$reference}{$method->getName()}({$this->generateMethodParameters($method)}){$returnHint}
+ {
+ \$__PHAKE_args = array();
+ {$this->copyMethodParameters($method)}
+
+ \$__PHAKE_info = Phake::getInfo({$context});
+ if (\$__PHAKE_info === null) {
+ return {$nullReturn};
+ }
+
+ \$__PHAKE_funcArgs = func_get_args();
+ \$__PHAKE_answer = \$__PHAKE_info->getHandlerChain()->invoke({$context}, '{$method->getName()}', \$__PHAKE_funcArgs, \$__PHAKE_args);
+
+ \$__PHAKE_callback = \$__PHAKE_answer->getAnswerCallback({$context}, '{$method->getName()}');
+
+ if (\$__PHAKE_callback instanceof Phake_Stubber_Answers_ParentDelegateCallback)
+ {
+ \$__PHAKE_result = \$__PHAKE_callback(\$__PHAKE_args);
+ }
+ else
+ {
+ \$__PHAKE_result = call_user_func_array(\$__PHAKE_callback, \$__PHAKE_args);
+ }
+ \$__PHAKE_answer->processAnswer(\$__PHAKE_result);
+ return {$resultReturn};
+ }
+";
+
+ return $methodDef;
+ }
+
+ /**
+ * Generates the code for all the parameters of a given method.
+ *
+ * @param ReflectionMethod $method
+ *
+ * @return string
+ */
+ protected function generateMethodParameters(ReflectionMethod $method)
+ {
+ $parameters = array();
+ foreach ($method->getParameters() as $parameter) {
+ $parameters[] = $this->implementParameter($parameter);
+ }
+
+ return implode(', ', $parameters);
+ }
+
+ /**
+ * Generates the code for all the parameters of a given method.
+ *
+ * @param ReflectionMethod $method
+ *
+ * @return string
+ */
+ protected function copyMethodParameters(ReflectionMethod $method)
+ {
+ $copies = "\$funcGetArgs = func_get_args();\n\t\t\$__PHAKE_numArgs = count(\$funcGetArgs);\n\t\t";
+ $variadicParameter = false;
+ $parameterCount = count($method->getParameters());
+ foreach ($method->getParameters() as $parameter) {
+ $pos = $parameter->getPosition();
+ if (method_exists($parameter, 'isVariadic') && $parameter->isVariadic()) {
+ $parameterCount--;
+ $variadicParameter = $parameter->getName();
+ break;
+ }
+ else {
+ $copies .= "if ({$pos} < \$__PHAKE_numArgs) \$__PHAKE_args[] =& \${$parameter->getName()};\n\t\t";
+ }
+ }
+
+ if ($variadicParameter)
+ {
+ $copies .= "for (\$__PHAKE_i = " . $parameterCount . "; \$__PHAKE_i < \$__PHAKE_numArgs; \$__PHAKE_i++) \$__PHAKE_args[] =& \${$variadicParameter}[\$__PHAKE_i - $parameterCount];\n\t\t";
+ }
+ else
+ {
+ $copies .= "for (\$__PHAKE_i = " . $parameterCount . "; \$__PHAKE_i < \$__PHAKE_numArgs; \$__PHAKE_i++) \$__PHAKE_args[] = func_get_arg(\$__PHAKE_i);\n\t\t";
+ }
+
+ return $copies;
+ }
+
+ /**
+ * Generates the code for an individual method parameter.
+ *
+ * @param ReflectionParameter $parameter
+ *
+ * @return string
+ */
+ protected function implementParameter(ReflectionParameter $parameter)
+ {
+ $default = '';
+ $type = '';
+
+ try
+ {
+ if ($parameter->isArray()) {
+ $type = 'array ';
+ } elseif (method_exists($parameter, 'isCallable') && $parameter->isCallable()) {
+ $type = 'callable ';
+ } elseif ($parameter->getClass() !== null) {
+ $type = $parameter->getClass()->getName() . ' ';
+ } elseif (method_exists($parameter, 'hasType') && $parameter->hasType())
+ {
+ $type = $parameter->getType() . ' ';
+ }
+ }
+ catch (ReflectionException $e)
+ {
+ //HVVM is throwing an exception when pulling class name when said class does not exist
+ if (!defined('HHVM_VERSION'))
+ {
+ throw $e;
+ }
+ }
+
+ $variadic = '';
+ if ($parameter->isDefaultValueAvailable()) {
+ $default = ' = ' . var_export($parameter->getDefaultValue(), true);
+ } elseif (method_exists($parameter, 'isVariadic') && $parameter->isVariadic()) {
+ $variadic = '...';
+ } elseif ($parameter->isOptional()) {
+ $default = ' = null';
+ }
+
+ return $type . ($parameter->isPassedByReference() ? '&' : '') . $variadic . '$' . $parameter->getName() . $default;
+ }
+
+ /**
+ * @param $newClassName
+ * @param Phake_CallRecorder_Recorder $recorder
+ * @param Phake_Stubber_StubMapper $mapper
+ * @param Phake_Stubber_IAnswer $defaultAnswer
+ * @return Phake_Mock_Info
+ */
+ private function createMockInfo(
+ $className,
+ Phake_CallRecorder_Recorder $recorder,
+ Phake_Stubber_StubMapper $mapper,
+ Phake_Stubber_IAnswer $defaultAnswer
+ ) {
+ $info = new Phake_Mock_Info($className, $recorder, $mapper, $defaultAnswer);
+
+ $info->setHandlerChain(
+ new Phake_ClassGenerator_InvocationHandler_Composite(array(
+ new Phake_ClassGenerator_InvocationHandler_FrozenObjectCheck($info),
+ new Phake_ClassGenerator_InvocationHandler_CallRecorder($info->getCallRecorder()),
+ new Phake_ClassGenerator_InvocationHandler_MagicCallRecorder($info->getCallRecorder()),
+ new Phake_ClassGenerator_InvocationHandler_StubCaller($info->getStubMapper(), $info->getDefaultAnswer(
+ )),
+ ))
+ );
+
+ $info->getStubMapper()->mapStubToMatcher(
+ new Phake_Stubber_AnswerCollection(new Phake_Stubber_Answers_StaticAnswer('Mock for ' . $info->getName())),
+ new Phake_Matchers_MethodMatcher('__toString', null)
+ );
+
+ return $info;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Client/Default.php b/html2pdf-master/vendor/phake/phake/src/Phake/Client/Default.php
new file mode 100644
index 00000000..5b0f1991
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Client/Default.php
@@ -0,0 +1,63 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * The default client adapter used by Phake.
+ */
+class Phake_Client_Default implements Phake_Client_IClient
+{
+ public function processVerifierResult(Phake_CallRecorder_VerifierResult $result)
+ {
+ if ($result->getVerified()) {
+ return $result->getMatchedCalls();
+ } else {
+ throw new Phake_Exception_VerificationException($result->getFailureDescription());
+ }
+ }
+
+ public function processObjectFreeze()
+ {
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Client/IClient.php b/html2pdf-master/vendor/phake/phake/src/Phake/Client/IClient.php
new file mode 100644
index 00000000..787c5f97
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Client/IClient.php
@@ -0,0 +1,63 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Defines the interface for Phake clients.
+ */
+interface Phake_Client_IClient
+{
+ /**
+ * Handles the processing of a verifier result. When the verifier is true it should return the matched calls.
+ * The behavior for if the verifier is false is up to the client.
+ *
+ * @param Phake_CallRecorder_VerifierResult $result
+ */
+ public function processVerifierResult(Phake_CallRecorder_VerifierResult $result);
+
+ /**
+ * Used to notify the client that a mock has been frozen.
+ */
+ public function processObjectFreeze();
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Client/PHPUnit.php b/html2pdf-master/vendor/phake/phake/src/Phake/Client/PHPUnit.php
new file mode 100644
index 00000000..aae0db98
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Client/PHPUnit.php
@@ -0,0 +1,75 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * The client adapter used for PHPUnit.
+ *
+ * This adapter allows PHPUnit to report failed verify() calls as test failures instead of errors. It also counts
+ * verify() calls as assertions.
+ */
+class Phake_Client_PHPUnit implements Phake_Client_IClient
+{
+ public function processVerifierResult(Phake_CallRecorder_VerifierResult $result)
+ {
+ PHPUnit_Framework_Assert::assertThat($result, $this->getConstraint());
+
+ return $result->getMatchedCalls();
+ }
+
+ public function processObjectFreeze()
+ {
+ PHPUnit_Framework_Assert::assertThat(true, PHPUnit_Framework_Assert::isTrue());
+ }
+
+ private function getConstraint()
+ {
+ if (version_compare('3.6.0', PHPUnit_Runner_Version::id()) == 1) {
+ return new Phake_PHPUnit_VerifierResultConstraint();
+ } else {
+ return new Phake_PHPUnit_VerifierResultConstraintV3d6();
+ }
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Exception/MethodMatcherException.php b/html2pdf-master/vendor/phake/phake/src/Phake/Exception/MethodMatcherException.php
new file mode 100644
index 00000000..24a5b5e5
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Exception/MethodMatcherException.php
@@ -0,0 +1,36 @@
+argument = 0;
+ }
+
+ /**
+ * Updates the argument position (used in the argument chain)
+ */
+ public function incrementArgumentPosition()
+ {
+ $this->argument++;
+ }
+
+ /**
+ * Returns the argument's position (0 indexed)
+ * @return int
+ */
+ public function getArgumentPosition()
+ {
+ return $this->argument;
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Exception/VerificationException.php b/html2pdf-master/vendor/phake/phake/src/Phake/Exception/VerificationException.php
new file mode 100644
index 00000000..79913766
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Exception/VerificationException.php
@@ -0,0 +1,13 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A facade class providing functionality to interact with the Phake framework.
+ *
+ * @author Mike Lively
+ */
+class Phake_Facade
+{
+ private $cachedClasses;
+
+ /**
+ * @var Phake_Mock_InfoRegistry
+ */
+ private $infoRegistry;
+
+ /**
+ * @param Phake_Mock_InfoRegistry $infoRegistry
+ */
+ public function __construct(Phake_Mock_InfoRegistry $infoRegistry)
+ {
+ $this->cachedClasses = array();
+ $this->infoRegistry = $infoRegistry;
+ }
+
+ /**
+ * Creates a new mock class than can be stubbed and verified.
+ *
+ * @param string|array $mockedClassList - The name(s) of the class to mock
+ * @param Phake_ClassGenerator_MockClass $mockGenerator - The generator used to construct mock classes
+ * @param Phake_CallRecorder_Recorder $callRecorder
+ * @param Phake_Stubber_IAnswer $defaultAnswer
+ * @param array $constructorArgs
+ *
+ * @throws InvalidArgumentException
+ * @return mixed
+ */
+ public function mock(
+ $mockedClassList,
+ Phake_ClassGenerator_MockClass $mockGenerator,
+ Phake_CallRecorder_Recorder $callRecorder,
+ Phake_Stubber_IAnswer $defaultAnswer,
+ array $constructorArgs = null
+ ) {
+ $mockedClassList = (array)$mockedClassList;
+
+ foreach ($mockedClassList as $mockedClass)
+ if (!class_exists($mockedClass, true) && !interface_exists($mockedClass, true)) {
+ throw new InvalidArgumentException("The class / interface [{$mockedClass}] does not exist. Check the spelling and make sure it is loadable.");
+ }
+
+ if (!isset($this->cachedClasses[implode('__', $mockedClassList)])) {
+ $newClassName = $this->generateUniqueClassName($mockedClassList);
+ $mockGenerator->generate($newClassName, $mockedClassList, $this->infoRegistry);
+
+ $this->cachedClasses[implode('__', $mockedClassList)] = $newClassName;
+ }
+
+ return $mockGenerator->instantiate(
+ $this->cachedClasses[implode('__', $mockedClassList)],
+ $callRecorder,
+ new Phake_Stubber_StubMapper(),
+ $defaultAnswer,
+ $constructorArgs
+ );
+ }
+
+ public function resetStaticInfo()
+ {
+ $this->infoRegistry->resetAll();
+ }
+
+ /**
+ * Generates a unique class name based on a given name.
+ *
+ * The $base will be used as the prefix for the new class name.
+ *
+ * @param string $base
+ *
+ * @return string
+ */
+ private function generateUniqueClassName(array $bases)
+ {
+ $base_class_name = array();
+ foreach ($bases as $base)
+ {
+ $ns_parts = explode('\\', $base);
+ $base = array_pop($ns_parts);
+ //Cygwin will drop a period from uniqid
+ $base_class_name[] = str_replace('.', '', uniqid($base . '_PHAKE'));
+ }
+
+ $i = 1;
+
+ $base_class_name = implode('__', $base_class_name);
+
+ while (class_exists($base_class_name . $i, false)) {
+ $i++;
+ }
+
+ return $base_class_name . $i;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/IMock.php b/html2pdf-master/vendor/phake/phake/src/Phake/IMock.php
new file mode 100644
index 00000000..32e6e53b
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/IMock.php
@@ -0,0 +1,52 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * The interface for Phake test double objects.
+ *
+ * Just a marker interface.
+ */
+interface Phake_IMock
+{
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AbstractChainableArgumentMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AbstractChainableArgumentMatcher.php
new file mode 100644
index 00000000..3f622ff2
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AbstractChainableArgumentMatcher.php
@@ -0,0 +1,74 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Implements the base setNextMatcher() getNextMatcher for chaining.
+ */
+abstract class Phake_Matchers_AbstractChainableArgumentMatcher implements Phake_Matchers_IChainableArgumentMatcher
+{
+ private $nextMatcher;
+
+ public function setNextMatcher(Phake_Matchers_IChainableArgumentMatcher $nextMatcher)
+ {
+ $nextMatcher->assertPreviousMatcher($this);
+ $this->nextMatcher = $nextMatcher;
+ }
+
+ /**
+ * @return Phake_Matchers_IChainableArgumentMatcher
+ */
+ public function getNextMatcher()
+ {
+ return $this->nextMatcher;
+ }
+
+ /**
+ * @param Phake_Matchers_IChainableArgumentMatcher $matcher
+ * @throws InvalidArgumentException When this matcher cannot be chained to the previous matcher.
+ * @return null
+ */
+ public function assertPreviousMatcher(Phake_Matchers_IChainableArgumentMatcher $matcher)
+ {
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AnyParameters.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AnyParameters.php
new file mode 100644
index 00000000..182a0822
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/AnyParameters.php
@@ -0,0 +1,79 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A matcher that will return true for any invocation of a particular method
+ */
+class Phake_Matchers_AnyParameters extends Phake_Matchers_AbstractChainableArgumentMatcher
+{
+ /**
+ * Do nothing, any parameters always matches
+ *
+ * @param array $arguments
+ */
+ public function doArgumentsMatch(array &$arguments)
+ {
+ }
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString()
+ {
+ return '';
+ }
+
+ public function setNextMatcher(Phake_Matchers_IChainableArgumentMatcher $nextMatcher)
+ {
+ throw new InvalidArgumentException('Other matchers cannot be passed with any parameters. It will not work the '
+ . 'way you think it works');
+ }
+
+ public function assertPreviousMatcher(Phake_Matchers_IChainableArgumentMatcher $matcher)
+ {
+ throw new InvalidArgumentException('Other matchers cannot be passed with any parameters. It will not work the '
+ . 'way you think it works');
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ArgumentCaptor.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ArgumentCaptor.php
new file mode 100644
index 00000000..e9470549
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ArgumentCaptor.php
@@ -0,0 +1,145 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Used to capture the value passed as a parameter to a verified method for further assertions.
+ *
+ * The constructor takes a parameter by reference that is populated when the matching runs.
+ */
+class Phake_Matchers_ArgumentCaptor extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var mixed
+ */
+ private $boundVariable;
+
+ /**
+ * @var array
+ */
+ private $allCapturedValues;
+
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $matcher;
+
+ /**
+ * @param mixed $boundVariable - reference parameter
+ */
+ public function __construct(&$boundVariable)
+ {
+ $this->boundVariable =& $boundVariable;
+ $this->allCapturedValues = array();
+ }
+
+ /**
+ * Binds the passed in variable to the allCapturedValues array
+ *
+ * $values will be set to an array
+ *
+ * @param array $values
+ */
+ public function bindAllCapturedValues(&$values)
+ {
+ $values = $this->allCapturedValues;
+ $this->allCapturedValues = &$values;
+ }
+
+ /**
+ * Executes the matcher on a given argument value. Returns TRUE on a match, FALSE otherwise.
+ *
+ * Will bind the argument to the variable passed to the constructor.
+ *
+ * @param mixed $argument
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ protected function matches(&$argument)
+ {
+ $args = array();
+ $args[] =& $argument;
+
+ if ($this->matcher !== null)
+ {
+ try
+ {
+ $this->matcher->doArgumentsMatch($args);
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ throw new Phake_Exception_MethodMatcherException(trim("Failed in Phake::capture()->when()\n" . $e->getMessage()), $e);
+ }
+ }
+ $this->boundVariable = $argument;
+ $this->allCapturedValues[] = $argument;
+ }
+
+ /**
+ * Assigns a matcher to the captor.
+ *
+ * This allows an argument to only be captured if the argument meets a specific criteria. This
+ * is useful if one method is called multiple times.
+ *
+ * The same matcher factory used by the verifier and stubber is used here.
+ *
+ * @param mixed $matcher
+ *
+ * @return Phake_Matchers_ArgumentCaptor the current instance
+ */
+ public function when($matcher)
+ {
+ $factory = new Phake_Matchers_Factory();
+
+ $this->matcher = $factory->createMatcher($matcher);
+
+ return $this;
+ }
+
+ public function __toString()
+ {
+ return sprintf(
+ '',
+ isset($this->matcher) ? " that is {$this->matcher->__toString()}" : ''
+ );
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ChainedArgumentMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ChainedArgumentMatcher.php
new file mode 100644
index 00000000..b3f7672e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ChainedArgumentMatcher.php
@@ -0,0 +1,89 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Adapts argument matchers into chainable argument matchers.
+ */
+class Phake_Matchers_ChainedArgumentMatcher extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var Phake_Matchers_IArgumentMatcher
+ */
+ private $adaptedMatcher;
+
+ /**
+ * @param Phake_Matchers_IArgumentMatcher $adaptedMatcher
+ */
+ public function __construct(Phake_Matchers_IArgumentMatcher $adaptedMatcher)
+ {
+ $this->adaptedMatcher = $adaptedMatcher;
+ }
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString()
+ {
+ return $this->adaptedMatcher->__toString();
+ }
+
+ public function getAdaptedMatcher()
+ {
+ return $this->adaptedMatcher;
+ }
+
+ /**
+ * Executes the matcher on a given argument value. Returns TRUE on a match, FALSE otherwise.
+ *
+ * @param mixed $argument
+ *
+ * @return boolean
+ */
+ protected function matches(&$argument)
+ {
+ $this->adaptedMatcher->matches($argument);
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/EqualsMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/EqualsMatcher.php
new file mode 100644
index 00000000..2306ec09
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/EqualsMatcher.php
@@ -0,0 +1,98 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A matcher to validate that an argument equals a particular value.
+ *
+ * This matcher utilizes the same functionality as non-strict equality in php, in other words '=='
+ */
+class Phake_Matchers_EqualsMatcher extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**\
+ * @var \SebastianBergmann\Comparator\Factory
+ */
+ private $comparatorFactory;
+
+ /**
+ * Pass in the value that the upcoming arguments is expected to equal.
+ *
+ * @param mixed $value
+ * @param \SebastianBergmann\Comparator\Factory $comparatorFactory
+ */
+ public function __construct($value, \SebastianBergmann\Comparator\Factory $comparatorFactory)
+ {
+ $this->value = $value;
+ $this->comparatorFactory = $comparatorFactory;
+ }
+
+ /**
+ * Returns whether or not the passed argument matches the matcher.
+ */
+ protected function matches(&$argument)
+ {
+ try
+ {
+ $compare = $this->comparatorFactory->getComparatorFor($this->value, $argument);
+ $compare->assertEquals($this->value, $argument);
+ }
+ catch (\SebastianBergmann\Comparator\ComparisonFailure $e)
+ {
+ throw new Phake_Exception_MethodMatcherException(trim($e->getMessage() . "\n" . $e->getDiff()), $e);
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function __toString()
+ {
+ $converter = new Phake_String_Converter();
+ return "equal to {$converter->convertToString($this->value)}";
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/Factory.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/Factory.php
new file mode 100644
index 00000000..a791c128
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/Factory.php
@@ -0,0 +1,117 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Creates (or passes through) instances of Phake_Matchers_IArgumentMatcher using Phake's
+ * translation rules
+ */
+class Phake_Matchers_Factory
+{
+ private $comparatorFactory;
+
+ public function __construct()
+ {
+ $this->comparatorFactory = new \SebastianBergmann\Comparator\Factory();
+ }
+
+ /**
+ * Creates an argument matcher based on the given value.
+ *
+ * If the given values is already an instance of Phake_Matchers_IChainableArgumentMatcher it is passed
+ * through. If it is an instance of PHPUnit_Framework_Constraint a PHPUnit adapter is returned.
+ * If it is an instance of Hamcrest_Matcher a Hamcrest adapter is returned. For everything else
+ * a EqualsMatcher is returned set to the passed in value.
+ *
+ * @param mixed $argument
+ *
+ * @return Phake_Matchers_IChainableArgumentMatcher
+ */
+ public function createMatcher($argument, Phake_Matchers_IChainableArgumentMatcher $nextMatcher = null)
+ {
+ $return = null;
+ if ($argument instanceof Phake_Matchers_IChainableArgumentMatcher) {
+ $return = $argument;
+ } elseif ($argument instanceof PHPUnit_Framework_Constraint) {
+ $return = new Phake_Matchers_PHPUnitConstraintAdapter($argument);
+ } elseif ($argument instanceof \PHPUnit\Framework\Constraint\Constraint) {
+ $return = new Phake_Matchers_PHPUnit6ConstraintAdapter($argument);
+ } elseif ($argument instanceof Hamcrest\Matcher) {
+ $return = new Phake_Matchers_HamcrestMatcherAdapter($argument);
+ } elseif ($argument instanceof Phake_Matchers_IArgumentMatcher) {
+ $return = new Phake_Matchers_ChainedArgumentMatcher($argument);
+ } else {
+ $return = new Phake_Matchers_EqualsMatcher($argument, $this->comparatorFactory);
+ }
+
+ if ($nextMatcher !== null)
+ {
+ $return->setNextMatcher($nextMatcher);
+ }
+
+ return $return;
+ }
+
+ /**
+ * Converts an argument array into a matcher chain
+ *
+ * @param array $arguments
+ *
+ * @return Phake_Matchers_IChainableArgumentMatcher or null if the arg list was empty
+ */
+ public function createMatcherChain(array $arguments)
+ {
+ if (!count($arguments))
+ {
+ return null;
+ }
+
+ $lastMatcher = null;
+ foreach (array_reverse($arguments) as $arg) {
+ $matcher = $this->createMatcher($arg, $lastMatcher);
+
+ $lastMatcher = $matcher;
+ }
+ return $lastMatcher;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/HamcrestMatcherAdapter.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/HamcrestMatcherAdapter.php
new file mode 100644
index 00000000..51b50ed6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/HamcrestMatcherAdapter.php
@@ -0,0 +1,91 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An adapter class allowing hamcrest matchers to be used as Phake matchers
+ */
+class Phake_Matchers_HamcrestMatcherAdapter extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var Hamcrest\Matcher
+ */
+ private $matcher;
+
+ /**
+ * @param Hamcrest\Matcher $matcher
+ */
+ public function __construct(Hamcrest\Matcher $matcher)
+ {
+ $this->matcher = $matcher;
+ }
+
+ /**
+ * Executes the matcher on a given argument value.
+ *
+ * Forwards the call to Hamcrest's matches() method.
+ *
+ * @param mixed $argument
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ protected function matches(&$argument)
+ {
+ if (!$this->matcher->matches($argument))
+ {
+ $description = new \Hamcrest\StringDescription();
+ $description->appendText("Expected ")
+ ->appendDescriptionOf($this->matcher)
+ ->appendText(' but ');
+
+ $this->matcher->describeMismatch($argument, $description);
+ throw new Phake_Exception_MethodMatcherException($description);
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->matcher->__toString();
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IArgumentMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IArgumentMatcher.php
new file mode 100644
index 00000000..b52491a6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IArgumentMatcher.php
@@ -0,0 +1,64 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * The interface for argument matchers
+ */
+interface Phake_Matchers_IArgumentMatcher
+{
+ /**
+ * Executes the matcher on a given argument value. Returns TRUE on a match, FALSE otherwise.
+ *
+ * @param mixed $argument
+ *
+ * @return boolean
+ */
+ public function matches(&$argument);
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString();
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IChainableArgumentMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IChainableArgumentMatcher.php
new file mode 100644
index 00000000..36429cde
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IChainableArgumentMatcher.php
@@ -0,0 +1,88 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An argument collection matcher that can match 0 to many parameters
+ */
+interface Phake_Matchers_IChainableArgumentMatcher
+{
+ /**
+ * Assert the matcher on a given list of argument values. Throws an exception if the matcher doesn't match
+ *
+ * @param array $arguments
+ *
+ * @throw Exception
+ */
+ public function doArgumentsMatch(array &$arguments);
+
+ /**
+ * returns the next matcher in the chain
+ *
+ * @return Phake_Matchers_IChainableArgumentMatcher
+ */
+ public function getNextMatcher();
+
+ /**
+ * Sets the next matcher in the chain.
+ *
+ * @param Phake_Matchers_IChainableArgumentMatcher $matcher
+ * @return Phake_Matchers_IChainableArgumentMatcher
+ * @throws InvalidArgumentException when the given matcher cannot be chained to this matcher
+ */
+ public function setNextMatcher(Phake_Matchers_IChainableArgumentMatcher $matcher);
+
+ /**
+ * Asserts whether or not this matcher can be chained to the the given matcher
+ *
+ * @param Phake_Matchers_IChainableArgumentMatcher $matcher
+ * @throws InvalidArgumentException When this matcher cannot be chained to the previous matcher.
+ */
+ public function assertPreviousMatcher(Phake_Matchers_IChainableArgumentMatcher $matcher);
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString();
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IMethodMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IMethodMatcher.php
new file mode 100644
index 00000000..e848ddd4
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IMethodMatcher.php
@@ -0,0 +1,72 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Defines the interface for a method matchers.
+ *
+ * Method matchers are used to map stubs to method calls, as well as to check for method verifications.
+ *
+ * @author Mike Lively
+ */
+interface Phake_Matchers_IMethodMatcher
+{
+ /**
+ * Determines if the given method and arguments match the configured method and argument matchers
+ * in this object. Returns true on success, false otherwise.
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return boolean
+ */
+ public function matches($method, array &$args);
+
+ /**
+ * Accessor for the expected method.
+ *
+ * @return string
+ */
+ public function getMethod();
+
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IgnoreRemainingMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IgnoreRemainingMatcher.php
new file mode 100644
index 00000000..990fbf0f
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/IgnoreRemainingMatcher.php
@@ -0,0 +1,72 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A matcher that will return true for any invocation of a particular method
+ */
+class Phake_Matchers_IgnoreRemainingMatcher extends Phake_Matchers_AbstractChainableArgumentMatcher
+{
+ /**
+ * Do nothing, ignore remaining always matches
+ *
+ * @param array $arguments
+ */
+ public function doArgumentsMatch(array &$arguments)
+ {
+ }
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString()
+ {
+ return '';
+ }
+
+ public function setNextMatcher(Phake_Matchers_IChainableArgumentMatcher $nextMatcher)
+ {
+ throw new InvalidArgumentException('Other matchers cannot be checked after you ignore remaining parameters.');
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/MethodMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/MethodMatcher.php
new file mode 100644
index 00000000..03db4c99
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/MethodMatcher.php
@@ -0,0 +1,145 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Determines if a method and argument matchers match a given method call.
+ *
+ * @author Mike Lively
+ */
+class Phake_Matchers_MethodMatcher implements Phake_Matchers_IMethodMatcher
+{
+ /**
+ * @var string
+ */
+ private $expectedMethod;
+
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $argumentMatcherChain;
+
+ public function __construct($expectedMethod, Phake_Matchers_IChainableArgumentMatcher $argumentMatcherChain = null)
+ {
+ $this->expectedMethod = $expectedMethod;
+ $this->argumentMatcherChain = $argumentMatcherChain;
+ }
+
+ /**
+ * Determines if the given method and arguments match the configured method and argument matchers
+ * in this object. Returns true on success, false otherwise.
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return boolean
+ */
+ public function matches($method, array &$args)
+ {
+ try
+ {
+ $this->assertMatches($method, $args);
+ return true;
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Asserts whether or not the given method and arguments match the configured method and argument matchers in this \
+ * object.
+ *
+ * @param string $method
+ * @param array $args
+ * @return bool
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ public function assertMatches($method, array &$args)
+ {
+ if ($this->expectedMethod != $method)
+ {
+ throw new Phake_Exception_MethodMatcherException("Expected method {$this->expectedMethod} but received {$method}");
+ }
+
+ $this->doArgumentsMatch($args);
+ }
+
+ /**
+ * Determines whether or not given arguments match the argument matchers configured in the object.
+ *
+ * Throws an exception with a description if the arguments do not match.
+ *
+ * @param array $args
+ * @return bool
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ private function doArgumentsMatch(array &$args)
+ {
+ if ($this->argumentMatcherChain !== null)
+ {
+ try
+ {
+ $this->argumentMatcherChain->doArgumentsMatch($args);
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ $position = $e->getArgumentPosition() + 1;
+ throw new Phake_Exception_MethodMatcherException(trim("Argument #{$position} failed test\n" . $e->getMessage()), $e);
+ }
+ }
+ elseif (count($args) != 0)
+ {
+ throw new Phake_Exception_MethodMatcherException("No matchers were given to Phake::when(), but arguments were received by this method.");
+ }
+ }
+
+ /**
+ * @return string
+ */
+ public function getMethod()
+ {
+ return $this->expectedMethod;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnit6ConstraintAdapter.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnit6ConstraintAdapter.php
new file mode 100644
index 00000000..c99188a0
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnit6ConstraintAdapter.php
@@ -0,0 +1,97 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An adapter class allowing PHPUnit constraints to be treated as though they were Phake argument
+ * matchers.
+ */
+class Phake_Matchers_PHPUnit6ConstraintAdapter extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var \PHPUnit\Framework\Constraint\Constraint
+ */
+ private $constraint;
+
+ /**
+ * @param \PHPUnit\Framework\Constraint\Constraint $constraint
+ */
+ public function __construct(\PHPUnit\Framework\Constraint\Constraint $constraint)
+ {
+ $this->constraint = $constraint;
+ }
+
+ /**
+ * Executes the matcher on a given argument value.
+ *
+ * Forwards the call to PHPUnit's evaluate() method.
+ *
+ * @param mixed $argument
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ protected function matches(&$argument)
+ {
+ try
+ {
+ $this->constraint->evaluate($argument, '');
+ }
+ catch (\PHPUnit\Framework\ExpectationFailedException $e)
+ {
+ $failure = $e->getComparisonFailure();
+ if ($failure instanceof \PHPUnit\Framework\ComparisonFailure)
+ {
+ $failure = $failure->getDiff();
+ }
+ else
+ {
+ $failure = '';
+ }
+ throw new Phake_Exception_MethodMatcherException($e->getMessage() . "\n" . $failure, $e);
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->constraint->toString();
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnitConstraintAdapter.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnitConstraintAdapter.php
new file mode 100644
index 00000000..92bbbf6d
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/PHPUnitConstraintAdapter.php
@@ -0,0 +1,99 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An adapter class allowing PHPUnit constraints to be treated as though they were Phake argument
+ * matchers.
+ */
+class Phake_Matchers_PHPUnitConstraintAdapter extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var PHPUnit_Framework_Constraint
+ */
+ private $constraint;
+
+ /**
+ * @param PHPUnit_Framework_Constraint $constraint
+ */
+ public function __construct(PHPUnit_Framework_Constraint $constraint)
+ {
+ $this->constraint = $constraint;
+ }
+
+ /**
+ * Executes the matcher on a given argument value.
+ *
+ * Forwards the call to PHPUnit's evaluate() method.
+ *
+ * @param mixed $argument
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ protected function matches(&$argument)
+ {
+ try
+ {
+ $this->constraint->evaluate($argument, '');
+ }
+ catch (PHPUnit_Framework_ExpectationFailedException $e)
+ {
+ $failure = $e->getComparisonFailure();
+ if ($failure instanceof PHPUnit_Framework_ComparisonFailure)
+ {
+ $failure = $failure->getDiff();
+ }
+ else
+ {
+ $failure = '';
+ }
+ throw new Phake_Exception_MethodMatcherException($e->getMessage() . "\n" . $failure, $e);
+ }
+ }
+
+ public function __toString()
+ {
+ return $this->constraint->toString();
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ReferenceSetter.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ReferenceSetter.php
new file mode 100644
index 00000000..e3b741d2
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/ReferenceSetter.php
@@ -0,0 +1,120 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+class Phake_Matchers_ReferenceSetter extends Phake_Matchers_SingleArgumentMatcher
+{
+ /**
+ * @var mixed
+ */
+ private $value;
+
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $matcher;
+
+ /**
+ * @param mixed $value The value to set the reference parameter to.
+ */
+ public function __construct($value)
+ {
+ $this->value = $value;
+ }
+
+ /**
+ * Executes the matcher on a given argument value.
+ *
+ * Sets the $argument to the value passed in the constructor
+ *
+ * @param mixed $argument
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ protected function matches(&$argument)
+ {
+ $args = array();
+ $args[] =& $argument;
+ if ($this->matcher !== null)
+ {
+ try
+ {
+ $this->matcher->doArgumentsMatch($args);
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ throw new Phake_Exception_MethodMatcherException(trim("Failed in Phake::setReference()->when()\n" . $e->getMessage()), $e);
+ }
+ $this->matcher->doArgumentsMatch($args);
+ }
+ $argument = $this->value;
+ }
+
+ /**
+ * Returns a human readable description of the argument matcher
+ * @return string
+ */
+ public function __toString()
+ {
+ return '';
+ }
+
+ /**
+ * Assigns a matcher to the setter.
+ *
+ * This allows an argument to only be set if the original argument meets a specific criteria.
+ *
+ * The same matcher factory used by the verifier and stubber is used here.
+ *
+ * @param mixed $matcher
+ *
+ * @return Phake_Matchers_ReferenceSetter the current instance
+ */
+ public function when($matcher)
+ {
+ $factory = new Phake_Matchers_Factory();
+
+ $this->matcher = $factory->createMatcher($matcher);
+
+ return $this;
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/SingleArgumentMatcher.php b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/SingleArgumentMatcher.php
new file mode 100644
index 00000000..44be6832
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Matchers/SingleArgumentMatcher.php
@@ -0,0 +1,91 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Implements matches so that you can easily match a single argument
+ */
+abstract class Phake_Matchers_SingleArgumentMatcher extends Phake_Matchers_AbstractChainableArgumentMatcher {
+
+ /**
+ * Executes the matcher on a given list of argument values. Returns TRUE on a match, FALSE otherwise.
+ *
+ * @param array $arguments
+ * @throws Phake_Exception_MethodMatcherException
+ */
+ public function doArgumentsMatch(array &$arguments)
+ {
+ $argumentCopy = $arguments;
+ $nextArgument =& $arguments[0];
+ array_shift($argumentCopy);
+ $this->matches($nextArgument);
+
+ $nextMatcher = $this->getNextMatcher();
+ if (!isset($nextMatcher))
+ {
+ if (count($argumentCopy) != 0)
+ {
+ throw new Phake_Exception_MethodMatcherException("There were more arguments than matchers");
+ }
+ }
+ else
+ {
+ try
+ {
+ $this->getNextMatcher()->doArgumentsMatch($argumentCopy);
+ }
+ catch (Phake_Exception_MethodMatcherException $e)
+ {
+ $e->incrementArgumentPosition();
+ throw $e;
+ }
+ }
+ }
+
+ /**
+ * Asserts the matcher on a given argument value. Throws an exception on false
+ *
+ * @param mixed $argument
+ */
+ abstract protected function matches(&$argument);
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Freezer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Freezer.php
new file mode 100644
index 00000000..fd174fce
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Freezer.php
@@ -0,0 +1,65 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Freezes a mock so that no other calls can be made
+ *
+ * @see Phake_ClassGeneration_InvocationHandler_FrozenObjectCheck
+ */
+class Phake_Mock_Freezer
+{
+ /**
+ * Freezes the given $mock and notifies the given $client
+ *
+ * @param Phake_Mock_Info $mockInfo
+ * @param Phake_Client_IClient $client
+ */
+ public function freeze(Phake_Mock_Info $mockInfo, Phake_Client_IClient $client)
+ {
+ $client->processObjectFreeze();
+ $mockInfo->freezeObject();
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Info.php b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Info.php
new file mode 100644
index 00000000..f3841c4a
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/Info.php
@@ -0,0 +1,130 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Stores data about the mock object.
+ *
+ * @author Mike Lively
+ */
+class Phake_Mock_Info {
+ private $uniqId;
+
+ private $recorder;
+
+ private $mapper;
+
+ private $answer;
+
+ private $frozen;
+
+ private $name;
+
+ /**
+ * @var Phake_ClassGenerator_InvocationHandler_IInvocationHandler
+ */
+ private $handlerChain;
+
+ public function __construct($name, Phake_CallRecorder_Recorder $recorder, Phake_Stubber_StubMapper $mapper, Phake_Stubber_IAnswer $defaultAnswer)
+ {
+ $this->uniqId = uniqid('', true);
+ $this->recorder = $recorder;
+ $this->mapper = $mapper;
+ $this->answer = $defaultAnswer;
+ $this->frozen = false;
+ $this->name = $name;
+ }
+
+ public function getCallRecorder()
+ {
+ return $this->recorder;
+ }
+
+ public function getStubMapper()
+ {
+ return $this->mapper;
+ }
+
+ public function getDefaultAnswer()
+ {
+ return $this->answer;
+ }
+
+ public function isObjectFrozen()
+ {
+ return $this->frozen;
+ }
+
+ public function freezeObject()
+ {
+ $this->frozen = true;
+ }
+
+ public function thawObject()
+ {
+ $this->frozen = false;
+ }
+
+ public function getHandlerChain()
+ {
+ return $this->handlerChain;
+ }
+
+ public function setHandlerChain(Phake_ClassGenerator_InvocationHandler_IInvocationHandler $handlerChain)
+ {
+ $this->handlerChain = $handlerChain;
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ public function resetInfo()
+ {
+ $this->thawObject();
+ $this->mapper->removeAllAnswers();
+ $this->recorder->removeAllCalls();
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Mock/InfoRegistry.php b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/InfoRegistry.php
new file mode 100644
index 00000000..123e3b2e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Mock/InfoRegistry.php
@@ -0,0 +1,64 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Stores all Phake_Mock_Info instances for static classes.
+ */
+class Phake_Mock_InfoRegistry {
+ private $registry = array();
+
+ public function addInfo(Phake_Mock_Info $info)
+ {
+ $this->registry[] = $info;
+ }
+
+ public function resetAll()
+ {
+ /* @var $info Phake_Mock_Info */
+ foreach ($this->registry as $info)
+ {
+ $info->resetInfo();
+ }
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraint.php b/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraint.php
new file mode 100644
index 00000000..b678de86
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraint.php
@@ -0,0 +1,73 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A PHPUnit constraint that wraps a phake verifier to allow assertions on expected calls.
+ */
+class Phake_PHPUnit_VerifierResultConstraint extends PHPUnit_Framework_Constraint
+{
+ public function evaluate($other, $description = '', $returnResult = FALSE)
+ {
+ if (!$other instanceof Phake_CallRecorder_VerifierResult) {
+ throw new InvalidArgumentException("You must pass an instance of Phake_CallRecorder_VerifierResult");
+ }
+ return $other->getVerified();
+ }
+
+ public function toString()
+ {
+ return 'is called';
+ }
+
+ protected function customFailureDescription($other, $description, $not)
+ {
+ if (!$other instanceof Phake_CallRecorder_VerifierResult) {
+ throw new InvalidArgumentException("You must pass an instance of Phake_CallRecorder_VerifierResult");
+ }
+
+ return $other->getFailureDescription();
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraintV3d6.php b/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraintV3d6.php
new file mode 100644
index 00000000..84586b67
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/PHPUnit/VerifierResultConstraintV3d6.php
@@ -0,0 +1,73 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A PHPUnit constraint that wraps a phake verifier to allow assertions on expected calls.
+ */
+class Phake_PHPUnit_VerifierResultConstraintV3d6 extends PHPUnit_Framework_Constraint
+{
+ protected function matches($other)
+ {
+ if (!$other instanceof Phake_CallRecorder_VerifierResult) {
+ throw new InvalidArgumentException("You must pass an instance of Phake_CallRecorder_VerifierResult");
+ }
+ return $other->getVerified();
+ }
+
+ public function toString()
+ {
+ return 'is called';
+ }
+
+ protected function failureDescription($other)
+ {
+ if (!$other instanceof Phake_CallRecorder_VerifierResult) {
+ throw new InvalidArgumentException("You must pass an instance of Phake_CallRecorder_VerifierResult");
+ }
+
+ return $other->getFailureDescription();
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerBinderProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerBinderProxy.php
new file mode 100644
index 00000000..796f8a3e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerBinderProxy.php
@@ -0,0 +1,148 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A proxy class to provide a fluent interface into the answer binder.
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_AnswerBinderProxy
+{
+ /**
+ * @var Phake_Stubber_IAnswerBinder
+ */
+ private $binder;
+
+ public function __construct(Phake_Stubber_IAnswerBinder $binder)
+ {
+ $this->binder = $binder;
+ }
+
+ /**
+ * Binds a static answer to the method and object in the proxied binder.
+ *
+ * @param mixed $value
+ *
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function thenReturn($value)
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_StaticAnswer($value));
+ }
+
+ /**
+ * Binds a Lambda answer to the method
+ *
+ * @param callback $value
+ *
+ * @deprecated Use thenReturnCallback instead.
+ * @throws InvalidArgumentException
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function thenGetReturnByLambda($value)
+ {
+ trigger_error('Use thenReturnCallback instead.', E_USER_DEPRECATED);
+ return $this->thenReturnCallback($value);
+ }
+
+ /**
+ * Binds a callback answer to the method.
+ *
+ * @param callback $value
+ *
+ * @throws InvalidArgumentException
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function thenReturnCallback($value)
+ {
+ if (!is_callable($value)) {
+ throw new InvalidArgumentException("Given lambda is not callable");
+ }
+
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_LambdaAnswer($value));
+ }
+
+ /**
+ * Binds a delegated call that will call a given method's parent.
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function thenCallParent()
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_ParentDelegate());
+ }
+
+ /**
+ * Binds an exception answer to the method and object in the proxied binder.
+ *
+ * @param Exception $value
+ *
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function thenThrow(Exception $value)
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_ExceptionAnswer($value));
+ }
+
+ /**
+ * Binds a delegated call that will call a given method's parent while capturing that value to the passed in variable.
+ *
+ * @param mixed $captor
+ *
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function captureReturnTo(&$captor)
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_ParentDelegate($captor));
+ }
+
+ public function thenDoNothing()
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_NoAnswer());
+ }
+
+ public function thenReturnSelf()
+ {
+ return $this->binder->bindAnswer(new Phake_Stubber_Answers_SelfAnswer());
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerCollectionProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerCollectionProxy.php
new file mode 100644
index 00000000..1ef6761c
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/AnswerCollectionProxy.php
@@ -0,0 +1,141 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A proxy class to provide Stub Chaining through use of an AnswerCollection
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_AnswerCollectionProxy implements Phake_Stubber_IAnswerContainer
+{
+ /**
+ * @var Phake_Stubber_AnswerCollection
+ */
+ private $collection;
+
+ /**
+ * @param Phake_Stubber_AnswerCollection $collection
+ */
+ public function __construct(Phake_Stubber_AnswerCollection $collection)
+ {
+ $this->collection = $collection;
+ }
+
+ /**
+ * Binds a static answer to the method and object in the proxied binder.
+ *
+ * @param mixed $value
+ *
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function thenReturn($value)
+ {
+ $this->collection->addAnswer(new Phake_Stubber_Answers_StaticAnswer($value));
+ return $this;
+ }
+
+ /**
+ * Binds a Lambda answer to the method
+ *
+ * @param callback $value
+ *
+ * @throws InvalidArgumentException
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function thenGetReturnByLambda($value)
+ {
+ if (!is_callable($value)) {
+ throw new InvalidArgumentException("Given lambda is not callable");
+ }
+
+ $this->collection->addAnswer(new Phake_Stubber_Answers_LambdaAnswer($value));
+
+ return $this;
+ }
+
+ /**
+ * Binds a delegated call that will call a given method's parent.
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function thenCallParent()
+ {
+ $this->collection->addAnswer(new Phake_Stubber_Answers_ParentDelegate());
+ return $this;
+ }
+
+ /**
+ * Binds an exception answer to the method and object in the proxied binder.
+ *
+ * @param Exception $value
+ *
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function thenThrow(Exception $value)
+ {
+ $this->collection->addAnswer(new Phake_Stubber_Answers_ExceptionAnswer($value));
+ return $this;
+ }
+
+ /**
+ * Binds a delegated call that will call a given method's parent while capturing that value to the passed in variable.
+ *
+ * @param mixed $captor
+ *
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function captureReturnTo(&$captor)
+ {
+ $this->collection->addAnswer(new Phake_Stubber_Answers_ParentDelegate($captor));
+ return $this;
+ }
+
+ /**
+ * Returns an answer from the container
+ * @return Phake_Stubber_IAnswer
+ */
+ public function getAnswer()
+ {
+ return $this->collection->getAnswer();
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallStubberProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallStubberProxy.php
new file mode 100644
index 00000000..50d3be2d
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallStubberProxy.php
@@ -0,0 +1,89 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A proxy to handle stubbing various calls to the magic __call method
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_CallStubberProxy
+{
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $argumentMatcher;
+
+ /**
+ * @var bool
+ */
+ private $static;
+
+ /**
+ * @param Phake_Matchers_IChainableArgumentMatcher $argumentMatcher
+ * @param bool $static
+ */
+ public function __construct(Phake_Matchers_IChainableArgumentMatcher $argumentMatcher = null, $static)
+ {
+ $this->argumentMatcher = $argumentMatcher;
+ $this->static = $static;
+ }
+
+ /**
+ * Creates an answer binder proxy associated with the matchers from the constructor and the object passed here
+ *
+ * @param Phake_IMock $obj
+ *
+ * @return Phake_Proxies_AnswerBinderProxy
+ */
+ public function isCalledOn(Phake_IMock $obj)
+ {
+ $context = $this->static ? get_class($obj) : $obj;
+ $call = $this->static ? '__callStatic' : '__call';
+ $matcher = new Phake_Matchers_MethodMatcher($call, $this->argumentMatcher);
+ $binder = new Phake_Stubber_AnswerBinder($matcher, Phake::getInfo($context)->getStubMapper());
+ return new Phake_Proxies_AnswerBinderProxy($binder);
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallVerifierProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallVerifierProxy.php
new file mode 100644
index 00000000..2ade1d3e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/CallVerifierProxy.php
@@ -0,0 +1,105 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A proxy to handle verifying various calls to the magic __call method
+ *
+ * The parameters that you would like to verify are passed into the constructor.
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_CallVerifierProxy
+{
+ /**
+ * @var Phake_Matchers_IChainableArgumentMatcher
+ */
+ private $argumentMatcher;
+
+ /**
+ * @var Phake_Client_IClient
+ */
+ private $client;
+
+ /**
+ * @var bool
+ */
+ private $static;
+
+ /**
+ * @param Phake_Matchers_IChainableArgumentMatcher $argumentMatcher
+ * @param Phake_Client_IClient $client
+ * @param bool $static
+ */
+ public function __construct(Phake_Matchers_IChainableArgumentMatcher $argumentMatcher = null, Phake_Client_IClient $client, $static)
+ {
+ $this->argumentMatcher = $argumentMatcher;
+ $this->client = $client;
+ $this->static = $static;
+ }
+
+
+ /**
+ * Verifies that the call to __call was made on the given object with the parameters passed into the constructor
+ *
+ * @param Phake_IMock $obj
+ * @param Phake_CallRecorder_IVerifierMode $verifierMode
+ *
+ * @return array
+ */
+ public function isCalledOn(Phake_IMock $obj, Phake_CallRecorder_IVerifierMode $verifierMode = null)
+ {
+ if ($verifierMode === null) {
+ $verifierMode = new Phake_CallRecorder_VerifierMode_Times(1);
+ }
+
+ $context = $this->static ? get_class($obj) : $obj;
+ $call = $this->static ? '__callStatic' : '__call';
+
+ $verifier = new Phake_CallRecorder_Verifier(Phake::getInfo($context)->getCallRecorder(), $obj);
+ $expectation = new Phake_CallRecorder_CallExpectation($context, $call, $this->argumentMatcher, $verifierMode);
+ $result = $verifier->verifyCall($expectation);
+
+ return $this->client->processVerifierResult($result);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StaticVisibilityProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StaticVisibilityProxy.php
new file mode 100644
index 00000000..cad585d2
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StaticVisibilityProxy.php
@@ -0,0 +1,92 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Acts as a proxy to any object that allows calling any private or protected method on the wrapper and forward those
+ * calls to the wrapped object.
+ *
+ * I debated alot about putting anything like this in Phake and at some point I may just pull it out into its own
+ * library. It should be used with great caution and should really only need to be used to help ease steps in
+ * refactoring of otherwise hard to reach private and protected methods
+ *
+ * @author Mike Lively
+ * @internal This class will quite likely change soon, don't use it outside of phake code
+ */
+class Phake_Proxies_StaticVisibilityProxy
+{
+ private $proxied;
+
+ public function __construct($proxied)
+ {
+ if (!is_object($proxied))
+ {
+ throw new InvalidArgumentException("Phake_Proxies_VisibilityProxy was passed a non-object");
+ }
+ $this->proxied = get_class($proxied);
+ }
+
+ /**
+ * @param $method
+ * @param $arguments
+ * @return mixed
+ */
+ public function __call($method, $arguments)
+ {
+ if (method_exists($this->proxied, $method))
+ {
+ $reflMethod = new ReflectionMethod($this->proxied, $method);
+ $reflMethod->setAccessible(true);
+ return $reflMethod->invokeArgs(null, $arguments);
+ }
+ elseif (method_exists($this->proxied, '__callStatic'))
+ {
+ $reflMethod = new ReflectionMethod($this->proxied, '__callStatic');
+ return $reflMethod->invokeArgs(null, func_get_args());
+ }
+ else
+ {
+ throw new InvalidArgumentException("Method {$method} does not exist on {$this->proxied}");
+ }
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StubberProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StubberProxy.php
new file mode 100644
index 00000000..2b959ede
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/StubberProxy.php
@@ -0,0 +1,114 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A proxy to handle stubbing a method on a mock object.
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_StubberProxy
+{
+ /**
+ * @var Phake_IMock
+ */
+ private $obj;
+
+ /**
+ * @var Phake_Matchers_Factory
+ */
+ private $matcherFactory;
+
+ /**
+ * @param Phake_IMock|string $obj
+ * @param Phake_Matchers_Factory $matcherFactory
+ */
+ public function __construct($obj, Phake_Matchers_Factory $matcherFactory)
+ {
+ Phake::assertValidMock($obj);
+ $this->obj = $obj;
+ $this->matcherFactory = $matcherFactory;
+ }
+
+ /**
+ * A magic call to instantiate an Answer Binder Proxy.
+ *
+ * @param string $method
+ * @param array $arguments
+ *
+ * @return Phake_Proxies_AnswerBinderProxy
+ */
+ public function __call($method, array $arguments)
+ {
+ $matcher = new Phake_Matchers_MethodMatcher($method, $this->matcherFactory->createMatcherChain($arguments));
+ $binder = new Phake_Stubber_AnswerBinder($matcher, Phake::getInfo($this->obj)->getStubMapper());
+ return new Phake_Proxies_AnswerBinderProxy($binder);
+ }
+
+ /**
+ * A magic call to instantiate an Answer Binder Proxy that matches any parameters.
+ *
+ * @param string $method
+ *
+ * @throws InvalidArgumentException if $method is not a valid parameter/method name
+ *
+ * @return Phake_Proxies_AnswerBinderProxy
+ */
+ public function __get($method)
+ {
+ if (is_string($method) && ctype_digit($method[0])) {
+ throw new InvalidArgumentException('String parameter to __get() cannot start with an integer');
+ }
+
+ if (!is_string($method) && !is_object($method)) { // assume an object is a matcher
+ $message = sprintf('Parameter to __get() must be a string, %s given', gettype($method));
+ throw new InvalidArgumentException($message);
+ }
+
+ if (method_exists($this->obj, '__get') && !(is_string($method) && method_exists($this->obj, $method))) {
+ return $this->__call('__get', array($method));
+ }
+
+ return $this->__call($method, array(new Phake_Matchers_AnyParameters()));
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VerifierProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VerifierProxy.php
new file mode 100644
index 00000000..77270c89
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VerifierProxy.php
@@ -0,0 +1,140 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Acts as a proxy to Phake_CallRecorder_Verifier that allows verifying methods using the magic
+ * __call() method in PHP.
+ *
+ * Also throws an exception when a verification call fails.
+ *
+ * @author Mike Lively
+ */
+class Phake_Proxies_VerifierProxy
+{
+ /**
+ * @var Phake_CallRecorder_Verifier
+ */
+ private $verifier;
+
+ /**
+ * @var Phake_Matchers_Factory
+ */
+ private $matcherFactory;
+
+ /**
+ * @var Phake_CallRecorder_IVerifierMode
+ */
+ private $mode;
+
+ /**
+ *
+ * @var Phake_Client_IClient
+ */
+ private $client;
+
+ /**
+ * @param Phake_CallRecorder_Verifier $verifier
+ * @param Phake_Matchers_Factory $matcherFactory
+ * @param Phake_CallRecorder_IVerifierMode $mode
+ * @param Phake_Client_IClient $client
+ */
+ public function __construct(
+ Phake_CallRecorder_Verifier $verifier,
+ Phake_Matchers_Factory $matcherFactory,
+ Phake_CallRecorder_IVerifierMode $mode,
+ Phake_Client_IClient $client
+ ) {
+ $this->verifier = $verifier;
+ $this->matcherFactory = $matcherFactory;
+ $this->mode = $mode;
+ $this->client = $client;
+ }
+
+ /**
+ * A call magic method to provide a more fluent interface to the verifier.
+ *
+ * @param string $method
+ * @param array $arguments
+ *
+ * @return Phake_CallRecorder_VerifierResult
+ */
+ public function __call($method, array $arguments)
+ {
+ $expectation = new Phake_CallRecorder_CallExpectation($this->verifier->getObject(
+ ), $method, $this->matcherFactory->createMatcherChain($arguments), $this->mode);
+
+ $result = $this->verifier->verifyCall($expectation);
+
+ return $this->client->processVerifierResult($result);
+ }
+
+ /**
+ * A magic call to verify a call with any parameters.
+ *
+ * @param string $method
+ *
+ * @throws InvalidArgumentException if $method is not a valid parameter/method name
+ *
+ * @return Phake_CallRecorder_VerifierResult
+ */
+ public function __get($method)
+ {
+ $obj = $this->verifier->getObject();
+
+ if (is_string($method) && ctype_digit($method[0])) {
+ throw new InvalidArgumentException('String parameter to __get() cannot start with an integer');
+ }
+
+ if (!is_string($method) && !is_object($method)) {
+ $message = sprintf('Parameter to __get() must be a string, %s given', gettype($method));
+ throw new InvalidArgumentException($message);
+ }
+
+ if (method_exists($obj, '__get') && !(is_string($method) && method_exists($obj, $method))) {
+ return $this->__call('__get', array($method));
+ }
+
+ return $this->__call($method, array(new Phake_Matchers_AnyParameters));
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VisibilityProxy.php b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VisibilityProxy.php
new file mode 100644
index 00000000..b34b6f83
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Proxies/VisibilityProxy.php
@@ -0,0 +1,92 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Acts as a proxy to any object that allows calling any private or protected method on the wrapper and forward those
+ * calls to the wrapped object.
+ *
+ * I debated alot about putting anything like this in Phake and at some point I may just pull it out into its own
+ * library. It should be used with great caution and should really only need to be used to help ease steps in
+ * refactoring of otherwise hard to reach private and protected methods
+ *
+ * @author Mike Lively
+ * @internal This class will quite likely change soon, don't use it outside of phake code
+ */
+class Phake_Proxies_VisibilityProxy
+{
+ private $proxied;
+
+ public function __construct($proxied)
+ {
+ if (!is_object($proxied))
+ {
+ throw new InvalidArgumentException("Phake_Proxies_VisibilityProxy was passed a non-object");
+ }
+ $this->proxied = $proxied;
+ }
+
+ /**
+ * @param $method
+ * @param $arguments
+ * @return mixed
+ */
+ public function __call($method, $arguments)
+ {
+ if (method_exists($this->proxied, $method))
+ {
+ $reflMethod = new ReflectionMethod(get_class($this->proxied), $method);
+ $reflMethod->setAccessible(true);
+ return $reflMethod->invokeArgs($this->proxied, $arguments);
+ }
+ elseif (method_exists($this->proxied, '__call'))
+ {
+ $reflMethod = new ReflectionMethod(get_class($this->proxied), '__call');
+ return $reflMethod->invokeArgs($this->proxied, func_get_args());
+ }
+ else
+ {
+ throw new InvalidArgumentException("Method {$method} does not exist on " . get_class($this->proxied) . '.');
+ }
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/String/Converter.php b/html2pdf-master/vendor/phake/phake/src/Phake/String/Converter.php
new file mode 100644
index 00000000..73f1ee84
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/String/Converter.php
@@ -0,0 +1,72 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A converter that accepts any variable and converts it to a printable string
+ *
+ * @author Mike Lively
+ */
+class Phake_String_Converter
+{
+ public function convertToString($value)
+ {
+ if (is_object($value)) {
+ $strValue = '';
+ } elseif (is_array($value)) {
+ $strValue = '';
+ } elseif (is_null($value)) {
+ $strValue = '';
+ } elseif (is_resource($value)) {
+ $strValue = '';
+ } elseif (is_bool($value)) {
+ $strValue = '';
+ } else {
+ $strValue = '<' . gettype($value) . ':' . $value . '>';
+ }
+
+ return $strValue;
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerBinder.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerBinder.php
new file mode 100644
index 00000000..3b5c2ec6
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerBinder.php
@@ -0,0 +1,90 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows binding an answer to stubbable object's method.
+ *
+ * @author Mike Lively
+ */
+class Phake_Stubber_AnswerBinder implements Phake_Stubber_IAnswerBinder
+{
+ /**
+ * @var Phake_Matchers_MethodMatcher
+ */
+ private $matcher;
+
+ /**
+ * @var Phake_Stubber_StubMapper
+ */
+ private $stubMapper;
+
+ /**
+ * Creates a new Answer Binder
+ *
+ * @param Phake_Matchers_MethodMatcher $matcher
+ * @param Phake_Stubber_StubMapper $stubMapper
+ */
+ public function __construct(Phake_Matchers_MethodMatcher $matcher, Phake_Stubber_StubMapper $stubMapper)
+ {
+ $this->matcher = $matcher;
+ $this->stubMapper = $stubMapper;
+ }
+
+ /**
+ * Binds an answer to the the classes
+ *
+ * @param Phake_Stubber_IAnswer $answer
+ *
+ * @return Phake_Proxies_AnswerCollectionProxy
+ */
+ public function bindAnswer(Phake_Stubber_IAnswer $answer)
+ {
+ $collection = new Phake_Stubber_AnswerCollection($answer);
+ $this->stubMapper->mapStubToMatcher($collection, $this->matcher);
+
+ return new Phake_Proxies_AnswerCollectionProxy($collection);
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerCollection.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerCollection.php
new file mode 100644
index 00000000..693caa7f
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/AnswerCollection.php
@@ -0,0 +1,97 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows iteration over a series of answers. Simply calling getAnswer() will result in the appropriate
+ * answer being returned. You do not need to manage the iteration manually.
+ *
+ * If there are no answers left to return, the last answer is returned again.
+ */
+class Phake_Stubber_AnswerCollection implements Phake_Stubber_IAnswerContainer
+{
+ /**
+ * @var array
+ */
+ private $answers;
+
+ /**
+ * Adds the passed answer to a new answer collection.
+ *
+ * @param Phake_Stubber_IAnswer $answer
+ */
+ public function __construct(Phake_Stubber_IAnswer $answer)
+ {
+ $this->answers = array($answer);
+ }
+
+ /**
+ * Adds a new answer to the end of the collection.
+ *
+ * @param Phake_Stubber_IAnswer $answer
+ */
+ public function addAnswer(Phake_Stubber_IAnswer $answer)
+ {
+ $this->answers[] = $answer;
+ }
+
+ /**
+ * Returns the next answer in the collection.
+ *
+ * @return Phake_Stubber_IAnswer
+ */
+ public function getAnswer()
+ {
+ $answer = current($this->answers);
+
+ if ($answer === false) {
+ $answer = end($this->answers);
+ }
+
+ next($this->answers);
+
+ return $answer;
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ExceptionAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ExceptionAnswer.php
new file mode 100644
index 00000000..01932794
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ExceptionAnswer.php
@@ -0,0 +1,76 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows providing an exception to throw to a stubbed method call.
+ *
+ * @author Brian Feaver
+ */
+class Phake_Stubber_Answers_ExceptionAnswer implements Phake_Stubber_IAnswer
+{
+ /**
+ * @var mixed
+ */
+ private $answer;
+
+ /**
+ * @param mixed $answer
+ */
+ public function __construct(Exception $answer)
+ {
+ $this->answer = $answer;
+ }
+
+ public function getAnswerCallback($context, $method)
+ {
+ $answer = $this->answer;
+ return function () use ($answer) {
+ throw $answer;
+ };
+ }
+
+ public function processAnswer($answer)
+ {
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/InvalidAnswerException.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/InvalidAnswerException.php
new file mode 100644
index 00000000..cf2360e5
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/InvalidAnswerException.php
@@ -0,0 +1,50 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Thrown when an invalid answer is created or used
+ */
+class Phake_Stubber_Answers_InvalidAnswerException extends LogicException
+{
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/LambdaAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/LambdaAnswer.php
new file mode 100644
index 00000000..ad83b43b
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/LambdaAnswer.php
@@ -0,0 +1,40 @@
+
+ */
+class Phake_Stubber_Answers_LambdaAnswer implements Phake_Stubber_IAnswer
+{
+ /**
+ * @var mixed
+ */
+ private $answerLambda;
+
+ /**
+ * @param mixed $answerLambda
+ */
+ public function __construct($answerLambda)
+ {
+ $this->answerLambda = $answerLambda;
+ }
+
+ /**
+ * Nothing to process
+ *
+ * @param mixed $answer
+ *
+ * @return null
+ */
+ public function processAnswer($answer)
+ {
+ }
+
+ public function getAnswerCallback($context, $method)
+ {
+ return $this->answerLambda;
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/NoAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/NoAnswer.php
new file mode 100644
index 00000000..83cda498
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/NoAnswer.php
@@ -0,0 +1,58 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows providing a static answer to a stubbed method call.
+ *
+ * @author Mike Lively
+ */
+class Phake_Stubber_Answers_NoAnswer extends Phake_Stubber_Answers_StaticAnswer
+{
+ public function __construct()
+ {
+ parent::__construct(null);
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegate.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegate.php
new file mode 100644
index 00000000..127bda8e
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegate.php
@@ -0,0 +1,106 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An answer delegate that allows mocked methods to call their parent methods.
+ *
+ * If a particular method does not have a parent (ie abstract methods) then a static null answer (effectively) is used
+ * instead.
+ *
+ * This class is both the delegator and the delegate.
+ */
+class Phake_Stubber_Answers_ParentDelegate implements Phake_Stubber_IAnswer
+{
+ private $capturedReturn;
+
+ public function __construct(&$captor = null)
+ {
+ $this->capturedReturn =& $captor;
+ }
+
+ public function processAnswer($answer)
+ {
+ $this->capturedReturn = $answer;
+ }
+
+ public function getAnswerCallback($context, $method)
+ {
+ $fallback = array($this, "getFallback");
+ try
+ {
+ $reflClass = new ReflectionClass($context);
+ $reflParent = $reflClass->getParentClass();
+
+ if (!is_object($reflParent))
+ {
+ return $fallback;
+ }
+
+ $reflMethod = $reflParent->getMethod($method);
+
+ if (!$reflMethod->isAbstract())
+ {
+ if (defined('HHVM_VERSION'))
+ {
+ return array('parent', $method);
+ }
+ else
+ {
+ return new Phake_Stubber_Answers_ParentDelegateCallback($context, $reflMethod);
+ }
+ }
+ }
+ catch (ReflectionException $e)
+ {
+ }
+ return $fallback;
+ }
+
+ public function getFallback()
+ {
+ return null;
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegateCallback.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegateCallback.php
new file mode 100644
index 00000000..be70e73d
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/ParentDelegateCallback.php
@@ -0,0 +1,78 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * A callable class that allows for calling parent methods without losing references.
+ */
+class Phake_Stubber_Answers_ParentDelegateCallback
+{
+ private $context;
+
+ /**
+ * @var ReflectionMethod
+ */
+ private $parentMethod;
+
+ public function __construct($context, ReflectionMethod $parentMethod)
+ {
+ $this->context = $context;
+ $this->parentMethod = $parentMethod;
+ }
+
+ public function __invoke(array $arguments)
+ {
+ $this->parentMethod->setAccessible(true);
+ if ($this->parentMethod->isStatic())
+ {
+ $context = null;
+ }
+ else
+ {
+ $context = $this->context;
+ }
+ return $this->parentMethod->invokeArgs($context, $arguments);
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SelfAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SelfAnswer.php
new file mode 100644
index 00000000..460e70cd
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SelfAnswer.php
@@ -0,0 +1,74 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+class Phake_Stubber_Answers_SelfAnswer implements Phake_Stubber_IAnswer
+{
+
+ /**
+ * Returns the answer that should be used when a method stubbed to this answer is called.
+ * @param mixed $context class name or object instance
+ * @param string $method
+ * @return callable
+ */
+ public function getAnswerCallback($context, $method)
+ {
+ if (!is_object($context))
+ {
+ throw new Phake_Stubber_Answers_InvalidAnswerException("Invalid context for " . __CLASS__ . ". You can only use this answer on non-static methods");
+ }
+ return function () use ($context)
+ {
+ return $context;
+ };
+ }
+
+ /**
+ * Allows for post processing an answer if necessary
+ * @param mixed $answer
+ * @return mixed
+ */
+ public function processAnswer($answer)
+ {
+ }
+}
\ No newline at end of file
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SmartDefaultAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SmartDefaultAnswer.php
new file mode 100644
index 00000000..8e2b30b0
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/SmartDefaultAnswer.php
@@ -0,0 +1,102 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Returns the proper default value for a method based on the return type.
+ *
+ * @author Mike Lively
+ */
+class Phake_Stubber_Answers_SmartDefaultAnswer implements Phake_Stubber_IAnswer
+{
+ public function processAnswer($answer)
+ {
+
+ }
+
+ public function getAnswerCallback($context, $method)
+ {
+ $class = new ReflectionClass($context);
+ $method = $class->getMethod($method);
+
+ $defaultAnswer = null;
+
+ if (method_exists($method, 'hasReturnType') && $method->hasReturnType())
+ {
+ switch ((string)$method->getReturnType())
+ {
+ case 'int':
+ $defaultAnswer = 0;
+ break;
+ case 'float':
+ $defaultAnswer = 0.0;
+ break;
+ case 'string':
+ $defaultAnswer = "";
+ break;
+ case 'bool':
+ $defaultAnswer = false;
+ break;
+ case 'array':
+ $defaultAnswer = array();
+ break;
+ case 'callable':
+ $defaultAnswer = function () {};
+ break;
+ default:
+ if (class_exists((string)$method->getReturnType()))
+ {
+ $defaultAnswer = Phake::mock((string)$method->getReturnType());
+ }
+ break;
+ }
+ }
+
+ return function () use ($defaultAnswer)
+ {
+ return $defaultAnswer;
+ };
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/StaticAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/StaticAnswer.php
new file mode 100644
index 00000000..4b2d3a88
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/Answers/StaticAnswer.php
@@ -0,0 +1,79 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows providing a static answer to a stubbed method call.
+ *
+ * @author Mike Lively
+ */
+class Phake_Stubber_Answers_StaticAnswer implements Phake_Stubber_IAnswer
+{
+ /**
+ * @var mixed
+ */
+ private $answer;
+
+ /**
+ * @param mixed $answer
+ */
+ public function __construct($answer)
+ {
+ $this->answer = $answer;
+ }
+
+ public function processAnswer($answer)
+ {
+
+ }
+
+ public function getAnswerCallback($context, $method)
+ {
+ $answer = $this->answer;
+ return function () use ($answer) {
+ return $answer;
+ };
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswer.php
new file mode 100644
index 00000000..07d3b416
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswer.php
@@ -0,0 +1,65 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Defines an interface for answers
+ */
+interface Phake_Stubber_IAnswer
+{
+ /**
+ * Returns the answer that should be used when a method stubbed to this answer is called.
+ * @param mixed $context class name or object instance
+ * @param string $method
+ * @return callable
+ */
+ public function getAnswerCallback($context, $method);
+
+ /**
+ * Allows for post processing an answer if necessary
+ * @param mixed $answer
+ * @return mixed
+ */
+ public function processAnswer($answer);
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerBinder.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerBinder.php
new file mode 100644
index 00000000..3ccbb8b9
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerBinder.php
@@ -0,0 +1,60 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Provides the interface for an answer binder
+ */
+interface Phake_Stubber_IAnswerBinder
+{
+ /**
+ * Binds the given answer to an object.
+ *
+ * Returns an answer container that will contain the given answer.
+ *
+ * @param Phake_Stubber_IAnswer $answer
+ *
+ * @return Phake_Stubber_IAnswerContainer
+ */
+ public function bindAnswer(Phake_Stubber_IAnswer $answer);
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerContainer.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerContainer.php
new file mode 100644
index 00000000..5d4213f9
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/IAnswerContainer.php
@@ -0,0 +1,55 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Answer containers are classes used to store answers.
+ */
+interface Phake_Stubber_IAnswerContainer
+{
+ /**
+ * Returns an answer from the container
+ * @return Phake_Stubber_IAnswer
+ */
+ public function getAnswer();
+}
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/SelfBindingAnswerBinder.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/SelfBindingAnswerBinder.php
new file mode 100644
index 00000000..7d83dcf9
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/SelfBindingAnswerBinder.php
@@ -0,0 +1,81 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * An answer binder that binds the answer to itself providing access via getAnswer()
+ *
+ * @todo probably not the best to do this, kind of dual purposing an interface :(
+ */
+class Phake_Stubber_SelfBindingAnswerBinder implements Phake_Stubber_IAnswerBinder, Phake_Stubber_IAnswerContainer
+{
+ /**
+ * @var Phake_Stubber_IAnswer
+ */
+ private $answer;
+
+ /**
+ * Binds the given answer to the current object.
+ *
+ * @param Phake_Stubber_IAnswer $answer
+ *
+ * @return $this|\Phake_Stubber_IAnswerContainer
+ */
+ public function bindAnswer(Phake_Stubber_IAnswer $answer)
+ {
+ $this->answer = $answer;
+
+ return $this;
+ }
+
+ /**
+ * Returns the answer bound to this object.
+ * @return Phake_Stubber_IAnswer
+ */
+ public function getAnswer()
+ {
+ return $this->answer;
+ }
+}
+
+
diff --git a/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/StubMapper.php b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/StubMapper.php
new file mode 100644
index 00000000..f211286f
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/src/Phake/Stubber/StubMapper.php
@@ -0,0 +1,99 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * Allows mapping of Answer collections to methods.
+ *
+ * @author Mike Lively
+ */
+class Phake_Stubber_StubMapper
+{
+ /**
+ * @var array
+ */
+ private $matcherStubMap = array();
+
+ /**
+ * Maps a given answer collection to a given $matcher
+ *
+ * @param Phake_Stubber_AnswerCollection $answer
+ * @param Phake_Matchers_IMethodMatcher $matcher
+ */
+ public function mapStubToMatcher(Phake_Stubber_AnswerCollection $answer, Phake_Matchers_IMethodMatcher $matcher)
+ {
+ $this->matcherStubMap[$matcher->getMethod()][] = array($matcher, $answer);
+ }
+
+ /**
+ * Returns the answer collection based on a matcher that matches a given call
+ *
+ * @param string $method
+ * @param array $args
+ *
+ * @return Phake_Stubber_AnswerCollection or NULL if a matcher is not found
+ */
+ public function getStubByCall($method, array &$args)
+ {
+ $matcherStubMap = isset($this->matcherStubMap[$method]) ? array_reverse($this->matcherStubMap[$method]) : array();
+
+ foreach ($matcherStubMap as $item) {
+ list($matcher, $answer) = $item;
+
+ /* @var $matcher Phake_Matchers_MethodMatcher */
+ if ($matcher->matches($method, $args)) {
+ return $answer;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Removes all answer collections from the stub mapper.
+ */
+ public function removeAllAnswers()
+ {
+ $this->matcherStubMap = array();
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/MockInitializerTest.php b/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/MockInitializerTest.php
new file mode 100644
index 00000000..6eecfa71
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/MockInitializerTest.php
@@ -0,0 +1,131 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+use PhakeTest\AnotherNamespacedClass;
+
+/**
+ * @ann1 Test Annotation
+ * @ann2
+ */
+class Phake_Annotation_MockInitializerTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @var Phake_Annotation_MockInitializer
+ */
+ private $initializer;
+
+ /**
+ * @Mock stdClass
+ */
+ private $mock1;
+
+ /**
+ * @Mock
+ * @var stdClass
+ */
+ private $mock2;
+
+ /**
+ * @Mock
+ * @var \PhakeTest\NamespacedClass
+ */
+ private $shortNameMock1;
+
+ /**
+ * @Mock AnotherNamespacedClass
+ */
+ private $shortNameMock2;
+
+ protected function setUp()
+ {
+ if (version_compare(PHP_VERSION, '5.3', '<')) {
+ $this->markTestSkipped('ReflectionProperty::setAccessible() is not available');
+ }
+
+ $this->initializer = new Phake_Annotation_MockInitializer();
+ }
+
+ protected function tearDown()
+ {
+ $this->initializer = null;
+ $this->mock1 = $this->mock2 = null;
+ $this->shortNameMock1 = $this->shortNameMock2 = null;
+ }
+
+ public function testInitialize()
+ {
+ if (version_compare(PHP_VERSION, '5.3', '<')) {
+ $this->markTestSkipped('ReflectionProperty::setAccessible() is not available');
+ }
+
+ $this->initializer->initialize($this);
+
+ $this->assertInstanceOf('stdClass', $this->mock1);
+ $this->assertInstanceOf('stdClass', $this->mock2);
+ $this->assertInstanceOf('Phake_IMock', $this->mock1);
+ $this->assertInstanceOf('Phake_IMock', $this->mock2);
+ }
+
+ /**
+ * @depends testInitialize
+ */
+ public function testNamespaceAliasOnVar()
+ {
+ $this->initializer->initialize($this);
+
+ $this->assertInstanceOf('Phake_IMock', $this->shortNameMock1);
+ }
+
+ /**
+ * @depends testInitialize
+ */
+ public function testNamespaceAliasOnMock()
+ {
+ $this->initializer->initialize($this);
+
+ $this->assertInstanceOf('Phake_IMock', $this->shortNameMock2);
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/ReaderTest.php b/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/ReaderTest.php
new file mode 100644
index 00000000..a8f3e9d0
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/tests/Phake/Annotation/ReaderTest.php
@@ -0,0 +1,101 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+/**
+ * @ann1 Test Annotation
+ * @ann2
+ */
+class Phake_Annotation_ReaderTest extends PHPUnit_Framework_TestCase
+{
+ /**
+ * @ann3 Test Annotation
+ * @ann4
+ */
+ private $reader;
+
+ /**
+ * @ann4
+ */
+ private $emptyVar;
+
+ private $emptyVar2;
+
+ protected function setUp()
+ {
+ $reflectionClass = new ReflectionClass($this);
+ $this->reader = new Phake_Annotation_Reader($reflectionClass);
+ }
+
+ protected function tearDown()
+ {
+ $this->reader = null;
+ $this->emptyVar = null;
+ $this->emptyVar2 = null;
+ }
+
+ public function testReadingAnnotationsFromAProperty()
+ {
+ $annotations = $this->reader->getPropertyAnnotations('reader');
+
+ $expectedAnnotations = array(
+ 'ann3' => 'Test Annotation',
+ 'ann4' => true,
+ );
+ $this->assertEquals($expectedAnnotations, $annotations);
+ }
+
+ public function testGettingPropertiesWithAnnotation()
+ {
+ $properties = $this->reader->getPropertiesWithAnnotation('ann4');
+
+ $expectedProperties = array(
+ 'emptyVar',
+ 'reader',
+ );
+ sort($properties);
+ $this->assertEquals($expectedProperties, $properties);
+ }
+}
+
diff --git a/html2pdf-master/vendor/phake/phake/tests/Phake/BuiltInExtensionsTest.php b/html2pdf-master/vendor/phake/phake/tests/Phake/BuiltInExtensionsTest.php
new file mode 100644
index 00000000..ae8ca15d
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/tests/Phake/BuiltInExtensionsTest.php
@@ -0,0 +1,58 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively
+ * @copyright 2010 Mike Lively
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @link http://www.digitalsandwich.com/
+ */
+
+class Phake_BuiltinExtensionsTest extends PHPUnit_Framework_TestCase
+{
+ public function testMemcachedGet()
+ {
+ if (!extension_loaded('memcached'))
+ {
+ $this->markTestSkipped("Cannot run test without memcached");
+ }
+
+ $mock = Phake::mock('Memcached');
+
+ $this->assertInstanceOf('Memcached', $mock);
+ }
+}
diff --git a/html2pdf-master/vendor/phake/phake/tests/Phake/CallRecorder/CallExpectationTest.php b/html2pdf-master/vendor/phake/phake/tests/Phake/CallRecorder/CallExpectationTest.php
new file mode 100644
index 00000000..274c9491
--- /dev/null
+++ b/html2pdf-master/vendor/phake/phake/tests/Phake/CallRecorder/CallExpectationTest.php
@@ -0,0 +1,90 @@
+
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Mike Lively nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package Phake
+ * @author Mike Lively