diff options
209 files changed, 4498 insertions, 2719 deletions
diff --git a/composer.json b/composer.json index 83f88d5302..210689ea64 100644 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "illuminate/container": "~5.8", "illuminate/database": "~5.8", "illuminate/support": "~5.8", - "league/commonmark": "~0.19", + "league/commonmark": "~1.0", "league/commonmark-ext-table": "*", "league/flysystem": "~1.0", "league/flysystem-cached-adapter": "~1.0", diff --git a/composer.lock b/composer.lock index e71b286d67..0f86c74ed1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e985d41c6792f3aef8439cbcb40662f9", + "content-hash": "83c1b33874e11da13b001df25ac2b64a", "packages": [ { "name": "doctrine/cache", @@ -366,16 +366,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.9", + "version": "2.1.10", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25" + "reference": "a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec", + "reference": "a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec", "shasum": "" }, "require": { @@ -385,7 +385,8 @@ "require-dev": { "dominicsayers/isemail": "dev-master", "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" + "satooshi/php-coveralls": "^1.0.1", + "symfony/phpunit-bridge": "^4.4@dev" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -419,7 +420,7 @@ "validation", "validator" ], - "time": "2019-06-23T10:14:27+00:00" + "time": "2019-07-19T20:52:08+00:00" }, { "name": "ezyang/htmlpurifier", @@ -919,7 +920,7 @@ }, { "name": "illuminate/cache", - "version": "v5.8.28", + "version": "v5.8.30", "source": { "type": "git", "url": "https://github.com/illuminate/cache.git", @@ -968,16 +969,16 @@ }, { "name": "illuminate/container", - "version": "v5.8.28", + "version": "v5.8.30", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", - "reference": "c025a7a87d25101904175de2019e73828b0f30c9" + "reference": "7afee1ef2cb53190a98d727ea77096b6a610c05e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/c025a7a87d25101904175de2019e73828b0f30c9", - "reference": "c025a7a87d25101904175de2019e73828b0f30c9", + "url": "https://api.github.com/repos/illuminate/container/zipball/7afee1ef2cb53190a98d727ea77096b6a610c05e", + "reference": "7afee1ef2cb53190a98d727ea77096b6a610c05e", "shasum": "" }, "require": { @@ -1009,20 +1010,20 @@ ], "description": "The Illuminate Container package.", "homepage": "https://laravel.com", - "time": "2019-07-09T13:26:41+00:00" + "time": "2019-07-16T13:14:16+00:00" }, { "name": "illuminate/contracts", - "version": "v5.8.28", + "version": "v5.8.30", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8" + "reference": "00fc6afee788fa07c311b0650ad276585f8aef96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8", - "reference": "f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/00fc6afee788fa07c311b0650ad276585f8aef96", + "reference": "00fc6afee788fa07c311b0650ad276585f8aef96", "shasum": "" }, "require": { @@ -1053,20 +1054,20 @@ ], "description": "The Illuminate Contracts package.", "homepage": "https://laravel.com", - "time": "2019-06-24T11:16:37+00:00" + "time": "2019-07-30T13:57:21+00:00" }, { "name": "illuminate/database", - "version": "v5.8.28", + "version": "v5.8.30", "source": { "type": "git", "url": "https://github.com/illuminate/database.git", - "reference": "ffedc9b15d42e90294fb51b3de795eb9610da1ab" + "reference": "760ef316055ab69f711746e0455442d9b6b6db93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/database/zipball/ffedc9b15d42e90294fb51b3de795eb9610da1ab", - "reference": "ffedc9b15d42e90294fb51b3de795eb9610da1ab", + "url": "https://api.github.com/repos/illuminate/database/zipball/760ef316055ab69f711746e0455442d9b6b6db93", + "reference": "760ef316055ab69f711746e0455442d9b6b6db93", "shasum": "" }, "require": { @@ -1113,20 +1114,20 @@ "orm", "sql" ], - "time": "2019-06-28T13:27:57+00:00" + "time": "2019-07-29T14:26:41+00:00" }, { "name": "illuminate/support", - "version": "v5.8.28", + "version": "v5.8.30", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "b60e70c9bd3c6d61cbb4343459755470fd5ad818" + "reference": "1d82de27c37ee6e8493dac0521cbda5b9456626c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/b60e70c9bd3c6d61cbb4343459755470fd5ad818", - "reference": "b60e70c9bd3c6d61cbb4343459755470fd5ad818", + "url": "https://api.github.com/repos/illuminate/support/zipball/1d82de27c37ee6e8493dac0521cbda5b9456626c", + "reference": "1d82de27c37ee6e8493dac0521cbda5b9456626c", "shasum": "" }, "require": { @@ -1174,7 +1175,7 @@ ], "description": "The Illuminate Support package.", "homepage": "https://laravel.com", - "time": "2019-07-05T17:41:14+00:00" + "time": "2019-07-26T06:46:07+00:00" }, { "name": "intervention/image", @@ -1248,16 +1249,16 @@ }, { "name": "league/commonmark", - "version": "0.19.3", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c6ecea928b432ae417fa9942840bbfd8c332448c" + "reference": "7a40f2b0931602c504c2a9692d9f1e33635fd5ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c6ecea928b432ae417fa9942840bbfd8c332448c", - "reference": "c6ecea928b432ae417fa9942840bbfd8c332448c", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/7a40f2b0931602c504c2a9692d9f1e33635fd5ef", + "reference": "7a40f2b0931602c504c2a9692d9f1e33635fd5ef", "shasum": "" }, "require": { @@ -1287,7 +1288,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.20-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -1314,7 +1315,7 @@ "markdown", "parser" ], - "time": "2019-06-18T18:29:15+00:00" + "time": "2019-06-29T11:19:01+00:00" }, { "name": "league/commonmark-ext-table", @@ -1622,16 +1623,16 @@ }, { "name": "nesbot/carbon", - "version": "2.21.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "da6410b77f74eecd98d24ffb6dfecefccf3ca17f" + "reference": "1a0e48b5f656065ba3c265b058b25d36c2162a5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/da6410b77f74eecd98d24ffb6dfecefccf3ca17f", - "reference": "da6410b77f74eecd98d24ffb6dfecefccf3ca17f", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/1a0e48b5f656065ba3c265b058b25d36c2162a5e", + "reference": "1a0e48b5f656065ba3c265b058b25d36c2162a5e", "shasum": "" }, "require": { @@ -1642,7 +1643,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.6", + "phpmd/phpmd": "dev-php-7.1-compatibility", "phpstan/phpstan": "^0.11", "phpunit/phpunit": "^7.5 || ^8.0", "squizlabs/php_codesniffer": "^3.4" @@ -1685,7 +1686,7 @@ "datetime", "time" ], - "time": "2019-07-14T17:06:46+00:00" + "time": "2019-07-28T09:02:12+00:00" }, { "name": "nyholm/psr7", @@ -2532,16 +2533,16 @@ }, { "name": "symfony/cache", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "4acf343c9e3aea5a00d51926c01125441707635c" + "reference": "d263af3cec33afa862310e58545fdc10d779806f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/4acf343c9e3aea5a00d51926c01125441707635c", - "reference": "4acf343c9e3aea5a00d51926c01125441707635c", + "url": "https://api.github.com/repos/symfony/cache/zipball/d263af3cec33afa862310e58545fdc10d779806f", + "reference": "d263af3cec33afa862310e58545fdc10d779806f", "shasum": "" }, "require": { @@ -2606,7 +2607,7 @@ "caching", "psr6" ], - "time": "2019-06-26T07:55:28+00:00" + "time": "2019-06-28T13:16:30+00:00" }, { "name": "symfony/cache-contracts", @@ -2668,16 +2669,16 @@ }, { "name": "symfony/debug", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd" + "reference": "527887c3858a2462b0137662c74837288b998ee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", + "url": "https://api.github.com/repos/symfony/debug/zipball/527887c3858a2462b0137662c74837288b998ee3", + "reference": "527887c3858a2462b0137662c74837288b998ee3", "shasum": "" }, "require": { @@ -2720,20 +2721,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2019-06-19T15:27:09+00:00" + "time": "2019-07-23T11:21:36+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" + "reference": "212b020949331b6531250584531363844b34a94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/212b020949331b6531250584531363844b34a94e", + "reference": "212b020949331b6531250584531363844b34a94e", "shasum": "" }, "require": { @@ -2790,7 +2791,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2019-06-27T06:42:14+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -2852,7 +2853,7 @@ }, { "name": "symfony/expression-language", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", @@ -2903,16 +2904,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d" + "reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e1b507fcfa4e87d192281774b5ecd4265370180d", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8b778ee0c27731105fbf1535f51793ad1ae0ba2b", + "reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b", "shasum": "" }, "require": { @@ -2954,20 +2955,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2019-06-26T09:25:00+00:00" + "time": "2019-07-23T11:21:36+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d" + "reference": "a414548d236ddd8fa3df52367d583e82339c5e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4150f71e27ed37a74700561b77e3dbd754cbb44d", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a414548d236ddd8fa3df52367d583e82339c5e95", + "reference": "a414548d236ddd8fa3df52367d583e82339c5e95", "shasum": "" }, "require": { @@ -3046,20 +3047,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2019-06-26T14:26:16+00:00" + "time": "2019-07-28T07:10:23+00:00" }, { "name": "symfony/mime", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b" + "reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "url": "https://api.github.com/repos/symfony/mime/zipball/6b7148029b1dd5eda1502064f06d01357b7b2d8b", + "reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b", "shasum": "" }, "require": { @@ -3105,7 +3106,7 @@ "mime", "mime-type" ], - "time": "2019-06-04T09:22:54+00:00" + "time": "2019-07-19T16:21:19+00:00" }, { "name": "symfony/polyfill-ctype", @@ -3518,16 +3519,16 @@ }, { "name": "symfony/translation", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" + "reference": "4e3e39cc485304f807622bdc64938e4633396406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", + "url": "https://api.github.com/repos/symfony/translation/zipball/4e3e39cc485304f807622bdc64938e4633396406", + "reference": "4e3e39cc485304f807622bdc64938e4633396406", "shasum": "" }, "require": { @@ -3590,7 +3591,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2019-07-18T10:34:59+00:00" }, { "name": "symfony/translation-contracts", @@ -3651,7 +3652,7 @@ }, { "name": "symfony/var-exporter", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", @@ -3775,25 +3776,25 @@ "packages-dev": [ { "name": "composer/ca-bundle", - "version": "1.1.4", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d" + "reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d", - "reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/f26a67e397be0e5c00d7c52ec7b5010098e15ce5", + "reference": "f26a67e397be0e5c00d7c52ec7b5010098e15ce5", "shasum": "" }, "require": { "ext-openssl": "*", "ext-pcre": "*", - "php": "^5.3.2 || ^7.0" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8", "psr/log": "^1.0", "symfony/process": "^2.5 || ^3.0 || ^4.0" }, @@ -3827,20 +3828,20 @@ "ssl", "tls" ], - "time": "2019-01-28T09:30:10+00:00" + "time": "2019-08-02T09:05:43+00:00" }, { "name": "composer/composer", - "version": "1.8.6", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11" + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/19b5f66a0e233eb944f134df34091fe1c5dfcc11", - "reference": "19b5f66a0e233eb944f134df34091fe1c5dfcc11", + "url": "https://api.github.com/repos/composer/composer/zipball/314aa57fdcfc942065996f59fb73a8b3f74f3fa5", + "reference": "314aa57fdcfc942065996f59fb73a8b3f74f3fa5", "shasum": "" }, "require": { @@ -3876,7 +3877,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -3900,14 +3901,14 @@ "homepage": "http://seld.be" } ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", "homepage": "https://getcomposer.org/", "keywords": [ "autoload", "dependency", "package" ], - "time": "2019-06-11T13:03:06+00:00" + "time": "2019-08-02T18:55:33+00:00" }, { "name": "composer/semver", @@ -3973,16 +3974,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d" + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", - "reference": "a1aa51cf3ab838b83b0867b14e56fc20fbd55b3d", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", + "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", "shasum": "" }, "require": { @@ -4029,7 +4030,7 @@ "spdx", "validator" ], - "time": "2019-03-26T10:23:26+00:00" + "time": "2019-07-29T10:31:59+00:00" }, { "name": "composer/xdebug-handler", @@ -4235,8 +4236,8 @@ "authors": [ { "name": "Chris Leppanen", - "email": "chris.leppanen@gmail.com", - "role": "Developer" + "role": "Developer", + "email": "chris.leppanen@gmail.com" } ], "description": "An in-memory adapter for Flysystem.", @@ -4442,18 +4443,18 @@ "authors": [ { "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "role": "Developer", + "email": "arne@blankerts.de" }, { "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "role": "Developer", + "email": "sebastian@phpeople.de" }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "role": "Developer", + "email": "sebastian@phpunit.de" } ], "description": "Library for handling version information and constraints", @@ -4511,9 +4512,9 @@ "authors": [ { "name": "Kitamura Satoshi", + "role": "Original creator", "email": "with.no.parachute@gmail.com", - "homepage": "https://www.facebook.com/satooshi.jp", - "role": "Original creator" + "homepage": "https://www.facebook.com/satooshi.jp" }, { "name": "Takashi Matsuo", @@ -4807,8 +4808,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", @@ -4858,8 +4859,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "FilterIterator implementation that filters files based on a list of suffixes.", @@ -4900,8 +4901,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "Simple template engine.", @@ -4949,8 +4950,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "Utility class for timing", @@ -4962,16 +4963,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "3.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c" + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c", - "reference": "c4a66b97f040e3e20b3aa2a243230a1c3a9f7c8c", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", + "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", "shasum": "" }, "require": { @@ -4984,7 +4985,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -5007,7 +5008,7 @@ "keywords": [ "tokenizer" ], - "time": "2019-07-08T05:24:54+00:00" + "time": "2019-07-25T05:29:42+00:00" }, { "name": "phpunit/phpunit", @@ -5080,8 +5081,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "The PHP Unit Testing framework.", @@ -5651,8 +5652,8 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "role": "lead", + "email": "sebastian@phpunit.de" } ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", @@ -5754,16 +5755,16 @@ }, { "name": "symfony/config", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f" + "reference": "a17a2aea43950ce83a0603ed301bac362eb86870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f", + "url": "https://api.github.com/repos/symfony/config/zipball/a17a2aea43950ce83a0603ed301bac362eb86870", + "reference": "a17a2aea43950ce83a0603ed301bac362eb86870", "shasum": "" }, "require": { @@ -5814,20 +5815,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2019-06-08T06:33:08+00:00" + "time": "2019-07-18T10:34:59+00:00" }, { "name": "symfony/console", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" + "reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", + "url": "https://api.github.com/repos/symfony/console/zipball/8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9", + "reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9", "shasum": "" }, "require": { @@ -5889,11 +5890,11 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2019-07-24T17:13:59+00:00" }, { "name": "symfony/filesystem", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -5943,16 +5944,16 @@ }, { "name": "symfony/finder", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a" + "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", - "reference": "33c21f7d5d3dc8a140c282854a7e13aeb5d0f91a", + "url": "https://api.github.com/repos/symfony/finder/zipball/9638d41e3729459860bb96f6247ccb61faaa45f2", + "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2", "shasum": "" }, "require": { @@ -5988,11 +5989,11 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" + "time": "2019-06-28T13:16:30+00:00" }, { "name": "symfony/process", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", @@ -6041,7 +6042,7 @@ }, { "name": "symfony/stopwatch", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -6091,16 +6092,16 @@ }, { "name": "symfony/var-dumper", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91" + "reference": "e4110b992d2cbe198d7d3b244d079c1c58761d07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/45d6ef73671995aca565a1aa3d9a432a3ea63f91", - "reference": "45d6ef73671995aca565a1aa3d9a432a3ea63f91", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e4110b992d2cbe198d7d3b244d079c1c58761d07", + "reference": "e4110b992d2cbe198d7d3b244d079c1c58761d07", "shasum": "" }, "require": { @@ -6163,20 +6164,20 @@ "debug", "dump" ], - "time": "2019-06-17T17:37:00+00:00" + "time": "2019-07-27T06:42:46+00:00" }, { "name": "symfony/yaml", - "version": "v4.3.2", + "version": "v4.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", + "url": "https://api.github.com/repos/symfony/yaml/zipball/34d29c2acd1ad65688f58452fd48a46bd996d5a6", + "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6", "shasum": "" }, "require": { @@ -6222,7 +6223,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2019-04-06T14:04:46+00:00" + "time": "2019-07-24T14:47:54+00:00" }, { "name": "theseer/tokenizer", diff --git a/package-lock.json b/package-lock.json index 670b3bfd1a..908a807876 100644 --- a/package-lock.json +++ b/package-lock.json @@ -800,9 +800,9 @@ } }, "@fortawesome/fontawesome-free": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.9.0.tgz", - "integrity": "sha512-g795BBEzM/Hq2SYNPm/NQTIp3IWd4eXSH0ds87Na2jnrAUFX3wkyZAI4Gwj9DOaWMuz2/01i8oWI7P7T/XLkhg==" + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.10.1.tgz", + "integrity": "sha512-PYncBhgN1l02mwHmczukexmu4yRTjRDAAdcK62jdWSAW8epcnZ9K2win/7rMrffiv/c7XLVDA8vD+yi6WyvbGQ==" }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", @@ -7839,9 +7839,9 @@ } }, "postcss-rtl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/postcss-rtl/-/postcss-rtl-1.3.3.tgz", - "integrity": "sha512-iKdSko4zSvchZSPplz0iLD4dQyd4RiiARivMwboknD2eHu4tde1K7BqZ4CizZmnxrfhi4fvS774YSQPX6LJfMQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/postcss-rtl/-/postcss-rtl-1.4.0.tgz", + "integrity": "sha512-lmOTQnjdqWJFurh7X+OKa8NexzJDv7Ry8Ic2HObuTfX+ZyyZt53afuXhtNlJuOXBtUzrXoPgNuBOOtypZXgdEw==", "dev": true, "requires": { "rtlcss": "^2.4.0" @@ -8676,9 +8676,9 @@ "dev": true }, "sass": { - "version": "1.22.7", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.7.tgz", - "integrity": "sha512-ahREi0AdG7RTovSv14+yd1prQSfIvFcrDpOsth5EQf1+RM7SvOxsSttzNQaFmK1aa/k/3vyYwlYF5l0Xl+6c+g==", + "version": "1.22.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.9.tgz", + "integrity": "sha512-FzU1X2V8DlnqabrL4u7OBwD2vcOzNMongEJEx3xMEhWY/v26FFR3aG0hyeu2T965sfR0E9ufJwmG+Qjz78vFPQ==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" diff --git a/package.json b/package.json index 3899d9df0b..4f6f619608 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,14 @@ "postcss-custom-properties": "^9.0.2", "postcss-image-inliner": "^3.0.0", "postcss-import": "^12.0.1", - "postcss-rtl": "^1.3.3", + "postcss-rtl": "^1.4.0", "resolve-url-loader": "^3.1.0", - "sass": "^1.22.7", + "sass": "^1.22.9", "sass-loader": "^7.1.0", "vue-template-compiler": "^2.6.10" }, "dependencies": { - "@fortawesome/fontawesome-free": "^5.9.0", + "@fortawesome/fontawesome-free": "^5.10.1", "beautifymarker": "^1.0.7", "bootstrap": "^4.3.1", "corejs-typeahead": "^1.2.1", diff --git a/public/css/vendor.css b/public/css/vendor.css index bcf41e4118..82621ed340 100644 --- a/public/css/vendor.css +++ b/public/css/vendor.css @@ -4,12 +4,12 @@ * Copyright 2011-2019 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}table.dataTable{clear:both;margin-top:6px!important;margin-bottom:6px!important;max-width:none!important;border-collapse:separate!important;border-spacing:0}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap td,table.dataTable.nowrap th{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:400;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:auto;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:400;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>td.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc{padding-right:30px}table.dataTable thead>tr>td:active,table.dataTable thead>tr>th:active{outline:0}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:after,table.dataTable thead .sorting_desc_disabled:before{position:absolute;bottom:.9em;display:block;opacity:.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_desc_disabled:after{right:.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0!important}div.dataTables_scrollBody table{border-top:none;margin-top:0!important;margin-bottom:0!important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting:before,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_asc:before,div.dataTables_scrollBody table thead .sorting_desc:after,div.dataTables_scrollBody table thead .sorting_desc:before{display:none}div.dataTables_scrollBody table tbody tr:first-child td,div.dataTables_scrollBody table tbody tr:first-child th{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0!important;border-top:none}@media screen and (max-width:767px){div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable td,table.table-bordered.dataTable th{border-left-width:0}table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable th:last-child{border-right-width:0}table.table-bordered.dataTable tbody td,table.table-bordered.dataTable tbody th{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^=col-]:last-child{padding-right:0}/*! - * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 5.10.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:'Font Awesome 5 Free';font-weight:400}/*! - * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 5.10.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) */@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:'Font Awesome 5 Free';font-weight:900}/*! - * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 5.10.1 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}span.twitter-typeahead .tt-dropdown-menu,span.twitter-typeahead .tt-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}span.twitter-typeahead .tt-suggestion{display:block;width:100%;padding:3px 20px;clear:both;font-weight:400;line-height:1.5;color:#373a3c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:hover,span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-item.active:focus,.dropdown-item.active:hover,span.twitter-typeahead .active.tt-suggestion,span.twitter-typeahead .active.tt-suggestion:focus,span.twitter-typeahead .active.tt-suggestion:hover,span.twitter-typeahead .tt-suggestion.tt-cursor,span.twitter-typeahead .tt-suggestion.tt-cursor:focus,span.twitter-typeahead .tt-suggestion.tt-cursor:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{color:#818a91}.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}span.twitter-typeahead{width:100%}.input-group span.twitter-typeahead{display:block!important}.input-group span.twitter-typeahead .tt-dropdown-menu{top:32px!important}.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu{top:44px!important}.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu{top:28px!important}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline:0}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-container{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 19px;line-height:1.4}.leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.beautify-marker{text-align:center;font-weight:700;font-family:monospace;position:absolute;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.beautify-marker.circle{border-radius:100%}.beautify-marker.circle-dot,.beautify-marker.doughnut{border-radius:100%}.beautify-marker.marker{border-top-left-radius:50%;border-top-right-radius:50% 100%;border-bottom-left-radius:100% 50%;border-bottom-right-radius:0;transform:rotate(45deg)}.beautify-marker.marker>*{transform:rotate(-45deg)}.Code__code___31Vg8{position:absolute;top:110px;right:10px;bottom:10px;width:425px;background:rgba(0,0,0,.7);color:#fff;border-radius:4px;padding:24px;font-family:Roboto,monospace;white-space:pre;font-size:14px;line-height:22px}.Layout__header___33oX6{position:relative;width:100%;height:100px;padding:0 0 0 20px}.Layout__header___33oX6 h1{font-family:Roboto,sans-serif;font-size:32px;font-weight:300;line-height:64px;margin:0;padding:0}.Layout__header___33oX6 ul{list-style:none;display:block;overflow:hidden;margin:0;padding:0;line-height:32px}.Layout__header___33oX6 ul li{float:left;display:block;cursor:pointer}.Layout__header___33oX6 ul li:hover{border-bottom:4px solid #00bcd4}.Layout__header___33oX6 ul li.active{border-bottom:4px solid #2196f3}.Layout__header___33oX6 ul li a{text-decoration:none;color:inherit;display:block;width:100%;height:100%;padding:0 24px}.Layout__content___GDRpI{position:absolute;top:100px;bottom:0;left:20px;right:465px}.Layout__fullWidth___2Qlah{left:0;right:0}.Map__map___2UbOE{position:absolute;display:block;width:100%;height:100%}.SearchResults__item___3yUT->*{border:1px solid transparent;line-height:32px;padding:0 18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.SearchResults__item___3yUT->.active,.SearchResults__item___3yUT->:hover{background-color:#f8f8f8;border-color:#c6c6c6}.Search__search___2kQjw form{position:relative;margin:32px 0;background-color:#fff;vertical-align:top;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.Search__search___2kQjw form:hover,.Search__search___2kQjw.active form{box-shadow:0 3px 8px 0 rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.08)}.Search__search___2kQjw input{border:none;padding:0;margin:0;width:100%;outline:0;font:16px arial,sans-serif;line-height:48px;height:48px;text-indent:18px}body,html{font-family:'Open Sans',sans-serif;margin:0;padding:0;height:100%;width:100%;box-sizing:border-box}*,:after,:before{box-sizing:border-box}.leaflet-control-geosearch.bar{position:absolute!important;left:50px;right:515px}.leaflet__leaflet-control-geosearch___35AKI *,.leaflet__leaflet-control-geosearch___35AKI :after,.leaflet__leaflet-control-geosearch___35AKI :before{box-sizing:border-box}.leaflet__leaflet-control-geosearch___35AKI .leaflet__leaflet-bar-part___2_DBQ{border-radius:4px;border-bottom:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{position:absolute;display:block;content:''}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{top:19px;left:16px;width:8px;border-top:2px solid #555;transform:rotateZ(45deg)}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{top:6px;left:6px;height:14px;width:14px;border-radius:50%;border:2px solid #555}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:before,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:before{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{content:'';border:2px solid #555;border-top:2px solid #f3f3f3;animation:leaflet__spin___TqeCo 1s linear infinite}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{content:'!';line-height:initial;font-weight:600;font-size:18px;border:none}.leaflet__leaflet-control-geosearch___35AKI form{display:none;position:absolute;top:-2px;left:28px;border-radius:0 4px 4px 0;border:2px solid rgba(0,0,0,.2);border-left:none;background-color:#fff;background-clip:padding-box;z-index:-1;height:auto;margin:0;padding:0 8px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__active___WG2p7 form{display:block}.leaflet__leaflet-control-geosearch___35AKI form input{min-width:200px;width:100%;border:none;outline:0;margin:0;padding:0;font-size:12px;height:30px;border-radius:0 4px 4px 0;text-indent:8px}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW{background:#fff}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{line-height:24px;padding:0 8px;border:1px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7{padding:8px 0;border-top:1px solid #c6c6c6}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>.leaflet__active___WG2p7,.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>:hover{background-color:#f8f8f8;border-color:#c6c6c6;cursor:pointer}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{content:'';display:block;width:0;border-left:2px solid rgba(0,0,0,.2);position:absolute;left:-2px;bottom:-2px;top:30px}@keyframes leaflet__spin___TqeCo{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.leaflet__leaflet-bottom___OI2at .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA,.leaflet__leaflet-top___31xh0 .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{position:relative;display:block;height:auto;width:400px;margin:10px auto 0;cursor:auto;z-index:1000}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{position:relative;top:0;left:0;display:block;border:2px solid rgba(0,0,0,.2);border-radius:4px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form input{min-width:100%;width:100%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA .leaflet__results___19EcW.leaflet__active___WG2p7:after{opacity:.2}.leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{right:28px;left:initial;border-radius:4px 0 0 4px;border-left:inherit;border-right:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{color:#000;position:absolute;line-height:30px;padding:0 8px;right:0;top:0;cursor:pointer;border:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm:hover{background:#f5f5f5}.marker-cluster-small{background-color:rgba(181,226,140,.6)}.marker-cluster-small div{background-color:rgba(110,204,57,.6)}.marker-cluster-medium{background-color:rgba(241,211,87,.6)}.marker-cluster-medium div{background-color:rgba(240,194,12,.6)}.marker-cluster-large{background-color:rgba(253,156,115,.6)}.marker-cluster-large div{background-color:rgba(241,128,23,.6)}.leaflet-oldie .marker-cluster-small{background-color:#b5e28c}.leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}.leaflet-oldie .marker-cluster-medium{background-color:#f1d357}.leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}.leaflet-oldie .marker-cluster-large{background-color:#fd9c73}.leaflet-oldie .marker-cluster-large div{background-color:#f18017}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px "Helvetica Neue",Arial,Helvetica,sans-serif}.marker-cluster span{line-height:30px}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in} + */.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;white-space:nowrap!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid #000 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}span.twitter-typeahead .tt-dropdown-menu,span.twitter-typeahead .tt-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}span.twitter-typeahead .tt-suggestion{display:block;width:100%;padding:3px 20px;clear:both;font-weight:400;line-height:1.5;color:#373a3c;text-align:inherit;white-space:nowrap;background:0 0;border:0}.dropdown-item:hover,span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-item.active:focus,.dropdown-item.active:hover,span.twitter-typeahead .active.tt-suggestion,span.twitter-typeahead .active.tt-suggestion:focus,span.twitter-typeahead .active.tt-suggestion:hover,span.twitter-typeahead .tt-suggestion.tt-cursor,span.twitter-typeahead .tt-suggestion.tt-cursor:focus,span.twitter-typeahead .tt-suggestion.tt-cursor:hover{color:#fff;text-decoration:none;background-color:#0275d8;outline:0}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{color:#818a91}.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none}span.twitter-typeahead{width:100%}.input-group span.twitter-typeahead{display:block!important}.input-group span.twitter-typeahead .tt-dropdown-menu{top:32px!important}.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu{top:44px!important}.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu{top:28px!important}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-control,.leaflet-popup-pane{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline:0}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.leaflet-container{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers{box-shadow:none}.leaflet-touch .leaflet-bar,.leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 19px;line-height:1.4}.leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.beautify-marker{text-align:center;font-weight:700;font-family:monospace;position:absolute;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.beautify-marker.circle{border-radius:100%}.beautify-marker.circle-dot,.beautify-marker.doughnut{border-radius:100%}.beautify-marker.marker{border-top-left-radius:50%;border-top-right-radius:50% 100%;border-bottom-left-radius:100% 50%;border-bottom-right-radius:0;transform:rotate(45deg)}.beautify-marker.marker>*{transform:rotate(-45deg)}.Code__code___31Vg8{position:absolute;top:110px;right:10px;bottom:10px;width:425px;background:rgba(0,0,0,.7);color:#fff;border-radius:4px;padding:24px;font-family:Roboto,monospace;white-space:pre;font-size:14px;line-height:22px}.Layout__header___33oX6{position:relative;width:100%;height:100px;padding:0 0 0 20px}.Layout__header___33oX6 h1{font-family:Roboto,sans-serif;font-size:32px;font-weight:300;line-height:64px;margin:0;padding:0}.Layout__header___33oX6 ul{list-style:none;display:block;overflow:hidden;margin:0;padding:0;line-height:32px}.Layout__header___33oX6 ul li{float:left;display:block;cursor:pointer}.Layout__header___33oX6 ul li:hover{border-bottom:4px solid #00bcd4}.Layout__header___33oX6 ul li.active{border-bottom:4px solid #2196f3}.Layout__header___33oX6 ul li a{text-decoration:none;color:inherit;display:block;width:100%;height:100%;padding:0 24px}.Layout__content___GDRpI{position:absolute;top:100px;bottom:0;left:20px;right:465px}.Layout__fullWidth___2Qlah{left:0;right:0}.Map__map___2UbOE{position:absolute;display:block;width:100%;height:100%}.SearchResults__item___3yUT->*{border:1px solid transparent;line-height:32px;padding:0 18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.SearchResults__item___3yUT->.active,.SearchResults__item___3yUT->:hover{background-color:#f8f8f8;border-color:#c6c6c6}.Search__search___2kQjw form{position:relative;margin:32px 0;background-color:#fff;vertical-align:top;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.Search__search___2kQjw form:hover,.Search__search___2kQjw.active form{box-shadow:0 3px 8px 0 rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.08)}.Search__search___2kQjw input{border:none;padding:0;margin:0;width:100%;outline:0;font:16px arial,sans-serif;line-height:48px;height:48px;text-indent:18px}body,html{font-family:'Open Sans',sans-serif;margin:0;padding:0;height:100%;width:100%;box-sizing:border-box}*,:after,:before{box-sizing:border-box}.leaflet-control-geosearch.bar{position:absolute!important;left:50px;right:515px}.leaflet__leaflet-control-geosearch___35AKI *,.leaflet__leaflet-control-geosearch___35AKI :after,.leaflet__leaflet-control-geosearch___35AKI :before{box-sizing:border-box}.leaflet__leaflet-control-geosearch___35AKI .leaflet__leaflet-bar-part___2_DBQ{border-radius:4px;border-bottom:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{position:absolute;display:block;content:''}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{top:19px;left:16px;width:8px;border-top:2px solid #555;transform:rotateZ(45deg)}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{top:6px;left:6px;height:14px;width:14px;border-radius:50%;border:2px solid #555}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:before,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:before{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{content:'';border:2px solid #555;border-top:2px solid #f3f3f3;animation:leaflet__spin___TqeCo 1s linear infinite}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{content:'!';line-height:initial;font-weight:600;font-size:18px;border:none}.leaflet__leaflet-control-geosearch___35AKI form{display:none;position:absolute;top:-2px;left:28px;border-radius:0 4px 4px 0;border:2px solid rgba(0,0,0,.2);border-left:none;background-color:#fff;background-clip:padding-box;z-index:-1;height:auto;margin:0;padding:0 8px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__active___WG2p7 form{display:block}.leaflet__leaflet-control-geosearch___35AKI form input{min-width:200px;width:100%;border:none;outline:0;margin:0;padding:0;font-size:12px;height:30px;border-radius:0 4px 4px 0;text-indent:8px}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW{background:#fff}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{line-height:24px;padding:0 8px;border:1px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7{padding:8px 0;border-top:1px solid #c6c6c6}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>.leaflet__active___WG2p7,.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>:hover{background-color:#f8f8f8;border-color:#c6c6c6;cursor:pointer}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{content:'';display:block;width:0;border-left:2px solid rgba(0,0,0,.2);position:absolute;left:-2px;bottom:-2px;top:30px}@keyframes leaflet__spin___TqeCo{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.leaflet__leaflet-bottom___OI2at .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA,.leaflet__leaflet-top___31xh0 .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{position:relative;display:block;height:auto;width:400px;margin:10px auto 0;cursor:auto;z-index:1000}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{position:relative;top:0;left:0;display:block;border:2px solid rgba(0,0,0,.2);border-radius:4px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form input{min-width:100%;width:100%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA .leaflet__results___19EcW.leaflet__active___WG2p7:after{opacity:.2}.leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{right:28px;left:initial;border-radius:4px 0 0 4px;border-left:inherit;border-right:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{color:#000;position:absolute;line-height:30px;padding:0 8px;right:0;top:0;cursor:pointer;border:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm:hover{background:#f5f5f5}.marker-cluster-small{background-color:rgba(181,226,140,.6)}.marker-cluster-small div{background-color:rgba(110,204,57,.6)}.marker-cluster-medium{background-color:rgba(241,211,87,.6)}.marker-cluster-medium div{background-color:rgba(240,194,12,.6)}.marker-cluster-large{background-color:rgba(253,156,115,.6)}.marker-cluster-large div{background-color:rgba(241,128,23,.6)}.leaflet-oldie .marker-cluster-small{background-color:#b5e28c}.leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}.leaflet-oldie .marker-cluster-medium{background-color:#f1d357}.leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}.leaflet-oldie .marker-cluster-large{background-color:#fd9c73}.leaflet-oldie .marker-cluster-large div{background-color:#f18017}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px "Helvetica Neue",Arial,Helvetica,sans-serif}.marker-cluster span{line-height:30px}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in} diff --git a/public/css/vendor.min.css b/public/css/vendor.min.css index 0fea213a46..569aa19e22 100644 --- a/public/css/vendor.min.css +++ b/public/css/vendor.min.css @@ -12,4 +12,4 @@ */@font-face{font-family:Font Awesome\ 5 Free;font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:Font Awesome\ 5 Free}.fa,.fas{font-weight:900}/*! * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{width:1.25em}[dir] .fa-fw{text-align:center}.fa-ul{list-style-type:none}[dir=ltr] .fa-ul{margin-left:2.5em;padding-left:0}[dir=rtl] .fa-ul{margin-right:2.5em;padding-right:0}.fa-ul>li{position:relative}.fa-li{position:absolute;width:2em;line-height:inherit}[dir] .fa-li{text-align:center}[dir=ltr] .fa-li{left:-2em}[dir=rtl] .fa-li{right:-2em}[dir] .fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}[dir=ltr] .fa-pull-left{float:left}[dir=ltr] .fa-pull-right,[dir=rtl] .fa-pull-left{float:right}[dir=rtl] .fa-pull-right{float:left}[dir=ltr] .fa.fa-pull-left,[dir=ltr] .fab.fa-pull-left,[dir=ltr] .fal.fa-pull-left,[dir=ltr] .far.fa-pull-left,[dir=ltr] .fas.fa-pull-left{margin-right:.3em}[dir=ltr] .fa.fa-pull-right,[dir=ltr] .fab.fa-pull-right,[dir=ltr] .fal.fa-pull-right,[dir=ltr] .far.fa-pull-right,[dir=ltr] .fas.fa-pull-right,[dir=rtl] .fa.fa-pull-left,[dir=rtl] .fab.fa-pull-left,[dir=rtl] .fal.fa-pull-left,[dir=rtl] .far.fa-pull-left,[dir=rtl] .fas.fa-pull-left{margin-left:.3em}[dir=rtl] .fa.fa-pull-right,[dir=rtl] .fab.fa-pull-right,[dir=rtl] .fal.fa-pull-right,[dir=rtl] .far.fa-pull-right,[dir=rtl] .fas.fa-pull-right{margin-right:.3em}[dir=ltr] .fa-spin{-webkit-animation:fa-spin-ltr 2s linear infinite;animation:fa-spin-ltr 2s linear infinite}[dir=rtl] .fa-spin{-webkit-animation:fa-spin-rtl 2s linear infinite;animation:fa-spin-rtl 2s linear infinite}[dir=ltr] .fa-pulse{-webkit-animation:fa-spin-ltr 1s steps(8) infinite;animation:fa-spin-ltr 1s steps(8) infinite}[dir=rtl] .fa-pulse{-webkit-animation:fa-spin-rtl 1s steps(8) infinite;animation:fa-spin-rtl 1s steps(8) infinite}@-webkit-keyframes fa-spin-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes fa-spin-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes fa-spin-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}[dir=ltr] .fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}[dir=rtl] .fa-rotate-90{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}[dir=ltr] .fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}[dir=rtl] .fa-rotate-180{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}[dir=ltr] .fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}[dir=rtl] .fa-rotate-270{-webkit-transform:rotate(-270deg);transform:rotate(-270deg)}.fa-flip-horizontal,[dir] .fa-flip-horizontal{-webkit-transform:scaleX(-1)}[dir] .fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical,[dir] .fa-flip-vertical{-webkit-transform:scaleY(-1)}[dir] .fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1)}[dir] .fa-flip-both,[dir] .fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{position:absolute;width:100%}[dir] .fa-stack-1x,[dir] .fa-stack-2x{text-align:center}[dir=ltr] .fa-stack-1x,[dir=ltr] .fa-stack-2x{left:0}[dir=rtl] .fa-stack-1x,[dir=rtl] .fa-stack-2x{right:0}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-wizard:before{content:"\F6E8"}.fa-haykal:before{content:"\F666"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:absolute;width:1px}[dir] .sr-only{border:0;margin:-1px;padding:0}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;overflow:visible;position:static;width:auto}[dir] .sr-only-focusable:active,[dir] .sr-only-focusable:focus{margin:0}.select2-container{box-sizing:border-box;display:inline-block;position:relative;vertical-align:middle}[dir] .select2-container{margin:0}.select2-container .select2-selection--single{box-sizing:border-box;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-container .select2-selection--single{cursor:pointer}.select2-container .select2-selection--single .select2-selection__rendered{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dir=ltr] .select2-container .select2-selection--single .select2-selection__rendered{padding-left:8px;padding-right:20px}[dir=rtl] .select2-container .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-container .select2-selection--multiple{cursor:pointer}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dir=ltr] .select2-container .select2-selection--multiple .select2-selection__rendered{padding-left:8px}[dir=rtl] .select2-container .select2-selection--multiple .select2-selection__rendered{padding-right:8px}[dir=ltr] .select2-container .select2-search--inline{float:left}[dir=rtl] .select2-container .select2-search--inline{float:right}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;font-size:100%}[dir] .select2-container .select2-search--inline .select2-search__field{border:none;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{box-sizing:border-box;display:block;position:absolute;width:100%;z-index:1051}[dir] .select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px}[dir=ltr] .select2-dropdown{left:-100000px}[dir=rtl] .select2-dropdown{right:-100000px}.select2-results{display:block}.select2-results__options{list-style:none}[dir] .select2-results__options{margin:0;padding:0}.select2-results__option{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-results__option{padding:6px}[dir] .select2-results__option[aria-selected]{cursor:pointer}[dir=ltr] .select2-container--open .select2-dropdown{left:0}[dir=rtl] .select2-container--open .select2-dropdown{right:0}[dir] .select2-container--open .select2-dropdown--above{border-bottom:none}[dir=ltr] .select2-container--open .select2-dropdown--above,[dir=rtl] .select2-container--open .select2-dropdown--above{border-bottom-left-radius:0;border-bottom-right-radius:0}[dir] .select2-container--open .select2-dropdown--below{border-top:none}[dir=ltr] .select2-container--open .select2-dropdown--below,[dir=rtl] .select2-container--open .select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block}[dir] .select2-search--dropdown{padding:4px}.select2-search--dropdown .select2-search__field{width:100%;box-sizing:border-box}[dir] .select2-search--dropdown .select2-search__field{padding:4px}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{display:block;position:fixed;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99}[dir] .select2-close-mask{border:0;margin:0;padding:0;background-color:#fff}[dir=ltr] .select2-close-mask{left:0}[dir=rtl] .select2-close-mask{right:0}.select2-hidden-accessible{clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;position:absolute!important;width:1px!important;white-space:nowrap!important}[dir] .select2-hidden-accessible{border:0!important;padding:0!important}[dir] .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{font-weight:700}[dir] .select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__clear{float:right}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__clear{float:left}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;width:20px}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__arrow{right:1px}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__arrow{left:1px}.select2-container--default .select2-selection--single .select2-selection__arrow b{height:0;position:absolute;top:50%;width:0}[dir] .select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;margin-top:-2px}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__arrow b{left:50%;margin-left:-4px}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__arrow b{right:50%;margin-right:-4px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}[dir] .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}[dir] .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}[dir] .select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;width:100%}[dir] .select2-container--default .select2-selection--multiple .select2-selection__rendered{margin:0;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999}[dir] .select2-container--default .select2-selection--multiple .select2-selection__placeholder{margin-top:5px}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__placeholder{float:left}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default .select2-selection--multiple .select2-selection__clear{font-weight:700}[dir] .select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;margin-top:5px}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__clear{float:right;margin-right:10px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__clear{float:left;margin-left:10px}[dir] .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;margin-top:5px;padding:0 5px}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__choice{float:left;margin-right:5px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;display:inline-block;font-weight:700}[dir] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{cursor:pointer}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:2px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{outline:0}[dir] .select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000}[dir] .select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}[dir=ltr] .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,[dir=ltr] .select2-container--default.select2-container--open.select2-container--above .select2-selection--single,[dir=rtl] .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,[dir=rtl] .select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}[dir=ltr] .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,[dir=ltr] .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,[dir=rtl] .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,[dir=rtl] .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}[dir] .select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{outline:0;-webkit-appearance:textfield}[dir] .select2-container--default .select2-search--inline .select2-search__field{border:none;box-shadow:none}[dir=ltr] .select2-container--default .select2-search--inline .select2-search__field{background:0 0}[dir=rtl] .select2-container--default .select2-search--inline .select2-search__field{background:100% 0}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}[dir] .select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}[dir] .select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option{padding-left:1em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option{padding-right:1em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-right:0}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-right:-1em;padding-right:2em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-2em;padding-right:3em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-3em;padding-right:4em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-4em;padding-right:5em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-5em;padding-right:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{color:#fff}[dir] .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb}.select2-container--default .select2-results__group{display:block}[dir] .select2-container--default .select2-results__group{cursor:default;padding:6px}.select2-container--classic .select2-selection--single{outline:0}[dir] .select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;background-image:-webkit-linear-gradient(top,#fff 50%,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#fff),to(#eee));background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x}[dir=ltr] .select2-container--classic .select2-selection--single{background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#fff),to(#eee))}[dir=rtl] .select2-container--classic .select2-selection--single{background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#fff),to(#eee))}[dir] .select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{font-weight:700}[dir] .select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__clear{float:right;margin-right:10px}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__clear{float:left;margin-left:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;width:20px}[dir] .select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#ccc));background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__arrow{border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;right:1px;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#ccc))}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__arrow{border-right:1px solid #aaa;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#eee),to(#ccc))}.select2-container--classic .select2-selection--single .select2-selection__arrow b{height:0;position:absolute;top:50%;width:0}[dir] .select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;margin-top:-2px}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__arrow b{left:50%;margin-left:-4px}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__arrow b{right:50%;margin-right:-4px}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}[dir] .select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}[dir] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{border:none}[dir=ltr] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0}[dir=rtl] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:100% 0}[dir] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}[dir] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;background-image:-webkit-linear-gradient(top,#fff,#eee 50%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(50%,#eee));background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(50%,#eee))}[dir=rtl] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top-right-radius:0;border-top-left-radius:0;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0,#fff),color-stop(50%,#eee))}[dir] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;background-image:-webkit-linear-gradient(top,#eee 50%,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#fff));background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#fff))}[dir=rtl] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#eee),to(#fff))}.select2-container--classic .select2-selection--multiple{outline:0}[dir] .select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}[dir] .select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__rendered{margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;margin-top:5px;padding:0 5px}[dir=ltr] .select2-container--classic .select2-selection--multiple .select2-selection__choice{float:left;margin-right:5px}[dir=rtl] .select2-container--classic .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;display:inline-block;font-weight:700}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{cursor:pointer}[dir=ltr] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{margin-right:2px}[dir=rtl] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}[dir] .select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}[dir] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple,[dir=rtl] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}[dir] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple,[dir=rtl] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{outline:0}[dir] .select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--classic .select2-search--inline .select2-search__field{outline:0}[dir] .select2-container--classic .select2-search--inline .select2-search__field{box-shadow:none}[dir] .select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}[dir] .select2-container--classic .select2-dropdown--above{border-bottom:none}[dir] .select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}[dir] .select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{color:#fff}[dir] .select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7}.select2-container--classic .select2-results__group{display:block}[dir] .select2-container--classic .select2-results__group{cursor:default;padding:6px}[dir] .select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}span.twitter-typeahead .tt-dropdown-menu,span.twitter-typeahead .tt-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:160px;font-size:1rem;color:#373a3c;list-style:none}[dir] span.twitter-typeahead .tt-dropdown-menu,[dir] span.twitter-typeahead .tt-menu{padding:5px 0;margin:2px 0 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}[dir=ltr] span.twitter-typeahead .tt-dropdown-menu,[dir=ltr] span.twitter-typeahead .tt-menu{left:0;float:left;text-align:left}[dir=rtl] span.twitter-typeahead .tt-dropdown-menu,[dir=rtl] span.twitter-typeahead .tt-menu{right:0;float:right;text-align:right}span.twitter-typeahead .tt-suggestion{display:block;width:100%;font-weight:400;line-height:1.5;color:#373a3c;white-space:nowrap}[dir] span.twitter-typeahead .tt-suggestion{padding:3px 20px;clear:both;text-align:inherit;border:0}[dir=ltr] span.twitter-typeahead .tt-suggestion{background:0 0}[dir=rtl] span.twitter-typeahead .tt-suggestion{background:100% 0}.dropdown-item:hover,span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{color:#2b2d2f;text-decoration:none}[dir] .dropdown-item:hover,[dir] span.twitter-typeahead .tt-suggestion:focus,[dir] span.twitter-typeahead .tt-suggestion:hover{background-color:#f5f5f5}.dropdown-item.active:focus,.dropdown-item.active:hover,span.twitter-typeahead .active.tt-suggestion,span.twitter-typeahead .active.tt-suggestion:focus,span.twitter-typeahead .active.tt-suggestion:hover,span.twitter-typeahead .tt-suggestion.tt-cursor,span.twitter-typeahead .tt-suggestion.tt-cursor:focus,span.twitter-typeahead .tt-suggestion.tt-cursor:hover{color:#fff;text-decoration:none;outline:0}[dir] .dropdown-item.active:focus,[dir] .dropdown-item.active:hover,[dir] span.twitter-typeahead .active.tt-suggestion,[dir] span.twitter-typeahead .active.tt-suggestion:focus,[dir] span.twitter-typeahead .active.tt-suggestion:hover,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor:focus,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor:hover{background-color:#0275d8}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{color:#818a91}.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{text-decoration:none}[dir] .dropdown-item.disabled:hover,[dir] span.twitter-typeahead .disabled.tt-suggestion:focus,[dir] span.twitter-typeahead .disabled.tt-suggestion:hover{cursor:not-allowed;background-color:transparent;background-image:none}span.twitter-typeahead{width:100%}.input-group span.twitter-typeahead{display:block!important}.input-group span.twitter-typeahead .tt-dropdown-menu{top:32px!important}.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu{top:44px!important}.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu{top:28px!important}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;top:0}[dir=ltr] .leaflet-image-layer,[dir=ltr] .leaflet-layer,[dir=ltr] .leaflet-marker-icon,[dir=ltr] .leaflet-marker-shadow,[dir=ltr] .leaflet-pane,[dir=ltr] .leaflet-pane>canvas,[dir=ltr] .leaflet-pane>svg,[dir=ltr] .leaflet-tile,[dir=ltr] .leaflet-tile-container,[dir=ltr] .leaflet-zoom-box{left:0}[dir=rtl] .leaflet-image-layer,[dir=rtl] .leaflet-layer,[dir=rtl] .leaflet-marker-icon,[dir=rtl] .leaflet-marker-shadow,[dir=rtl] .leaflet-pane,[dir=rtl] .leaflet-pane>canvas,[dir=rtl] .leaflet-pane>svg,[dir=rtl] .leaflet-tile,[dir=rtl] .leaflet-tile-container,[dir=rtl] .leaflet-zoom-box{right:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}[dir=ltr] .leaflet-tile::-moz-selection{background:0 0}[dir=rtl] .leaflet-tile::-moz-selection{background:100% 0}.leaflet-tile::-moz-selection{background:0 0}[dir=ltr] .leaflet-tile::selection{background:0 0}.leaflet-tile::-moz-selection{background:100% 0}[dir=rtl] .leaflet-tile::selection{background:100% 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px}[dir=ltr] .leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0}[dir=rtl] .leaflet-safari .leaflet-tile-container{-webkit-transform-origin:100% 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}[dir=ltr] .leaflet-right{right:0}[dir=rtl] .leaflet-right{left:0}.leaflet-bottom{bottom:0}[dir=ltr] .leaflet-left{left:0}[dir=rtl] .leaflet-left{right:0}[dir] .leaflet-control{clear:both}[dir=ltr] .leaflet-control{float:left}[dir=ltr] .leaflet-right .leaflet-control,[dir=rtl] .leaflet-control{float:right}[dir=rtl] .leaflet-right .leaflet-control{float:left}[dir] .leaflet-top .leaflet-control{margin-top:10px}[dir] .leaflet-bottom .leaflet-control{margin-bottom:10px}[dir=ltr] .leaflet-left .leaflet-control{margin-left:10px}[dir=ltr] .leaflet-right .leaflet-control,[dir=rtl] .leaflet-left .leaflet-control{margin-right:10px}[dir=rtl] .leaflet-right .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-popup,[dir] .leaflet-fade-anim .leaflet-popup{-webkit-transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}[dir=ltr] .leaflet-zoom-animated{-webkit-transform-origin:0 0;transform-origin:0 0}[dir=rtl] .leaflet-zoom-animated{-webkit-transform-origin:100% 0;transform-origin:100% 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-zoom-animated,[dir] .leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;transition:none}[dir] .leaflet-pan-anim .leaflet-tile,[dir] .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}[dir] .leaflet-interactive{cursor:pointer}[dir] .leaflet-grab{cursor:-webkit-grab;cursor:grab}[dir] .leaflet-crosshair,[dir] .leaflet-crosshair .leaflet-interactive{cursor:crosshair}[dir] .leaflet-control,[dir] .leaflet-popup-pane{cursor:auto}[dir] .leaflet-dragging .leaflet-grab,[dir] .leaflet-dragging .leaflet-grab .leaflet-interactive,[dir] .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline:0}[dir] .leaflet-container{background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}[dir] .leaflet-zoom-box{border:2px dotted #38f;background:hsla(0,0%,100%,.5)}.leaflet-container{font:12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif}[dir] .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{width:26px;height:26px;line-height:26px;display:block;text-decoration:none;color:#000}[dir] .leaflet-bar a,[dir] .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;text-align:center}.leaflet-bar a,.leaflet-control-layers-toggle{display:block}[dir] .leaflet-bar a,[dir] .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat}[dir] .leaflet-bar a:hover{background-color:#f4f4f4}[dir=ltr] .leaflet-bar a:first-child,[dir=rtl] .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}[dir] .leaflet-bar a:last-child{border-bottom:none}[dir=ltr] .leaflet-bar a:last-child,[dir=rtl] .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.leaflet-bar a.leaflet-disabled{color:#bbb}[dir] .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}[dir=ltr] .leaflet-touch .leaflet-bar a:first-child,[dir=rtl] .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}[dir=ltr] .leaflet-touch .leaflet-bar a:last-child,[dir=rtl] .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}[dir] .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{width:36px;height:36px}[dir] .leaflet-control-layers-toggle{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC")}[dir] .leaflet-retina .leaflet-control-layers-toggle{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=");background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers-expanded .leaflet-control-layers-toggle,.leaflet-control-layers .leaflet-control-layers-list{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333}[dir] .leaflet-control-layers-expanded{background:#fff}[dir=ltr] .leaflet-control-layers-expanded{padding:6px 10px 6px 6px}[dir=rtl] .leaflet-control-layers-expanded{padding:6px 6px 6px 10px}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden}[dir=ltr] .leaflet-control-layers-scrollbar{padding-right:5px}[dir=rtl] .leaflet-control-layers-scrollbar{padding-left:5px}.leaflet-control-layers-selector{position:relative;top:1px}[dir] .leaflet-control-layers-selector{margin-top:2px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0}[dir] .leaflet-control-layers-separator{border-top:1px solid #ddd}[dir=ltr] .leaflet-control-layers-separator{margin:5px -10px 5px -6px}[dir=rtl] .leaflet-control-layers-separator{margin:5px -6px 5px -10px}[dir] .leaflet-default-icon-path{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=")}[dir] .leaflet-container .leaflet-control-attribution{background:#fff;background:hsla(0,0%,100%,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333}[dir] .leaflet-control-attribution,[dir] .leaflet-control-scale-line{padding:0 5px}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}[dir=ltr] .leaflet-left .leaflet-control-scale{margin-left:5px}[dir=rtl] .leaflet-left .leaflet-control-scale{margin-right:5px}[dir] .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{line-height:1.1;font-size:11px;white-space:nowrap;overflow:hidden;box-sizing:border-box}[dir] .leaflet-control-scale-line{border:2px solid #777;border-top:none;padding:2px 5px 1px;background:#fff;background:hsla(0,0%,100%,.5)}[dir] .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}[dir] .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}[dir] .leaflet-touch .leaflet-bar,[dir] .leaflet-touch .leaflet-control-attribution,[dir] .leaflet-touch .leaflet-control-layers{box-shadow:none}[dir] .leaflet-touch .leaflet-bar,[dir] .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute}[dir] .leaflet-popup{text-align:center;margin-bottom:20px}[dir] .leaflet-popup-content-wrapper{padding:1px;border-radius:12px}[dir=ltr] .leaflet-popup-content-wrapper{text-align:left}[dir=rtl] .leaflet-popup-content-wrapper{text-align:right}.leaflet-popup-content{line-height:1.4}[dir] .leaflet-popup-content{margin:13px 19px}[dir] .leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;overflow:hidden;pointer-events:none}[dir=ltr] .leaflet-popup-tip-container{left:50%;margin-left:-20px}[dir=rtl] .leaflet-popup-tip-container{right:50%;margin-right:-20px}.leaflet-popup-tip{width:17px;height:17px}[dir] .leaflet-popup-tip{padding:1px;margin:-10px auto 0}[dir=ltr] .leaflet-popup-tip{-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .leaflet-popup-tip{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333}[dir] .leaflet-popup-content-wrapper,[dir] .leaflet-popup-tip{background:#fff;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700}[dir] .leaflet-container a.leaflet-popup-close-button{border:none;text-align:center}[dir=ltr] .leaflet-container a.leaflet-popup-close-button{right:0;padding:4px 4px 0 0;background:0 0}[dir=rtl] .leaflet-container a.leaflet-popup-close-button{left:0;padding:4px 0 0 4px;background:100% 0}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto}[dir] .leaflet-popup-scrolled{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px}[dir] .leaflet-oldie .leaflet-popup-tip{margin:0 auto}[dir] .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}[dir] .leaflet-oldie .leaflet-control-layers,[dir] .leaflet-oldie .leaflet-control-zoom,[dir] .leaflet-oldie .leaflet-popup-content-wrapper,[dir] .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}[dir] .leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}[dir] .leaflet-tooltip{padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{pointer-events:auto}[dir] .leaflet-tooltip.leaflet-clickable{cursor:pointer}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;content:""}[dir] .leaflet-tooltip-bottom:before,[dir] .leaflet-tooltip-left:before,[dir] .leaflet-tooltip-right:before,[dir] .leaflet-tooltip-top:before{border:6px solid transparent}[dir=ltr] .leaflet-tooltip-bottom:before,[dir=ltr] .leaflet-tooltip-left:before,[dir=ltr] .leaflet-tooltip-right:before,[dir=ltr] .leaflet-tooltip-top:before{background:0 0}[dir=rtl] .leaflet-tooltip-bottom:before,[dir=rtl] .leaflet-tooltip-left:before,[dir=rtl] .leaflet-tooltip-right:before,[dir=rtl] .leaflet-tooltip-top:before{background:100% 0}[dir] .leaflet-tooltip-bottom{margin-top:6px}[dir] .leaflet-tooltip-top{margin-top:-6px}[dir=ltr] .leaflet-tooltip-bottom:before,[dir=ltr] .leaflet-tooltip-top:before{left:50%;margin-left:-6px}[dir=rtl] .leaflet-tooltip-bottom:before,[dir=rtl] .leaflet-tooltip-top:before{right:50%;margin-right:-6px}.leaflet-tooltip-top:before{bottom:0}[dir] .leaflet-tooltip-top:before{margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0}[dir] .leaflet-tooltip-bottom:before{margin-top:-12px;border-bottom-color:#fff}[dir=ltr] .leaflet-tooltip-bottom:before{margin-left:-6px}[dir=rtl] .leaflet-tooltip-bottom:before{margin-right:-6px}[dir=ltr] .leaflet-tooltip-left{margin-left:-6px}[dir=rtl] .leaflet-tooltip-left{margin-right:-6px}[dir=ltr] .leaflet-tooltip-right{margin-left:6px}[dir=rtl] .leaflet-tooltip-right{margin-right:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%}[dir] .leaflet-tooltip-left:before,[dir] .leaflet-tooltip-right:before{margin-top:-6px}[dir=ltr] .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}[dir=ltr] .leaflet-tooltip-right:before,[dir=rtl] .leaflet-tooltip-left:before{left:0;margin-left:-12px;border-right-color:#fff}[dir=rtl] .leaflet-tooltip-right:before{right:0;margin-right:-12px;border-left-color:#fff}.beautify-marker{font-weight:700;font-family:monospace;position:absolute;box-sizing:border-box}[dir] .beautify-marker{text-align:center}[dir] .beautify-marker.circle,[dir] .beautify-marker.circle-dot,[dir] .beautify-marker.doughnut{border-radius:100%}[dir=ltr] .beautify-marker.marker{border-top-left-radius:50%;border-top-right-radius:50% 100%;border-bottom-left-radius:100% 50%;border-bottom-right-radius:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .beautify-marker.marker{border-top-right-radius:50%;border-top-left-radius:50% 100%;border-bottom-right-radius:100% 50%;border-bottom-left-radius:0}[dir=ltr] .beautify-marker.marker>*,[dir=rtl] .beautify-marker.marker{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}[dir=rtl] .beautify-marker.marker>*{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.Code__code___31Vg8{position:absolute;top:110px;bottom:10px;width:425px;color:#fff;font-family:Roboto,monospace;white-space:pre;font-size:14px;line-height:22px}[dir] .Code__code___31Vg8{background:rgba(0,0,0,.7);border-radius:4px;padding:24px}[dir=ltr] .Code__code___31Vg8{right:10px}[dir=rtl] .Code__code___31Vg8{left:10px}.Layout__header___33oX6{position:relative;width:100%;height:100px}[dir=ltr] .Layout__header___33oX6{padding:0 0 0 20px}[dir=rtl] .Layout__header___33oX6{padding:0 20px 0 0}.Layout__header___33oX6 h1{font-family:Roboto,sans-serif;font-size:32px;font-weight:300;line-height:64px}[dir] .Layout__header___33oX6 h1{margin:0;padding:0}.Layout__header___33oX6 ul{list-style:none;display:block;overflow:hidden;line-height:32px}[dir] .Layout__header___33oX6 ul{margin:0;padding:0}.Layout__header___33oX6 ul li{display:block}[dir] .Layout__header___33oX6 ul li{cursor:pointer}[dir=ltr] .Layout__header___33oX6 ul li{float:left}[dir=rtl] .Layout__header___33oX6 ul li{float:right}[dir] .Layout__header___33oX6 ul li:hover{border-bottom:4px solid #00bcd4}[dir] .Layout__header___33oX6 ul li.active{border-bottom:4px solid #2196f3}.Layout__header___33oX6 ul li a{text-decoration:none;color:inherit;display:block;width:100%;height:100%}[dir] .Layout__header___33oX6 ul li a{padding:0 24px}.Layout__content___GDRpI{position:absolute;top:100px;bottom:0}[dir=ltr] .Layout__content___GDRpI{left:20px;right:465px}[dir=rtl] .Layout__content___GDRpI{right:20px;left:465px}[dir=ltr] .Layout__fullWidth___2Qlah,[dir=rtl] .Layout__fullWidth___2Qlah{left:0;right:0}.Map__map___2UbOE{position:absolute;display:block;width:100%;height:100%}.SearchResults__item___3yUT->*{line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dir] .SearchResults__item___3yUT->*{border:1px solid transparent;padding:0 18px}[dir] .SearchResults__item___3yUT->.active,[dir] .SearchResults__item___3yUT->:hover{background-color:#f8f8f8;border-color:#c6c6c6}.Search__search___2kQjw form{position:relative;vertical-align:top;-webkit-transition:box-shadow .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}[dir] .Search__search___2kQjw form{margin:32px 0;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);-webkit-transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}[dir] .Search__search___2kQjw.active form,[dir] .Search__search___2kQjw form:hover{box-shadow:0 3px 8px 0 rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.08)}.Search__search___2kQjw input{width:100%;outline:0;font:16px arial,sans-serif;line-height:48px;height:48px;text-indent:18px}[dir] .Search__search___2kQjw input{border:none;padding:0;margin:0}body,html{font-family:Open Sans,sans-serif;height:100%;width:100%;box-sizing:border-box}[dir] body,html[dir]{margin:0;padding:0}*,:after,:before{box-sizing:border-box}.leaflet-control-geosearch.bar{position:absolute!important}[dir=ltr] .leaflet-control-geosearch.bar{left:50px;right:515px}[dir=rtl] .leaflet-control-geosearch.bar{right:50px;left:515px}.leaflet__leaflet-control-geosearch___35AKI *,.leaflet__leaflet-control-geosearch___35AKI :after,.leaflet__leaflet-control-geosearch___35AKI :before{box-sizing:border-box}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__leaflet-bar-part___2_DBQ{border-radius:4px;border-bottom:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{position:absolute;display:block;content:""}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{top:19px;width:8px}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{border-top:2px solid #555}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{left:16px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{right:16px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{top:6px;height:14px;width:14px}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{border-radius:50%;border:2px solid #555}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{left:6px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{right:6px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:before,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:before{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{top:50%;width:18px;height:18px}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{border-radius:50%}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{left:50%;margin:-9px 0 0 -9px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{right:50%;margin:-9px -9px 0 0}.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{content:""}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{border:2px solid #555;border-top-color:#f3f3f3}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{-webkit-animation:leaflet__spin___TqeCo-ltr 1s linear infinite;animation:leaflet__spin___TqeCo-ltr 1s linear infinite}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{-webkit-animation:leaflet__spin___TqeCo-rtl 1s linear infinite;animation:leaflet__spin___TqeCo-rtl 1s linear infinite}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{content:"!";line-height:normal;font-weight:600;font-size:18px}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{border:none}.leaflet__leaflet-control-geosearch___35AKI form{display:none;position:absolute;top:-2px;z-index:-1;height:auto}[dir] .leaflet__leaflet-control-geosearch___35AKI form{border:2px solid rgba(0,0,0,.2);background-color:#fff;background-clip:padding-box;margin:0;padding:0 8px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI form{left:28px;border-radius:0 4px 4px 0;border-left:none}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI form{right:28px;border-radius:4px 0 0 4px;border-right:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__active___WG2p7 form{display:block}.leaflet__leaflet-control-geosearch___35AKI form input{min-width:200px;width:100%;outline:0;font-size:12px;height:30px;text-indent:8px}[dir] .leaflet__leaflet-control-geosearch___35AKI form input{border:none;margin:0;padding:0}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI form input{border-radius:0 4px 4px 0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI form input{border-radius:4px 0 0 4px}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW{background:#fff}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{padding:0 8px;border:1px solid transparent}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7{padding:8px 0;border-top:1px solid #c6c6c6}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>.leaflet__active___WG2p7,[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>:hover{background-color:#f8f8f8;border-color:#c6c6c6;cursor:pointer}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{content:"";display:block;width:0;position:absolute;bottom:-2px;top:30px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{border-left:2px solid rgba(0,0,0,.2);left:-2px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{border-right:2px solid rgba(0,0,0,.2);right:-2px}@-webkit-keyframes leaflet__spin___TqeCo-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes leaflet__spin___TqeCo-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes leaflet__spin___TqeCo-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes leaflet__spin___TqeCo-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}.leaflet__leaflet-bottom___OI2at .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA,.leaflet__leaflet-top___31xh0 .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{position:relative;display:block;height:auto;width:400px;z-index:1000}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{margin:10px auto 0;cursor:auto}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{position:relative;top:0;display:block}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{border:2px solid rgba(0,0,0,.2);border-radius:4px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{left:0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{right:0}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form input{min-width:100%;width:100%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA .leaflet__results___19EcW.leaflet__active___WG2p7:after{opacity:.2}[dir=ltr] .leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{right:28px;left:auto;border-radius:4px 0 0 4px;border-left:inherit;border-right:none}[dir=rtl] .leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{left:28px;right:auto;border-radius:0 4px 4px 0;border-right:inherit;border-left:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{color:#000;position:absolute;line-height:30px;top:0}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{padding:0 8px;cursor:pointer;border:none}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{right:0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{left:0}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm:hover{background:#f5f5f5}[dir] .marker-cluster-small{background-color:rgba(181,226,140,.6)}[dir] .marker-cluster-small div{background-color:rgba(110,204,57,.6)}[dir] .marker-cluster-medium{background-color:rgba(241,211,87,.6)}[dir] .marker-cluster-medium div{background-color:rgba(240,194,12,.6)}[dir] .marker-cluster-large{background-color:rgba(253,156,115,.6)}[dir] .marker-cluster-large div{background-color:rgba(241,128,23,.6)}[dir] .leaflet-oldie .marker-cluster-small{background-color:#b5e28c}[dir] .leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}[dir] .leaflet-oldie .marker-cluster-medium{background-color:#f1d357}[dir] .leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}[dir] .leaflet-oldie .marker-cluster-large{background-color:#fd9c73}[dir] .leaflet-oldie .marker-cluster-large div{background-color:#f18017}[dir] .marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;font:12px Helvetica Neue,Arial,Helvetica,sans-serif}[dir] .marker-cluster div{margin-top:5px;text-align:center;border-radius:15px}[dir=ltr] .marker-cluster div{margin-left:5px}[dir=rtl] .marker-cluster div{margin-right:5px}.marker-cluster span{line-height:30px}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{transition:opacity .3s ease-in,-webkit-transform .3s ease-out;-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;transition:transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}[dir] .leaflet-cluster-anim .leaflet-marker-icon,[dir] .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}[dir] .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}
\ No newline at end of file + */.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{width:1.25em}[dir] .fa-fw{text-align:center}.fa-ul{list-style-type:none}[dir=ltr] .fa-ul{margin-left:2.5em;padding-left:0}[dir=rtl] .fa-ul{margin-right:2.5em;padding-right:0}.fa-ul>li{position:relative}.fa-li{position:absolute;width:2em;line-height:inherit}[dir] .fa-li{text-align:center}[dir=ltr] .fa-li{left:-2em}[dir=rtl] .fa-li{right:-2em}[dir] .fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}[dir=ltr] .fa-pull-left{float:left}[dir=ltr] .fa-pull-right,[dir=rtl] .fa-pull-left{float:right}[dir=rtl] .fa-pull-right{float:left}[dir=ltr] .fa.fa-pull-left,[dir=ltr] .fab.fa-pull-left,[dir=ltr] .fal.fa-pull-left,[dir=ltr] .far.fa-pull-left,[dir=ltr] .fas.fa-pull-left{margin-right:.3em}[dir=ltr] .fa.fa-pull-right,[dir=ltr] .fab.fa-pull-right,[dir=ltr] .fal.fa-pull-right,[dir=ltr] .far.fa-pull-right,[dir=ltr] .fas.fa-pull-right,[dir=rtl] .fa.fa-pull-left,[dir=rtl] .fab.fa-pull-left,[dir=rtl] .fal.fa-pull-left,[dir=rtl] .far.fa-pull-left,[dir=rtl] .fas.fa-pull-left{margin-left:.3em}[dir=rtl] .fa.fa-pull-right,[dir=rtl] .fab.fa-pull-right,[dir=rtl] .fal.fa-pull-right,[dir=rtl] .far.fa-pull-right,[dir=rtl] .fas.fa-pull-right{margin-right:.3em}[dir=ltr] .fa-spin{-webkit-animation:fa-spin-ltr 2s linear infinite;animation:fa-spin-ltr 2s linear infinite}[dir=rtl] .fa-spin{-webkit-animation:fa-spin-rtl 2s linear infinite;animation:fa-spin-rtl 2s linear infinite}[dir=ltr] .fa-pulse{-webkit-animation:fa-spin-ltr 1s steps(8) infinite;animation:fa-spin-ltr 1s steps(8) infinite}[dir=rtl] .fa-pulse{-webkit-animation:fa-spin-rtl 1s steps(8) infinite;animation:fa-spin-rtl 1s steps(8) infinite}@-webkit-keyframes fa-spin-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes fa-spin-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes fa-spin-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}[dir=ltr] .fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}[dir=rtl] .fa-rotate-90{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}[dir=ltr] .fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}[dir=rtl] .fa-rotate-180{-webkit-transform:rotate(-180deg);transform:rotate(-180deg)}[dir=ltr] .fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}[dir=rtl] .fa-rotate-270{-webkit-transform:rotate(-270deg);transform:rotate(-270deg)}.fa-flip-horizontal,[dir] .fa-flip-horizontal{-webkit-transform:scaleX(-1)}[dir] .fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical,[dir] .fa-flip-vertical{-webkit-transform:scaleY(-1)}[dir] .fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1)}[dir] .fa-flip-both,[dir] .fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{position:absolute;width:100%}[dir] .fa-stack-1x,[dir] .fa-stack-2x{text-align:center}[dir=ltr] .fa-stack-1x,[dir=ltr] .fa-stack-2x{left:0}[dir=rtl] .fa-stack-1x,[dir=rtl] .fa-stack-2x{right:0}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\F26E"}.fa-accessible-icon:before{content:"\F368"}.fa-accusoft:before{content:"\F369"}.fa-acquisitions-incorporated:before{content:"\F6AF"}.fa-ad:before{content:"\F641"}.fa-address-book:before{content:"\F2B9"}.fa-address-card:before{content:"\F2BB"}.fa-adjust:before{content:"\F042"}.fa-adn:before{content:"\F170"}.fa-adobe:before{content:"\F778"}.fa-adversal:before{content:"\F36A"}.fa-affiliatetheme:before{content:"\F36B"}.fa-air-freshener:before{content:"\F5D0"}.fa-airbnb:before{content:"\F834"}.fa-algolia:before{content:"\F36C"}.fa-align-center:before{content:"\F037"}.fa-align-justify:before{content:"\F039"}.fa-align-left:before{content:"\F036"}.fa-align-right:before{content:"\F038"}.fa-alipay:before{content:"\F642"}.fa-allergies:before{content:"\F461"}.fa-amazon:before{content:"\F270"}.fa-amazon-pay:before{content:"\F42C"}.fa-ambulance:before{content:"\F0F9"}.fa-american-sign-language-interpreting:before{content:"\F2A3"}.fa-amilia:before{content:"\F36D"}.fa-anchor:before{content:"\F13D"}.fa-android:before{content:"\F17B"}.fa-angellist:before{content:"\F209"}.fa-angle-double-down:before{content:"\F103"}.fa-angle-double-left:before{content:"\F100"}.fa-angle-double-right:before{content:"\F101"}.fa-angle-double-up:before{content:"\F102"}.fa-angle-down:before{content:"\F107"}.fa-angle-left:before{content:"\F104"}.fa-angle-right:before{content:"\F105"}.fa-angle-up:before{content:"\F106"}.fa-angry:before{content:"\F556"}.fa-angrycreative:before{content:"\F36E"}.fa-angular:before{content:"\F420"}.fa-ankh:before{content:"\F644"}.fa-app-store:before{content:"\F36F"}.fa-app-store-ios:before{content:"\F370"}.fa-apper:before{content:"\F371"}.fa-apple:before{content:"\F179"}.fa-apple-alt:before{content:"\F5D1"}.fa-apple-pay:before{content:"\F415"}.fa-archive:before{content:"\F187"}.fa-archway:before{content:"\F557"}.fa-arrow-alt-circle-down:before{content:"\F358"}.fa-arrow-alt-circle-left:before{content:"\F359"}.fa-arrow-alt-circle-right:before{content:"\F35A"}.fa-arrow-alt-circle-up:before{content:"\F35B"}.fa-arrow-circle-down:before{content:"\F0AB"}.fa-arrow-circle-left:before{content:"\F0A8"}.fa-arrow-circle-right:before{content:"\F0A9"}.fa-arrow-circle-up:before{content:"\F0AA"}.fa-arrow-down:before{content:"\F063"}.fa-arrow-left:before{content:"\F060"}.fa-arrow-right:before{content:"\F061"}.fa-arrow-up:before{content:"\F062"}.fa-arrows-alt:before{content:"\F0B2"}.fa-arrows-alt-h:before{content:"\F337"}.fa-arrows-alt-v:before{content:"\F338"}.fa-artstation:before{content:"\F77A"}.fa-assistive-listening-systems:before{content:"\F2A2"}.fa-asterisk:before{content:"\F069"}.fa-asymmetrik:before{content:"\F372"}.fa-at:before{content:"\F1FA"}.fa-atlas:before{content:"\F558"}.fa-atlassian:before{content:"\F77B"}.fa-atom:before{content:"\F5D2"}.fa-audible:before{content:"\F373"}.fa-audio-description:before{content:"\F29E"}.fa-autoprefixer:before{content:"\F41C"}.fa-avianex:before{content:"\F374"}.fa-aviato:before{content:"\F421"}.fa-award:before{content:"\F559"}.fa-aws:before{content:"\F375"}.fa-baby:before{content:"\F77C"}.fa-baby-carriage:before{content:"\F77D"}.fa-backspace:before{content:"\F55A"}.fa-backward:before{content:"\F04A"}.fa-bacon:before{content:"\F7E5"}.fa-balance-scale:before{content:"\F24E"}.fa-balance-scale-left:before{content:"\F515"}.fa-balance-scale-right:before{content:"\F516"}.fa-ban:before{content:"\F05E"}.fa-band-aid:before{content:"\F462"}.fa-bandcamp:before{content:"\F2D5"}.fa-barcode:before{content:"\F02A"}.fa-bars:before{content:"\F0C9"}.fa-baseball-ball:before{content:"\F433"}.fa-basketball-ball:before{content:"\F434"}.fa-bath:before{content:"\F2CD"}.fa-battery-empty:before{content:"\F244"}.fa-battery-full:before{content:"\F240"}.fa-battery-half:before{content:"\F242"}.fa-battery-quarter:before{content:"\F243"}.fa-battery-three-quarters:before{content:"\F241"}.fa-battle-net:before{content:"\F835"}.fa-bed:before{content:"\F236"}.fa-beer:before{content:"\F0FC"}.fa-behance:before{content:"\F1B4"}.fa-behance-square:before{content:"\F1B5"}.fa-bell:before{content:"\F0F3"}.fa-bell-slash:before{content:"\F1F6"}.fa-bezier-curve:before{content:"\F55B"}.fa-bible:before{content:"\F647"}.fa-bicycle:before{content:"\F206"}.fa-biking:before{content:"\F84A"}.fa-bimobject:before{content:"\F378"}.fa-binoculars:before{content:"\F1E5"}.fa-biohazard:before{content:"\F780"}.fa-birthday-cake:before{content:"\F1FD"}.fa-bitbucket:before{content:"\F171"}.fa-bitcoin:before{content:"\F379"}.fa-bity:before{content:"\F37A"}.fa-black-tie:before{content:"\F27E"}.fa-blackberry:before{content:"\F37B"}.fa-blender:before{content:"\F517"}.fa-blender-phone:before{content:"\F6B6"}.fa-blind:before{content:"\F29D"}.fa-blog:before{content:"\F781"}.fa-blogger:before{content:"\F37C"}.fa-blogger-b:before{content:"\F37D"}.fa-bluetooth:before{content:"\F293"}.fa-bluetooth-b:before{content:"\F294"}.fa-bold:before{content:"\F032"}.fa-bolt:before{content:"\F0E7"}.fa-bomb:before{content:"\F1E2"}.fa-bone:before{content:"\F5D7"}.fa-bong:before{content:"\F55C"}.fa-book:before{content:"\F02D"}.fa-book-dead:before{content:"\F6B7"}.fa-book-medical:before{content:"\F7E6"}.fa-book-open:before{content:"\F518"}.fa-book-reader:before{content:"\F5DA"}.fa-bookmark:before{content:"\F02E"}.fa-bootstrap:before{content:"\F836"}.fa-border-all:before{content:"\F84C"}.fa-border-none:before{content:"\F850"}.fa-border-style:before{content:"\F853"}.fa-bowling-ball:before{content:"\F436"}.fa-box:before{content:"\F466"}.fa-box-open:before{content:"\F49E"}.fa-boxes:before{content:"\F468"}.fa-braille:before{content:"\F2A1"}.fa-brain:before{content:"\F5DC"}.fa-bread-slice:before{content:"\F7EC"}.fa-briefcase:before{content:"\F0B1"}.fa-briefcase-medical:before{content:"\F469"}.fa-broadcast-tower:before{content:"\F519"}.fa-broom:before{content:"\F51A"}.fa-brush:before{content:"\F55D"}.fa-btc:before{content:"\F15A"}.fa-buffer:before{content:"\F837"}.fa-bug:before{content:"\F188"}.fa-building:before{content:"\F1AD"}.fa-bullhorn:before{content:"\F0A1"}.fa-bullseye:before{content:"\F140"}.fa-burn:before{content:"\F46A"}.fa-buromobelexperte:before{content:"\F37F"}.fa-bus:before{content:"\F207"}.fa-bus-alt:before{content:"\F55E"}.fa-business-time:before{content:"\F64A"}.fa-buysellads:before{content:"\F20D"}.fa-calculator:before{content:"\F1EC"}.fa-calendar:before{content:"\F133"}.fa-calendar-alt:before{content:"\F073"}.fa-calendar-check:before{content:"\F274"}.fa-calendar-day:before{content:"\F783"}.fa-calendar-minus:before{content:"\F272"}.fa-calendar-plus:before{content:"\F271"}.fa-calendar-times:before{content:"\F273"}.fa-calendar-week:before{content:"\F784"}.fa-camera:before{content:"\F030"}.fa-camera-retro:before{content:"\F083"}.fa-campground:before{content:"\F6BB"}.fa-canadian-maple-leaf:before{content:"\F785"}.fa-candy-cane:before{content:"\F786"}.fa-cannabis:before{content:"\F55F"}.fa-capsules:before{content:"\F46B"}.fa-car:before{content:"\F1B9"}.fa-car-alt:before{content:"\F5DE"}.fa-car-battery:before{content:"\F5DF"}.fa-car-crash:before{content:"\F5E1"}.fa-car-side:before{content:"\F5E4"}.fa-caret-down:before{content:"\F0D7"}.fa-caret-left:before{content:"\F0D9"}.fa-caret-right:before{content:"\F0DA"}.fa-caret-square-down:before{content:"\F150"}.fa-caret-square-left:before{content:"\F191"}.fa-caret-square-right:before{content:"\F152"}.fa-caret-square-up:before{content:"\F151"}.fa-caret-up:before{content:"\F0D8"}.fa-carrot:before{content:"\F787"}.fa-cart-arrow-down:before{content:"\F218"}.fa-cart-plus:before{content:"\F217"}.fa-cash-register:before{content:"\F788"}.fa-cat:before{content:"\F6BE"}.fa-cc-amazon-pay:before{content:"\F42D"}.fa-cc-amex:before{content:"\F1F3"}.fa-cc-apple-pay:before{content:"\F416"}.fa-cc-diners-club:before{content:"\F24C"}.fa-cc-discover:before{content:"\F1F2"}.fa-cc-jcb:before{content:"\F24B"}.fa-cc-mastercard:before{content:"\F1F1"}.fa-cc-paypal:before{content:"\F1F4"}.fa-cc-stripe:before{content:"\F1F5"}.fa-cc-visa:before{content:"\F1F0"}.fa-centercode:before{content:"\F380"}.fa-centos:before{content:"\F789"}.fa-certificate:before{content:"\F0A3"}.fa-chair:before{content:"\F6C0"}.fa-chalkboard:before{content:"\F51B"}.fa-chalkboard-teacher:before{content:"\F51C"}.fa-charging-station:before{content:"\F5E7"}.fa-chart-area:before{content:"\F1FE"}.fa-chart-bar:before{content:"\F080"}.fa-chart-line:before{content:"\F201"}.fa-chart-pie:before{content:"\F200"}.fa-check:before{content:"\F00C"}.fa-check-circle:before{content:"\F058"}.fa-check-double:before{content:"\F560"}.fa-check-square:before{content:"\F14A"}.fa-cheese:before{content:"\F7EF"}.fa-chess:before{content:"\F439"}.fa-chess-bishop:before{content:"\F43A"}.fa-chess-board:before{content:"\F43C"}.fa-chess-king:before{content:"\F43F"}.fa-chess-knight:before{content:"\F441"}.fa-chess-pawn:before{content:"\F443"}.fa-chess-queen:before{content:"\F445"}.fa-chess-rook:before{content:"\F447"}.fa-chevron-circle-down:before{content:"\F13A"}.fa-chevron-circle-left:before{content:"\F137"}.fa-chevron-circle-right:before{content:"\F138"}.fa-chevron-circle-up:before{content:"\F139"}.fa-chevron-down:before{content:"\F078"}.fa-chevron-left:before{content:"\F053"}.fa-chevron-right:before{content:"\F054"}.fa-chevron-up:before{content:"\F077"}.fa-child:before{content:"\F1AE"}.fa-chrome:before{content:"\F268"}.fa-chromecast:before{content:"\F838"}.fa-church:before{content:"\F51D"}.fa-circle:before{content:"\F111"}.fa-circle-notch:before{content:"\F1CE"}.fa-city:before{content:"\F64F"}.fa-clinic-medical:before{content:"\F7F2"}.fa-clipboard:before{content:"\F328"}.fa-clipboard-check:before{content:"\F46C"}.fa-clipboard-list:before{content:"\F46D"}.fa-clock:before{content:"\F017"}.fa-clone:before{content:"\F24D"}.fa-closed-captioning:before{content:"\F20A"}.fa-cloud:before{content:"\F0C2"}.fa-cloud-download-alt:before{content:"\F381"}.fa-cloud-meatball:before{content:"\F73B"}.fa-cloud-moon:before{content:"\F6C3"}.fa-cloud-moon-rain:before{content:"\F73C"}.fa-cloud-rain:before{content:"\F73D"}.fa-cloud-showers-heavy:before{content:"\F740"}.fa-cloud-sun:before{content:"\F6C4"}.fa-cloud-sun-rain:before{content:"\F743"}.fa-cloud-upload-alt:before{content:"\F382"}.fa-cloudscale:before{content:"\F383"}.fa-cloudsmith:before{content:"\F384"}.fa-cloudversify:before{content:"\F385"}.fa-cocktail:before{content:"\F561"}.fa-code:before{content:"\F121"}.fa-code-branch:before{content:"\F126"}.fa-codepen:before{content:"\F1CB"}.fa-codiepie:before{content:"\F284"}.fa-coffee:before{content:"\F0F4"}.fa-cog:before{content:"\F013"}.fa-cogs:before{content:"\F085"}.fa-coins:before{content:"\F51E"}.fa-columns:before{content:"\F0DB"}.fa-comment:before{content:"\F075"}.fa-comment-alt:before{content:"\F27A"}.fa-comment-dollar:before{content:"\F651"}.fa-comment-dots:before{content:"\F4AD"}.fa-comment-medical:before{content:"\F7F5"}.fa-comment-slash:before{content:"\F4B3"}.fa-comments:before{content:"\F086"}.fa-comments-dollar:before{content:"\F653"}.fa-compact-disc:before{content:"\F51F"}.fa-compass:before{content:"\F14E"}.fa-compress:before{content:"\F066"}.fa-compress-arrows-alt:before{content:"\F78C"}.fa-concierge-bell:before{content:"\F562"}.fa-confluence:before{content:"\F78D"}.fa-connectdevelop:before{content:"\F20E"}.fa-contao:before{content:"\F26D"}.fa-cookie:before{content:"\F563"}.fa-cookie-bite:before{content:"\F564"}.fa-copy:before{content:"\F0C5"}.fa-copyright:before{content:"\F1F9"}.fa-couch:before{content:"\F4B8"}.fa-cpanel:before{content:"\F388"}.fa-creative-commons:before{content:"\F25E"}.fa-creative-commons-by:before{content:"\F4E7"}.fa-creative-commons-nc:before{content:"\F4E8"}.fa-creative-commons-nc-eu:before{content:"\F4E9"}.fa-creative-commons-nc-jp:before{content:"\F4EA"}.fa-creative-commons-nd:before{content:"\F4EB"}.fa-creative-commons-pd:before{content:"\F4EC"}.fa-creative-commons-pd-alt:before{content:"\F4ED"}.fa-creative-commons-remix:before{content:"\F4EE"}.fa-creative-commons-sa:before{content:"\F4EF"}.fa-creative-commons-sampling:before{content:"\F4F0"}.fa-creative-commons-sampling-plus:before{content:"\F4F1"}.fa-creative-commons-share:before{content:"\F4F2"}.fa-creative-commons-zero:before{content:"\F4F3"}.fa-credit-card:before{content:"\F09D"}.fa-critical-role:before{content:"\F6C9"}.fa-crop:before{content:"\F125"}.fa-crop-alt:before{content:"\F565"}.fa-cross:before{content:"\F654"}.fa-crosshairs:before{content:"\F05B"}.fa-crow:before{content:"\F520"}.fa-crown:before{content:"\F521"}.fa-crutch:before{content:"\F7F7"}.fa-css3:before{content:"\F13C"}.fa-css3-alt:before{content:"\F38B"}.fa-cube:before{content:"\F1B2"}.fa-cubes:before{content:"\F1B3"}.fa-cut:before{content:"\F0C4"}.fa-cuttlefish:before{content:"\F38C"}.fa-d-and-d:before{content:"\F38D"}.fa-d-and-d-beyond:before{content:"\F6CA"}.fa-dashcube:before{content:"\F210"}.fa-database:before{content:"\F1C0"}.fa-deaf:before{content:"\F2A4"}.fa-delicious:before{content:"\F1A5"}.fa-democrat:before{content:"\F747"}.fa-deploydog:before{content:"\F38E"}.fa-deskpro:before{content:"\F38F"}.fa-desktop:before{content:"\F108"}.fa-dev:before{content:"\F6CC"}.fa-deviantart:before{content:"\F1BD"}.fa-dharmachakra:before{content:"\F655"}.fa-dhl:before{content:"\F790"}.fa-diagnoses:before{content:"\F470"}.fa-diaspora:before{content:"\F791"}.fa-dice:before{content:"\F522"}.fa-dice-d20:before{content:"\F6CF"}.fa-dice-d6:before{content:"\F6D1"}.fa-dice-five:before{content:"\F523"}.fa-dice-four:before{content:"\F524"}.fa-dice-one:before{content:"\F525"}.fa-dice-six:before{content:"\F526"}.fa-dice-three:before{content:"\F527"}.fa-dice-two:before{content:"\F528"}.fa-digg:before{content:"\F1A6"}.fa-digital-ocean:before{content:"\F391"}.fa-digital-tachograph:before{content:"\F566"}.fa-directions:before{content:"\F5EB"}.fa-discord:before{content:"\F392"}.fa-discourse:before{content:"\F393"}.fa-divide:before{content:"\F529"}.fa-dizzy:before{content:"\F567"}.fa-dna:before{content:"\F471"}.fa-dochub:before{content:"\F394"}.fa-docker:before{content:"\F395"}.fa-dog:before{content:"\F6D3"}.fa-dollar-sign:before{content:"\F155"}.fa-dolly:before{content:"\F472"}.fa-dolly-flatbed:before{content:"\F474"}.fa-donate:before{content:"\F4B9"}.fa-door-closed:before{content:"\F52A"}.fa-door-open:before{content:"\F52B"}.fa-dot-circle:before{content:"\F192"}.fa-dove:before{content:"\F4BA"}.fa-download:before{content:"\F019"}.fa-draft2digital:before{content:"\F396"}.fa-drafting-compass:before{content:"\F568"}.fa-dragon:before{content:"\F6D5"}.fa-draw-polygon:before{content:"\F5EE"}.fa-dribbble:before{content:"\F17D"}.fa-dribbble-square:before{content:"\F397"}.fa-dropbox:before{content:"\F16B"}.fa-drum:before{content:"\F569"}.fa-drum-steelpan:before{content:"\F56A"}.fa-drumstick-bite:before{content:"\F6D7"}.fa-drupal:before{content:"\F1A9"}.fa-dumbbell:before{content:"\F44B"}.fa-dumpster:before{content:"\F793"}.fa-dumpster-fire:before{content:"\F794"}.fa-dungeon:before{content:"\F6D9"}.fa-dyalog:before{content:"\F399"}.fa-earlybirds:before{content:"\F39A"}.fa-ebay:before{content:"\F4F4"}.fa-edge:before{content:"\F282"}.fa-edit:before{content:"\F044"}.fa-egg:before{content:"\F7FB"}.fa-eject:before{content:"\F052"}.fa-elementor:before{content:"\F430"}.fa-ellipsis-h:before{content:"\F141"}.fa-ellipsis-v:before{content:"\F142"}.fa-ello:before{content:"\F5F1"}.fa-ember:before{content:"\F423"}.fa-empire:before{content:"\F1D1"}.fa-envelope:before{content:"\F0E0"}.fa-envelope-open:before{content:"\F2B6"}.fa-envelope-open-text:before{content:"\F658"}.fa-envelope-square:before{content:"\F199"}.fa-envira:before{content:"\F299"}.fa-equals:before{content:"\F52C"}.fa-eraser:before{content:"\F12D"}.fa-erlang:before{content:"\F39D"}.fa-ethereum:before{content:"\F42E"}.fa-ethernet:before{content:"\F796"}.fa-etsy:before{content:"\F2D7"}.fa-euro-sign:before{content:"\F153"}.fa-evernote:before{content:"\F839"}.fa-exchange-alt:before{content:"\F362"}.fa-exclamation:before{content:"\F12A"}.fa-exclamation-circle:before{content:"\F06A"}.fa-exclamation-triangle:before{content:"\F071"}.fa-expand:before{content:"\F065"}.fa-expand-arrows-alt:before{content:"\F31E"}.fa-expeditedssl:before{content:"\F23E"}.fa-external-link-alt:before{content:"\F35D"}.fa-external-link-square-alt:before{content:"\F360"}.fa-eye:before{content:"\F06E"}.fa-eye-dropper:before{content:"\F1FB"}.fa-eye-slash:before{content:"\F070"}.fa-facebook:before{content:"\F09A"}.fa-facebook-f:before{content:"\F39E"}.fa-facebook-messenger:before{content:"\F39F"}.fa-facebook-square:before{content:"\F082"}.fa-fan:before{content:"\F863"}.fa-fantasy-flight-games:before{content:"\F6DC"}.fa-fast-backward:before{content:"\F049"}.fa-fast-forward:before{content:"\F050"}.fa-fax:before{content:"\F1AC"}.fa-feather:before{content:"\F52D"}.fa-feather-alt:before{content:"\F56B"}.fa-fedex:before{content:"\F797"}.fa-fedora:before{content:"\F798"}.fa-female:before{content:"\F182"}.fa-fighter-jet:before{content:"\F0FB"}.fa-figma:before{content:"\F799"}.fa-file:before{content:"\F15B"}.fa-file-alt:before{content:"\F15C"}.fa-file-archive:before{content:"\F1C6"}.fa-file-audio:before{content:"\F1C7"}.fa-file-code:before{content:"\F1C9"}.fa-file-contract:before{content:"\F56C"}.fa-file-csv:before{content:"\F6DD"}.fa-file-download:before{content:"\F56D"}.fa-file-excel:before{content:"\F1C3"}.fa-file-export:before{content:"\F56E"}.fa-file-image:before{content:"\F1C5"}.fa-file-import:before{content:"\F56F"}.fa-file-invoice:before{content:"\F570"}.fa-file-invoice-dollar:before{content:"\F571"}.fa-file-medical:before{content:"\F477"}.fa-file-medical-alt:before{content:"\F478"}.fa-file-pdf:before{content:"\F1C1"}.fa-file-powerpoint:before{content:"\F1C4"}.fa-file-prescription:before{content:"\F572"}.fa-file-signature:before{content:"\F573"}.fa-file-upload:before{content:"\F574"}.fa-file-video:before{content:"\F1C8"}.fa-file-word:before{content:"\F1C2"}.fa-fill:before{content:"\F575"}.fa-fill-drip:before{content:"\F576"}.fa-film:before{content:"\F008"}.fa-filter:before{content:"\F0B0"}.fa-fingerprint:before{content:"\F577"}.fa-fire:before{content:"\F06D"}.fa-fire-alt:before{content:"\F7E4"}.fa-fire-extinguisher:before{content:"\F134"}.fa-firefox:before{content:"\F269"}.fa-first-aid:before{content:"\F479"}.fa-first-order:before{content:"\F2B0"}.fa-first-order-alt:before{content:"\F50A"}.fa-firstdraft:before{content:"\F3A1"}.fa-fish:before{content:"\F578"}.fa-fist-raised:before{content:"\F6DE"}.fa-flag:before{content:"\F024"}.fa-flag-checkered:before{content:"\F11E"}.fa-flag-usa:before{content:"\F74D"}.fa-flask:before{content:"\F0C3"}.fa-flickr:before{content:"\F16E"}.fa-flipboard:before{content:"\F44D"}.fa-flushed:before{content:"\F579"}.fa-fly:before{content:"\F417"}.fa-folder:before{content:"\F07B"}.fa-folder-minus:before{content:"\F65D"}.fa-folder-open:before{content:"\F07C"}.fa-folder-plus:before{content:"\F65E"}.fa-font:before{content:"\F031"}.fa-font-awesome:before{content:"\F2B4"}.fa-font-awesome-alt:before{content:"\F35C"}.fa-font-awesome-flag:before{content:"\F425"}.fa-font-awesome-logo-full:before{content:"\F4E6"}.fa-fonticons:before{content:"\F280"}.fa-fonticons-fi:before{content:"\F3A2"}.fa-football-ball:before{content:"\F44E"}.fa-fort-awesome:before{content:"\F286"}.fa-fort-awesome-alt:before{content:"\F3A3"}.fa-forumbee:before{content:"\F211"}.fa-forward:before{content:"\F04E"}.fa-foursquare:before{content:"\F180"}.fa-free-code-camp:before{content:"\F2C5"}.fa-freebsd:before{content:"\F3A4"}.fa-frog:before{content:"\F52E"}.fa-frown:before{content:"\F119"}.fa-frown-open:before{content:"\F57A"}.fa-fulcrum:before{content:"\F50B"}.fa-funnel-dollar:before{content:"\F662"}.fa-futbol:before{content:"\F1E3"}.fa-galactic-republic:before{content:"\F50C"}.fa-galactic-senate:before{content:"\F50D"}.fa-gamepad:before{content:"\F11B"}.fa-gas-pump:before{content:"\F52F"}.fa-gavel:before{content:"\F0E3"}.fa-gem:before{content:"\F3A5"}.fa-genderless:before{content:"\F22D"}.fa-get-pocket:before{content:"\F265"}.fa-gg:before{content:"\F260"}.fa-gg-circle:before{content:"\F261"}.fa-ghost:before{content:"\F6E2"}.fa-gift:before{content:"\F06B"}.fa-gifts:before{content:"\F79C"}.fa-git:before{content:"\F1D3"}.fa-git-alt:before{content:"\F841"}.fa-git-square:before{content:"\F1D2"}.fa-github:before{content:"\F09B"}.fa-github-alt:before{content:"\F113"}.fa-github-square:before{content:"\F092"}.fa-gitkraken:before{content:"\F3A6"}.fa-gitlab:before{content:"\F296"}.fa-gitter:before{content:"\F426"}.fa-glass-cheers:before{content:"\F79F"}.fa-glass-martini:before{content:"\F000"}.fa-glass-martini-alt:before{content:"\F57B"}.fa-glass-whiskey:before{content:"\F7A0"}.fa-glasses:before{content:"\F530"}.fa-glide:before{content:"\F2A5"}.fa-glide-g:before{content:"\F2A6"}.fa-globe:before{content:"\F0AC"}.fa-globe-africa:before{content:"\F57C"}.fa-globe-americas:before{content:"\F57D"}.fa-globe-asia:before{content:"\F57E"}.fa-globe-europe:before{content:"\F7A2"}.fa-gofore:before{content:"\F3A7"}.fa-golf-ball:before{content:"\F450"}.fa-goodreads:before{content:"\F3A8"}.fa-goodreads-g:before{content:"\F3A9"}.fa-google:before{content:"\F1A0"}.fa-google-drive:before{content:"\F3AA"}.fa-google-play:before{content:"\F3AB"}.fa-google-plus:before{content:"\F2B3"}.fa-google-plus-g:before{content:"\F0D5"}.fa-google-plus-square:before{content:"\F0D4"}.fa-google-wallet:before{content:"\F1EE"}.fa-gopuram:before{content:"\F664"}.fa-graduation-cap:before{content:"\F19D"}.fa-gratipay:before{content:"\F184"}.fa-grav:before{content:"\F2D6"}.fa-greater-than:before{content:"\F531"}.fa-greater-than-equal:before{content:"\F532"}.fa-grimace:before{content:"\F57F"}.fa-grin:before{content:"\F580"}.fa-grin-alt:before{content:"\F581"}.fa-grin-beam:before{content:"\F582"}.fa-grin-beam-sweat:before{content:"\F583"}.fa-grin-hearts:before{content:"\F584"}.fa-grin-squint:before{content:"\F585"}.fa-grin-squint-tears:before{content:"\F586"}.fa-grin-stars:before{content:"\F587"}.fa-grin-tears:before{content:"\F588"}.fa-grin-tongue:before{content:"\F589"}.fa-grin-tongue-squint:before{content:"\F58A"}.fa-grin-tongue-wink:before{content:"\F58B"}.fa-grin-wink:before{content:"\F58C"}.fa-grip-horizontal:before{content:"\F58D"}.fa-grip-lines:before{content:"\F7A4"}.fa-grip-lines-vertical:before{content:"\F7A5"}.fa-grip-vertical:before{content:"\F58E"}.fa-gripfire:before{content:"\F3AC"}.fa-grunt:before{content:"\F3AD"}.fa-guitar:before{content:"\F7A6"}.fa-gulp:before{content:"\F3AE"}.fa-h-square:before{content:"\F0FD"}.fa-hacker-news:before{content:"\F1D4"}.fa-hacker-news-square:before{content:"\F3AF"}.fa-hackerrank:before{content:"\F5F7"}.fa-hamburger:before{content:"\F805"}.fa-hammer:before{content:"\F6E3"}.fa-hamsa:before{content:"\F665"}.fa-hand-holding:before{content:"\F4BD"}.fa-hand-holding-heart:before{content:"\F4BE"}.fa-hand-holding-usd:before{content:"\F4C0"}.fa-hand-lizard:before{content:"\F258"}.fa-hand-middle-finger:before{content:"\F806"}.fa-hand-paper:before{content:"\F256"}.fa-hand-peace:before{content:"\F25B"}.fa-hand-point-down:before{content:"\F0A7"}.fa-hand-point-left:before{content:"\F0A5"}.fa-hand-point-right:before{content:"\F0A4"}.fa-hand-point-up:before{content:"\F0A6"}.fa-hand-pointer:before{content:"\F25A"}.fa-hand-rock:before{content:"\F255"}.fa-hand-scissors:before{content:"\F257"}.fa-hand-spock:before{content:"\F259"}.fa-hands:before{content:"\F4C2"}.fa-hands-helping:before{content:"\F4C4"}.fa-handshake:before{content:"\F2B5"}.fa-hanukiah:before{content:"\F6E6"}.fa-hard-hat:before{content:"\F807"}.fa-hashtag:before{content:"\F292"}.fa-hat-wizard:before{content:"\F6E8"}.fa-haykal:before{content:"\F666"}.fa-hdd:before{content:"\F0A0"}.fa-heading:before{content:"\F1DC"}.fa-headphones:before{content:"\F025"}.fa-headphones-alt:before{content:"\F58F"}.fa-headset:before{content:"\F590"}.fa-heart:before{content:"\F004"}.fa-heart-broken:before{content:"\F7A9"}.fa-heartbeat:before{content:"\F21E"}.fa-helicopter:before{content:"\F533"}.fa-highlighter:before{content:"\F591"}.fa-hiking:before{content:"\F6EC"}.fa-hippo:before{content:"\F6ED"}.fa-hips:before{content:"\F452"}.fa-hire-a-helper:before{content:"\F3B0"}.fa-history:before{content:"\F1DA"}.fa-hockey-puck:before{content:"\F453"}.fa-holly-berry:before{content:"\F7AA"}.fa-home:before{content:"\F015"}.fa-hooli:before{content:"\F427"}.fa-hornbill:before{content:"\F592"}.fa-horse:before{content:"\F6F0"}.fa-horse-head:before{content:"\F7AB"}.fa-hospital:before{content:"\F0F8"}.fa-hospital-alt:before{content:"\F47D"}.fa-hospital-symbol:before{content:"\F47E"}.fa-hot-tub:before{content:"\F593"}.fa-hotdog:before{content:"\F80F"}.fa-hotel:before{content:"\F594"}.fa-hotjar:before{content:"\F3B1"}.fa-hourglass:before{content:"\F254"}.fa-hourglass-end:before{content:"\F253"}.fa-hourglass-half:before{content:"\F252"}.fa-hourglass-start:before{content:"\F251"}.fa-house-damage:before{content:"\F6F1"}.fa-houzz:before{content:"\F27C"}.fa-hryvnia:before{content:"\F6F2"}.fa-html5:before{content:"\F13B"}.fa-hubspot:before{content:"\F3B2"}.fa-i-cursor:before{content:"\F246"}.fa-ice-cream:before{content:"\F810"}.fa-icicles:before{content:"\F7AD"}.fa-icons:before{content:"\F86D"}.fa-id-badge:before{content:"\F2C1"}.fa-id-card:before{content:"\F2C2"}.fa-id-card-alt:before{content:"\F47F"}.fa-igloo:before{content:"\F7AE"}.fa-image:before{content:"\F03E"}.fa-images:before{content:"\F302"}.fa-imdb:before{content:"\F2D8"}.fa-inbox:before{content:"\F01C"}.fa-indent:before{content:"\F03C"}.fa-industry:before{content:"\F275"}.fa-infinity:before{content:"\F534"}.fa-info:before{content:"\F129"}.fa-info-circle:before{content:"\F05A"}.fa-instagram:before{content:"\F16D"}.fa-intercom:before{content:"\F7AF"}.fa-internet-explorer:before{content:"\F26B"}.fa-invision:before{content:"\F7B0"}.fa-ioxhost:before{content:"\F208"}.fa-italic:before{content:"\F033"}.fa-itch-io:before{content:"\F83A"}.fa-itunes:before{content:"\F3B4"}.fa-itunes-note:before{content:"\F3B5"}.fa-java:before{content:"\F4E4"}.fa-jedi:before{content:"\F669"}.fa-jedi-order:before{content:"\F50E"}.fa-jenkins:before{content:"\F3B6"}.fa-jira:before{content:"\F7B1"}.fa-joget:before{content:"\F3B7"}.fa-joint:before{content:"\F595"}.fa-joomla:before{content:"\F1AA"}.fa-journal-whills:before{content:"\F66A"}.fa-js:before{content:"\F3B8"}.fa-js-square:before{content:"\F3B9"}.fa-jsfiddle:before{content:"\F1CC"}.fa-kaaba:before{content:"\F66B"}.fa-kaggle:before{content:"\F5FA"}.fa-key:before{content:"\F084"}.fa-keybase:before{content:"\F4F5"}.fa-keyboard:before{content:"\F11C"}.fa-keycdn:before{content:"\F3BA"}.fa-khanda:before{content:"\F66D"}.fa-kickstarter:before{content:"\F3BB"}.fa-kickstarter-k:before{content:"\F3BC"}.fa-kiss:before{content:"\F596"}.fa-kiss-beam:before{content:"\F597"}.fa-kiss-wink-heart:before{content:"\F598"}.fa-kiwi-bird:before{content:"\F535"}.fa-korvue:before{content:"\F42F"}.fa-landmark:before{content:"\F66F"}.fa-language:before{content:"\F1AB"}.fa-laptop:before{content:"\F109"}.fa-laptop-code:before{content:"\F5FC"}.fa-laptop-medical:before{content:"\F812"}.fa-laravel:before{content:"\F3BD"}.fa-lastfm:before{content:"\F202"}.fa-lastfm-square:before{content:"\F203"}.fa-laugh:before{content:"\F599"}.fa-laugh-beam:before{content:"\F59A"}.fa-laugh-squint:before{content:"\F59B"}.fa-laugh-wink:before{content:"\F59C"}.fa-layer-group:before{content:"\F5FD"}.fa-leaf:before{content:"\F06C"}.fa-leanpub:before{content:"\F212"}.fa-lemon:before{content:"\F094"}.fa-less:before{content:"\F41D"}.fa-less-than:before{content:"\F536"}.fa-less-than-equal:before{content:"\F537"}.fa-level-down-alt:before{content:"\F3BE"}.fa-level-up-alt:before{content:"\F3BF"}.fa-life-ring:before{content:"\F1CD"}.fa-lightbulb:before{content:"\F0EB"}.fa-line:before{content:"\F3C0"}.fa-link:before{content:"\F0C1"}.fa-linkedin:before{content:"\F08C"}.fa-linkedin-in:before{content:"\F0E1"}.fa-linode:before{content:"\F2B8"}.fa-linux:before{content:"\F17C"}.fa-lira-sign:before{content:"\F195"}.fa-list:before{content:"\F03A"}.fa-list-alt:before{content:"\F022"}.fa-list-ol:before{content:"\F0CB"}.fa-list-ul:before{content:"\F0CA"}.fa-location-arrow:before{content:"\F124"}.fa-lock:before{content:"\F023"}.fa-lock-open:before{content:"\F3C1"}.fa-long-arrow-alt-down:before{content:"\F309"}.fa-long-arrow-alt-left:before{content:"\F30A"}.fa-long-arrow-alt-right:before{content:"\F30B"}.fa-long-arrow-alt-up:before{content:"\F30C"}.fa-low-vision:before{content:"\F2A8"}.fa-luggage-cart:before{content:"\F59D"}.fa-lyft:before{content:"\F3C3"}.fa-magento:before{content:"\F3C4"}.fa-magic:before{content:"\F0D0"}.fa-magnet:before{content:"\F076"}.fa-mail-bulk:before{content:"\F674"}.fa-mailchimp:before{content:"\F59E"}.fa-male:before{content:"\F183"}.fa-mandalorian:before{content:"\F50F"}.fa-map:before{content:"\F279"}.fa-map-marked:before{content:"\F59F"}.fa-map-marked-alt:before{content:"\F5A0"}.fa-map-marker:before{content:"\F041"}.fa-map-marker-alt:before{content:"\F3C5"}.fa-map-pin:before{content:"\F276"}.fa-map-signs:before{content:"\F277"}.fa-markdown:before{content:"\F60F"}.fa-marker:before{content:"\F5A1"}.fa-mars:before{content:"\F222"}.fa-mars-double:before{content:"\F227"}.fa-mars-stroke:before{content:"\F229"}.fa-mars-stroke-h:before{content:"\F22B"}.fa-mars-stroke-v:before{content:"\F22A"}.fa-mask:before{content:"\F6FA"}.fa-mastodon:before{content:"\F4F6"}.fa-maxcdn:before{content:"\F136"}.fa-medal:before{content:"\F5A2"}.fa-medapps:before{content:"\F3C6"}.fa-medium:before{content:"\F23A"}.fa-medium-m:before{content:"\F3C7"}.fa-medkit:before{content:"\F0FA"}.fa-medrt:before{content:"\F3C8"}.fa-meetup:before{content:"\F2E0"}.fa-megaport:before{content:"\F5A3"}.fa-meh:before{content:"\F11A"}.fa-meh-blank:before{content:"\F5A4"}.fa-meh-rolling-eyes:before{content:"\F5A5"}.fa-memory:before{content:"\F538"}.fa-mendeley:before{content:"\F7B3"}.fa-menorah:before{content:"\F676"}.fa-mercury:before{content:"\F223"}.fa-meteor:before{content:"\F753"}.fa-microchip:before{content:"\F2DB"}.fa-microphone:before{content:"\F130"}.fa-microphone-alt:before{content:"\F3C9"}.fa-microphone-alt-slash:before{content:"\F539"}.fa-microphone-slash:before{content:"\F131"}.fa-microscope:before{content:"\F610"}.fa-microsoft:before{content:"\F3CA"}.fa-minus:before{content:"\F068"}.fa-minus-circle:before{content:"\F056"}.fa-minus-square:before{content:"\F146"}.fa-mitten:before{content:"\F7B5"}.fa-mix:before{content:"\F3CB"}.fa-mixcloud:before{content:"\F289"}.fa-mizuni:before{content:"\F3CC"}.fa-mobile:before{content:"\F10B"}.fa-mobile-alt:before{content:"\F3CD"}.fa-modx:before{content:"\F285"}.fa-monero:before{content:"\F3D0"}.fa-money-bill:before{content:"\F0D6"}.fa-money-bill-alt:before{content:"\F3D1"}.fa-money-bill-wave:before{content:"\F53A"}.fa-money-bill-wave-alt:before{content:"\F53B"}.fa-money-check:before{content:"\F53C"}.fa-money-check-alt:before{content:"\F53D"}.fa-monument:before{content:"\F5A6"}.fa-moon:before{content:"\F186"}.fa-mortar-pestle:before{content:"\F5A7"}.fa-mosque:before{content:"\F678"}.fa-motorcycle:before{content:"\F21C"}.fa-mountain:before{content:"\F6FC"}.fa-mouse-pointer:before{content:"\F245"}.fa-mug-hot:before{content:"\F7B6"}.fa-music:before{content:"\F001"}.fa-napster:before{content:"\F3D2"}.fa-neos:before{content:"\F612"}.fa-network-wired:before{content:"\F6FF"}.fa-neuter:before{content:"\F22C"}.fa-newspaper:before{content:"\F1EA"}.fa-nimblr:before{content:"\F5A8"}.fa-node:before{content:"\F419"}.fa-node-js:before{content:"\F3D3"}.fa-not-equal:before{content:"\F53E"}.fa-notes-medical:before{content:"\F481"}.fa-npm:before{content:"\F3D4"}.fa-ns8:before{content:"\F3D5"}.fa-nutritionix:before{content:"\F3D6"}.fa-object-group:before{content:"\F247"}.fa-object-ungroup:before{content:"\F248"}.fa-odnoklassniki:before{content:"\F263"}.fa-odnoklassniki-square:before{content:"\F264"}.fa-oil-can:before{content:"\F613"}.fa-old-republic:before{content:"\F510"}.fa-om:before{content:"\F679"}.fa-opencart:before{content:"\F23D"}.fa-openid:before{content:"\F19B"}.fa-opera:before{content:"\F26A"}.fa-optin-monster:before{content:"\F23C"}.fa-osi:before{content:"\F41A"}.fa-otter:before{content:"\F700"}.fa-outdent:before{content:"\F03B"}.fa-page4:before{content:"\F3D7"}.fa-pagelines:before{content:"\F18C"}.fa-pager:before{content:"\F815"}.fa-paint-brush:before{content:"\F1FC"}.fa-paint-roller:before{content:"\F5AA"}.fa-palette:before{content:"\F53F"}.fa-palfed:before{content:"\F3D8"}.fa-pallet:before{content:"\F482"}.fa-paper-plane:before{content:"\F1D8"}.fa-paperclip:before{content:"\F0C6"}.fa-parachute-box:before{content:"\F4CD"}.fa-paragraph:before{content:"\F1DD"}.fa-parking:before{content:"\F540"}.fa-passport:before{content:"\F5AB"}.fa-pastafarianism:before{content:"\F67B"}.fa-paste:before{content:"\F0EA"}.fa-patreon:before{content:"\F3D9"}.fa-pause:before{content:"\F04C"}.fa-pause-circle:before{content:"\F28B"}.fa-paw:before{content:"\F1B0"}.fa-paypal:before{content:"\F1ED"}.fa-peace:before{content:"\F67C"}.fa-pen:before{content:"\F304"}.fa-pen-alt:before{content:"\F305"}.fa-pen-fancy:before{content:"\F5AC"}.fa-pen-nib:before{content:"\F5AD"}.fa-pen-square:before{content:"\F14B"}.fa-pencil-alt:before{content:"\F303"}.fa-pencil-ruler:before{content:"\F5AE"}.fa-penny-arcade:before{content:"\F704"}.fa-people-carry:before{content:"\F4CE"}.fa-pepper-hot:before{content:"\F816"}.fa-percent:before{content:"\F295"}.fa-percentage:before{content:"\F541"}.fa-periscope:before{content:"\F3DA"}.fa-person-booth:before{content:"\F756"}.fa-phabricator:before{content:"\F3DB"}.fa-phoenix-framework:before{content:"\F3DC"}.fa-phoenix-squadron:before{content:"\F511"}.fa-phone:before{content:"\F095"}.fa-phone-alt:before{content:"\F879"}.fa-phone-slash:before{content:"\F3DD"}.fa-phone-square:before{content:"\F098"}.fa-phone-square-alt:before{content:"\F87B"}.fa-phone-volume:before{content:"\F2A0"}.fa-photo-video:before{content:"\F87C"}.fa-php:before{content:"\F457"}.fa-pied-piper:before{content:"\F2AE"}.fa-pied-piper-alt:before{content:"\F1A8"}.fa-pied-piper-hat:before{content:"\F4E5"}.fa-pied-piper-pp:before{content:"\F1A7"}.fa-piggy-bank:before{content:"\F4D3"}.fa-pills:before{content:"\F484"}.fa-pinterest:before{content:"\F0D2"}.fa-pinterest-p:before{content:"\F231"}.fa-pinterest-square:before{content:"\F0D3"}.fa-pizza-slice:before{content:"\F818"}.fa-place-of-worship:before{content:"\F67F"}.fa-plane:before{content:"\F072"}.fa-plane-arrival:before{content:"\F5AF"}.fa-plane-departure:before{content:"\F5B0"}.fa-play:before{content:"\F04B"}.fa-play-circle:before{content:"\F144"}.fa-playstation:before{content:"\F3DF"}.fa-plug:before{content:"\F1E6"}.fa-plus:before{content:"\F067"}.fa-plus-circle:before{content:"\F055"}.fa-plus-square:before{content:"\F0FE"}.fa-podcast:before{content:"\F2CE"}.fa-poll:before{content:"\F681"}.fa-poll-h:before{content:"\F682"}.fa-poo:before{content:"\F2FE"}.fa-poo-storm:before{content:"\F75A"}.fa-poop:before{content:"\F619"}.fa-portrait:before{content:"\F3E0"}.fa-pound-sign:before{content:"\F154"}.fa-power-off:before{content:"\F011"}.fa-pray:before{content:"\F683"}.fa-praying-hands:before{content:"\F684"}.fa-prescription:before{content:"\F5B1"}.fa-prescription-bottle:before{content:"\F485"}.fa-prescription-bottle-alt:before{content:"\F486"}.fa-print:before{content:"\F02F"}.fa-procedures:before{content:"\F487"}.fa-product-hunt:before{content:"\F288"}.fa-project-diagram:before{content:"\F542"}.fa-pushed:before{content:"\F3E1"}.fa-puzzle-piece:before{content:"\F12E"}.fa-python:before{content:"\F3E2"}.fa-qq:before{content:"\F1D6"}.fa-qrcode:before{content:"\F029"}.fa-question:before{content:"\F128"}.fa-question-circle:before{content:"\F059"}.fa-quidditch:before{content:"\F458"}.fa-quinscape:before{content:"\F459"}.fa-quora:before{content:"\F2C4"}.fa-quote-left:before{content:"\F10D"}.fa-quote-right:before{content:"\F10E"}.fa-quran:before{content:"\F687"}.fa-r-project:before{content:"\F4F7"}.fa-radiation:before{content:"\F7B9"}.fa-radiation-alt:before{content:"\F7BA"}.fa-rainbow:before{content:"\F75B"}.fa-random:before{content:"\F074"}.fa-raspberry-pi:before{content:"\F7BB"}.fa-ravelry:before{content:"\F2D9"}.fa-react:before{content:"\F41B"}.fa-reacteurope:before{content:"\F75D"}.fa-readme:before{content:"\F4D5"}.fa-rebel:before{content:"\F1D0"}.fa-receipt:before{content:"\F543"}.fa-recycle:before{content:"\F1B8"}.fa-red-river:before{content:"\F3E3"}.fa-reddit:before{content:"\F1A1"}.fa-reddit-alien:before{content:"\F281"}.fa-reddit-square:before{content:"\F1A2"}.fa-redhat:before{content:"\F7BC"}.fa-redo:before{content:"\F01E"}.fa-redo-alt:before{content:"\F2F9"}.fa-registered:before{content:"\F25D"}.fa-remove-format:before{content:"\F87D"}.fa-renren:before{content:"\F18B"}.fa-reply:before{content:"\F3E5"}.fa-reply-all:before{content:"\F122"}.fa-replyd:before{content:"\F3E6"}.fa-republican:before{content:"\F75E"}.fa-researchgate:before{content:"\F4F8"}.fa-resolving:before{content:"\F3E7"}.fa-restroom:before{content:"\F7BD"}.fa-retweet:before{content:"\F079"}.fa-rev:before{content:"\F5B2"}.fa-ribbon:before{content:"\F4D6"}.fa-ring:before{content:"\F70B"}.fa-road:before{content:"\F018"}.fa-robot:before{content:"\F544"}.fa-rocket:before{content:"\F135"}.fa-rocketchat:before{content:"\F3E8"}.fa-rockrms:before{content:"\F3E9"}.fa-route:before{content:"\F4D7"}.fa-rss:before{content:"\F09E"}.fa-rss-square:before{content:"\F143"}.fa-ruble-sign:before{content:"\F158"}.fa-ruler:before{content:"\F545"}.fa-ruler-combined:before{content:"\F546"}.fa-ruler-horizontal:before{content:"\F547"}.fa-ruler-vertical:before{content:"\F548"}.fa-running:before{content:"\F70C"}.fa-rupee-sign:before{content:"\F156"}.fa-sad-cry:before{content:"\F5B3"}.fa-sad-tear:before{content:"\F5B4"}.fa-safari:before{content:"\F267"}.fa-salesforce:before{content:"\F83B"}.fa-sass:before{content:"\F41E"}.fa-satellite:before{content:"\F7BF"}.fa-satellite-dish:before{content:"\F7C0"}.fa-save:before{content:"\F0C7"}.fa-schlix:before{content:"\F3EA"}.fa-school:before{content:"\F549"}.fa-screwdriver:before{content:"\F54A"}.fa-scribd:before{content:"\F28A"}.fa-scroll:before{content:"\F70E"}.fa-sd-card:before{content:"\F7C2"}.fa-search:before{content:"\F002"}.fa-search-dollar:before{content:"\F688"}.fa-search-location:before{content:"\F689"}.fa-search-minus:before{content:"\F010"}.fa-search-plus:before{content:"\F00E"}.fa-searchengin:before{content:"\F3EB"}.fa-seedling:before{content:"\F4D8"}.fa-sellcast:before{content:"\F2DA"}.fa-sellsy:before{content:"\F213"}.fa-server:before{content:"\F233"}.fa-servicestack:before{content:"\F3EC"}.fa-shapes:before{content:"\F61F"}.fa-share:before{content:"\F064"}.fa-share-alt:before{content:"\F1E0"}.fa-share-alt-square:before{content:"\F1E1"}.fa-share-square:before{content:"\F14D"}.fa-shekel-sign:before{content:"\F20B"}.fa-shield-alt:before{content:"\F3ED"}.fa-ship:before{content:"\F21A"}.fa-shipping-fast:before{content:"\F48B"}.fa-shirtsinbulk:before{content:"\F214"}.fa-shoe-prints:before{content:"\F54B"}.fa-shopping-bag:before{content:"\F290"}.fa-shopping-basket:before{content:"\F291"}.fa-shopping-cart:before{content:"\F07A"}.fa-shopware:before{content:"\F5B5"}.fa-shower:before{content:"\F2CC"}.fa-shuttle-van:before{content:"\F5B6"}.fa-sign:before{content:"\F4D9"}.fa-sign-in-alt:before{content:"\F2F6"}.fa-sign-language:before{content:"\F2A7"}.fa-sign-out-alt:before{content:"\F2F5"}.fa-signal:before{content:"\F012"}.fa-signature:before{content:"\F5B7"}.fa-sim-card:before{content:"\F7C4"}.fa-simplybuilt:before{content:"\F215"}.fa-sistrix:before{content:"\F3EE"}.fa-sitemap:before{content:"\F0E8"}.fa-sith:before{content:"\F512"}.fa-skating:before{content:"\F7C5"}.fa-sketch:before{content:"\F7C6"}.fa-skiing:before{content:"\F7C9"}.fa-skiing-nordic:before{content:"\F7CA"}.fa-skull:before{content:"\F54C"}.fa-skull-crossbones:before{content:"\F714"}.fa-skyatlas:before{content:"\F216"}.fa-skype:before{content:"\F17E"}.fa-slack:before{content:"\F198"}.fa-slack-hash:before{content:"\F3EF"}.fa-slash:before{content:"\F715"}.fa-sleigh:before{content:"\F7CC"}.fa-sliders-h:before{content:"\F1DE"}.fa-slideshare:before{content:"\F1E7"}.fa-smile:before{content:"\F118"}.fa-smile-beam:before{content:"\F5B8"}.fa-smile-wink:before{content:"\F4DA"}.fa-smog:before{content:"\F75F"}.fa-smoking:before{content:"\F48D"}.fa-smoking-ban:before{content:"\F54D"}.fa-sms:before{content:"\F7CD"}.fa-snapchat:before{content:"\F2AB"}.fa-snapchat-ghost:before{content:"\F2AC"}.fa-snapchat-square:before{content:"\F2AD"}.fa-snowboarding:before{content:"\F7CE"}.fa-snowflake:before{content:"\F2DC"}.fa-snowman:before{content:"\F7D0"}.fa-snowplow:before{content:"\F7D2"}.fa-socks:before{content:"\F696"}.fa-solar-panel:before{content:"\F5BA"}.fa-sort:before{content:"\F0DC"}.fa-sort-alpha-down:before{content:"\F15D"}.fa-sort-alpha-down-alt:before{content:"\F881"}.fa-sort-alpha-up:before{content:"\F15E"}.fa-sort-alpha-up-alt:before{content:"\F882"}.fa-sort-amount-down:before{content:"\F160"}.fa-sort-amount-down-alt:before{content:"\F884"}.fa-sort-amount-up:before{content:"\F161"}.fa-sort-amount-up-alt:before{content:"\F885"}.fa-sort-down:before{content:"\F0DD"}.fa-sort-numeric-down:before{content:"\F162"}.fa-sort-numeric-down-alt:before{content:"\F886"}.fa-sort-numeric-up:before{content:"\F163"}.fa-sort-numeric-up-alt:before{content:"\F887"}.fa-sort-up:before{content:"\F0DE"}.fa-soundcloud:before{content:"\F1BE"}.fa-sourcetree:before{content:"\F7D3"}.fa-spa:before{content:"\F5BB"}.fa-space-shuttle:before{content:"\F197"}.fa-speakap:before{content:"\F3F3"}.fa-speaker-deck:before{content:"\F83C"}.fa-spell-check:before{content:"\F891"}.fa-spider:before{content:"\F717"}.fa-spinner:before{content:"\F110"}.fa-splotch:before{content:"\F5BC"}.fa-spotify:before{content:"\F1BC"}.fa-spray-can:before{content:"\F5BD"}.fa-square:before{content:"\F0C8"}.fa-square-full:before{content:"\F45C"}.fa-square-root-alt:before{content:"\F698"}.fa-squarespace:before{content:"\F5BE"}.fa-stack-exchange:before{content:"\F18D"}.fa-stack-overflow:before{content:"\F16C"}.fa-stackpath:before{content:"\F842"}.fa-stamp:before{content:"\F5BF"}.fa-star:before{content:"\F005"}.fa-star-and-crescent:before{content:"\F699"}.fa-star-half:before{content:"\F089"}.fa-star-half-alt:before{content:"\F5C0"}.fa-star-of-david:before{content:"\F69A"}.fa-star-of-life:before{content:"\F621"}.fa-staylinked:before{content:"\F3F5"}.fa-steam:before{content:"\F1B6"}.fa-steam-square:before{content:"\F1B7"}.fa-steam-symbol:before{content:"\F3F6"}.fa-step-backward:before{content:"\F048"}.fa-step-forward:before{content:"\F051"}.fa-stethoscope:before{content:"\F0F1"}.fa-sticker-mule:before{content:"\F3F7"}.fa-sticky-note:before{content:"\F249"}.fa-stop:before{content:"\F04D"}.fa-stop-circle:before{content:"\F28D"}.fa-stopwatch:before{content:"\F2F2"}.fa-store:before{content:"\F54E"}.fa-store-alt:before{content:"\F54F"}.fa-strava:before{content:"\F428"}.fa-stream:before{content:"\F550"}.fa-street-view:before{content:"\F21D"}.fa-strikethrough:before{content:"\F0CC"}.fa-stripe:before{content:"\F429"}.fa-stripe-s:before{content:"\F42A"}.fa-stroopwafel:before{content:"\F551"}.fa-studiovinari:before{content:"\F3F8"}.fa-stumbleupon:before{content:"\F1A4"}.fa-stumbleupon-circle:before{content:"\F1A3"}.fa-subscript:before{content:"\F12C"}.fa-subway:before{content:"\F239"}.fa-suitcase:before{content:"\F0F2"}.fa-suitcase-rolling:before{content:"\F5C1"}.fa-sun:before{content:"\F185"}.fa-superpowers:before{content:"\F2DD"}.fa-superscript:before{content:"\F12B"}.fa-supple:before{content:"\F3F9"}.fa-surprise:before{content:"\F5C2"}.fa-suse:before{content:"\F7D6"}.fa-swatchbook:before{content:"\F5C3"}.fa-swimmer:before{content:"\F5C4"}.fa-swimming-pool:before{content:"\F5C5"}.fa-symfony:before{content:"\F83D"}.fa-synagogue:before{content:"\F69B"}.fa-sync:before{content:"\F021"}.fa-sync-alt:before{content:"\F2F1"}.fa-syringe:before{content:"\F48E"}.fa-table:before{content:"\F0CE"}.fa-table-tennis:before{content:"\F45D"}.fa-tablet:before{content:"\F10A"}.fa-tablet-alt:before{content:"\F3FA"}.fa-tablets:before{content:"\F490"}.fa-tachometer-alt:before{content:"\F3FD"}.fa-tag:before{content:"\F02B"}.fa-tags:before{content:"\F02C"}.fa-tape:before{content:"\F4DB"}.fa-tasks:before{content:"\F0AE"}.fa-taxi:before{content:"\F1BA"}.fa-teamspeak:before{content:"\F4F9"}.fa-teeth:before{content:"\F62E"}.fa-teeth-open:before{content:"\F62F"}.fa-telegram:before{content:"\F2C6"}.fa-telegram-plane:before{content:"\F3FE"}.fa-temperature-high:before{content:"\F769"}.fa-temperature-low:before{content:"\F76B"}.fa-tencent-weibo:before{content:"\F1D5"}.fa-tenge:before{content:"\F7D7"}.fa-terminal:before{content:"\F120"}.fa-text-height:before{content:"\F034"}.fa-text-width:before{content:"\F035"}.fa-th:before{content:"\F00A"}.fa-th-large:before{content:"\F009"}.fa-th-list:before{content:"\F00B"}.fa-the-red-yeti:before{content:"\F69D"}.fa-theater-masks:before{content:"\F630"}.fa-themeco:before{content:"\F5C6"}.fa-themeisle:before{content:"\F2B2"}.fa-thermometer:before{content:"\F491"}.fa-thermometer-empty:before{content:"\F2CB"}.fa-thermometer-full:before{content:"\F2C7"}.fa-thermometer-half:before{content:"\F2C9"}.fa-thermometer-quarter:before{content:"\F2CA"}.fa-thermometer-three-quarters:before{content:"\F2C8"}.fa-think-peaks:before{content:"\F731"}.fa-thumbs-down:before{content:"\F165"}.fa-thumbs-up:before{content:"\F164"}.fa-thumbtack:before{content:"\F08D"}.fa-ticket-alt:before{content:"\F3FF"}.fa-times:before{content:"\F00D"}.fa-times-circle:before{content:"\F057"}.fa-tint:before{content:"\F043"}.fa-tint-slash:before{content:"\F5C7"}.fa-tired:before{content:"\F5C8"}.fa-toggle-off:before{content:"\F204"}.fa-toggle-on:before{content:"\F205"}.fa-toilet:before{content:"\F7D8"}.fa-toilet-paper:before{content:"\F71E"}.fa-toolbox:before{content:"\F552"}.fa-tools:before{content:"\F7D9"}.fa-tooth:before{content:"\F5C9"}.fa-torah:before{content:"\F6A0"}.fa-torii-gate:before{content:"\F6A1"}.fa-tractor:before{content:"\F722"}.fa-trade-federation:before{content:"\F513"}.fa-trademark:before{content:"\F25C"}.fa-traffic-light:before{content:"\F637"}.fa-train:before{content:"\F238"}.fa-tram:before{content:"\F7DA"}.fa-transgender:before{content:"\F224"}.fa-transgender-alt:before{content:"\F225"}.fa-trash:before{content:"\F1F8"}.fa-trash-alt:before{content:"\F2ED"}.fa-trash-restore:before{content:"\F829"}.fa-trash-restore-alt:before{content:"\F82A"}.fa-tree:before{content:"\F1BB"}.fa-trello:before{content:"\F181"}.fa-tripadvisor:before{content:"\F262"}.fa-trophy:before{content:"\F091"}.fa-truck:before{content:"\F0D1"}.fa-truck-loading:before{content:"\F4DE"}.fa-truck-monster:before{content:"\F63B"}.fa-truck-moving:before{content:"\F4DF"}.fa-truck-pickup:before{content:"\F63C"}.fa-tshirt:before{content:"\F553"}.fa-tty:before{content:"\F1E4"}.fa-tumblr:before{content:"\F173"}.fa-tumblr-square:before{content:"\F174"}.fa-tv:before{content:"\F26C"}.fa-twitch:before{content:"\F1E8"}.fa-twitter:before{content:"\F099"}.fa-twitter-square:before{content:"\F081"}.fa-typo3:before{content:"\F42B"}.fa-uber:before{content:"\F402"}.fa-ubuntu:before{content:"\F7DF"}.fa-uikit:before{content:"\F403"}.fa-umbrella:before{content:"\F0E9"}.fa-umbrella-beach:before{content:"\F5CA"}.fa-underline:before{content:"\F0CD"}.fa-undo:before{content:"\F0E2"}.fa-undo-alt:before{content:"\F2EA"}.fa-uniregistry:before{content:"\F404"}.fa-universal-access:before{content:"\F29A"}.fa-university:before{content:"\F19C"}.fa-unlink:before{content:"\F127"}.fa-unlock:before{content:"\F09C"}.fa-unlock-alt:before{content:"\F13E"}.fa-untappd:before{content:"\F405"}.fa-upload:before{content:"\F093"}.fa-ups:before{content:"\F7E0"}.fa-usb:before{content:"\F287"}.fa-user:before{content:"\F007"}.fa-user-alt:before{content:"\F406"}.fa-user-alt-slash:before{content:"\F4FA"}.fa-user-astronaut:before{content:"\F4FB"}.fa-user-check:before{content:"\F4FC"}.fa-user-circle:before{content:"\F2BD"}.fa-user-clock:before{content:"\F4FD"}.fa-user-cog:before{content:"\F4FE"}.fa-user-edit:before{content:"\F4FF"}.fa-user-friends:before{content:"\F500"}.fa-user-graduate:before{content:"\F501"}.fa-user-injured:before{content:"\F728"}.fa-user-lock:before{content:"\F502"}.fa-user-md:before{content:"\F0F0"}.fa-user-minus:before{content:"\F503"}.fa-user-ninja:before{content:"\F504"}.fa-user-nurse:before{content:"\F82F"}.fa-user-plus:before{content:"\F234"}.fa-user-secret:before{content:"\F21B"}.fa-user-shield:before{content:"\F505"}.fa-user-slash:before{content:"\F506"}.fa-user-tag:before{content:"\F507"}.fa-user-tie:before{content:"\F508"}.fa-user-times:before{content:"\F235"}.fa-users:before{content:"\F0C0"}.fa-users-cog:before{content:"\F509"}.fa-usps:before{content:"\F7E1"}.fa-ussunnah:before{content:"\F407"}.fa-utensil-spoon:before{content:"\F2E5"}.fa-utensils:before{content:"\F2E7"}.fa-vaadin:before{content:"\F408"}.fa-vector-square:before{content:"\F5CB"}.fa-venus:before{content:"\F221"}.fa-venus-double:before{content:"\F226"}.fa-venus-mars:before{content:"\F228"}.fa-viacoin:before{content:"\F237"}.fa-viadeo:before{content:"\F2A9"}.fa-viadeo-square:before{content:"\F2AA"}.fa-vial:before{content:"\F492"}.fa-vials:before{content:"\F493"}.fa-viber:before{content:"\F409"}.fa-video:before{content:"\F03D"}.fa-video-slash:before{content:"\F4E2"}.fa-vihara:before{content:"\F6A7"}.fa-vimeo:before{content:"\F40A"}.fa-vimeo-square:before{content:"\F194"}.fa-vimeo-v:before{content:"\F27D"}.fa-vine:before{content:"\F1CA"}.fa-vk:before{content:"\F189"}.fa-vnv:before{content:"\F40B"}.fa-voicemail:before{content:"\F897"}.fa-volleyball-ball:before{content:"\F45F"}.fa-volume-down:before{content:"\F027"}.fa-volume-mute:before{content:"\F6A9"}.fa-volume-off:before{content:"\F026"}.fa-volume-up:before{content:"\F028"}.fa-vote-yea:before{content:"\F772"}.fa-vr-cardboard:before{content:"\F729"}.fa-vuejs:before{content:"\F41F"}.fa-walking:before{content:"\F554"}.fa-wallet:before{content:"\F555"}.fa-warehouse:before{content:"\F494"}.fa-water:before{content:"\F773"}.fa-wave-square:before{content:"\F83E"}.fa-waze:before{content:"\F83F"}.fa-weebly:before{content:"\F5CC"}.fa-weibo:before{content:"\F18A"}.fa-weight:before{content:"\F496"}.fa-weight-hanging:before{content:"\F5CD"}.fa-weixin:before{content:"\F1D7"}.fa-whatsapp:before{content:"\F232"}.fa-whatsapp-square:before{content:"\F40C"}.fa-wheelchair:before{content:"\F193"}.fa-whmcs:before{content:"\F40D"}.fa-wifi:before{content:"\F1EB"}.fa-wikipedia-w:before{content:"\F266"}.fa-wind:before{content:"\F72E"}.fa-window-close:before{content:"\F410"}.fa-window-maximize:before{content:"\F2D0"}.fa-window-minimize:before{content:"\F2D1"}.fa-window-restore:before{content:"\F2D2"}.fa-windows:before{content:"\F17A"}.fa-wine-bottle:before{content:"\F72F"}.fa-wine-glass:before{content:"\F4E3"}.fa-wine-glass-alt:before{content:"\F5CE"}.fa-wix:before{content:"\F5CF"}.fa-wizards-of-the-coast:before{content:"\F730"}.fa-wolf-pack-battalion:before{content:"\F514"}.fa-won-sign:before{content:"\F159"}.fa-wordpress:before{content:"\F19A"}.fa-wordpress-simple:before{content:"\F411"}.fa-wpbeginner:before{content:"\F297"}.fa-wpexplorer:before{content:"\F2DE"}.fa-wpforms:before{content:"\F298"}.fa-wpressr:before{content:"\F3E4"}.fa-wrench:before{content:"\F0AD"}.fa-x-ray:before{content:"\F497"}.fa-xbox:before{content:"\F412"}.fa-xing:before{content:"\F168"}.fa-xing-square:before{content:"\F169"}.fa-y-combinator:before{content:"\F23B"}.fa-yahoo:before{content:"\F19E"}.fa-yammer:before{content:"\F840"}.fa-yandex:before{content:"\F413"}.fa-yandex-international:before{content:"\F414"}.fa-yarn:before{content:"\F7E3"}.fa-yelp:before{content:"\F1E9"}.fa-yen-sign:before{content:"\F157"}.fa-yin-yang:before{content:"\F6AD"}.fa-yoast:before{content:"\F2B1"}.fa-youtube:before{content:"\F167"}.fa-youtube-square:before{content:"\F431"}.fa-zhihu:before{content:"\F63F"}.sr-only{clip:rect(0,0,0,0);height:1px;overflow:hidden;position:absolute;width:1px}[dir] .sr-only{border:0;margin:-1px;padding:0}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;overflow:visible;position:static;width:auto}[dir] .sr-only-focusable:active,[dir] .sr-only-focusable:focus{margin:0}.select2-container{box-sizing:border-box;display:inline-block;position:relative;vertical-align:middle}[dir] .select2-container{margin:0}.select2-container .select2-selection--single{box-sizing:border-box;display:block;height:28px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-container .select2-selection--single{cursor:pointer}.select2-container .select2-selection--single .select2-selection__rendered{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dir=ltr] .select2-container .select2-selection--single .select2-selection__rendered{padding-left:8px;padding-right:20px}[dir=rtl] .select2-container .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;display:block;min-height:32px;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-container .select2-selection--multiple{cursor:pointer}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}[dir=ltr] .select2-container .select2-selection--multiple .select2-selection__rendered{padding-left:8px}[dir=rtl] .select2-container .select2-selection--multiple .select2-selection__rendered{padding-right:8px}[dir=ltr] .select2-container .select2-search--inline{float:left}[dir=rtl] .select2-container .select2-search--inline{float:right}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;font-size:100%}[dir] .select2-container .select2-search--inline .select2-search__field{border:none;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{box-sizing:border-box;display:block;position:absolute;width:100%;z-index:1051}[dir] .select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px}[dir=ltr] .select2-dropdown{left:-100000px}[dir=rtl] .select2-dropdown{right:-100000px}.select2-results{display:block}.select2-results__options{list-style:none}[dir] .select2-results__options{margin:0;padding:0}.select2-results__option{-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-select:none}[dir] .select2-results__option{padding:6px}[dir] .select2-results__option[aria-selected]{cursor:pointer}[dir=ltr] .select2-container--open .select2-dropdown{left:0}[dir=rtl] .select2-container--open .select2-dropdown{right:0}[dir] .select2-container--open .select2-dropdown--above{border-bottom:none}[dir=ltr] .select2-container--open .select2-dropdown--above,[dir=rtl] .select2-container--open .select2-dropdown--above{border-bottom-left-radius:0;border-bottom-right-radius:0}[dir] .select2-container--open .select2-dropdown--below{border-top:none}[dir=ltr] .select2-container--open .select2-dropdown--below,[dir=rtl] .select2-container--open .select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block}[dir] .select2-search--dropdown{padding:4px}.select2-search--dropdown .select2-search__field{width:100%;box-sizing:border-box}[dir] .select2-search--dropdown .select2-search__field{padding:4px}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{display:block;position:fixed;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99}[dir] .select2-close-mask{border:0;margin:0;padding:0;background-color:#fff}[dir=ltr] .select2-close-mask{left:0}[dir=rtl] .select2-close-mask{right:0}.select2-hidden-accessible{clip:rect(0 0 0 0)!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;position:absolute!important;width:1px!important;white-space:nowrap!important}[dir] .select2-hidden-accessible{border:0!important;padding:0!important}[dir] .select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{font-weight:700}[dir] .select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__clear{float:right}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__clear{float:left}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;width:20px}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__arrow{right:1px}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__arrow{left:1px}.select2-container--default .select2-selection--single .select2-selection__arrow b{height:0;position:absolute;top:50%;width:0}[dir] .select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;margin-top:-2px}[dir=ltr] .select2-container--default .select2-selection--single .select2-selection__arrow b{left:50%;margin-left:-4px}[dir=rtl] .select2-container--default .select2-selection--single .select2-selection__arrow b{right:50%;margin-right:-4px}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}[dir] .select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}[dir] .select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}[dir] .select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;width:100%}[dir] .select2-container--default .select2-selection--multiple .select2-selection__rendered{margin:0;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{font-weight:700}[dir] .select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;margin-top:5px}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__clear{float:right;margin-right:10px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__clear{float:left;margin-left:10px}[dir] .select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;margin-top:5px;padding:0 5px}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__choice{float:left;margin-right:5px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;display:inline-block;font-weight:700}[dir] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{cursor:pointer}[dir=ltr] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:2px}[dir=rtl] .select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{outline:0}[dir] .select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000}[dir] .select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}[dir=ltr] .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,[dir=ltr] .select2-container--default.select2-container--open.select2-container--above .select2-selection--single,[dir=rtl] .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,[dir=rtl] .select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}[dir=ltr] .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,[dir=ltr] .select2-container--default.select2-container--open.select2-container--below .select2-selection--single,[dir=rtl] .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,[dir=rtl] .select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}[dir] .select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{outline:0;-webkit-appearance:textfield}[dir] .select2-container--default .select2-search--inline .select2-search__field{border:none;box-shadow:none}[dir=ltr] .select2-container--default .select2-search--inline .select2-search__field{background:0 0}[dir=rtl] .select2-container--default .select2-search--inline .select2-search__field{background:100% 0}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}[dir] .select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}[dir] .select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option{padding-left:1em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option{padding-right:1em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-right:0}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-right:-1em;padding-right:2em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-2em;padding-right:3em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-3em;padding-right:4em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-4em;padding-right:5em}[dir=ltr] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}[dir=rtl] .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-right:-5em;padding-right:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{color:#fff}[dir] .select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb}.select2-container--default .select2-results__group{display:block}[dir] .select2-container--default .select2-results__group{cursor:default;padding:6px}.select2-container--classic .select2-selection--single{outline:0}[dir] .select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;background-image:-webkit-linear-gradient(top,#fff 50%,#eee);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#fff),to(#eee));background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x}[dir=ltr] .select2-container--classic .select2-selection--single{background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#fff),to(#eee))}[dir=rtl] .select2-container--classic .select2-selection--single{background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#fff),to(#eee))}[dir] .select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{font-weight:700}[dir] .select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__clear{float:right;margin-right:10px}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__clear{float:left;margin-left:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;width:20px}[dir] .select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#ccc));background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__arrow{border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;right:1px;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#ccc))}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__arrow{border-right:1px solid #aaa;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#eee),to(#ccc))}.select2-container--classic .select2-selection--single .select2-selection__arrow b{height:0;position:absolute;top:50%;width:0}[dir] .select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;margin-top:-2px}[dir=ltr] .select2-container--classic .select2-selection--single .select2-selection__arrow b{left:50%;margin-left:-4px}[dir=rtl] .select2-container--classic .select2-selection--single .select2-selection__arrow b{right:50%;margin-right:-4px}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}[dir] .select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}[dir] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{border:none}[dir=ltr] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0}[dir=rtl] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:100% 0}[dir] .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}[dir] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;background-image:-webkit-linear-gradient(top,#fff,#eee 50%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(50%,#eee));background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(50%,#eee))}[dir=rtl] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top-right-radius:0;border-top-left-radius:0;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0,#fff),color-stop(50%,#eee))}[dir] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;background-image:-webkit-linear-gradient(top,#eee 50%,#fff);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#fff));background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(50%,#eee),to(#fff))}[dir=rtl] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom-right-radius:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,right top,right bottom,color-stop(50%,#eee),to(#fff))}.select2-container--classic .select2-selection--multiple{outline:0}[dir] .select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}[dir] .select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__rendered{margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;margin-top:5px;padding:0 5px}[dir=ltr] .select2-container--classic .select2-selection--multiple .select2-selection__choice{float:left;margin-right:5px}[dir=rtl] .select2-container--classic .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;display:inline-block;font-weight:700}[dir] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{cursor:pointer}[dir=ltr] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{margin-right:2px}[dir=rtl] .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}[dir] .select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}[dir] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple,[dir=rtl] .select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}[dir] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none}[dir=ltr] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple,[dir=rtl] .select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{outline:0}[dir] .select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--classic .select2-search--inline .select2-search__field{outline:0}[dir] .select2-container--classic .select2-search--inline .select2-search__field{box-shadow:none}[dir] .select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}[dir] .select2-container--classic .select2-dropdown--above{border-bottom:none}[dir] .select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}[dir] .select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{color:#fff}[dir] .select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7}.select2-container--classic .select2-results__group{display:block}[dir] .select2-container--classic .select2-results__group{cursor:default;padding:6px}[dir] .select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}span.twitter-typeahead .tt-dropdown-menu,span.twitter-typeahead .tt-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:160px;font-size:1rem;color:#373a3c;list-style:none}[dir] span.twitter-typeahead .tt-dropdown-menu,[dir] span.twitter-typeahead .tt-menu{padding:5px 0;margin:2px 0 0;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}[dir=ltr] span.twitter-typeahead .tt-dropdown-menu,[dir=ltr] span.twitter-typeahead .tt-menu{left:0;float:left;text-align:left}[dir=rtl] span.twitter-typeahead .tt-dropdown-menu,[dir=rtl] span.twitter-typeahead .tt-menu{right:0;float:right;text-align:right}span.twitter-typeahead .tt-suggestion{display:block;width:100%;font-weight:400;line-height:1.5;color:#373a3c;white-space:nowrap}[dir] span.twitter-typeahead .tt-suggestion{padding:3px 20px;clear:both;text-align:inherit;border:0}[dir=ltr] span.twitter-typeahead .tt-suggestion{background:0 0}[dir=rtl] span.twitter-typeahead .tt-suggestion{background:100% 0}.dropdown-item:hover,span.twitter-typeahead .tt-suggestion:focus,span.twitter-typeahead .tt-suggestion:hover{color:#2b2d2f;text-decoration:none}[dir] .dropdown-item:hover,[dir] span.twitter-typeahead .tt-suggestion:focus,[dir] span.twitter-typeahead .tt-suggestion:hover{background-color:#f5f5f5}.dropdown-item.active:focus,.dropdown-item.active:hover,span.twitter-typeahead .active.tt-suggestion,span.twitter-typeahead .active.tt-suggestion:focus,span.twitter-typeahead .active.tt-suggestion:hover,span.twitter-typeahead .tt-suggestion.tt-cursor,span.twitter-typeahead .tt-suggestion.tt-cursor:focus,span.twitter-typeahead .tt-suggestion.tt-cursor:hover{color:#fff;text-decoration:none;outline:0}[dir] .dropdown-item.active:focus,[dir] .dropdown-item.active:hover,[dir] span.twitter-typeahead .active.tt-suggestion,[dir] span.twitter-typeahead .active.tt-suggestion:focus,[dir] span.twitter-typeahead .active.tt-suggestion:hover,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor:focus,[dir] span.twitter-typeahead .tt-suggestion.tt-cursor:hover{background-color:#0275d8}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{color:#818a91}.dropdown-item.disabled:hover,span.twitter-typeahead .disabled.tt-suggestion:focus,span.twitter-typeahead .disabled.tt-suggestion:hover{text-decoration:none}[dir] .dropdown-item.disabled:hover,[dir] span.twitter-typeahead .disabled.tt-suggestion:focus,[dir] span.twitter-typeahead .disabled.tt-suggestion:hover{cursor:not-allowed;background-color:transparent;background-image:none}span.twitter-typeahead{width:100%}.input-group span.twitter-typeahead{display:block!important}.input-group span.twitter-typeahead .tt-dropdown-menu{top:32px!important}.input-group.input-group-lg span.twitter-typeahead .tt-dropdown-menu{top:44px!important}.input-group.input-group-sm span.twitter-typeahead .tt-dropdown-menu{top:28px!important}.leaflet-image-layer,.leaflet-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane,.leaflet-pane>canvas,.leaflet-pane>svg,.leaflet-tile,.leaflet-tile-container,.leaflet-zoom-box{position:absolute;top:0}[dir=ltr] .leaflet-image-layer,[dir=ltr] .leaflet-layer,[dir=ltr] .leaflet-marker-icon,[dir=ltr] .leaflet-marker-shadow,[dir=ltr] .leaflet-pane,[dir=ltr] .leaflet-pane>canvas,[dir=ltr] .leaflet-pane>svg,[dir=ltr] .leaflet-tile,[dir=ltr] .leaflet-tile-container,[dir=ltr] .leaflet-zoom-box{left:0}[dir=rtl] .leaflet-image-layer,[dir=rtl] .leaflet-layer,[dir=rtl] .leaflet-marker-icon,[dir=rtl] .leaflet-marker-shadow,[dir=rtl] .leaflet-pane,[dir=rtl] .leaflet-pane>canvas,[dir=rtl] .leaflet-pane>svg,[dir=rtl] .leaflet-tile,[dir=rtl] .leaflet-tile-container,[dir=rtl] .leaflet-zoom-box{right:0}.leaflet-container{overflow:hidden}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}[dir=ltr] .leaflet-tile::-moz-selection{background:0 0}[dir=rtl] .leaflet-tile::-moz-selection{background:100% 0}.leaflet-tile::-moz-selection{background:0 0}[dir=ltr] .leaflet-tile::selection{background:0 0}.leaflet-tile::-moz-selection{background:100% 0}[dir=rtl] .leaflet-tile::selection{background:100% 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px}[dir=ltr] .leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0}[dir=rtl] .leaflet-safari .leaflet-tile-container{-webkit-transform-origin:100% 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer{max-width:none!important;max-height:none!important}.leaflet-container.leaflet-touch-zoom{touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{-webkit-filter:inherit;filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-bottom,.leaflet-top{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}[dir=ltr] .leaflet-right{right:0}[dir=rtl] .leaflet-right{left:0}.leaflet-bottom{bottom:0}[dir=ltr] .leaflet-left{left:0}[dir=rtl] .leaflet-left{right:0}[dir] .leaflet-control{clear:both}[dir=ltr] .leaflet-control{float:left}[dir=ltr] .leaflet-right .leaflet-control,[dir=rtl] .leaflet-control{float:right}[dir=rtl] .leaflet-right .leaflet-control{float:left}[dir] .leaflet-top .leaflet-control{margin-top:10px}[dir] .leaflet-bottom .leaflet-control{margin-bottom:10px}[dir=ltr] .leaflet-left .leaflet-control{margin-left:10px}[dir=ltr] .leaflet-right .leaflet-control,[dir=rtl] .leaflet-left .leaflet-control{margin-right:10px}[dir=rtl] .leaflet-right .leaflet-control{margin-left:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-popup,[dir] .leaflet-fade-anim .leaflet-popup{-webkit-transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}[dir=ltr] .leaflet-zoom-animated{-webkit-transform-origin:0 0;transform-origin:0 0}[dir=rtl] .leaflet-zoom-animated{-webkit-transform-origin:100% 0;transform-origin:100% 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1),-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-zoom-animated,[dir] .leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1)}.leaflet-pan-anim .leaflet-tile,.leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;transition:none}[dir] .leaflet-pan-anim .leaflet-tile,[dir] .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}[dir] .leaflet-interactive{cursor:pointer}[dir] .leaflet-grab{cursor:-webkit-grab;cursor:grab}[dir] .leaflet-crosshair,[dir] .leaflet-crosshair .leaflet-interactive{cursor:crosshair}[dir] .leaflet-control,[dir] .leaflet-popup-pane{cursor:auto}[dir] .leaflet-dragging .leaflet-grab,[dir] .leaflet-dragging .leaflet-grab .leaflet-interactive,[dir] .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:grabbing}.leaflet-image-layer,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-image-layer.leaflet-interactive,.leaflet-marker-icon.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline:0}[dir] .leaflet-container{background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-container a.leaflet-active{outline:2px solid orange}[dir] .leaflet-zoom-box{border:2px dotted #38f;background:hsla(0,0%,100%,.5)}.leaflet-container{font:12px/1.5 Helvetica Neue,Arial,Helvetica,sans-serif}[dir] .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{width:26px;height:26px;line-height:26px;display:block;text-decoration:none;color:#000}[dir] .leaflet-bar a,[dir] .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;text-align:center}.leaflet-bar a,.leaflet-control-layers-toggle{display:block}[dir] .leaflet-bar a,[dir] .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat}[dir] .leaflet-bar a:hover{background-color:#f4f4f4}[dir=ltr] .leaflet-bar a:first-child,[dir=rtl] .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}[dir] .leaflet-bar a:last-child{border-bottom:none}[dir=ltr] .leaflet-bar a:last-child,[dir=rtl] .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px}.leaflet-bar a.leaflet-disabled{color:#bbb}[dir] .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}[dir=ltr] .leaflet-touch .leaflet-bar a:first-child,[dir=rtl] .leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}[dir=ltr] .leaflet-touch .leaflet-bar a:last-child,[dir=rtl] .leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}[dir] .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{width:36px;height:36px}[dir] .leaflet-control-layers-toggle{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC")}[dir] .leaflet-retina .leaflet-control-layers-toggle{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=");background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers-expanded .leaflet-control-layers-toggle,.leaflet-control-layers .leaflet-control-layers-list{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333}[dir] .leaflet-control-layers-expanded{background:#fff}[dir=ltr] .leaflet-control-layers-expanded{padding:6px 10px 6px 6px}[dir=rtl] .leaflet-control-layers-expanded{padding:6px 6px 6px 10px}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden}[dir=ltr] .leaflet-control-layers-scrollbar{padding-right:5px}[dir=rtl] .leaflet-control-layers-scrollbar{padding-left:5px}.leaflet-control-layers-selector{position:relative;top:1px}[dir] .leaflet-control-layers-selector{margin-top:2px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0}[dir] .leaflet-control-layers-separator{border-top:1px solid #ddd}[dir=ltr] .leaflet-control-layers-separator{margin:5px -10px 5px -6px}[dir=rtl] .leaflet-control-layers-separator{margin:5px -6px 5px -10px}[dir] .leaflet-default-icon-path{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=")}[dir] .leaflet-container .leaflet-control-attribution{background:#fff;background:hsla(0,0%,100%,.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333}[dir] .leaflet-control-attribution,[dir] .leaflet-control-scale-line{padding:0 5px}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}[dir=ltr] .leaflet-left .leaflet-control-scale{margin-left:5px}[dir=rtl] .leaflet-left .leaflet-control-scale{margin-right:5px}[dir] .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{line-height:1.1;font-size:11px;white-space:nowrap;overflow:hidden;box-sizing:border-box}[dir] .leaflet-control-scale-line{border:2px solid #777;border-top:none;padding:2px 5px 1px;background:#fff;background:hsla(0,0%,100%,.5)}[dir] .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}[dir] .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}[dir] .leaflet-touch .leaflet-bar,[dir] .leaflet-touch .leaflet-control-attribution,[dir] .leaflet-touch .leaflet-control-layers{box-shadow:none}[dir] .leaflet-touch .leaflet-bar,[dir] .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute}[dir] .leaflet-popup{text-align:center;margin-bottom:20px}[dir] .leaflet-popup-content-wrapper{padding:1px;border-radius:12px}[dir=ltr] .leaflet-popup-content-wrapper{text-align:left}[dir=rtl] .leaflet-popup-content-wrapper{text-align:right}.leaflet-popup-content{line-height:1.4}[dir] .leaflet-popup-content{margin:13px 19px}[dir] .leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;overflow:hidden;pointer-events:none}[dir=ltr] .leaflet-popup-tip-container{left:50%;margin-left:-20px}[dir=rtl] .leaflet-popup-tip-container{right:50%;margin-right:-20px}.leaflet-popup-tip{width:17px;height:17px}[dir] .leaflet-popup-tip{padding:1px;margin:-10px auto 0}[dir=ltr] .leaflet-popup-tip{-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .leaflet-popup-tip{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333}[dir] .leaflet-popup-content-wrapper,[dir] .leaflet-popup-tip{background:#fff;box-shadow:0 3px 14px rgba(0,0,0,.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700}[dir] .leaflet-container a.leaflet-popup-close-button{border:none;text-align:center}[dir=ltr] .leaflet-container a.leaflet-popup-close-button{right:0;padding:4px 4px 0 0;background:0 0}[dir=rtl] .leaflet-container a.leaflet-popup-close-button{left:0;padding:4px 0 0 4px;background:100% 0}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto}[dir] .leaflet-popup-scrolled{border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px}[dir] .leaflet-oldie .leaflet-popup-tip{margin:0 auto}[dir] .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}[dir] .leaflet-oldie .leaflet-control-layers,[dir] .leaflet-oldie .leaflet-control-zoom,[dir] .leaflet-oldie .leaflet-popup-content-wrapper,[dir] .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}[dir] .leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}[dir] .leaflet-tooltip{padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.4)}.leaflet-tooltip.leaflet-clickable{pointer-events:auto}[dir] .leaflet-tooltip.leaflet-clickable{cursor:pointer}.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before,.leaflet-tooltip-top:before{position:absolute;pointer-events:none;content:""}[dir] .leaflet-tooltip-bottom:before,[dir] .leaflet-tooltip-left:before,[dir] .leaflet-tooltip-right:before,[dir] .leaflet-tooltip-top:before{border:6px solid transparent}[dir=ltr] .leaflet-tooltip-bottom:before,[dir=ltr] .leaflet-tooltip-left:before,[dir=ltr] .leaflet-tooltip-right:before,[dir=ltr] .leaflet-tooltip-top:before{background:0 0}[dir=rtl] .leaflet-tooltip-bottom:before,[dir=rtl] .leaflet-tooltip-left:before,[dir=rtl] .leaflet-tooltip-right:before,[dir=rtl] .leaflet-tooltip-top:before{background:100% 0}[dir] .leaflet-tooltip-bottom{margin-top:6px}[dir] .leaflet-tooltip-top{margin-top:-6px}[dir=ltr] .leaflet-tooltip-bottom:before,[dir=ltr] .leaflet-tooltip-top:before{left:50%;margin-left:-6px}[dir=rtl] .leaflet-tooltip-bottom:before,[dir=rtl] .leaflet-tooltip-top:before{right:50%;margin-right:-6px}.leaflet-tooltip-top:before{bottom:0}[dir] .leaflet-tooltip-top:before{margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0}[dir] .leaflet-tooltip-bottom:before{margin-top:-12px;border-bottom-color:#fff}[dir=ltr] .leaflet-tooltip-bottom:before{margin-left:-6px}[dir=rtl] .leaflet-tooltip-bottom:before{margin-right:-6px}[dir=ltr] .leaflet-tooltip-left{margin-left:-6px}[dir=rtl] .leaflet-tooltip-left{margin-right:-6px}[dir=ltr] .leaflet-tooltip-right{margin-left:6px}[dir=rtl] .leaflet-tooltip-right{margin-right:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%}[dir] .leaflet-tooltip-left:before,[dir] .leaflet-tooltip-right:before{margin-top:-6px}[dir=ltr] .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}[dir=ltr] .leaflet-tooltip-right:before,[dir=rtl] .leaflet-tooltip-left:before{left:0;margin-left:-12px;border-right-color:#fff}[dir=rtl] .leaflet-tooltip-right:before{right:0;margin-right:-12px;border-left-color:#fff}.beautify-marker{font-weight:700;font-family:monospace;position:absolute;box-sizing:border-box}[dir] .beautify-marker{text-align:center}[dir] .beautify-marker.circle,[dir] .beautify-marker.circle-dot,[dir] .beautify-marker.doughnut{border-radius:100%}[dir=ltr] .beautify-marker.marker{border-top-left-radius:50%;border-top-right-radius:50% 100%;border-bottom-left-radius:100% 50%;border-bottom-right-radius:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .beautify-marker.marker{border-top-right-radius:50%;border-top-left-radius:50% 100%;border-bottom-right-radius:100% 50%;border-bottom-left-radius:0}[dir=ltr] .beautify-marker.marker>*,[dir=rtl] .beautify-marker.marker{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}[dir=rtl] .beautify-marker.marker>*{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.Code__code___31Vg8{position:absolute;top:110px;bottom:10px;width:425px;color:#fff;font-family:Roboto,monospace;white-space:pre;font-size:14px;line-height:22px}[dir] .Code__code___31Vg8{background:rgba(0,0,0,.7);border-radius:4px;padding:24px}[dir=ltr] .Code__code___31Vg8{right:10px}[dir=rtl] .Code__code___31Vg8{left:10px}.Layout__header___33oX6{position:relative;width:100%;height:100px}[dir=ltr] .Layout__header___33oX6{padding:0 0 0 20px}[dir=rtl] .Layout__header___33oX6{padding:0 20px 0 0}.Layout__header___33oX6 h1{font-family:Roboto,sans-serif;font-size:32px;font-weight:300;line-height:64px}[dir] .Layout__header___33oX6 h1{margin:0;padding:0}.Layout__header___33oX6 ul{list-style:none;display:block;overflow:hidden;line-height:32px}[dir] .Layout__header___33oX6 ul{margin:0;padding:0}.Layout__header___33oX6 ul li{display:block}[dir] .Layout__header___33oX6 ul li{cursor:pointer}[dir=ltr] .Layout__header___33oX6 ul li{float:left}[dir=rtl] .Layout__header___33oX6 ul li{float:right}[dir] .Layout__header___33oX6 ul li:hover{border-bottom:4px solid #00bcd4}[dir] .Layout__header___33oX6 ul li.active{border-bottom:4px solid #2196f3}.Layout__header___33oX6 ul li a{text-decoration:none;color:inherit;display:block;width:100%;height:100%}[dir] .Layout__header___33oX6 ul li a{padding:0 24px}.Layout__content___GDRpI{position:absolute;top:100px;bottom:0}[dir=ltr] .Layout__content___GDRpI{left:20px;right:465px}[dir=rtl] .Layout__content___GDRpI{right:20px;left:465px}[dir=ltr] .Layout__fullWidth___2Qlah,[dir=rtl] .Layout__fullWidth___2Qlah{left:0;right:0}.Map__map___2UbOE{position:absolute;display:block;width:100%;height:100%}.SearchResults__item___3yUT->*{line-height:32px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dir] .SearchResults__item___3yUT->*{border:1px solid transparent;padding:0 18px}[dir] .SearchResults__item___3yUT->.active,[dir] .SearchResults__item___3yUT->:hover{background-color:#f8f8f8;border-color:#c6c6c6}.Search__search___2kQjw form{position:relative;vertical-align:top;-webkit-transition:box-shadow .2s cubic-bezier(.4,0,.2,1);transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}[dir] .Search__search___2kQjw form{margin:32px 0;background-color:#fff;border-radius:2px;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0 0 1px rgba(0,0,0,.08);-webkit-transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}[dir] .Search__search___2kQjw.active form,[dir] .Search__search___2kQjw form:hover{box-shadow:0 3px 8px 0 rgba(0,0,0,.2),0 0 0 1px rgba(0,0,0,.08)}.Search__search___2kQjw input{width:100%;outline:0;font:16px arial,sans-serif;line-height:48px;height:48px;text-indent:18px}[dir] .Search__search___2kQjw input{border:none;padding:0;margin:0}body,html{font-family:Open Sans,sans-serif;height:100%;width:100%;box-sizing:border-box}[dir] body,html[dir]{margin:0;padding:0}*,:after,:before{box-sizing:border-box}.leaflet-control-geosearch.bar{position:absolute!important}[dir=ltr] .leaflet-control-geosearch.bar{left:50px;right:515px}[dir=rtl] .leaflet-control-geosearch.bar{right:50px;left:515px}.leaflet__leaflet-control-geosearch___35AKI *,.leaflet__leaflet-control-geosearch___35AKI :after,.leaflet__leaflet-control-geosearch___35AKI :before{box-sizing:border-box}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__leaflet-bar-part___2_DBQ{border-radius:4px;border-bottom:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{position:absolute;display:block;content:""}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{top:19px;width:8px}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{border-top:2px solid #555}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{left:16px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:before{right:16px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{top:6px;height:14px;width:14px}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{border-radius:50%;border:2px solid #555}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{left:6px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__leaflet-bar-part___2_DBQ:after{right:6px}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:before,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:before{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{top:50%;width:18px;height:18px}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{border-radius:50%}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{left:50%;margin:-9px 0 0 -9px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after,[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{right:50%;margin:-9px -9px 0 0}.leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{content:""}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{border:2px solid #555;border-top-color:#f3f3f3}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{-webkit-animation:leaflet__spin___TqeCo-ltr 1s linear infinite;animation:leaflet__spin___TqeCo-ltr 1s linear infinite}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__pending___3RDwM a.leaflet__leaflet-bar-part___2_DBQ:after{-webkit-animation:leaflet__spin___TqeCo-rtl 1s linear infinite;animation:leaflet__spin___TqeCo-rtl 1s linear infinite}.leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{content:"!";line-height:normal;font-weight:600;font-size:18px}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__error___15pc6 a.leaflet__leaflet-bar-part___2_DBQ:after{border:none}.leaflet__leaflet-control-geosearch___35AKI form{display:none;position:absolute;top:-2px;z-index:-1;height:auto}[dir] .leaflet__leaflet-control-geosearch___35AKI form{border:2px solid rgba(0,0,0,.2);background-color:#fff;background-clip:padding-box;margin:0;padding:0 8px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI form{left:28px;border-radius:0 4px 4px 0;border-left:none}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI form{right:28px;border-radius:4px 0 0 4px;border-right:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__active___WG2p7 form{display:block}.leaflet__leaflet-control-geosearch___35AKI form input{min-width:200px;width:100%;outline:0;font-size:12px;height:30px;text-indent:8px}[dir] .leaflet__leaflet-control-geosearch___35AKI form input{border:none;margin:0;padding:0}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI form input{border-radius:0 4px 4px 0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI form input{border-radius:4px 0 0 4px}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW{background:#fff}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>*{padding:0 8px;border:1px solid transparent}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7{padding:8px 0;border-top:1px solid #c6c6c6}[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>.leaflet__active___WG2p7,[dir] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW>:hover{background-color:#f8f8f8;border-color:#c6c6c6;cursor:pointer}.leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{content:"";display:block;width:0;position:absolute;bottom:-2px;top:30px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{border-left:2px solid rgba(0,0,0,.2);left:-2px}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI .leaflet__results___19EcW.leaflet__active___WG2p7:after{border-right:2px solid rgba(0,0,0,.2);right:-2px}@-webkit-keyframes leaflet__spin___TqeCo-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes leaflet__spin___TqeCo-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}@keyframes leaflet__spin___TqeCo-ltr{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes leaflet__spin___TqeCo-rtl{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(-1turn);transform:rotate(-1turn)}}.leaflet__leaflet-bottom___OI2at .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA,.leaflet__leaflet-top___31xh0 .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{display:none}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{position:relative;display:block;height:auto;width:400px;z-index:1000}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA{margin:10px auto 0;cursor:auto}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{position:relative;top:0;display:block}[dir] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{border:2px solid rgba(0,0,0,.2);border-radius:4px}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{left:0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form{right:0}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA form input{min-width:100%;width:100%}.leaflet__leaflet-control-geosearch___35AKI.leaflet__bar___fXvvA .leaflet__results___19EcW.leaflet__active___WG2p7:after{opacity:.2}[dir=ltr] .leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{right:28px;left:auto;border-radius:4px 0 0 4px;border-left:inherit;border-right:none}[dir=rtl] .leaflet__leaflet-right___3WKWY .leaflet__leaflet-control-geosearch___35AKI form{left:28px;right:auto;border-radius:0 4px 4px 0;border-right:inherit;border-left:none}.leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{color:#000;position:absolute;line-height:30px;top:0}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{padding:0 8px;cursor:pointer;border:none}[dir=ltr] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{right:0}[dir=rtl] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm{left:0}[dir] .leaflet__leaflet-control-geosearch___35AKI a.leaflet__reset___1fyCm:hover{background:#f5f5f5}[dir] .marker-cluster-small{background-color:rgba(181,226,140,.6)}[dir] .marker-cluster-small div{background-color:rgba(110,204,57,.6)}[dir] .marker-cluster-medium{background-color:rgba(241,211,87,.6)}[dir] .marker-cluster-medium div{background-color:rgba(240,194,12,.6)}[dir] .marker-cluster-large{background-color:rgba(253,156,115,.6)}[dir] .marker-cluster-large div{background-color:rgba(241,128,23,.6)}[dir] .leaflet-oldie .marker-cluster-small{background-color:#b5e28c}[dir] .leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}[dir] .leaflet-oldie .marker-cluster-medium{background-color:#f1d357}[dir] .leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}[dir] .leaflet-oldie .marker-cluster-large{background-color:#fd9c73}[dir] .leaflet-oldie .marker-cluster-large div{background-color:#f18017}[dir] .marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;font:12px Helvetica Neue,Arial,Helvetica,sans-serif}[dir] .marker-cluster div{margin-top:5px;text-align:center;border-radius:15px}[dir=ltr] .marker-cluster div{margin-left:5px}[dir=rtl] .marker-cluster div{margin-right:5px}.marker-cluster span{line-height:30px}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{transition:opacity .3s ease-in,-webkit-transform .3s ease-out;-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out;transition:transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in,-webkit-transform .3s ease-out}[dir] .leaflet-cluster-anim .leaflet-marker-icon,[dir] .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-webkit-transition:opacity .3s ease-in,-webkit-transform .3s ease-out}.leaflet-cluster-spider-leg{-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}[dir] .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-webkit-transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}
\ No newline at end of file diff --git a/public/webfonts/fa-regular-400.eot b/public/webfonts/fa-regular-400.eot Binary files differindex d62be2fad8..06101488cd 100644 --- a/public/webfonts/fa-regular-400.eot +++ b/public/webfonts/fa-regular-400.eot diff --git a/public/webfonts/fa-regular-400.svg b/public/webfonts/fa-regular-400.svg index 751083ee48..4576c805f0 100644 --- a/public/webfonts/fa-regular-400.svg +++ b/public/webfonts/fa-regular-400.svg @@ -1,12 +1,12 @@ <?xml version="1.0" standalone="no"?> <!-- -Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com +Font Awesome Free 5.10.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> <metadata> -Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 +Created by FontForge 20190112 at Fri Aug 2 14:42:17 2019 By Robert Madole Copyright (c) Font Awesome </metadata> diff --git a/public/webfonts/fa-regular-400.ttf b/public/webfonts/fa-regular-400.ttf Binary files differindex eb3cb5ef66..d71787bd2a 100644 --- a/public/webfonts/fa-regular-400.ttf +++ b/public/webfonts/fa-regular-400.ttf diff --git a/public/webfonts/fa-regular-400.woff b/public/webfonts/fa-regular-400.woff Binary files differindex 43b1a9ae49..8894b467f9 100644 --- a/public/webfonts/fa-regular-400.woff +++ b/public/webfonts/fa-regular-400.woff diff --git a/public/webfonts/fa-regular-400.woff2 b/public/webfonts/fa-regular-400.woff2 Binary files differindex b9344a742f..a5c98bc0fb 100644 --- a/public/webfonts/fa-regular-400.woff2 +++ b/public/webfonts/fa-regular-400.woff2 diff --git a/public/webfonts/fa-solid-900.eot b/public/webfonts/fa-solid-900.eot Binary files differindex c77baa8d46..7c78e8cd0b 100644 --- a/public/webfonts/fa-solid-900.eot +++ b/public/webfonts/fa-solid-900.eot diff --git a/public/webfonts/fa-solid-900.svg b/public/webfonts/fa-solid-900.svg index 627128b82c..6b9803730c 100644 --- a/public/webfonts/fa-solid-900.svg +++ b/public/webfonts/fa-solid-900.svg @@ -1,12 +1,12 @@ <?xml version="1.0" standalone="no"?> <!-- -Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com +Font Awesome Free 5.10.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"> <metadata> -Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 +Created by FontForge 20190112 at Fri Aug 2 14:42:17 2019 By Robert Madole Copyright (c) Font Awesome </metadata> diff --git a/public/webfonts/fa-solid-900.ttf b/public/webfonts/fa-solid-900.ttf Binary files differindex c6c3dd4d40..d4e300d6b5 100644 --- a/public/webfonts/fa-solid-900.ttf +++ b/public/webfonts/fa-solid-900.ttf diff --git a/public/webfonts/fa-solid-900.woff b/public/webfonts/fa-solid-900.woff Binary files differindex 77c1786227..a50f67fb05 100644 --- a/public/webfonts/fa-solid-900.woff +++ b/public/webfonts/fa-solid-900.woff diff --git a/public/webfonts/fa-solid-900.woff2 b/public/webfonts/fa-solid-900.woff2 Binary files differindex e30fb67112..a43e1cad5f 100644 --- a/public/webfonts/fa-solid-900.woff2 +++ b/public/webfonts/fa-solid-900.woff2 diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 5ea43913da..f3e9211ba5 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -369,17 +369,17 @@ }, { "name": "egulias/email-validator", - "version": "2.1.9", - "version_normalized": "2.1.9.0", + "version": "2.1.10", + "version_normalized": "2.1.10.0", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25" + "reference": "a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/128cc721d771ec2c46ce59698f4ca42b73f71b25", - "reference": "128cc721d771ec2c46ce59698f4ca42b73f71b25", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec", + "reference": "a6c8d7101b19a451c1707b1b79bbbc56e4bdb7ec", "shasum": "" }, "require": { @@ -389,12 +389,13 @@ "require-dev": { "dominicsayers/isemail": "dev-master", "phpunit/phpunit": "^4.8.35||^5.7||^6.0", - "satooshi/php-coveralls": "^1.0.1" + "satooshi/php-coveralls": "^1.0.1", + "symfony/phpunit-bridge": "^4.4@dev" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, - "time": "2019-06-23T10:14:27+00:00", + "time": "2019-07-19T20:52:08+00:00", "type": "library", "extra": { "branch-alias": { @@ -942,8 +943,8 @@ }, { "name": "illuminate/cache", - "version": "v5.8.28", - "version_normalized": "5.8.28.0", + "version": "v5.8.30", + "version_normalized": "5.8.30.0", "source": { "type": "git", "url": "https://github.com/illuminate/cache.git", @@ -993,17 +994,17 @@ }, { "name": "illuminate/container", - "version": "v5.8.28", - "version_normalized": "5.8.28.0", + "version": "v5.8.30", + "version_normalized": "5.8.30.0", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", - "reference": "c025a7a87d25101904175de2019e73828b0f30c9" + "reference": "7afee1ef2cb53190a98d727ea77096b6a610c05e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/c025a7a87d25101904175de2019e73828b0f30c9", - "reference": "c025a7a87d25101904175de2019e73828b0f30c9", + "url": "https://api.github.com/repos/illuminate/container/zipball/7afee1ef2cb53190a98d727ea77096b6a610c05e", + "reference": "7afee1ef2cb53190a98d727ea77096b6a610c05e", "shasum": "" }, "require": { @@ -1012,7 +1013,7 @@ "php": "^7.1.3", "psr/container": "^1.0" }, - "time": "2019-07-09T13:26:41+00:00", + "time": "2019-07-16T13:14:16+00:00", "type": "library", "extra": { "branch-alias": { @@ -1040,17 +1041,17 @@ }, { "name": "illuminate/contracts", - "version": "v5.8.28", - "version_normalized": "5.8.28.0", + "version": "v5.8.30", + "version_normalized": "5.8.30.0", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8" + "reference": "00fc6afee788fa07c311b0650ad276585f8aef96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8", - "reference": "f6a2633c280b3f0efcd5a6d2d4a975dfa26033e8", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/00fc6afee788fa07c311b0650ad276585f8aef96", + "reference": "00fc6afee788fa07c311b0650ad276585f8aef96", "shasum": "" }, "require": { @@ -1058,7 +1059,7 @@ "psr/container": "^1.0", "psr/simple-cache": "^1.0" }, - "time": "2019-06-24T11:16:37+00:00", + "time": "2019-07-30T13:57:21+00:00", "type": "library", "extra": { "branch-alias": { @@ -1086,17 +1087,17 @@ }, { "name": "illuminate/database", - "version": "v5.8.28", - "version_normalized": "5.8.28.0", + "version": "v5.8.30", + "version_normalized": "5.8.30.0", "source": { "type": "git", "url": "https://github.com/illuminate/database.git", - "reference": "ffedc9b15d42e90294fb51b3de795eb9610da1ab" + "reference": "760ef316055ab69f711746e0455442d9b6b6db93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/database/zipball/ffedc9b15d42e90294fb51b3de795eb9610da1ab", - "reference": "ffedc9b15d42e90294fb51b3de795eb9610da1ab", + "url": "https://api.github.com/repos/illuminate/database/zipball/760ef316055ab69f711746e0455442d9b6b6db93", + "reference": "760ef316055ab69f711746e0455442d9b6b6db93", "shasum": "" }, "require": { @@ -1114,7 +1115,7 @@ "illuminate/filesystem": "Required to use the migrations (5.8.*).", "illuminate/pagination": "Required to paginate the result set (5.8.*)." }, - "time": "2019-06-28T13:27:57+00:00", + "time": "2019-07-29T14:26:41+00:00", "type": "library", "extra": { "branch-alias": { @@ -1148,17 +1149,17 @@ }, { "name": "illuminate/support", - "version": "v5.8.28", - "version_normalized": "5.8.28.0", + "version": "v5.8.30", + "version_normalized": "5.8.30.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "b60e70c9bd3c6d61cbb4343459755470fd5ad818" + "reference": "1d82de27c37ee6e8493dac0521cbda5b9456626c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/b60e70c9bd3c6d61cbb4343459755470fd5ad818", - "reference": "b60e70c9bd3c6d61cbb4343459755470fd5ad818", + "url": "https://api.github.com/repos/illuminate/support/zipball/1d82de27c37ee6e8493dac0521cbda5b9456626c", + "reference": "1d82de27c37ee6e8493dac0521cbda5b9456626c", "shasum": "" }, "require": { @@ -1180,7 +1181,7 @@ "symfony/var-dumper": "Required to use the dd function (^4.2).", "vlucas/phpdotenv": "Required to use the env helper (^3.3)." }, - "time": "2019-07-05T17:41:14+00:00", + "time": "2019-07-26T06:46:07+00:00", "type": "library", "extra": { "branch-alias": { @@ -1283,17 +1284,17 @@ }, { "name": "league/commonmark", - "version": "0.19.3", - "version_normalized": "0.19.3.0", + "version": "1.0.0", + "version_normalized": "1.0.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c6ecea928b432ae417fa9942840bbfd8c332448c" + "reference": "7a40f2b0931602c504c2a9692d9f1e33635fd5ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c6ecea928b432ae417fa9942840bbfd8c332448c", - "reference": "c6ecea928b432ae417fa9942840bbfd8c332448c", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/7a40f2b0931602c504c2a9692d9f1e33635fd5ef", + "reference": "7a40f2b0931602c504c2a9692d9f1e33635fd5ef", "shasum": "" }, "require": { @@ -1317,14 +1318,14 @@ "suggest": { "league/commonmark-extras": "Library of useful extensions including smart punctuation" }, - "time": "2019-06-18T18:29:15+00:00", + "time": "2019-06-29T11:19:01+00:00", "bin": [ "bin/commonmark" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "0.20-dev" + "dev-master": "1.1-dev" } }, "installation-source": "dist", @@ -1669,17 +1670,17 @@ }, { "name": "nesbot/carbon", - "version": "2.21.0", - "version_normalized": "2.21.0.0", + "version": "2.22.0", + "version_normalized": "2.22.0.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "da6410b77f74eecd98d24ffb6dfecefccf3ca17f" + "reference": "1a0e48b5f656065ba3c265b058b25d36c2162a5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/da6410b77f74eecd98d24ffb6dfecefccf3ca17f", - "reference": "da6410b77f74eecd98d24ffb6dfecefccf3ca17f", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/1a0e48b5f656065ba3c265b058b25d36c2162a5e", + "reference": "1a0e48b5f656065ba3c265b058b25d36c2162a5e", "shasum": "" }, "require": { @@ -1690,12 +1691,12 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.6", + "phpmd/phpmd": "dev-php-7.1-compatibility", "phpstan/phpstan": "^0.11", "phpunit/phpunit": "^7.5 || ^8.0", "squizlabs/php_codesniffer": "^3.4" }, - "time": "2019-07-14T17:06:46+00:00", + "time": "2019-07-28T09:02:12+00:00", "bin": [ "bin/carbon" ], @@ -2613,17 +2614,17 @@ }, { "name": "symfony/cache", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "4acf343c9e3aea5a00d51926c01125441707635c" + "reference": "d263af3cec33afa862310e58545fdc10d779806f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/4acf343c9e3aea5a00d51926c01125441707635c", - "reference": "4acf343c9e3aea5a00d51926c01125441707635c", + "url": "https://api.github.com/repos/symfony/cache/zipball/d263af3cec33afa862310e58545fdc10d779806f", + "reference": "d263af3cec33afa862310e58545fdc10d779806f", "shasum": "" }, "require": { @@ -2654,7 +2655,7 @@ "symfony/dependency-injection": "~3.4|~4.1", "symfony/var-dumper": "^4.1.1" }, - "time": "2019-06-26T07:55:28+00:00", + "time": "2019-06-28T13:16:30+00:00", "type": "library", "extra": { "branch-alias": { @@ -2753,17 +2754,17 @@ }, { "name": "symfony/debug", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd" + "reference": "527887c3858a2462b0137662c74837288b998ee3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", - "reference": "d8f4fb38152e0eb6a433705e5f661d25b32c5fcd", + "url": "https://api.github.com/repos/symfony/debug/zipball/527887c3858a2462b0137662c74837288b998ee3", + "reference": "527887c3858a2462b0137662c74837288b998ee3", "shasum": "" }, "require": { @@ -2776,7 +2777,7 @@ "require-dev": { "symfony/http-kernel": "~3.4|~4.0" }, - "time": "2019-06-19T15:27:09+00:00", + "time": "2019-07-23T11:21:36+00:00", "type": "library", "extra": { "branch-alias": { @@ -2811,17 +2812,17 @@ }, { "name": "symfony/event-dispatcher", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" + "reference": "212b020949331b6531250584531363844b34a94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/212b020949331b6531250584531363844b34a94e", + "reference": "212b020949331b6531250584531363844b34a94e", "shasum": "" }, "require": { @@ -2848,7 +2849,7 @@ "symfony/dependency-injection": "", "symfony/http-kernel": "" }, - "time": "2019-06-13T11:03:18+00:00", + "time": "2019-06-27T06:42:14+00:00", "type": "library", "extra": { "branch-alias": { @@ -2943,8 +2944,8 @@ }, { "name": "symfony/expression-language", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", @@ -2996,17 +2997,17 @@ }, { "name": "symfony/http-foundation", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d" + "reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e1b507fcfa4e87d192281774b5ecd4265370180d", - "reference": "e1b507fcfa4e87d192281774b5ecd4265370180d", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8b778ee0c27731105fbf1535f51793ad1ae0ba2b", + "reference": "8b778ee0c27731105fbf1535f51793ad1ae0ba2b", "shasum": "" }, "require": { @@ -3018,7 +3019,7 @@ "predis/predis": "~1.0", "symfony/expression-language": "~3.4|~4.0" }, - "time": "2019-06-26T09:25:00+00:00", + "time": "2019-07-23T11:21:36+00:00", "type": "library", "extra": { "branch-alias": { @@ -3053,17 +3054,17 @@ }, { "name": "symfony/http-kernel", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d" + "reference": "a414548d236ddd8fa3df52367d583e82339c5e95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4150f71e27ed37a74700561b77e3dbd754cbb44d", - "reference": "4150f71e27ed37a74700561b77e3dbd754cbb44d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a414548d236ddd8fa3df52367d583e82339c5e95", + "reference": "a414548d236ddd8fa3df52367d583e82339c5e95", "shasum": "" }, "require": { @@ -3112,7 +3113,7 @@ "symfony/dependency-injection": "", "symfony/var-dumper": "" }, - "time": "2019-06-26T14:26:16+00:00", + "time": "2019-07-28T07:10:23+00:00", "type": "library", "extra": { "branch-alias": { @@ -3147,17 +3148,17 @@ }, { "name": "symfony/mime", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b" + "reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ec2c5565de60e03f33d4296a655e3273f0ad1f8b", - "reference": "ec2c5565de60e03f33d4296a655e3273f0ad1f8b", + "url": "https://api.github.com/repos/symfony/mime/zipball/6b7148029b1dd5eda1502064f06d01357b7b2d8b", + "reference": "6b7148029b1dd5eda1502064f06d01357b7b2d8b", "shasum": "" }, "require": { @@ -3169,7 +3170,7 @@ "egulias/email-validator": "^2.0", "symfony/dependency-injection": "~3.4|^4.1" }, - "time": "2019-06-04T09:22:54+00:00", + "time": "2019-07-19T16:21:19+00:00", "type": "library", "extra": { "branch-alias": { @@ -3631,17 +3632,17 @@ }, { "name": "symfony/translation", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" + "reference": "4e3e39cc485304f807622bdc64938e4633396406" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", + "url": "https://api.github.com/repos/symfony/translation/zipball/4e3e39cc485304f807622bdc64938e4633396406", + "reference": "4e3e39cc485304f807622bdc64938e4633396406", "shasum": "" }, "require": { @@ -3674,7 +3675,7 @@ "symfony/config": "", "symfony/yaml": "" }, - "time": "2019-06-13T11:03:18+00:00", + "time": "2019-07-18T10:34:59+00:00", "type": "library", "extra": { "branch-alias": { @@ -3768,8 +3769,8 @@ }, { "name": "symfony/var-exporter", - "version": "v4.3.2", - "version_normalized": "4.3.2.0", + "version": "v4.3.3", + "version_normalized": "4.3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", diff --git a/vendor/egulias/email-validator/EmailValidator/EmailLexer.php b/vendor/egulias/email-validator/EmailValidator/EmailLexer.php index 38e4714ac0..e27a4b89f9 100644 --- a/vendor/egulias/email-validator/EmailValidator/EmailLexer.php +++ b/vendor/egulias/email-validator/EmailValidator/EmailLexer.php @@ -77,10 +77,22 @@ class EmailLexer extends AbstractLexer protected $previous; + private static $nullToken = [ + 'value' => '', + 'type' => null, + 'position' => 0, + ]; + + public function __construct() + { + $this->previous = $this->token = self::$nullToken; + } + public function reset() { $this->hasInvalidTokens = false; parent::reset(); + $this->previous = $this->token = self::$nullToken; } public function hasInvalidTokens() @@ -122,8 +134,10 @@ class EmailLexer extends AbstractLexer public function moveNext() { $this->previous = $this->token; + $hasNext = parent::moveNext(); + $this->token = $this->token ?: self::$nullToken; - return parent::moveNext(); + return $hasNext; } /** diff --git a/vendor/egulias/email-validator/EmailValidator/Parser/DomainPart.php b/vendor/egulias/email-validator/EmailValidator/Parser/DomainPart.php index f2fd25a11b..8ed240b393 100644 --- a/vendor/egulias/email-validator/EmailValidator/Parser/DomainPart.php +++ b/vendor/egulias/email-validator/EmailValidator/Parser/DomainPart.php @@ -184,7 +184,7 @@ class DomainPart extends Parser $domain .= $this->lexer->token['value']; $this->lexer->moveNext(); - } while ($this->lexer->token); + } while (null !== $this->lexer->token['type']); return $domain; } diff --git a/vendor/egulias/email-validator/EmailValidator/Parser/LocalPart.php b/vendor/egulias/email-validator/EmailValidator/Parser/LocalPart.php index 8ab16ab4a1..fa1d17b7f4 100644 --- a/vendor/egulias/email-validator/EmailValidator/Parser/LocalPart.php +++ b/vendor/egulias/email-validator/EmailValidator/Parser/LocalPart.php @@ -21,8 +21,8 @@ class LocalPart extends Parser $closingQuote = false; $openedParenthesis = 0; - while ($this->lexer->token['type'] !== EmailLexer::S_AT && $this->lexer->token) { - if ($this->lexer->token['type'] === EmailLexer::S_DOT && !$this->lexer->getPrevious()) { + while ($this->lexer->token['type'] !== EmailLexer::S_AT && null !== $this->lexer->token['type']) { + if ($this->lexer->token['type'] === EmailLexer::S_DOT && null === $this->lexer->getPrevious()['type']) { throw new DotAtStart(); } @@ -86,7 +86,7 @@ class LocalPart extends Parser $this->lexer->moveNext(); - while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && $this->lexer->token) { + while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && null !== $this->lexer->token['type']) { $parseAgain = false; if (isset($special[$this->lexer->token['type']]) && $setSpecialsWarning) { $this->warnings[CFWSWithFWS::CODE] = new CFWSWithFWS(); diff --git a/vendor/egulias/email-validator/composer.json b/vendor/egulias/email-validator/composer.json index 5423e9f02b..36bd0cabbe 100644 --- a/vendor/egulias/email-validator/composer.json +++ b/vendor/egulias/email-validator/composer.json @@ -26,6 +26,7 @@ "require-dev" : { "satooshi/php-coveralls": "^1.0.1", "phpunit/phpunit": "^4.8.35||^5.7||^6.0", + "symfony/phpunit-bridge": "^4.4@dev", "dominicsayers/isemail": "dev-master" }, "suggest": { diff --git a/vendor/egulias/email-validator/phpunit.xml.dist b/vendor/egulias/email-validator/phpunit.xml.dist index b0812f97be..754445a76d 100644 --- a/vendor/egulias/email-validator/phpunit.xml.dist +++ b/vendor/egulias/email-validator/phpunit.xml.dist @@ -8,7 +8,6 @@ convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" - syntaxCheck="false" bootstrap="vendor/autoload.php" > <testsuites> @@ -19,8 +18,12 @@ </testsuites> <filter> - <blacklist> - <directory>./vendor</directory> - </blacklist> + <whitelist> + <directory>./EmailValidator/</directory> + </whitelist> </filter> + +<listeners> + <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" /> +</listeners> </phpunit> diff --git a/vendor/illuminate/container/Container.php b/vendor/illuminate/container/Container.php index 14e97197b3..5c83d16760 100755 --- a/vendor/illuminate/container/Container.php +++ b/vendor/illuminate/container/Container.php @@ -814,9 +814,13 @@ class Container implements ArrayAccess, ContainerContract // Once we have all the constructor's parameters we can create each of the // dependency instances and then use the reflection instances to make a // new instance of this class, injecting the created dependencies in. - $instances = $this->resolveDependencies( - $dependencies - ); + try { + $instances = $this->resolveDependencies($dependencies); + } catch (BindingResolutionException $e) { + array_pop($this->buildStack); + + throw $e; + } array_pop($this->buildStack); diff --git a/vendor/illuminate/contracts/Redis/Connector.php b/vendor/illuminate/contracts/Redis/Connector.php new file mode 100644 index 0000000000..e2669f73a8 --- /dev/null +++ b/vendor/illuminate/contracts/Redis/Connector.php @@ -0,0 +1,25 @@ +<?php + +namespace Illuminate\Contracts\Redis; + +interface Connector +{ + /** + * Create a connection to a Redis cluster. + * + * @param array $config + * @param array $options + * @return \Illuminate\Redis\Connections\Connection + */ + public function connect(array $config, array $options); + + /** + * Create a connection to a Redis instance. + * + * @param array $config + * @param array $clusterOptions + * @param array $options + * @return \Illuminate\Redis\Connections\Connection + */ + public function connectToCluster(array $config, array $clusterOptions, array $options); +} diff --git a/vendor/illuminate/database/Console/Factories/stubs/factory.stub b/vendor/illuminate/database/Console/Factories/stubs/factory.stub index 909af66b64..eee3086c88 100644 --- a/vendor/illuminate/database/Console/Factories/stubs/factory.stub +++ b/vendor/illuminate/database/Console/Factories/stubs/factory.stub @@ -1,6 +1,6 @@ <?php -/* @var $factory \Illuminate\Database\Eloquent\Factory */ +/** @var \Illuminate\Database\Eloquent\Factory $factory */ use NamespacedDummyModel; use Faker\Generator as Faker; diff --git a/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php b/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php index 4dd5f026c1..a4989248be 100755 --- a/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php +++ b/vendor/illuminate/database/Eloquent/Relations/BelongsTo.php @@ -373,7 +373,7 @@ class BelongsTo extends Relation * Get the name of the relationship. * * @return string - * @deprecated The getRelationName() method should be used instead. Will be removed in Laravel 5.9. + * @deprecated The getRelationName() method should be used instead. Will be removed in Laravel 6.0. */ public function getRelation() { diff --git a/vendor/illuminate/database/Eloquent/Relations/MorphTo.php b/vendor/illuminate/database/Eloquent/Relations/MorphTo.php index 8ff0e18422..521730b3c9 100644 --- a/vendor/illuminate/database/Eloquent/Relations/MorphTo.php +++ b/vendor/illuminate/database/Eloquent/Relations/MorphTo.php @@ -123,7 +123,9 @@ class MorphTo extends BelongsTo (array) ($this->morphableEagerLoads[get_class($instance)] ?? []) )); - return $query->whereIn( + $whereIn = $this->whereInMethod($instance, $ownerKey); + + return $query->{$whereIn}( $instance->getTable().'.'.$ownerKey, $this->gatherKeysByType($type) )->get(); } diff --git a/vendor/illuminate/database/Migrations/Migrator.php b/vendor/illuminate/database/Migrations/Migrator.php index a9ef06be76..2bf3a15d1d 100755 --- a/vendor/illuminate/database/Migrations/Migrator.php +++ b/vendor/illuminate/database/Migrations/Migrator.php @@ -192,14 +192,18 @@ class Migrator $this->note("<comment>Migrating:</comment> {$name}"); + $startTime = microtime(true); + $this->runMigration($migration, 'up'); + $runTime = round(microtime(true) - $startTime, 2); + // Once we have run a migrations class, we will log that it was run in this // repository so that we don't try to run it next time we do a migration // in the application. A migration repository keeps the migrate order. $this->repository->log($name, $batch); - $this->note("<info>Migrated:</info> {$name}"); + $this->note("<info>Migrated:</info> {$name} ({$runTime} seconds)"); } /** @@ -349,14 +353,18 @@ class Migrator return $this->pretendToRun($instance, 'down'); } + $startTime = microtime(true); + $this->runMigration($instance, 'down'); + $runTime = round(microtime(true) - $startTime, 2); + // Once we have successfully run the migration "down" we will remove it from // the migration repository so it will be considered to have not been run // by the application then will be able to fire by any later operation. $this->repository->delete($migration); - $this->note("<info>Rolled back:</info> {$name}"); + $this->note("<info>Rolled back:</info> {$name} ({$runTime} seconds)"); } /** diff --git a/vendor/illuminate/database/Query/Builder.php b/vendor/illuminate/database/Query/Builder.php index 8ca5ce0451..0ff6d377d5 100755 --- a/vendor/illuminate/database/Query/Builder.php +++ b/vendor/illuminate/database/Query/Builder.php @@ -996,16 +996,18 @@ class Builder /** * Add a "where null" clause to the query. * - * @param string $column + * @param string|array $columns * @param string $boolean * @param bool $not * @return $this */ - public function whereNull($column, $boolean = 'and', $not = false) + public function whereNull($columns, $boolean = 'and', $not = false) { $type = $not ? 'NotNull' : 'Null'; - $this->wheres[] = compact('type', 'column', 'boolean'); + foreach (Arr::wrap($columns) as $column) { + $this->wheres[] = compact('type', 'column', 'boolean'); + } return $this; } @@ -1198,7 +1200,9 @@ class Builder $value = $value->format('d'); } - $value = str_pad($value, 2, '0', STR_PAD_LEFT); + if (! $value instanceof Expression) { + $value = str_pad($value, 2, '0', STR_PAD_LEFT); + } return $this->addDateBasedWhere('Day', $column, $operator, $value, $boolean); } @@ -1217,7 +1221,7 @@ class Builder $value, $operator, func_num_args() === 2 ); - return $this->addDateBasedWhere('Day', $column, $operator, $value, 'or'); + return $this->whereDay($column, $operator, $value, 'or'); } /** @@ -1239,7 +1243,9 @@ class Builder $value = $value->format('m'); } - $value = str_pad($value, 2, '0', STR_PAD_LEFT); + if (! $value instanceof Expression) { + $value = str_pad($value, 2, '0', STR_PAD_LEFT); + } return $this->addDateBasedWhere('Month', $column, $operator, $value, $boolean); } @@ -1258,7 +1264,7 @@ class Builder $value, $operator, func_num_args() === 2 ); - return $this->addDateBasedWhere('Month', $column, $operator, $value, 'or'); + return $this->whereMonth($column, $operator, $value, 'or'); } /** @@ -1297,7 +1303,7 @@ class Builder $value, $operator, func_num_args() === 2 ); - return $this->addDateBasedWhere('Year', $column, $operator, $value, 'or'); + return $this->whereYear($column, $operator, $value, 'or'); } /** diff --git a/vendor/illuminate/database/Query/Grammars/Grammar.php b/vendor/illuminate/database/Query/Grammars/Grammar.php index 2bccbaa634..cd1ed736c2 100755 --- a/vendor/illuminate/database/Query/Grammars/Grammar.php +++ b/vendor/illuminate/database/Query/Grammars/Grammar.php @@ -942,7 +942,7 @@ class Grammar extends BaseGrammar */ public function prepareBindingsForUpdate(array $bindings, array $values) { - $cleanBindings = Arr::except($bindings, ['join', 'select']); + $cleanBindings = Arr::except($bindings, ['select', 'join']); return array_values( array_merge($bindings['join'], $values, Arr::flatten($cleanBindings)) @@ -970,7 +970,9 @@ class Grammar extends BaseGrammar */ public function prepareBindingsForDelete(array $bindings) { - return Arr::flatten($bindings); + return Arr::flatten( + Arr::except($bindings, 'select') + ); } /** diff --git a/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php b/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php index b93226b476..5a9cea6e56 100755 --- a/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php +++ b/vendor/illuminate/database/Query/Grammars/MySqlGrammar.php @@ -2,7 +2,6 @@ namespace Illuminate\Database\Query\Grammars; -use Illuminate\Support\Arr; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JsonExpression; @@ -240,21 +239,6 @@ class MySqlGrammar extends Grammar } /** - * Prepare the bindings for a delete statement. - * - * @param array $bindings - * @return array - */ - public function prepareBindingsForDelete(array $bindings) - { - $cleanBindings = Arr::except($bindings, ['join', 'select']); - - return array_values( - array_merge($bindings['join'], Arr::flatten($cleanBindings)) - ); - } - - /** * Compile a delete query that does not use joins. * * @param \Illuminate\Database\Query\Builder $query diff --git a/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php b/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php index 5377c803c2..bc686e3fe6 100755 --- a/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php +++ b/vendor/illuminate/database/Query/Grammars/PostgresGrammar.php @@ -365,13 +365,10 @@ class PostgresGrammar extends Grammar : $value; })->all(); - // Update statements with "joins" in Postgres use an interesting syntax. We need to - // take all of the bindings and put them on the end of this array since they are - // added to the end of the "where" clause statements as typical where clauses. - $bindingsWithoutJoin = Arr::except($bindings, 'join'); + $bindingsWithoutWhere = Arr::except($bindings, ['select', 'where']); return array_values( - array_merge($values, $bindings['join'], Arr::flatten($bindingsWithoutJoin)) + array_merge($values, $bindings['where'], Arr::flatten($bindingsWithoutWhere)) ); } @@ -403,9 +400,24 @@ class PostgresGrammar extends Grammar return $this->wrapTable($join->table); })->implode(', '); - $where = count($query->wheres) > 0 ? ' '.$this->compileUpdateWheres($query) : ''; + $where = $this->compileUpdateWheres($query); + + return trim("delete from {$table}{$using} {$where}"); + } + + /** + * Prepare the bindings for a delete statement. + * + * @param array $bindings + * @return array + */ + public function prepareBindingsForDelete(array $bindings) + { + $bindingsWithoutWhere = Arr::except($bindings, ['select', 'where']); - return trim("delete from {$table}{$using}{$where}"); + return array_values( + array_merge($bindings['where'], Arr::flatten($bindingsWithoutWhere)) + ); } /** diff --git a/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php b/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php index 2d1b9e1286..2cedb89299 100755 --- a/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php +++ b/vendor/illuminate/database/Query/Grammars/SQLiteGrammar.php @@ -194,15 +194,31 @@ class SQLiteGrammar extends Grammar })->implode(', '); if (isset($query->joins) || isset($query->limit)) { - $selectSql = parent::compileSelect($query->select("{$query->from}.rowid")); - - return "update {$table} set $columns where {$this->wrap('rowid')} in ({$selectSql})"; + return $this->compileUpdateWithJoinsOrLimit($query, $columns); } return trim("update {$table} set {$columns} {$this->compileWheres($query)}"); } /** + * Compile an update statement with joins or limit into SQL. + * + * @param \Illuminate\Database\Query\Builder $query + * @param string $columns + * @return string + */ + protected function compileUpdateWithJoinsOrLimit(Builder $query, $columns) + { + $segments = preg_split('/\s+as\s+/i', $query->from); + + $alias = $segments[1] ?? $segments[0]; + + $selectSql = parent::compileSelect($query->select($alias.'.rowid')); + + return "update {$this->wrapTable($query->from)} set {$columns} where {$this->wrap('rowid')} in ({$selectSql})"; + } + + /** * Prepare the bindings for an update statement. * * @param array $bindings @@ -211,10 +227,10 @@ class SQLiteGrammar extends Grammar */ public function prepareBindingsForUpdate(array $bindings, array $values) { - $cleanBindings = Arr::except($bindings, ['select', 'join']); + $cleanBindings = Arr::except($bindings, 'select'); return array_values( - array_merge($values, $bindings['join'], Arr::flatten($cleanBindings)) + array_merge($values, Arr::flatten($cleanBindings)) ); } @@ -227,9 +243,7 @@ class SQLiteGrammar extends Grammar public function compileDelete(Builder $query) { if (isset($query->joins) || isset($query->limit)) { - $selectSql = parent::compileSelect($query->select("{$query->from}.rowid")); - - return "delete from {$this->wrapTable($query->from)} where {$this->wrap('rowid')} in ({$selectSql})"; + return $this->compileDeleteWithJoinsOrLimit($query); } $wheres = is_array($query->wheres) ? $this->compileWheres($query) : ''; @@ -238,18 +252,20 @@ class SQLiteGrammar extends Grammar } /** - * Prepare the bindings for a delete statement. + * Compile a delete statement with joins or limit into SQL. * - * @param array $bindings - * @return array + * @param \Illuminate\Database\Query\Builder $query + * @return string */ - public function prepareBindingsForDelete(array $bindings) + protected function compileDeleteWithJoinsOrLimit(Builder $query) { - $cleanBindings = Arr::except($bindings, ['select', 'join']); + $segments = preg_split('/\s+as\s+/i', $query->from); - return array_values( - array_merge($bindings['join'], Arr::flatten($cleanBindings)) - ); + $alias = $segments[1] ?? $segments[0]; + + $selectSql = parent::compileSelect($query->select($alias.'.rowid')); + + return "delete from {$this->wrapTable($query->from)} where {$this->wrap('rowid')} in ({$selectSql})"; } /** diff --git a/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php b/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php index b53e0bff35..56f917a9d7 100755 --- a/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php +++ b/vendor/illuminate/database/Query/Grammars/SqlServerGrammar.php @@ -405,13 +405,10 @@ class SqlServerGrammar extends Grammar */ public function prepareBindingsForUpdate(array $bindings, array $values) { - // Update statements with joins in SQL Servers utilize an unique syntax. We need to - // take all of the bindings and put them on the end of this array since they are - // added to the end of the "where" clause statements as typical where clauses. - $bindingsWithoutJoin = Arr::except($bindings, 'join'); + $cleanBindings = Arr::except($bindings, 'select'); return array_values( - array_merge($values, $bindings['join'], Arr::flatten($bindingsWithoutJoin)) + array_merge($values, Arr::flatten($cleanBindings)) ); } diff --git a/vendor/illuminate/database/Schema/Blueprint.php b/vendor/illuminate/database/Schema/Blueprint.php index e19bff605b..a08f5be49a 100755 --- a/vendor/illuminate/database/Schema/Blueprint.php +++ b/vendor/illuminate/database/Schema/Blueprint.php @@ -1225,6 +1225,38 @@ class Blueprint } /** + * Add the proper columns for a polymorphic table using UUIDs. + * + * @param string $name + * @param string|null $indexName + * @return void + */ + public function uuidMorphs($name, $indexName = null) + { + $this->string("{$name}_type"); + + $this->uuid("{$name}_id"); + + $this->index(["{$name}_type", "{$name}_id"], $indexName); + } + + /** + * Add nullable columns for a polymorphic table using UUIDs. + * + * @param string $name + * @param string|null $indexName + * @return void + */ + public function nullableUuidMorphs($name, $indexName = null) + { + $this->string("{$name}_type")->nullable(); + + $this->uuid("{$name}_id")->nullable(); + + $this->index(["{$name}_type", "{$name}_id"], $indexName); + } + + /** * Adds the `remember_token` column to the table. * * @return \Illuminate\Database\Schema\ColumnDefinition diff --git a/vendor/illuminate/database/Schema/ColumnDefinition.php b/vendor/illuminate/database/Schema/ColumnDefinition.php index 85825e134c..00e1dadf63 100644 --- a/vendor/illuminate/database/Schema/ColumnDefinition.php +++ b/vendor/illuminate/database/Schema/ColumnDefinition.php @@ -11,7 +11,7 @@ use Illuminate\Database\Query\Expression; * @method ColumnDefinition autoIncrement() Set INTEGER columns as auto-increment (primary key) * @method ColumnDefinition change() Change the column * @method ColumnDefinition charset(string $charset) Specify a character set for the column (MySQL) - * @method ColumnDefinition collation(string $collation) Specify a collation for the column (MySQL/SQL Server) + * @method ColumnDefinition collation(string $collation) Specify a collation for the column (MySQL/PostgreSQL/SQL Server) * @method ColumnDefinition comment(string $comment) Add a comment to the column (MySQL) * @method ColumnDefinition default(mixed $value) Specify a "default" value for the column * @method ColumnDefinition first() Place the column "first" in the table (MySQL) diff --git a/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php b/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php index 26e44b62e0..dc933c961a 100755 --- a/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php +++ b/vendor/illuminate/database/Schema/Grammars/MySqlGrammar.php @@ -15,7 +15,7 @@ class MySqlGrammar extends Grammar * @var array */ protected $modifiers = [ - 'Unsigned', 'VirtualAs', 'StoredAs', 'Charset', 'Collate', 'Nullable', + 'Unsigned', 'Charset', 'Collate', 'VirtualAs', 'StoredAs', 'Nullable', 'Default', 'Increment', 'Comment', 'After', 'First', 'Srid', ]; diff --git a/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php b/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php index f7bf9ada47..6edf18eb5f 100755 --- a/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php +++ b/vendor/illuminate/database/Schema/Grammars/PostgresGrammar.php @@ -19,7 +19,7 @@ class PostgresGrammar extends Grammar * * @var array */ - protected $modifiers = ['Increment', 'Nullable', 'Default']; + protected $modifiers = ['Collate', 'Increment', 'Nullable', 'Default']; /** * The columns available as serials. @@ -880,6 +880,20 @@ class PostgresGrammar extends Grammar } /** + * Get the SQL for a collation column modifier. + * + * @param \Illuminate\Database\Schema\Blueprint $blueprint + * @param \Illuminate\Support\Fluent $column + * @return string|null + */ + protected function modifyCollate(Blueprint $blueprint, Fluent $column) + { + if (! is_null($column->collation)) { + return ' collate '.$this->wrapValue($column->collation); + } + } + + /** * Get the SQL for a nullable column modifier. * * @param \Illuminate\Database\Schema\Blueprint $blueprint diff --git a/vendor/illuminate/support/Collection.php b/vendor/illuminate/support/Collection.php index 8e236b4306..4c10ec16de 100644 --- a/vendor/illuminate/support/Collection.php +++ b/vendor/illuminate/support/Collection.php @@ -2127,7 +2127,7 @@ class Collection implements ArrayAccess, Arrayable, Countable, IteratorAggregate } elseif ($items instanceof Jsonable) { return json_decode($items->toJson(), true); } elseif ($items instanceof JsonSerializable) { - return $items->jsonSerialize(); + return (array) $items->jsonSerialize(); } elseif ($items instanceof Traversable) { return iterator_to_array($items); } diff --git a/vendor/illuminate/support/ServiceProvider.php b/vendor/illuminate/support/ServiceProvider.php index bce901a7d7..458e213d0a 100755 --- a/vendor/illuminate/support/ServiceProvider.php +++ b/vendor/illuminate/support/ServiceProvider.php @@ -17,7 +17,7 @@ abstract class ServiceProvider /** * Indicates if loading of the provider is deferred. * - * @deprecated Implement the \Illuminate\Contracts\Support\DeferrableProvider interface instead. Will be removed in Laravel 5.9. + * @deprecated Implement the \Illuminate\Contracts\Support\DeferrableProvider interface instead. Will be removed in Laravel 6.0. * * @var bool */ diff --git a/vendor/illuminate/support/helpers.php b/vendor/illuminate/support/helpers.php index affab85a3e..a3813c0e22 100755 --- a/vendor/illuminate/support/helpers.php +++ b/vendor/illuminate/support/helpers.php @@ -44,7 +44,7 @@ if (! function_exists('array_add')) { * @param mixed $value * @return array * - * @deprecated Arr::add() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::add() should be used directly instead. Will be removed in Laravel 6.0. */ function array_add($array, $key, $value) { @@ -59,7 +59,7 @@ if (! function_exists('array_collapse')) { * @param array $array * @return array * - * @deprecated Arr::collapse() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::collapse() should be used directly instead. Will be removed in Laravel 6.0. */ function array_collapse($array) { @@ -74,7 +74,7 @@ if (! function_exists('array_divide')) { * @param array $array * @return array * - * @deprecated Arr::divide() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::divide() should be used directly instead. Will be removed in Laravel 6.0. */ function array_divide($array) { @@ -90,7 +90,7 @@ if (! function_exists('array_dot')) { * @param string $prepend * @return array * - * @deprecated Arr::dot() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::dot() should be used directly instead. Will be removed in Laravel 6.0. */ function array_dot($array, $prepend = '') { @@ -106,7 +106,7 @@ if (! function_exists('array_except')) { * @param array|string $keys * @return array * - * @deprecated Arr::except() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::except() should be used directly instead. Will be removed in Laravel 6.0. */ function array_except($array, $keys) { @@ -123,7 +123,7 @@ if (! function_exists('array_first')) { * @param mixed $default * @return mixed * - * @deprecated Arr::first() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::first() should be used directly instead. Will be removed in Laravel 6.0. */ function array_first($array, callable $callback = null, $default = null) { @@ -139,7 +139,7 @@ if (! function_exists('array_flatten')) { * @param int $depth * @return array * - * @deprecated Arr::flatten() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::flatten() should be used directly instead. Will be removed in Laravel 6.0. */ function array_flatten($array, $depth = INF) { @@ -155,7 +155,7 @@ if (! function_exists('array_forget')) { * @param array|string $keys * @return void * - * @deprecated Arr::forget() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::forget() should be used directly instead. Will be removed in Laravel 6.0. */ function array_forget(&$array, $keys) { @@ -172,7 +172,7 @@ if (! function_exists('array_get')) { * @param mixed $default * @return mixed * - * @deprecated Arr::get() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::get() should be used directly instead. Will be removed in Laravel 6.0. */ function array_get($array, $key, $default = null) { @@ -188,7 +188,7 @@ if (! function_exists('array_has')) { * @param string|array $keys * @return bool * - * @deprecated Arr::has() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::has() should be used directly instead. Will be removed in Laravel 6.0. */ function array_has($array, $keys) { @@ -205,7 +205,7 @@ if (! function_exists('array_last')) { * @param mixed $default * @return mixed * - * @deprecated Arr::last() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::last() should be used directly instead. Will be removed in Laravel 6.0. */ function array_last($array, callable $callback = null, $default = null) { @@ -221,7 +221,7 @@ if (! function_exists('array_only')) { * @param array|string $keys * @return array * - * @deprecated Arr::only() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::only() should be used directly instead. Will be removed in Laravel 6.0. */ function array_only($array, $keys) { @@ -238,7 +238,7 @@ if (! function_exists('array_pluck')) { * @param string|array|null $key * @return array * - * @deprecated Arr::pluck() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::pluck() should be used directly instead. Will be removed in Laravel 6.0. */ function array_pluck($array, $value, $key = null) { @@ -255,7 +255,7 @@ if (! function_exists('array_prepend')) { * @param mixed $key * @return array * - * @deprecated Arr::prepend() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::prepend() should be used directly instead. Will be removed in Laravel 6.0. */ function array_prepend($array, $value, $key = null) { @@ -272,7 +272,7 @@ if (! function_exists('array_pull')) { * @param mixed $default * @return mixed * - * @deprecated Arr::pull() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::pull() should be used directly instead. Will be removed in Laravel 6.0. */ function array_pull(&$array, $key, $default = null) { @@ -288,7 +288,7 @@ if (! function_exists('array_random')) { * @param int|null $num * @return mixed * - * @deprecated Arr::random() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::random() should be used directly instead. Will be removed in Laravel 6.0. */ function array_random($array, $num = null) { @@ -307,7 +307,7 @@ if (! function_exists('array_set')) { * @param mixed $value * @return array * - * @deprecated Arr::set() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::set() should be used directly instead. Will be removed in Laravel 6.0. */ function array_set(&$array, $key, $value) { @@ -323,7 +323,7 @@ if (! function_exists('array_sort')) { * @param callable|string|null $callback * @return array * - * @deprecated Arr::sort() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::sort() should be used directly instead. Will be removed in Laravel 6.0. */ function array_sort($array, $callback = null) { @@ -338,7 +338,7 @@ if (! function_exists('array_sort_recursive')) { * @param array $array * @return array * - * @deprecated Arr::sortRecursive() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::sortRecursive() should be used directly instead. Will be removed in Laravel 6.0. */ function array_sort_recursive($array) { @@ -354,7 +354,7 @@ if (! function_exists('array_where')) { * @param callable $callback * @return array * - * @deprecated Arr::where() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::where() should be used directly instead. Will be removed in Laravel 6.0. */ function array_where($array, callable $callback) { @@ -369,7 +369,7 @@ if (! function_exists('array_wrap')) { * @param mixed $value * @return array * - * @deprecated Arr::wrap() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Arr::wrap() should be used directly instead. Will be removed in Laravel 6.0. */ function array_wrap($value) { @@ -413,7 +413,7 @@ if (! function_exists('camel_case')) { * @param string $value * @return string * - * @deprecated Str::camel() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::camel() should be used directly instead. Will be removed in Laravel 6.0. */ function camel_case($value) { @@ -622,7 +622,7 @@ if (! function_exists('ends_with')) { * @param string|array $needles * @return bool * - * @deprecated Str::endsWith() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::endsWith() should be used directly instead. Will be removed in Laravel 6.0. */ function ends_with($haystack, $needles) { @@ -708,7 +708,7 @@ if (! function_exists('kebab_case')) { * @param string $value * @return string * - * @deprecated Str::kebab() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::kebab() should be used directly instead. Will be removed in Laravel 6.0. */ function kebab_case($value) { @@ -839,7 +839,7 @@ if (! function_exists('snake_case')) { * @param string $delimiter * @return string * - * @deprecated Str::snake() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::snake() should be used directly instead. Will be removed in Laravel 6.0. */ function snake_case($value, $delimiter = '_') { @@ -855,7 +855,7 @@ if (! function_exists('starts_with')) { * @param string|array $needles * @return bool * - * @deprecated Str::startsWith() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::startsWith() should be used directly instead. Will be removed in Laravel 6.0. */ function starts_with($haystack, $needles) { @@ -871,7 +871,7 @@ if (! function_exists('str_after')) { * @param string $search * @return string * - * @deprecated Str::after() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::after() should be used directly instead. Will be removed in Laravel 6.0. */ function str_after($subject, $search) { @@ -887,7 +887,7 @@ if (! function_exists('str_before')) { * @param string $search * @return string * - * @deprecated Str::before() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::before() should be used directly instead. Will be removed in Laravel 6.0. */ function str_before($subject, $search) { @@ -903,7 +903,7 @@ if (! function_exists('str_contains')) { * @param string|array $needles * @return bool * - * @deprecated Str::contains() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::contains() should be used directly instead. Will be removed in Laravel 6.0. */ function str_contains($haystack, $needles) { @@ -919,7 +919,7 @@ if (! function_exists('str_finish')) { * @param string $cap * @return string * - * @deprecated Str::finish() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::finish() should be used directly instead. Will be removed in Laravel 6.0. */ function str_finish($value, $cap) { @@ -935,7 +935,7 @@ if (! function_exists('str_is')) { * @param string $value * @return bool * - * @deprecated Str::is() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::is() should be used directly instead. Will be removed in Laravel 6.0. */ function str_is($pattern, $value) { @@ -952,7 +952,7 @@ if (! function_exists('str_limit')) { * @param string $end * @return string * - * @deprecated Str::limit() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::limit() should be used directly instead. Will be removed in Laravel 6.0. */ function str_limit($value, $limit = 100, $end = '...') { @@ -968,7 +968,7 @@ if (! function_exists('str_plural')) { * @param int $count * @return string * - * @deprecated Str::plural() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::plural() should be used directly instead. Will be removed in Laravel 6.0. */ function str_plural($value, $count = 2) { @@ -985,7 +985,7 @@ if (! function_exists('str_random')) { * * @throws \RuntimeException * - * @deprecated Str::random() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::random() should be used directly instead. Will be removed in Laravel 6.0. */ function str_random($length = 16) { @@ -1002,7 +1002,7 @@ if (! function_exists('str_replace_array')) { * @param string $subject * @return string * - * @deprecated Str::replaceArray() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::replaceArray() should be used directly instead. Will be removed in Laravel 6.0. */ function str_replace_array($search, array $replace, $subject) { @@ -1019,7 +1019,7 @@ if (! function_exists('str_replace_first')) { * @param string $subject * @return string * - * @deprecated Str::replaceFirst() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::replaceFirst() should be used directly instead. Will be removed in Laravel 6.0. */ function str_replace_first($search, $replace, $subject) { @@ -1036,7 +1036,7 @@ if (! function_exists('str_replace_last')) { * @param string $subject * @return string * - * @deprecated Str::replaceLast() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::replaceLast() should be used directly instead. Will be removed in Laravel 6.0. */ function str_replace_last($search, $replace, $subject) { @@ -1051,7 +1051,7 @@ if (! function_exists('str_singular')) { * @param string $value * @return string * - * @deprecated Str::singular() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::singular() should be used directly instead. Will be removed in Laravel 6.0. */ function str_singular($value) { @@ -1068,7 +1068,7 @@ if (! function_exists('str_slug')) { * @param string $language * @return string * - * @deprecated Str::slug() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::slug() should be used directly instead. Will be removed in Laravel 6.0. */ function str_slug($title, $separator = '-', $language = 'en') { @@ -1084,7 +1084,7 @@ if (! function_exists('str_start')) { * @param string $prefix * @return string * - * @deprecated Str::start() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::start() should be used directly instead. Will be removed in Laravel 6.0. */ function str_start($value, $prefix) { @@ -1099,7 +1099,7 @@ if (! function_exists('studly_case')) { * @param string $value * @return string * - * @deprecated Str::studly() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::studly() should be used directly instead. Will be removed in Laravel 6.0. */ function studly_case($value) { @@ -1175,7 +1175,7 @@ if (! function_exists('title_case')) { * @param string $value * @return string * - * @deprecated Str::title() should be used directly instead. Will be removed in Laravel 5.9. + * @deprecated Str::title() should be used directly instead. Will be removed in Laravel 6.0. */ function title_case($value) { diff --git a/vendor/league/commonmark/.phpstorm.meta.php b/vendor/league/commonmark/.phpstorm.meta.php index 1089f48a37..e797ee11b7 100644 --- a/vendor/league/commonmark/.phpstorm.meta.php +++ b/vendor/league/commonmark/.phpstorm.meta.php @@ -11,8 +11,8 @@ namespace PHPSTORM_META { - expectedArguments(\League\CommonMark\Context::setEncoding(), 0, 'UTF-8', 'ASCII', 'ISO-8859-1'); - expectedArguments(\League\CommonMark\Cursor::__construct(), 1, 'UTF-8', 'ASCII', 'ISO-8859-1'); + expectedArguments(\League\CommonMark\Context::setEncoding(), 0, 'UTF-8', 'ASCII'); + expectedArguments(\League\CommonMark\Cursor::__construct(), 1, 'UTF-8', 'ASCII'); expectedArguments(\League\CommonMark\HtmlElement::__construct(), 0, 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kdb', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'pre', 'progress', 'q', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr'); expectedArguments(\League\CommonMark\Block\Element\Heading::__construct(), 0, 1, 2, 3, 4, 5, 6); expectedReturnValues(\League\CommonMark\Block\Element\Heading::getLevel(), 1, 2, 3, 4, 5, 6); @@ -27,4 +27,9 @@ namespace PHPSTORM_META registerArgumentsSet('league_commonmark_newline_types', \League\CommonMark\Inline\Element\Newline::HARDBREAK, \League\CommonMark\Inline\Element\Newline::SOFTBREAK); expectedArguments(\League\CommonMark\Inline\Element\Newline::__construct(), 0, argumentsSet('league_commonmark_newline_types')); expectedReturnValues(\League\CommonMark\Inline\Element\Newline::getType(), argumentsSet('league_commonmark_newline_types')); + + registerArgumentsSet('league_commonmark_options', 'renderer', 'enable_em', 'enable_strong', 'use_asterisk', 'use_underscore', 'html_input', 'allow_unsafe_links', 'max_nesting_level'); + expectedArguments(\League\CommonMark\EnvironmentInterface::getConfig(), 0, argumentsSet('league_commonmark_options')); + expectedArguments(\League\CommonMark\Util\ConfigurationInterface::get(), 0, argumentsSet('league_commonmark_options')); + expectedArguments(\League\CommonMark\Util\ConfigurationInterface::set(), 0, argumentsSet('league_commonmark_options')); } diff --git a/vendor/league/commonmark/CHANGELOG-0.x.md b/vendor/league/commonmark/CHANGELOG-0.x.md new file mode 100644 index 0000000000..16f96dd124 --- /dev/null +++ b/vendor/league/commonmark/CHANGELOG-0.x.md @@ -0,0 +1,842 @@ +# Change Log +All notable changes to this project will be documented in this file. +Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) principles. + +## [0.19.3] - 2019-06-18 + +### Fixed + + - Fixed bug where elements with content of `"0"` wouldn't be rendered (#376) + +## [0.19.2] - 2019-05-19 + +### Fixed + + - Fixed bug where default values for nested configuration paths were inadvertently cast to strings + +## [0.19.1] - 2019-04-10 + +### Added + + - Added the missing `addExtension()` method to the new `ConfigurableEnvironmentInterface` + +### Fixed + + - Fixed extensions not being able to register other extensions + +## [0.19.0] - 2019-04-10 + +### Added + + - The priority of parsers, processors, and renderers can now be set when `add()`ing them; you no longer need to rely on the order in which they are added + - Added support for trying multiple parsers per block/inline + - Extracted two new base interfaces from `Environment`: + - `EnvironmentInterface` + - `ConfigurableEnvironmentInterface` + - Extracted a new `AbstractStringContainerBlock` base class and corresponding `StringContainerInterface` from `AbstractBlock` + - Added `Cursor::getEncoding()` method + - Added `.phpstorm.meta.php` file for better IDE code completion + - Made some minor optimizations here and there + +### Changed + + - Pretty much everything now has parameter and return types (#346) + - Attributes passed to `HtmlElement` will now be escaped by default + - `Environment` is now a `final` class + - `Environment::getBlockRendererForClass()` was replaced with `Environment::getBlockRenderersForClass()` (note the added `s`) + - `Environment::getInlineRendererForClass()` was replaced with `Environment::getInlineRenderersForClass()` (note the added `s`) + - The `Environment::get____()` methods now return an iterator instead of an array + - `Context::addBlock()` no longer returns the same block instance you passed into the method, as this served no useful purpose + - `RegexHelper::isEscapable()` no longer accepts `null` values + - `Node::replaceChildren()` now accepts any type of `iterable`, not just `array`s + - Some block elements now extend `AbstractStringContainerBlock` instead of `AbstractBlock` + - `InlineContainerInterface` now extends the new `StringContainerInterface` + - The `handleRemainingContents()` method (formerly on `AbstractBlock`, now on `AbstractStringContainerBlock`) is now an `abstract method + - The `InlineParserContext` constructor now requires an `AbstractStringContainerBlock` instead of an `AbstractBlock` + +### Removed + + - Removed support for PHP 5.6 and 7.0 (#346) + - Removed support for `add()`ing parsers with just the target block/inline class name - you need to include the full namespace now + - Removed the following unused methods from `Environment`: + - `getInlineParser($name)` + - `getInlineParsers()` + - `createInlineParserEngine()` + - Removed the unused `getName()` methods: + - `AbstractBlockParser::getName()` + - `AbstractInlineParser::getName()` + - `BlockParserInterface::getName()` + - `InlinerParserInterface::getName()` + - Removed the now-useless classes: + - `AbstractBlockParser` + - `AbstractInlinerParser` + - `InlineContainer` + - Removed the `AbstractBlock::acceptsLines()` method + - Removed the now-useless constructor from `AbstractBlock` + - Removed previously-deprecated functionality: + - `InlineContainer` class + - `RegexHelper::$instance` + - `RegexHelper::getInstance()` + - `RegexHelper::getPartialRegex()` + - `RegexHelper::getHtmlTagRegex()` + - `RegexHelper::getLinkTitleRegex()` + - `RegexHelper::getLinkDestinationBracesRegex()` + - `RegexHelper::getThematicBreakRegex()` + - Removed the second `$preserveEntities` parameter from `Xml:escape()` + +## [0.18.5] - 2019-03-28 + +### Fixed + + - Fixed the adjoining `Text` collapser not handling the full tree (thephpleague/commonmark-ext-autolink#10) + +## [0.18.4] - 2019-03-23 + +### Changed + + - Modified how URL normalization decodes certain characters in order to align with the JS library's output + - Disallowed unescaped `(` in parenthesized link title + +### Fixed + + - Fixed two exponential backtracking issues + +## [0.18.3] - 2019-03-21 + +This is a **security update** release. + +### Changed + + - XML/HTML entities in attributes will no longer be preserved when rendering (#353) + +### Fixed + + - Fix XSS vulnerability caused by improper preservation of entities when rendering (#353) + +### Deprecated + + - Deprecated the `$preserveEntites` argument of `Xml::escape()` for removal in the next release (#353) + +## [0.18.2] - 2019-03-16 + +### Fixed + + - Fixed adjoining `Text` elements not being collapsed after delimiter processing + +### Deprecated + + - Deprecated the `CommonmarkConverter::VERSION` constant for removal in 1.0.0 + +## [0.18.1] - 2018-12-29 + +This is a **security update** release. + +### Fixed + + - Fix XSS vulnerability caused by URL normalization not handling/encoding newlines properly (#337, CVE-2018-20583) + +## [0.18.0] - 2018-09-18 + +### Added + + - Added `ConverterInterface` to `Converter` and `CommonMarkConverter` (#330) + - Added `ListItem::getListData()` method (#329) + +### Changed + + - Links with `target="_blank"` will also get `rel="noopener noreferrer"` by default (#331) + - Implemented several performance optimizations (#324) + +## [0.17.5] - 2018-03-29 + +### Fixed + + - Fixed incorrect version constant value (again) + - Fixed release checklist to prevent the above from happening + - Fixed incorrect dates in CHANGELOG + +## [0.17.4] - 2018-03-28 + +### Added + + - Added `ListBlock::setTight()` method + +## [0.17.3] - 2018-03-26 + +### Fixed + + - Fixed incorrect version constant value + +## [0.17.2] - 2018-03-25 + +### Added + + - Added new `RegexHelper::isEscapable()` method + +### Fixed + + - Fixed spec compliance bug where escaped spaces should not be allowed in link destinations + +## [0.17.1] - 2018-03-18 + +### Added + + - Added a new constant containing the current version: `CommonMarkConverter::VERSION` (#314) + +## [0.17.0] - 2017-12-30 + +This release contains several breaking changes and a minimum PHP version bump - see <UPGRADE.md> for more details. + +### Added + + - Added new `max_nesting_level` setting (#243) + - Added minor performance optimizations to `Cursor` + +### Changed + + - Minimum PHP version is now 5.6.5. + - All full and partial regular expressions in `RegexHelper` are now defined as constants instead of being built on-the-fly. + - `Cursor::saveState()` now returns an `array` instead of a `CursorState` object. + - `Cursor::restoreState()` now accepts an `array` parameter instead of a `CursorState` object. + - Saving/restoring the Cursor state no longer tracks things that don't change (like the text content). + - `RegexHelper` is now `final`. + - References to `InlineContainer` changed to new `InlineContainerInterface` interface. + - `MiscExtension::addInlineParser()` and `MiscExtension::addBlockRenderer()` now return `$this` instead of nothing. + +### Fixed + - Fixed `Reference::normalizeReference()` not properly collapsing whitespace to a single space + +### Deprecated + + - `RegexHelper::getInstance()` and all instance (non-static) methods have been deprecated. + - The `InlineContainer` interface has been deprecated. Use `InlineContainerInterface` instead. + +### Removed + + - Removed support for PHP 5.4 and 5.5. + - Removed `CursorState` class + - Removed all previous deprecations: + - `Cursor::getFirstNonSpacePosition()` + - `Cursor::getFirstNonSpaceCharacter()` + - `Cursor::advanceWhileMatches()` + - `Cursor::advanceToFirstNonSpace()` + - `ElementRendererInterface::escape()` + - `HtmlRenderer::escape()` + - `RegexHelper::REGEX_UNICODE_WHITESPACE` + - `RegexHelper::getLinkDestinationRegex()` + +## [0.16.0] - 2017-10-30 + +This release contains breaking changes, several performance improvements, and two deprecations: + +### Added + + - Added new `Xml` utility class; moved HTML/XML escaping logic into there (see deprecations below) + +### Changed + + - `Environment::getInlineParsersForCharacter()` now returns an empty array (instead of `null`) when no matching parsers are found + - Three utility classes are now marked `final`: + - `Html5Entities` + - `LinkParserHelper` + - `UrlEncoder` + +### Fixed + + - Improved performance of several methods (for a 10% overall performance boost - #292) + +### Deprecated + +The following methods were deprecated and are scheduled for removal in 0.17.0 or 1.0.0 (whichever comes first). See <UPGRADE.md> for more information. + + - `Cursor::advanceWhileMatches()` deprecated; use `Cursor::match()` instead. + - `HtmlRenderer::escape()` deprecated; use `Xml::escape()` instead. + +### Removed + + - Removed `DelimiterStack::findFirstMatchingOpener()` which was previously deprecated in 0.15.0 + +## [0.15.7] - 2017-10-26 + +### Fixed + + - Improved performance of `Cursor::advanceBy()` (for a 16% performance boost) + +## [0.15.6] - 2017-08-08 + +### Fixed + + - Fixed URI normalization not properly encoding/decoding special characters in certain cases (#287) + +## [0.15.5] - 2017-08-05 + +This release bumps spec compliance to 0.28 without breaking changes to the API. + +### Added + + - Project is now tested against PHP 7.2 + +### Changed + + - Bumped CommonMark spec target to 0.28 + - Changed internal implementation of `LinkParserHelper::parseLinkDestination()` to allow nested parens + - Changed precedence of strong/emph when both nestings are possible (rule 14) + - Allow tabs before and after ATX closing header + +### Fixed + + - Fixed HTML type 6 block regex matching against `<pre>` (it shouldn't) and not matching `<iframe>` (it should) + - Fixed reference parser incorrectly handling escaped `]` characters + - Fixed "multiple of 3" delimiter run calculations + +### Deprecated + +An unused constant and static method were deprecated and will be removed in a future release. See <UPGRADE.md> for more information. + + - Deprecated `RegexHelper::REGEX_UNICODE_WHITESPACE` (no longer used) + - Deprecated `RegexHelper::getLinkDestinationRegex()` (no longer used) + +## [0.15.4] - 2017-05-09 + +### Added + + - Added new methods to `Cursor` (#280): + - `advanceToNextNonSpaceOrNewline()` - Identical replacement for the (now-deprecated) `advanceToFirstNonSpace()` method + - `advanceToNextNonSpaceOrTab()` - Similar replacement for `advanceToFirstNonSpace()` but with proper tab handling + - `getNextNonSpaceCharacter()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCharacter()` method + - `getNextNonSpacePosition()` - Identical replacement for the (now-deprecated) `getFirstNonSpacePosition()` method + - Added new method to `CursorState` (#280): + - `getNextNonSpaceCache()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCache()` method + +### Fixed + + - Fixed duplicate characters in non-intended lines containing tabs (#279) + +### Deprecated + +**All deprecations listed here will be removed in a future 0.x release.** See [UPGRADE.md](UPGRADE.md) for instructions on preparing your code for the eventual removal of these methods. + + - Deprecated `Cursor::advanceToFirstNonSpace()` (#280) + - Use `advanceToNextNonSpaceOrTab()` or `advanceToNextNonSpaceOrNewline()` instead, depending on your requirements + - Deprecated `Cursor::getFirstNonSpaceCharacter()` (#280) + - Use `Cursor::getNextNonSpaceCharacter()` instead + - Deprecated `Cursor::getFirstNonSpacePosition()` (#280) + - Use `Cursor::getNextNonSpacePosition()` instead + - Deprecated `CursorState::getFirstNonSpaceCache()` (#280) + - Use `CursorState::getNextNonSpaceCache()` instead + +## [0.15.3] - 2016-12-18 + +### Fixed + - Allow inline parsers matching regex delimiter to be created (#271, #272) + +## [0.15.2] - 2016-11-22 + +### Changed + - Bumped spec target version to 0.27 (#268) + - H2-H6 elements are now parsed as HTML block elements instead of HTML inlines + +### Fixed + - Fixed incomplete punctuation regex + - Fixed shortcut links not being allowed before a `(` + - Fixed distinction between Unicode whitespace and regular whitespace + +## [0.15.1] - 2016-11-08 + +### Fixed + - Fixed setext heading underlines not allowing trailing tabs (#266) + +## [0.15.0] - 2016-09-14 + +### Added + - Added preliminary support for PHP 7.1 (#259) + - Added more regression tests (#258, #260) + +### Changed + - Bumped spec target version to 0.26 (#260) + - The `CursorState` constructor requires an additional parameter (#258) + - Ordered lists cannot interupt a paragraph unless they start with `1` (#260) + - Blank list items cannot interupt a paragraph (#260) + +### Deprecated + - Deprecated `DelimiterStack::findFirstMatchingOpener()` - use `findMatchingOpener()` instead (#260) + +### Fixed + - Fixed tabs in ATX headers and thematic breaks (#260) + - Fixed issue where cursor state was not being restored properly (#258, #260) + - This fixed the lists-with-tabs regression reported in #258 + +### Removed + - Removed an unnecessary check in `Cursor::advanceBy()` (#260) + - Removed the two-blanks-break-out-of-lists feature (#260) + + +## [0.14.0] - 2016-07-02 +### Added + - The `safe` option is deprecated and replaced by 2 new options (#253, #255): + - `html_input` (`strip`, `allow` or `escape`): how to handle untrusted HTML input (the default is `strip` for BC reasons) + - `allow_unsafe_links` (`true` or `false`): whether to allow risky image URLs and links (the default is `true` for BC reasons) + +### Deprecated + - The `safe` option is now deprecated and will be removed in the 1.0.0 release. + +## [0.13.4] - 2016-06-14 + +### Fixed + - Fixed path to `autoload.php` within bin/commonmark (#250) + +## [0.13.3] - 2016-05-21 + +### Added + - Added `setUrl()` method for `Link` and `Image` elements (#227, #244) + - Added cebe/markdown to the benchmark tool (#245) + +## [0.13.2] - 2016-03-27 + +### Added + - Added ability to invoke `Converter` as a function (#233, #239) + - Added new `advanceBySpaceOrTab` convenience method to `Cursor` + +### Changed + - Bumped spec target version to 0.25 + - Adjusted how tabs are handled by the `Cursor` (#234) + - Made a couple small micro-optimizations to heavily used functions (#240) + - Updated URLs in docblocks to use HTTPS where possible (#238) + +## [0.13.1] - 2016-03-09 + +### Changed + - Refactored `EmphasisParser::parse()` to simplify it (#223) + - Updated dev dependencies (#218 & #220) + +### Fixed + - Fixed invalid regex generated when no inline parsers are defined (#224) + - Fixed logic bug with blank line after empty list item (#230) + - Fixed some incorrect code comments + +### Removed + - Removed unused variables (#223) + +## [0.13.0] - 2016-01-13 + +### Added + - Added AST document processors (#210) + - Added optional `Environment` parameter to `CommonMarkConverter` constructor + +### Changed + - Renamed "header" things to "heading" for spec consistency + - `Header` => `Heading` + - `ATXHeaderParser` => `ATXHeadingParser` + - `SetExtHeaderParser` => `SetExtHeadingParser` + - `HeaderRenderer` => `HeadingRenderer` + - Renamed "HorizontalRule" to "ThematicBreak" for spec consistency + - `HorizontalRule` => `ThematicBreak` + - `HorizontalRuleParser` => `ThematicBreakParser` + - `HorizontalRuleRenderer` => `ThematicBreakRenderer` + - `HorizontalRuleRendererTest` => `ThematicBreakRendererTest` + - `RegexHelper::getHRuleRegex()` => `RegexHelper::getThematicBreakRegex()` + - Renamed inline "Html" and "RawHtml" to "HtmlInline" for consistency + - `Html` => `HtmlInline` + - `RawHtmlParser` => `HtmlInlineParser` + - `RawHtmlRenderer` => `HtmlInlineRenderer` + - Don't allow whitespace between link text and link label of a reference link (spec change) + - Don't allow spaces in link destinations, even in `<>` + - Allow multiline setext header content + - The `Heading` constructor now allows `$contents` to be a `string` (old behavior) or `string[]` (new) + +### Fixed + - Fixed several list issues and regressions (jgm/commonmark.js#59) + +### Removed + - Removed schema whitelist from autolink regex + - Moved SmartPunct functionality into new [league/commonmark-extras](https://github.com/thephpleague/commonmark-extras) package + +## [0.12.0] - 2015-11-04 + +### Added + - Added ability to configure characters and disable emphasis/strong (#135) + - Added new ConfigurationAwareInterface support for all parsers, processors, and renderers (#201) + - Added HTML safe mode to handle untrusted input (#200, #201) + - Safe mode is disabled by default for backwards-compatibility + - To enable it, set the `safe` option to `true` + - Added AppVeyor integration for automated unit/functional testing on Windows (#195) + +### Changed + - `AbstractBlock::finalize()` now requires a second parameter, `$endLineNumber` + - `RegexHelper::REGEX_ENTITY` no longer includes the starting `/` or the ending `/i` (#194) + - `Node::setParent()` now accepts null values (#203) + +### Fixed + - Fixed incorrect `endLine` positions (#187) + - Fixed `DocParser::preProcessInput` dropping up to 2 ending newlines instead of just one + - Fixed `EntityParser` not checking for ampersands at the start of the current position (#192, #194) + +### Removed + - Removed protected function Context::addChild() + - It was a duplicate of the Context::addBlock() method + - Disabled STDIN reading on `bin/commonmark` for Windows due to PHP issues (#189, #195) + +## [0.11.3] - 2015-09-25 +### Fixed + - Reset container after closing containing lists (#183; jgm/commonmark.js#67) + - The temporary fix from 0.11.2 was reverted + +## [0.11.2] - 2015-09-23 +### Fixed + - Fixed parser checking acceptsLines on the wrong element (#183) + +## [0.11.1] - 2015-09-22 +### Changed + - Tightened up some loose comparisons + +### Fixed + - Fixed missing "bin" directive in composer.json + - Updated a docblock to match recent changes to method parameters + +### Removed + - Removed unused variable from within QuoteProcessor's closure + +## [0.11.0] - 2015-09-19 +### Added + - Added new `Node` class, which both `AbstractBlock` and `AbstractInline` extend from (#169) + - Added a `NodeWalker` and `NodeWalkerEvent` to traverse the AST without using recursion + - Added new `InlineContainer` interface for blocks + - Added new `getContainer()` and `getReferenceMap()` methods to `InlineParserContext` + - Added `iframe` to whitelist of HTML block tags (as per spec) + - Added `./bin/commonmark` for converting Markdown at the command line + +### Changed + - Bumped spec target version to 0.22 + - Revised AST to use a double-linked list (#169) + - `AbstractBlock` and `AbstractInline` both extend from `Node` + - Sub-classes must implement new `isContainer()` method + - Other major changes to `AbstractBlock`: + - `getParent()` is now `parent()` + - `setParent()` now expects a `Node` instead of an `AbstractBlock` + - `getChildren()` is now `children()` + - `getLastChild()` is now `lastChild()` + - `addChild()` is now `appendChild()` + - `InlineParserContext` is constructed using the container `AbstractBlock` and the document's `RefereceMap` + - The constructor will automatically create the `Cursor` using the container's string contents + - `InlineParserEngine::parse` now requires the `Node` container and the document's `ReferenceMap` instead of a `ContextInterface` and `Cursor` + - Changed `Delimiter` to reference the actual inline `Node` instead of the position + - The `int $pos` protected member and constructor arg is now `Node $node` + - Use `getInlineNode()` and `setInlineNode()` instead of `getPos()` and `setPos()` + - Changed `DocParser::processInlines` to use a `NodeWalker` to iterate through inlines + - Walker passed as second argument instead of `AbstractBlock` + - Uses a `while` loop instead of recursion to traverse the AST + - `Image` and `Link` now only accept a string as their second argument + - Refactored how `CloseBracketParser::parse()` works internally + - `CloseBracketParser::createInline` no longer accepts label inlines + - Disallow list item starting with multiple blank lines (see jgm/CommonMark#332) + - Modified `AbstractBlock::setLastLineBlank()` + - Functionality moved to `AbstractBlock::shouldLastLineBeBlank()` and new `DocParser::setAndPropagateLastLineBlank()` method + - `AbstractBlock::setLastLineBlank()` is now a setter method for `AbstractBlock::$lastLineBlank` + - `AbstractBlock::handleRemainingContents()` is no longer abstract + - A default implementation is provided + - Removed duplicate code from sub-classes which used the default implementation - they'll just use the parent method from now on + +### Fixed + - Fixed logic error in calculation of offset (see jgm/commonmark.js@94053a8) + - Fixed bug where `DocParser` checked the wrong method to determine remainder handling behavior + - Fixed bug where `HorizontalRuleParser` failed to advance the cursor beyond the parsed horizontal rule characters + - Fixed `DocParser` not ignoring the final newline of the input (like the reference parser does) + +### Removed + - Removed `Block\Element\AbstractInlineContainer` + - Extend `AbstractBlock` and implement `InlineContainer` instead + - Use child methods instead of `getInlines` and `setInlines` + - Removed `AbstractBlock::replaceChild()` + - Call `Node::replaceWith()` directly the child node instead + - Removed the `getInlines()` method from `InlineParserContext` + - Add parsed inlines using `$inlineContext->getContainer()->appendChild()` instead of `$inlineContext->getInlines()->add()` + - Removed the `ContextInterface` argument from `AbstractInlineParser::parse()` and `InlineParserEngine::parseCharacter` + - Removed the first `ArrayCollection $inlines` argument from `InlineProcessorInterface::processInlines()` + - Removed `CloseBracketParser::nullify()` + - Removed `pre` from rule 6 of HTML blocks (see jgm/CommonMark#355) + +## [0.10.0] - 2015-07-25 +### Added + - Added parent references to inline elements (#124) + - Added smart punctuation extension (#134) + - Added HTML block types + - Added indentation caching to the cursor + - Added automated code style checks (#133) + - Added support for tag attributes in renderers (#101, #165) + +### Changed + - Bumped spec target version to 0.21 + - Revised HTML block parsing to conform to new spec (jgm/commonmark.js@99bd473) + - Imposed 9-digit limit on ordered list markers, per spec + - Allow non-initial hyphens in html tag names (jgm/CommonMark#239) + - Updated list of block tag names + - Changed tab/indentation handling to meet the new spec behavior + - Modified spec tests to show spaces and tabs in test results + - Replaced `HtmlRendererInterface` with `ElementRendererInterface` (#141) + - Removed the unnecessary `trim()` and string cast from `ListItemRenderer` + +### Fixed + - Fixed link reference definition edge case (#120) + - Allow literal (non-escaping) backslashes in link destinations (#118) + - Allow backslash-escaped backslashes in link labels (#119) + - Allow link labels up to 999 characters (per the spec) + - Properly split on whitespace when determining code block class (jgm/commonmark.js#54) + - Fixed code style issues (#132, #133, #151, #152) + - Fixed wording for invalid inline exception (#136) + +### Removed + - Removed the advance-by-one optimization due to added cursor complexity + +## [0.9.0] - 2015-06-18 +### Added + - Added public $data array to block elements (#95) + - Added `isIndented` helper method to `Cursor` + - Added a new `Converter` base class which `CommonMarkConverter` extends from (#105) + +### Changed + - Bumped spec target version to 0.20 (#112) + - Renamed ListBlock::$data and ListItem::$data to $listData + - Require link labels to contain non-whitespace (jgm/CommonMark#322) + - Use U+FFFD for entities resolving to 0 (jgm/CommonMark#323) + - Moved `IndentedCodeParser::CODE_INDENT_LEVEL` to `Cursor::INDENT_LEVEL` + - Changed arrays to short syntax (#116) + - Improved efficiency of DelimiterStack iteration (jgm/commonmark.js#43) + +### Fixed + - Fixed open block tag followed by newline not being recognized (jgm/CommonMark#324) + - Fixed indented lists sometimes being parsed incorrectly (jgm/commonmark.js#42) + +## [0.8.0] - 2015-04-29 +### Added + - Allow swapping built-in renderers without using their fully qualified names (#84) + - Lots of unit tests (for existing code) + - Ability to include arbitrary functional tests in addition to spec-based tests + +### Changed + - Dropped support for PHP 5.3 (#64 and #76) + - Bumped spec target version to 0.19 + - Made the AbstractInlineContainer be abstract + - Moved environment config. logic into separate class + +### Fixed + - Fixed underscore emphasis to conform to spec changes (jgm/CommonMark#317) + +### Removed + - Removed PHP 5.3 workaround (see commit 5747822) + - Removed unused AbstractWebResource::setUrl() method + - Removed unnecessary check for hrule when parsing lists (#85) + +## [0.7.2] - 2015-03-08 +### Changed + - Bumped spec target version to 0.18 + +### Fixed + - Fixed broken parsing of emphasized text ending with a '0' character (#81) + +## [0.7.1] - 2015-03-01 +### Added + - All references can now be obtained from the `ReferenceMap` via `listReferences()` (#73) + - Test against PHP 7.0 (nightly) but allow failures + +### Changed + - ListData::$start now defaults to null instead of 0 (#74) + - Replace references to HtmlRenderer with new HtmlRendererInterface + +### Fixed + - Fixed 0-based ordered lists starting at 1 instead of 0 (#74) + - Fixed errors parsing multi-byte characters (#78 and #79) + +## [0.7.0] - 2015-02-16 +### Added + - More unit tests to increase code coverage + +### Changed + - Enabled the InlineParserEngine to parse several non-special characters at once (performance boost) + - NewlineParser no longer attempts to parse spaces; look-behind is used instead (major performance boost) + - Moved closeUnmatchedBlocks into its own class + - Image and link elements now extend AbstractInlineContainer; label data is stored via $inlineContents instead + - Renamed AbstractInlineContainer::$inlineContents and its getter/setter + +### Removed + - Removed the InlineCollection class + - Removed the unused ArrayCollection::splice() method + - Removed impossible-to-reach code in Cursor::advanceToFirstNonSpace + - Removed unnecessary test from the InlineParserEngine + - Removed unnecessary/unused RegexHelper::getMainRegex() method + +## [0.6.1] - 2015-01-25 +### Changed + - Bumped spec target version to 0.17 + - Updated emphasis parsing for underscores to prevent intra-word emphasis + - Deferred closing of fenced code blocks + +## [0.6.0] - 2015-01-09 +### Added + - Bulk registration of parsers/renderers via extensions (#45) + - Proper UTF-8 support, especially in the Cursor; mbstring extension is now required (#49) + - Environment is now configurable; options can be accessed in its parsers/renderers (#56) + - Added some unit tests + +### Changed + - Bumped spec target version to 0.15 (#50) + - Parsers/renderers are now lazy-initialized (#52) + - Some private elements are now protected for easier extending, especially on Element classes (#53) + - Renderer option keys changed from camelCase to underscore_case (#56) + - Moved CommonMark parser/render definitions into CommonMarkCoreExtension + +### Fixed + - Improved parsing of emphasis around punctuation + - Improved regexes for CDATA and HTML comments + - Fixed issue with HTML content that is considered false in loose comparisons, like `'0'` (#55) + - Fixed DocParser trying to add empty strings to closed containers (#58) + - Fixed incorrect use of a null parameter value in the HtmlElementTest + +### Removed + - Removed unused ReferenceDefinition* classes (#51) + - Removed UnicodeCaseFolder in favor of mb_strtoupper + +## [0.5.1] - 2014-12-27 +### Fixed + - Fixed infinite loop and link-in-link-in-image parsing (#37) + +### Removed + - Removed hard dependency on mbstring extension; workaround used if not installed (#38) + +## [0.5.0] - 2014-12-24 +### Added + - Support for custom directives, parsers, and renderers + +### Changed + - Major refactoring to de-couple directives from the parser, support custom directive functionality, and reduce complexity + - Updated references to stmd.js in README and docblocks + - Modified CHANGELOG formatting + - Improved travis configuration + - Put tests in autoload-dev + +### Fixed + - Fixed CommonMarkConverter re-creating object each time new text is converted (#26) + +### Removed + - Removed HtmlRenderer::render() (use the renderBlock method instead) + - Removed dependency on symfony/options-resolver (fixes #20) + +## [0.4.0] - 2014-12-15 +### Added + - Added some missing copyright info + +### Changed + - Changed namespace to League\CommonMark + - Made compatible with spec version 0.13 + - Moved delimiter stack functionality into separate class + +### Fixed + - Fixed regex which caused HHVM tests to fail + +## [0.3.0] - 2014-11-28 +### Added + - Made renderer options configurable (issue #7) + +### Changed + - Made compatible with spec version 0.12 + - Stack-based parsing now used for emphasis, links and images + - Protected some of the internal renderer methods which shouldn't have been `public` + - Minor code clean-up (including PSR-2 compliance) + +### Removed + - Removed unnecessary distinction between ATX and Setext headers + +## [0.2.1] - 2014-11-09 +### Added + - Added simpler string replacement to a method + +### Changed + - Removed "is" prefix from boolean methods + * Updated to latest version of PHPUnit + * Target specific spec version + +## [0.2.0] - 2014-11-09 +### Changed + - Mirrored significant changes and improvements from stmd.js + - Made compatible with spec version 0.10 + - Updated location of JGM's repository + - Allowed HHVM tests to fail without affecting overall build success + +### Removed + - Removed composer.lock + - Removed fixed reference to jgm/stmd@0275f34 + +## [0.1.2] - 2014-09-28 +### Added + - Added performance benchmarking tool (issue #2) + - Added more badges to the README + +### Changed + - Fix JS -> PHP null judgement (issue #4) + - Updated phpunit dependency + +## [0.1.1] - 2014-09-08 +### Added + - Add anchors to regexes + +### Changed + - Updated target spec (now compatible with jgm/stmd:spec.txt @ 2cf0750) + - Adjust HTML output for fenced code + - Adjust block-level tag regex (remove "br", add "iframe") + - Fix incorrect handling of nested emphasis + +## 0.1.0 +### Added + - Initial commit (compatible with jgm/stmd:spec.txt @ 0275f34) + +[0.19.3]: https://github.com/thephpleague/commonmark/compare/0.19.2...0.19.3 +[0.19.2]: https://github.com/thephpleague/commonmark/compare/0.19.1...0.19.2 +[0.19.1]: https://github.com/thephpleague/commonmark/compare/0.19.0...0.19.1 +[0.19.0]: https://github.com/thephpleague/commonmark/compare/0.18.5...0.19.0 +[0.18.5]: https://github.com/thephpleague/commonmark/compare/0.18.4...0.18.5 +[0.18.4]: https://github.com/thephpleague/commonmark/compare/0.18.3...0.18.4 +[0.18.3]: https://github.com/thephpleague/commonmark/compare/0.18.2...0.18.3 +[0.18.2]: https://github.com/thephpleague/commonmark/compare/0.18.1...0.18.2 +[0.18.1]: https://github.com/thephpleague/commonmark/compare/0.18.0...0.18.1 +[0.18.0]: https://github.com/thephpleague/commonmark/compare/0.17.5...0.18.0 +[0.17.5]: https://github.com/thephpleague/commonmark/compare/0.17.4...0.17.5 +[0.17.4]: https://github.com/thephpleague/commonmark/compare/0.17.3...0.17.4 +[0.17.3]: https://github.com/thephpleague/commonmark/compare/0.17.2...0.17.3 +[0.17.2]: https://github.com/thephpleague/commonmark/compare/0.17.1...0.17.2 +[0.17.1]: https://github.com/thephpleague/commonmark/compare/0.17.0...0.17.1 +[0.17.0]: https://github.com/thephpleague/commonmark/compare/0.16.0...0.17.0 +[0.16.0]: https://github.com/thephpleague/commonmark/compare/0.15.7...0.16.0 +[0.15.7]: https://github.com/thephpleague/commonmark/compare/0.15.6...0.15.7 +[0.15.6]: https://github.com/thephpleague/commonmark/compare/0.15.5...0.15.6 +[0.15.5]: https://github.com/thephpleague/commonmark/compare/0.15.4...0.15.5 +[0.15.4]: https://github.com/thephpleague/commonmark/compare/0.15.3...0.15.4 +[0.15.3]: https://github.com/thephpleague/commonmark/compare/0.15.2...0.15.3 +[0.15.2]: https://github.com/thephpleague/commonmark/compare/0.15.1...0.15.2 +[0.15.1]: https://github.com/thephpleague/commonmark/compare/0.15.0...0.15.1 +[0.15.0]: https://github.com/thephpleague/commonmark/compare/0.14.0...0.15.0 +[0.14.0]: https://github.com/thephpleague/commonmark/compare/0.13.4...0.14.0 +[0.13.4]: https://github.com/thephpleague/commonmark/compare/0.13.3...0.13.4 +[0.13.3]: https://github.com/thephpleague/commonmark/compare/0.13.2...0.13.3 +[0.13.2]: https://github.com/thephpleague/commonmark/compare/0.13.1...0.13.2 +[0.13.1]: https://github.com/thephpleague/commonmark/compare/0.13.0...0.13.1 +[0.13.0]: https://github.com/thephpleague/commonmark/compare/0.12.0...0.13.0 +[0.12.0]: https://github.com/thephpleague/commonmark/compare/0.11.3...0.12.0 +[0.11.3]: https://github.com/thephpleague/commonmark/compare/0.11.2...0.11.3 +[0.11.2]: https://github.com/thephpleague/commonmark/compare/0.11.1...0.11.2 +[0.11.1]: https://github.com/thephpleague/commonmark/compare/0.11.0...0.11.1 +[0.11.0]: https://github.com/thephpleague/commonmark/compare/0.10.0...0.11.0 +[0.10.0]: https://github.com/thephpleague/commonmark/compare/0.9.0...0.10.0 +[0.9.0]: https://github.com/thephpleague/commonmark/compare/0.8.0...0.9.0 +[0.8.0]: https://github.com/thephpleague/commonmark/compare/0.7.2...0.8.0 +[0.7.2]: https://github.com/thephpleague/commonmark/compare/0.7.1...0.7.2 +[0.7.1]: https://github.com/thephpleague/commonmark/compare/0.7.0...0.7.1 +[0.7.0]: https://github.com/thephpleague/commonmark/compare/0.6.1...0.7.0 +[0.6.1]: https://github.com/thephpleague/commonmark/compare/0.6.0...0.6.1 +[0.6.0]: https://github.com/thephpleague/commonmark/compare/0.5.1...0.6.0 +[0.5.1]: https://github.com/thephpleague/commonmark/compare/0.5.0...0.5.1 +[0.5.0]: https://github.com/thephpleague/commonmark/compare/0.4.0...0.5.0 +[0.4.0]: https://github.com/thephpleague/commonmark/compare/0.3.0...0.4.0 +[0.3.0]: https://github.com/thephpleague/commonmark/compare/0.2.1...0.3.0 +[0.2.1]: https://github.com/thephpleague/commonmark/compare/0.2.0...0.2.1 +[0.2.0]: https://github.com/thephpleague/commonmark/compare/0.1.2...0.2.0 +[0.1.2]: https://github.com/thephpleague/commonmark/compare/0.1.1...0.1.2 +[0.1.1]: https://github.com/thephpleague/commonmark/compare/0.1.0...0.1.1 diff --git a/vendor/league/commonmark/CHANGELOG.md b/vendor/league/commonmark/CHANGELOG.md index 17b2335049..73aadb95e1 100644 --- a/vendor/league/commonmark/CHANGELOG.md +++ b/vendor/league/commonmark/CHANGELOG.md @@ -4,842 +4,154 @@ Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) princi ## [Unreleased][unreleased] -## [0.19.3] - 2019-06-18 +## [1.0.0] - 2019-06-29 -### Fixed - - - Fixed bug where elements with content of `"0"` wouldn't be rendered (#376) - -## [0.19.2] - 2019-05-19 - -### Fixed - - - Fixed bug where default values for nested configuration paths were inadvertently cast to strings - -## [0.19.1] - 2019-04-10 - -### Added - - - Added the missing `addExtension()` method to the new `ConfigurableEnvironmentInterface` - -### Fixed - - - Fixed extensions not being able to register other extensions - -## [0.19.0] - 2019-04-10 - -### Added - - - The priority of parsers, processors, and renderers can now be set when `add()`ing them; you no longer need to rely on the order in which they are added - - Added support for trying multiple parsers per block/inline - - Extracted two new base interfaces from `Environment`: - - `EnvironmentInterface` - - `ConfigurableEnvironmentInterface` - - Extracted a new `AbstractStringContainerBlock` base class and corresponding `StringContainerInterface` from `AbstractBlock` - - Added `Cursor::getEncoding()` method - - Added `.phpstorm.meta.php` file for better IDE code completion - - Made some minor optimizations here and there - -### Changed - - - Pretty much everything now has parameter and return types (#346) - - Attributes passed to `HtmlElement` will now be escaped by default - - `Environment` is now a `final` class - - `Environment::getBlockRendererForClass()` was replaced with `Environment::getBlockRenderersForClass()` (note the added `s`) - - `Environment::getInlineRendererForClass()` was replaced with `Environment::getInlineRenderersForClass()` (note the added `s`) - - The `Environment::get____()` methods now return an iterator instead of an array - - `Context::addBlock()` no longer returns the same block instance you passed into the method, as this served no useful purpose - - `RegexHelper::isEscapable()` no longer accepts `null` values - - `Node::replaceChildren()` now accepts any type of `iterable`, not just `array`s - - Some block elements now extend `AbstractStringContainerBlock` instead of `AbstractBlock` - - `InlineContainerInterface` now extends the new `StringContainerInterface` - - The `handleRemainingContents()` method (formerly on `AbstractBlock`, now on `AbstractStringContainerBlock`) is now an `abstract method - - The `InlineParserContext` constructor now requires an `AbstractStringContainerBlock` instead of an `AbstractBlock` - -### Removed - - - Removed support for PHP 5.6 and 7.0 (#346) - - Removed support for `add()`ing parsers with just the target block/inline class name - you need to include the full namespace now - - Removed the following unused methods from `Environment`: - - `getInlineParser($name)` - - `getInlineParsers()` - - `createInlineParserEngine()` - - Removed the unused `getName()` methods: - - `AbstractBlockParser::getName()` - - `AbstractInlineParser::getName()` - - `BlockParserInterface::getName()` - - `InlinerParserInterface::getName()` - - Removed the now-useless classes: - - `AbstractBlockParser` - - `AbstractInlinerParser` - - `InlineContainer` - - Removed the `AbstractBlock::acceptsLines()` method - - Removed the now-useless constructor from `AbstractBlock` - - Removed previously-deprecated functionality: - - `InlineContainer` class - - `RegexHelper::$instance` - - `RegexHelper::getInstance()` - - `RegexHelper::getPartialRegex()` - - `RegexHelper::getHtmlTagRegex()` - - `RegexHelper::getLinkTitleRegex()` - - `RegexHelper::getLinkDestinationBracesRegex()` - - `RegexHelper::getThematicBreakRegex()` - - Removed the second `$preserveEntities` parameter from `Xml:escape()` - -## [0.18.5] - 2019-03-28 - -### Fixed - - - Fixed the adjoining `Text` collapser not handling the full tree (thephpleague/commonmark-ext-autolink#10) - -## [0.18.4] - 2019-03-23 - -### Changed - - - Modified how URL normalization decodes certain characters in order to align with the JS library's output - - Disallowed unescaped `(` in parenthesized link title - -### Fixed - - - Fixed two exponential backtracking issues - -## [0.18.3] - 2019-03-21 - -This is a **security update** release. - -### Changed - - - XML/HTML entities in attributes will no longer be preserved when rendering (#353) - -### Fixed - - - Fix XSS vulnerability caused by improper preservation of entities when rendering (#353) - -### Deprecated - - - Deprecated the `$preserveEntites` argument of `Xml::escape()` for removal in the next release (#353) - -## [0.18.2] - 2019-03-16 - -### Fixed - - - Fixed adjoining `Text` elements not being collapsed after delimiter processing - -### Deprecated - - - Deprecated the `CommonmarkConverter::VERSION` constant for removal in 1.0.0 - -## [0.18.1] - 2018-12-29 - -This is a **security update** release. - -### Fixed - - - Fix XSS vulnerability caused by URL normalization not handling/encoding newlines properly (#337, CVE-2018-20583) - -## [0.18.0] - 2018-09-18 - -### Added - - - Added `ConverterInterface` to `Converter` and `CommonMarkConverter` (#330) - - Added `ListItem::getListData()` method (#329) - -### Changed - - - Links with `target="_blank"` will also get `rel="noopener noreferrer"` by default (#331) - - Implemented several performance optimizations (#324) - -## [0.17.5] - 2018-03-29 - -### Fixed - - - Fixed incorrect version constant value (again) - - Fixed release checklist to prevent the above from happening - - Fixed incorrect dates in CHANGELOG - -## [0.17.4] - 2018-03-28 - -### Added - - - Added `ListBlock::setTight()` method - -## [0.17.3] - 2018-03-26 - -### Fixed - - - Fixed incorrect version constant value - -## [0.17.2] - 2018-03-25 - -### Added - - - Added new `RegexHelper::isEscapable()` method - -### Fixed - - - Fixed spec compliance bug where escaped spaces should not be allowed in link destinations - -## [0.17.1] - 2018-03-18 - -### Added - - - Added a new constant containing the current version: `CommonMarkConverter::VERSION` (#314) - -## [0.17.0] - 2017-12-30 - -This release contains several breaking changes and a minimum PHP version bump - see <UPGRADE.md> for more details. - -### Added - - - Added new `max_nesting_level` setting (#243) - - Added minor performance optimizations to `Cursor` - -### Changed - - - Minimum PHP version is now 5.6.5. - - All full and partial regular expressions in `RegexHelper` are now defined as constants instead of being built on-the-fly. - - `Cursor::saveState()` now returns an `array` instead of a `CursorState` object. - - `Cursor::restoreState()` now accepts an `array` parameter instead of a `CursorState` object. - - Saving/restoring the Cursor state no longer tracks things that don't change (like the text content). - - `RegexHelper` is now `final`. - - References to `InlineContainer` changed to new `InlineContainerInterface` interface. - - `MiscExtension::addInlineParser()` and `MiscExtension::addBlockRenderer()` now return `$this` instead of nothing. - -### Fixed - - Fixed `Reference::normalizeReference()` not properly collapsing whitespace to a single space - -### Deprecated - - - `RegexHelper::getInstance()` and all instance (non-static) methods have been deprecated. - - The `InlineContainer` interface has been deprecated. Use `InlineContainerInterface` instead. - -### Removed - - - Removed support for PHP 5.4 and 5.5. - - Removed `CursorState` class - - Removed all previous deprecations: - - `Cursor::getFirstNonSpacePosition()` - - `Cursor::getFirstNonSpaceCharacter()` - - `Cursor::advanceWhileMatches()` - - `Cursor::advanceToFirstNonSpace()` - - `ElementRendererInterface::escape()` - - `HtmlRenderer::escape()` - - `RegexHelper::REGEX_UNICODE_WHITESPACE` - - `RegexHelper::getLinkDestinationRegex()` - -## [0.16.0] - 2017-10-30 - -This release contains breaking changes, several performance improvements, and two deprecations: - -### Added - - - Added new `Xml` utility class; moved HTML/XML escaping logic into there (see deprecations below) - -### Changed - - - `Environment::getInlineParsersForCharacter()` now returns an empty array (instead of `null`) when no matching parsers are found - - Three utility classes are now marked `final`: - - `Html5Entities` - - `LinkParserHelper` - - `UrlEncoder` - -### Fixed - - - Improved performance of several methods (for a 10% overall performance boost - #292) - -### Deprecated - -The following methods were deprecated and are scheduled for removal in 0.17.0 or 1.0.0 (whichever comes first). See <UPGRADE.md> for more information. - - - `Cursor::advanceWhileMatches()` deprecated; use `Cursor::match()` instead. - - `HtmlRenderer::escape()` deprecated; use `Xml::escape()` instead. - -### Removed - - - Removed `DelimiterStack::findFirstMatchingOpener()` which was previously deprecated in 0.15.0 - -## [0.15.7] - 2017-10-26 - -### Fixed - - - Improved performance of `Cursor::advanceBy()` (for a 16% performance boost) - -## [0.15.6] - 2017-08-08 - -### Fixed - - - Fixed URI normalization not properly encoding/decoding special characters in certain cases (#287) - -## [0.15.5] - 2017-08-05 - -This release bumps spec compliance to 0.28 without breaking changes to the API. - -### Added - - - Project is now tested against PHP 7.2 - -### Changed - - - Bumped CommonMark spec target to 0.28 - - Changed internal implementation of `LinkParserHelper::parseLinkDestination()` to allow nested parens - - Changed precedence of strong/emph when both nestings are possible (rule 14) - - Allow tabs before and after ATX closing header - -### Fixed - - - Fixed HTML type 6 block regex matching against `<pre>` (it shouldn't) and not matching `<iframe>` (it should) - - Fixed reference parser incorrectly handling escaped `]` characters - - Fixed "multiple of 3" delimiter run calculations +No changes were made since 1.0.0-rc1. -### Deprecated - -An unused constant and static method were deprecated and will be removed in a future release. See <UPGRADE.md> for more information. - - - Deprecated `RegexHelper::REGEX_UNICODE_WHITESPACE` (no longer used) - - Deprecated `RegexHelper::getLinkDestinationRegex()` (no longer used) - -## [0.15.4] - 2017-05-09 +## [1.0.0-rc1] - 2019-06-19 ### Added - - Added new methods to `Cursor` (#280): - - `advanceToNextNonSpaceOrNewline()` - Identical replacement for the (now-deprecated) `advanceToFirstNonSpace()` method - - `advanceToNextNonSpaceOrTab()` - Similar replacement for `advanceToFirstNonSpace()` but with proper tab handling - - `getNextNonSpaceCharacter()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCharacter()` method - - `getNextNonSpacePosition()` - Identical replacement for the (now-deprecated) `getFirstNonSpacePosition()` method - - Added new method to `CursorState` (#280): - - `getNextNonSpaceCache()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCache()` method - -### Fixed - - - Fixed duplicate characters in non-intended lines containing tabs (#279) - -### Deprecated - -**All deprecations listed here will be removed in a future 0.x release.** See [UPGRADE.md](UPGRADE.md) for instructions on preparing your code for the eventual removal of these methods. - - - Deprecated `Cursor::advanceToFirstNonSpace()` (#280) - - Use `advanceToNextNonSpaceOrTab()` or `advanceToNextNonSpaceOrNewline()` instead, depending on your requirements - - Deprecated `Cursor::getFirstNonSpaceCharacter()` (#280) - - Use `Cursor::getNextNonSpaceCharacter()` instead - - Deprecated `Cursor::getFirstNonSpacePosition()` (#280) - - Use `Cursor::getNextNonSpacePosition()` instead - - Deprecated `CursorState::getFirstNonSpaceCache()` (#280) - - Use `CursorState::getNextNonSpaceCache()` instead - -## [0.15.3] - 2016-12-18 - -### Fixed - - Allow inline parsers matching regex delimiter to be created (#271, #272) - -## [0.15.2] - 2016-11-22 - -### Changed - - Bumped spec target version to 0.27 (#268) - - H2-H6 elements are now parsed as HTML block elements instead of HTML inlines - -### Fixed - - Fixed incomplete punctuation regex - - Fixed shortcut links not being allowed before a `(` - - Fixed distinction between Unicode whitespace and regular whitespace - -## [0.15.1] - 2016-11-08 - -### Fixed - - Fixed setext heading underlines not allowing trailing tabs (#266) - -## [0.15.0] - 2016-09-14 - -### Added - - Added preliminary support for PHP 7.1 (#259) - - Added more regression tests (#258, #260) + - Extracted a `ReferenceMapInterface` from the `ReferenceMap` class + - Added optional `ReferenceMapInterface` parameter to the `Document` constructor ### Changed - - Bumped spec target version to 0.26 (#260) - - The `CursorState` constructor requires an additional parameter (#258) - - Ordered lists cannot interupt a paragraph unless they start with `1` (#260) - - Blank list items cannot interupt a paragraph (#260) - -### Deprecated - - Deprecated `DelimiterStack::findFirstMatchingOpener()` - use `findMatchingOpener()` instead (#260) - -### Fixed - - Fixed tabs in ATX headers and thematic breaks (#260) - - Fixed issue where cursor state was not being restored properly (#258, #260) - - This fixed the lists-with-tabs regression reported in #258 - -### Removed - - Removed an unnecessary check in `Cursor::advanceBy()` (#260) - - Removed the two-blanks-break-out-of-lists feature (#260) - - -## [0.14.0] - 2016-07-02 -### Added - - The `safe` option is deprecated and replaced by 2 new options (#253, #255): - - `html_input` (`strip`, `allow` or `escape`): how to handle untrusted HTML input (the default is `strip` for BC reasons) - - `allow_unsafe_links` (`true` or `false`): whether to allow risky image URLs and links (the default is `true` for BC reasons) - -### Deprecated - - The `safe` option is now deprecated and will be removed in the 1.0.0 release. -## [0.13.4] - 2016-06-14 + - Replaced all references to `ReferenceMap` with `ReferenceMapInterface` + - `ReferenceMap::addReference()` no longer returns `$this` ### Fixed - - Fixed path to `autoload.php` within bin/commonmark (#250) -## [0.13.3] - 2016-05-21 - -### Added - - Added `setUrl()` method for `Link` and `Image` elements (#227, #244) - - Added cebe/markdown to the benchmark tool (#245) + - Fixed bug where elements with content of `"0"` wouldn't be rendered (#376) -## [0.13.2] - 2016-03-27 +## [1.0.0-beta4] - 2019-06-05 ### Added - - Added ability to invoke `Converter` as a function (#233, #239) - - Added new `advanceBySpaceOrTab` convenience method to `Cursor` - -### Changed - - Bumped spec target version to 0.25 - - Adjusted how tabs are handled by the `Cursor` (#234) - - Made a couple small micro-optimizations to heavily used functions (#240) - - Updated URLs in docblocks to use HTTPS where possible (#238) -## [0.13.1] - 2016-03-09 - -### Changed - - Refactored `EmphasisParser::parse()` to simplify it (#223) - - Updated dev dependencies (#218 & #220) - -### Fixed - - Fixed invalid regex generated when no inline parsers are defined (#224) - - Fixed logic bug with blank line after empty list item (#230) - - Fixed some incorrect code comments + - Added event dispatcher functionality (#359, #372) ### Removed - - Removed unused variables (#223) -## [0.13.0] - 2016-01-13 + - Removed `DocumentProcessorInterface` functionality in favor of event dispatching (#373) -### Added - - Added AST document processors (#210) - - Added optional `Environment` parameter to `CommonMarkConverter` constructor +## [1.0.0-beta3] - 2019-05-27 ### Changed - - Renamed "header" things to "heading" for spec consistency - - `Header` => `Heading` - - `ATXHeaderParser` => `ATXHeadingParser` - - `SetExtHeaderParser` => `SetExtHeadingParser` - - `HeaderRenderer` => `HeadingRenderer` - - Renamed "HorizontalRule" to "ThematicBreak" for spec consistency - - `HorizontalRule` => `ThematicBreak` - - `HorizontalRuleParser` => `ThematicBreakParser` - - `HorizontalRuleRenderer` => `ThematicBreakRenderer` - - `HorizontalRuleRendererTest` => `ThematicBreakRendererTest` - - `RegexHelper::getHRuleRegex()` => `RegexHelper::getThematicBreakRegex()` - - Renamed inline "Html" and "RawHtml" to "HtmlInline" for consistency - - `Html` => `HtmlInline` - - `RawHtmlParser` => `HtmlInlineParser` - - `RawHtmlRenderer` => `HtmlInlineRenderer` - - Don't allow whitespace between link text and link label of a reference link (spec change) - - Don't allow spaces in link destinations, even in `<>` - - Allow multiline setext header content - - The `Heading` constructor now allows `$contents` to be a `string` (old behavior) or `string[]` (new) -### Fixed - - Fixed several list issues and regressions (jgm/commonmark.js#59) + - Made the `Delimiter` class final and extracted a new `DelimiterInterface` + - Modified most external usages to use this new interface + - Renamed three `Delimiter` methods: + - `getOrigDelims()` renamed to `getOriginalLength()` + - `getNumDelims()` renamed to `getLength()` + - `setNumDelims()` renamed to `setLength()` + - Made additional classes final: + - `DelimiterStack` + - `ReferenceMap` + - `ReferenceParser` + - Moved `ReferenceParser` into the `Reference` sub-namespace ### Removed - - Removed schema whitelist from autolink regex - - Moved SmartPunct functionality into new [league/commonmark-extras](https://github.com/thephpleague/commonmark-extras) package -## [0.12.0] - 2015-11-04 + - Removed unused `Delimiter` methods: + - `setCanOpen()` + - `setCanClose()` + - `setChar()` + - `setIndex()` + - `setInlineNode()` + - Removed fluent interface from `Delimiter` (setter methods now have no return values) -### Added - - Added ability to configure characters and disable emphasis/strong (#135) - - Added new ConfigurationAwareInterface support for all parsers, processors, and renderers (#201) - - Added HTML safe mode to handle untrusted input (#200, #201) - - Safe mode is disabled by default for backwards-compatibility - - To enable it, set the `safe` option to `true` - - Added AppVeyor integration for automated unit/functional testing on Windows (#195) +## [1.0.0-beta2] - 2019-05-27 ### Changed - - `AbstractBlock::finalize()` now requires a second parameter, `$endLineNumber` - - `RegexHelper::REGEX_ENTITY` no longer includes the starting `/` or the ending `/i` (#194) - - `Node::setParent()` now accepts null values (#203) -### Fixed - - Fixed incorrect `endLine` positions (#187) - - Fixed `DocParser::preProcessInput` dropping up to 2 ending newlines instead of just one - - Fixed `EntityParser` not checking for ampersands at the start of the current position (#192, #194) + - `DelimiterProcessorInterface::process()` will accept any type of `AbstractStringContainer` now, not just `Text` nodes + - The `Delimiter` constructor, `getInlineNode()`, and `setInlineNode()` no longer accept generic `Node` elements - only `AbstractStringContainer`s -### Removed - - Removed protected function Context::addChild() - - It was a duplicate of the Context::addBlock() method - - Disabled STDIN reading on `bin/commonmark` for Windows due to PHP issues (#189, #195) - -## [0.11.3] - 2015-09-25 -### Fixed - - Reset container after closing containing lists (#183; jgm/commonmark.js#67) - - The temporary fix from 0.11.2 was reverted - -## [0.11.2] - 2015-09-23 -### Fixed - - Fixed parser checking acceptsLines on the wrong element (#183) - -## [0.11.1] - 2015-09-22 -### Changed - - Tightened up some loose comparisons - -### Fixed - - Fixed missing "bin" directive in composer.json - - Updated a docblock to match recent changes to method parameters ### Removed - - Removed unused variable from within QuoteProcessor's closure -## [0.11.0] - 2015-09-19 -### Added - - Added new `Node` class, which both `AbstractBlock` and `AbstractInline` extend from (#169) - - Added a `NodeWalker` and `NodeWalkerEvent` to traverse the AST without using recursion - - Added new `InlineContainer` interface for blocks - - Added new `getContainer()` and `getReferenceMap()` methods to `InlineParserContext` - - Added `iframe` to whitelist of HTML block tags (as per spec) - - Added `./bin/commonmark` for converting Markdown at the command line + - Removed all deprecated functionality: + - The `safe` option (use `html_input` and `allow_unsafe_links` options instead) + - All deprecated `RegexHelper` constants + - `DocParser::getEnvironment()` (you should obtain it some other way) + - `AbstractInlineContainer` (use `AbstractInline` instead and make `isContainer()` return `true`) -### Changed - - Bumped spec target version to 0.22 - - Revised AST to use a double-linked list (#169) - - `AbstractBlock` and `AbstractInline` both extend from `Node` - - Sub-classes must implement new `isContainer()` method - - Other major changes to `AbstractBlock`: - - `getParent()` is now `parent()` - - `setParent()` now expects a `Node` instead of an `AbstractBlock` - - `getChildren()` is now `children()` - - `getLastChild()` is now `lastChild()` - - `addChild()` is now `appendChild()` - - `InlineParserContext` is constructed using the container `AbstractBlock` and the document's `RefereceMap` - - The constructor will automatically create the `Cursor` using the container's string contents - - `InlineParserEngine::parse` now requires the `Node` container and the document's `ReferenceMap` instead of a `ContextInterface` and `Cursor` - - Changed `Delimiter` to reference the actual inline `Node` instead of the position - - The `int $pos` protected member and constructor arg is now `Node $node` - - Use `getInlineNode()` and `setInlineNode()` instead of `getPos()` and `setPos()` - - Changed `DocParser::processInlines` to use a `NodeWalker` to iterate through inlines - - Walker passed as second argument instead of `AbstractBlock` - - Uses a `while` loop instead of recursion to traverse the AST - - `Image` and `Link` now only accept a string as their second argument - - Refactored how `CloseBracketParser::parse()` works internally - - `CloseBracketParser::createInline` no longer accepts label inlines - - Disallow list item starting with multiple blank lines (see jgm/CommonMark#332) - - Modified `AbstractBlock::setLastLineBlank()` - - Functionality moved to `AbstractBlock::shouldLastLineBeBlank()` and new `DocParser::setAndPropagateLastLineBlank()` method - - `AbstractBlock::setLastLineBlank()` is now a setter method for `AbstractBlock::$lastLineBlank` - - `AbstractBlock::handleRemainingContents()` is no longer abstract - - A default implementation is provided - - Removed duplicate code from sub-classes which used the default implementation - they'll just use the parent method from now on - -### Fixed - - Fixed logic error in calculation of offset (see jgm/commonmark.js@94053a8) - - Fixed bug where `DocParser` checked the wrong method to determine remainder handling behavior - - Fixed bug where `HorizontalRuleParser` failed to advance the cursor beyond the parsed horizontal rule characters - - Fixed `DocParser` not ignoring the final newline of the input (like the reference parser does) +## [1.0.0-beta1] - 2019-05-26 -### Removed - - Removed `Block\Element\AbstractInlineContainer` - - Extend `AbstractBlock` and implement `InlineContainer` instead - - Use child methods instead of `getInlines` and `setInlines` - - Removed `AbstractBlock::replaceChild()` - - Call `Node::replaceWith()` directly the child node instead - - Removed the `getInlines()` method from `InlineParserContext` - - Add parsed inlines using `$inlineContext->getContainer()->appendChild()` instead of `$inlineContext->getInlines()->add()` - - Removed the `ContextInterface` argument from `AbstractInlineParser::parse()` and `InlineParserEngine::parseCharacter` - - Removed the first `ArrayCollection $inlines` argument from `InlineProcessorInterface::processInlines()` - - Removed `CloseBracketParser::nullify()` - - Removed `pre` from rule 6 of HTML blocks (see jgm/CommonMark#355) - -## [0.10.0] - 2015-07-25 ### Added - - Added parent references to inline elements (#124) - - Added smart punctuation extension (#134) - - Added HTML block types - - Added indentation caching to the cursor - - Added automated code style checks (#133) - - Added support for tag attributes in renderers (#101, #165) - -### Changed - - Bumped spec target version to 0.21 - - Revised HTML block parsing to conform to new spec (jgm/commonmark.js@99bd473) - - Imposed 9-digit limit on ordered list markers, per spec - - Allow non-initial hyphens in html tag names (jgm/CommonMark#239) - - Updated list of block tag names - - Changed tab/indentation handling to meet the new spec behavior - - Modified spec tests to show spaces and tabs in test results - - Replaced `HtmlRendererInterface` with `ElementRendererInterface` (#141) - - Removed the unnecessary `trim()` and string cast from `ListItemRenderer` - -### Fixed - - Fixed link reference definition edge case (#120) - - Allow literal (non-escaping) backslashes in link destinations (#118) - - Allow backslash-escaped backslashes in link labels (#119) - - Allow link labels up to 999 characters (per the spec) - - Properly split on whitespace when determining code block class (jgm/commonmark.js#54) - - Fixed code style issues (#132, #133, #151, #152) - - Fixed wording for invalid inline exception (#136) - -### Removed - - Removed the advance-by-one optimization due to added cursor complexity -## [0.9.0] - 2015-06-18 -### Added - - Added public $data array to block elements (#95) - - Added `isIndented` helper method to `Cursor` - - Added a new `Converter` base class which `CommonMarkConverter` extends from (#105) + - Added proper support for delimiters, including custom delimiters + - `addDelimiterProcessor()` added to `ConfigurableEnvironmentInterface` and `Environment` + - Basic delimiters no longer need custom parsers - they'll be parsed automatically + - Added new methods: + - `AdjacentTextMerger::mergeTextNodesBetweenExclusive()` + - `CommonMarkConveter::getEnvironment()` + - `Configuration::set()` + - Extracted some new interfaces from base classes: + - `DocParserInterface` created from `DocParser` + - `ConfigurationInterface` created from `Configuration` + - `ReferenceInterface` created from `Reference` ### Changed - - Bumped spec target version to 0.20 (#112) - - Renamed ListBlock::$data and ListItem::$data to $listData - - Require link labels to contain non-whitespace (jgm/CommonMark#322) - - Use U+FFFD for entities resolving to 0 (jgm/CommonMark#323) - - Moved `IndentedCodeParser::CODE_INDENT_LEVEL` to `Cursor::INDENT_LEVEL` - - Changed arrays to short syntax (#116) - - Improved efficiency of DelimiterStack iteration (jgm/commonmark.js#43) -### Fixed - - Fixed open block tag followed by newline not being recognized (jgm/CommonMark#324) - - Fixed indented lists sometimes being parsed incorrectly (jgm/commonmark.js#42) - -## [0.8.0] - 2015-04-29 -### Added - - Allow swapping built-in renderers without using their fully qualified names (#84) - - Lots of unit tests (for existing code) - - Ability to include arbitrary functional tests in addition to spec-based tests - -### Changed - - Dropped support for PHP 5.3 (#64 and #76) - - Bumped spec target version to 0.19 - - Made the AbstractInlineContainer be abstract - - Moved environment config. logic into separate class - -### Fixed - - Fixed underscore emphasis to conform to spec changes (jgm/CommonMark#317) - -### Removed - - Removed PHP 5.3 workaround (see commit 5747822) - - Removed unused AbstractWebResource::setUrl() method - - Removed unnecessary check for hrule when parsing lists (#85) - -## [0.7.2] - 2015-03-08 -### Changed - - Bumped spec target version to 0.18 - -### Fixed - - Fixed broken parsing of emphasized text ending with a '0' character (#81) - -## [0.7.1] - 2015-03-01 -### Added - - All references can now be obtained from the `ReferenceMap` via `listReferences()` (#73) - - Test against PHP 7.0 (nightly) but allow failures - -### Changed - - ListData::$start now defaults to null instead of 0 (#74) - - Replace references to HtmlRenderer with new HtmlRendererInterface - -### Fixed - - Fixed 0-based ordered lists starting at 1 instead of 0 (#74) - - Fixed errors parsing multi-byte characters (#78 and #79) - -## [0.7.0] - 2015-02-16 -### Added - - More unit tests to increase code coverage - -### Changed - - Enabled the InlineParserEngine to parse several non-special characters at once (performance boost) - - NewlineParser no longer attempts to parse spaces; look-behind is used instead (major performance boost) - - Moved closeUnmatchedBlocks into its own class - - Image and link elements now extend AbstractInlineContainer; label data is stored via $inlineContents instead - - Renamed AbstractInlineContainer::$inlineContents and its getter/setter - -### Removed - - Removed the InlineCollection class - - Removed the unused ArrayCollection::splice() method - - Removed impossible-to-reach code in Cursor::advanceToFirstNonSpace - - Removed unnecessary test from the InlineParserEngine - - Removed unnecessary/unused RegexHelper::getMainRegex() method - -## [0.6.1] - 2015-01-25 -### Changed - - Bumped spec target version to 0.17 - - Updated emphasis parsing for underscores to prevent intra-word emphasis - - Deferred closing of fenced code blocks - -## [0.6.0] - 2015-01-09 -### Added - - Bulk registration of parsers/renderers via extensions (#45) - - Proper UTF-8 support, especially in the Cursor; mbstring extension is now required (#49) - - Environment is now configurable; options can be accessed in its parsers/renderers (#56) - - Added some unit tests - -### Changed - - Bumped spec target version to 0.15 (#50) - - Parsers/renderers are now lazy-initialized (#52) - - Some private elements are now protected for easier extending, especially on Element classes (#53) - - Renderer option keys changed from camelCase to underscore_case (#56) - - Moved CommonMark parser/render definitions into CommonMarkCoreExtension - -### Fixed - - Improved parsing of emphasis around punctuation - - Improved regexes for CDATA and HTML comments - - Fixed issue with HTML content that is considered false in loose comparisons, like `'0'` (#55) - - Fixed DocParser trying to add empty strings to closed containers (#58) - - Fixed incorrect use of a null parameter value in the HtmlElementTest - -### Removed - - Removed unused ReferenceDefinition* classes (#51) - - Removed UnicodeCaseFolder in favor of mb_strtoupper + - Renamed several methods of the `Configuration` class: + - `getConfig()` renamed to `get()` + - `mergeConfig()` renamed to `merge()` + - `setConfig()` renamed to `replace()` + - Changed `ConfigurationAwareInterface::setConfiguration()` to accept the new `ConfigurationInterface` instead of the concrete class + - Renamed the `AdjoiningTextCollapser` class to `AdjacentTextMerger` + - Replaced its `collapseTextNodes()` method with the new `mergeChildNodes()` method + - Made several classes `final`: + - `Configuration` + - `DocParser` + - `HtmlRenderer` + - `InlineParserEngine` + - `NodeWalker` + - `Reference` + - All of the block/inline parsers and renderers + - Reduced visibility of several internal methods to `private`: + - `DelimiterStack::findEarliest()` + - All `protected` methods in `InlineParserEngine` + - Marked some classes and methods as `@internal` + - `ElementRendererInterface` now requires a public `renderInline()` method; added this to `HtmlRenderer` + - Changed `InlineParserEngine::parse()` to require an `AbstractStringContainerBlock` instead of the generic `Node` class + - Un-deprecated the `CommonmarkConverter::VERSION` constant + - The `Converter` constructor now requires an instance of `DocParserInterface` instead of the concrete `DocParser` + - Changed `Emphasis`, `Strong`, and `AbstractWebResource` to directly extend `AbstractInline` instead of the (now-deprecated) intermediary `AbstractInlineContainer` class -## [0.5.1] - 2014-12-27 ### Fixed - - Fixed infinite loop and link-in-link-in-image parsing (#37) -### Removed - - Removed hard dependency on mbstring extension; workaround used if not installed (#38) - -## [0.5.0] - 2014-12-24 -### Added - - Support for custom directives, parsers, and renderers - -### Changed - - Major refactoring to de-couple directives from the parser, support custom directive functionality, and reduce complexity - - Updated references to stmd.js in README and docblocks - - Modified CHANGELOG formatting - - Improved travis configuration - - Put tests in autoload-dev - -### Fixed - - Fixed CommonMarkConverter re-creating object each time new text is converted (#26) - -### Removed - - Removed HtmlRenderer::render() (use the renderBlock method instead) - - Removed dependency on symfony/options-resolver (fixes #20) + - Fixed null errors when inserting sibling `Node`s without parents + - Fixed `NodeWalkerEvent` not requiring a `Node` via its constructor + - Fixed `Reference::normalizeReference()` improperly converting to uppercase instead of performing proper Unicode case-folding + - Fixed strong emphasis delimiters not being preserved when `enable_strong` is set to `false` (it now works identically to `enable_em`) -## [0.4.0] - 2014-12-15 -### Added - - Added some missing copyright info - -### Changed - - Changed namespace to League\CommonMark - - Made compatible with spec version 0.13 - - Moved delimiter stack functionality into separate class - -### Fixed - - Fixed regex which caused HHVM tests to fail - -## [0.3.0] - 2014-11-28 -### Added - - Made renderer options configurable (issue #7) - -### Changed - - Made compatible with spec version 0.12 - - Stack-based parsing now used for emphasis, links and images - - Protected some of the internal renderer methods which shouldn't have been `public` - - Minor code clean-up (including PSR-2 compliance) - -### Removed - - Removed unnecessary distinction between ATX and Setext headers - -## [0.2.1] - 2014-11-09 -### Added - - Added simpler string replacement to a method - -### Changed - - Removed "is" prefix from boolean methods - * Updated to latest version of PHPUnit - * Target specific spec version +### Deprecated -## [0.2.0] - 2014-11-09 -### Changed - - Mirrored significant changes and improvements from stmd.js - - Made compatible with spec version 0.10 - - Updated location of JGM's repository - - Allowed HHVM tests to fail without affecting overall build success + - Deprecated `DocParser::getEnvironment()` (you should obtain it some other way) + - Deprecated `AbstractInlineContainer` (use `AbstractInline` instead and make `isContainer()` return `true`) ### Removed - - Removed composer.lock - - Removed fixed reference to jgm/stmd@0275f34 -## [0.1.2] - 2014-09-28 -### Added - - Added performance benchmarking tool (issue #2) - - Added more badges to the README - -### Changed - - Fix JS -> PHP null judgement (issue #4) - - Updated phpunit dependency - -## [0.1.1] - 2014-09-08 -### Added - - Add anchors to regexes - -### Changed - - Updated target spec (now compatible with jgm/stmd:spec.txt @ 2cf0750) - - Adjust HTML output for fenced code - - Adjust block-level tag regex (remove "br", add "iframe") - - Fix incorrect handling of nested emphasis - -## 0.1.0 -### Added - - Initial commit (compatible with jgm/stmd:spec.txt @ 0275f34) + - Removed inline processor functionality now that we have proper delimiter support: + - Removed `addInlineProcessor()` from `ConfigurableEnvironmentInterface` and `Environment` + - Removed `getInlineProcessors()` from `EnvironmentInterface` and `Environment` + - Removed `EmphasisProcessor` + - Removed `InlineProcessorInterface` + - Removed `EmphasisParser` now that we have proper delimiter support + - Removed support for non-UTF-8-compatible encodings + - Removed `getEncoding()` from `ContextInterface` + - Removed `getEncoding()`, `setEncoding()`, and `$encoding` from `Context` + - Removed `getEncoding()` and the second `$encoding` constructor param from `Cursor` + - Removed now-unused methods + - Removed `DelimiterStack::getTop()` (no replacement) + - Removed `DelimiterStack::iterateByCharacters()` (use the new `processDelimiters()` method instead) + - Removed the protected `DelimiterStack::findMatchingOpener()` method -[unreleased]: https://github.com/thephpleague/commonmark/compare/0.19.3...HEAD -[0.19.3]: https://github.com/thephpleague/commonmark/compare/0.19.2...0.19.3 -[0.19.2]: https://github.com/thephpleague/commonmark/compare/0.19.1...0.19.2 -[0.19.1]: https://github.com/thephpleague/commonmark/compare/0.19.0...0.19.1 -[0.19.0]: https://github.com/thephpleague/commonmark/compare/0.18.5...0.19.0 -[0.18.5]: https://github.com/thephpleague/commonmark/compare/0.18.4...0.18.5 -[0.18.4]: https://github.com/thephpleague/commonmark/compare/0.18.3...0.18.4 -[0.18.3]: https://github.com/thephpleague/commonmark/compare/0.18.2...0.18.3 -[0.18.2]: https://github.com/thephpleague/commonmark/compare/0.18.1...0.18.2 -[0.18.1]: https://github.com/thephpleague/commonmark/compare/0.18.0...0.18.1 -[0.18.0]: https://github.com/thephpleague/commonmark/compare/0.17.5...0.18.0 -[0.17.5]: https://github.com/thephpleague/commonmark/compare/0.17.4...0.17.5 -[0.17.4]: https://github.com/thephpleague/commonmark/compare/0.17.3...0.17.4 -[0.17.3]: https://github.com/thephpleague/commonmark/compare/0.17.2...0.17.3 -[0.17.2]: https://github.com/thephpleague/commonmark/compare/0.17.1...0.17.2 -[0.17.1]: https://github.com/thephpleague/commonmark/compare/0.17.0...0.17.1 -[0.17.0]: https://github.com/thephpleague/commonmark/compare/0.16.0...0.17.0 -[0.16.0]: https://github.com/thephpleague/commonmark/compare/0.15.7...0.16.0 -[0.15.7]: https://github.com/thephpleague/commonmark/compare/0.15.6...0.15.7 -[0.15.6]: https://github.com/thephpleague/commonmark/compare/0.15.5...0.15.6 -[0.15.5]: https://github.com/thephpleague/commonmark/compare/0.15.4...0.15.5 -[0.15.4]: https://github.com/thephpleague/commonmark/compare/0.15.3...0.15.4 -[0.15.3]: https://github.com/thephpleague/commonmark/compare/0.15.2...0.15.3 -[0.15.2]: https://github.com/thephpleague/commonmark/compare/0.15.1...0.15.2 -[0.15.1]: https://github.com/thephpleague/commonmark/compare/0.15.0...0.15.1 -[0.15.0]: https://github.com/thephpleague/commonmark/compare/0.14.0...0.15.0 -[0.14.0]: https://github.com/thephpleague/commonmark/compare/0.13.4...0.14.0 -[0.13.4]: https://github.com/thephpleague/commonmark/compare/0.13.3...0.13.4 -[0.13.3]: https://github.com/thephpleague/commonmark/compare/0.13.2...0.13.3 -[0.13.2]: https://github.com/thephpleague/commonmark/compare/0.13.1...0.13.2 -[0.13.1]: https://github.com/thephpleague/commonmark/compare/0.13.0...0.13.1 -[0.13.0]: https://github.com/thephpleague/commonmark/compare/0.12.0...0.13.0 -[0.12.0]: https://github.com/thephpleague/commonmark/compare/0.11.3...0.12.0 -[0.11.3]: https://github.com/thephpleague/commonmark/compare/0.11.2...0.11.3 -[0.11.2]: https://github.com/thephpleague/commonmark/compare/0.11.1...0.11.2 -[0.11.1]: https://github.com/thephpleague/commonmark/compare/0.11.0...0.11.1 -[0.11.0]: https://github.com/thephpleague/commonmark/compare/0.10.0...0.11.0 -[0.10.0]: https://github.com/thephpleague/commonmark/compare/0.9.0...0.10.0 -[0.9.0]: https://github.com/thephpleague/commonmark/compare/0.8.0...0.9.0 -[0.8.0]: https://github.com/thephpleague/commonmark/compare/0.7.2...0.8.0 -[0.7.2]: https://github.com/thephpleague/commonmark/compare/0.7.1...0.7.2 -[0.7.1]: https://github.com/thephpleague/commonmark/compare/0.7.0...0.7.1 -[0.7.0]: https://github.com/thephpleague/commonmark/compare/0.6.1...0.7.0 -[0.6.1]: https://github.com/thephpleague/commonmark/compare/0.6.0...0.6.1 -[0.6.0]: https://github.com/thephpleague/commonmark/compare/0.5.1...0.6.0 -[0.5.1]: https://github.com/thephpleague/commonmark/compare/0.5.0...0.5.1 -[0.5.0]: https://github.com/thephpleague/commonmark/compare/0.4.0...0.5.0 -[0.4.0]: https://github.com/thephpleague/commonmark/compare/0.3.0...0.4.0 -[0.3.0]: https://github.com/thephpleague/commonmark/compare/0.2.1...0.3.0 -[0.2.1]: https://github.com/thephpleague/commonmark/compare/0.2.0...0.2.1 -[0.2.0]: https://github.com/thephpleague/commonmark/compare/0.1.2...0.2.0 -[0.1.2]: https://github.com/thephpleague/commonmark/compare/0.1.1...0.1.2 -[0.1.1]: https://github.com/thephpleague/commonmark/compare/0.1.0...0.1.1 +[unreleased]: https://github.com/thephpleague/commonmark/compare/1.0.0...HEAD +[1.0.0]: https://github.com/thephpleague/commonmark/compare/1.0.0-rc1...1.0.0 +[1.0.0-rc1]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta4...1.0.0-rc1 +[1.0.0-beta4]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta3...1.0.0-beta4 +[1.0.0-beta3]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta2...1.0.0-beta3 +[1.0.0-beta2]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta1...1.0.0-beta2 +[1.0.0-beta1]: https://github.com/thephpleague/commonmark/compare/0.19.2...1.0.0-beta1 diff --git a/vendor/league/commonmark/LICENSE b/vendor/league/commonmark/LICENSE index 063172aff8..7441468b8b 100644 --- a/vendor/league/commonmark/LICENSE +++ b/vendor/league/commonmark/LICENSE @@ -1,9 +1,6 @@ BSD 3-Clause License -Copyright (c) 2014-2019, Colin O'Dell -All rights reserved. - -Based on commonmark.js: Copyright (c) 2014-2018, John MacFarlane +Copyright (c) 2014-2019, Colin O'Dell. All rights reserved. Based on commonmark.js,copyright (c) 2014-2018, John MacFarlane Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/vendor/league/commonmark/README.md b/vendor/league/commonmark/README.md index 06b238ea57..301b0103d1 100644 --- a/vendor/league/commonmark/README.md +++ b/vendor/league/commonmark/README.md @@ -6,19 +6,15 @@ [](https://travis-ci.org/thephpleague/commonmark) [](https://scrutinizer-ci.com/g/thephpleague/commonmark/code-structure) [](https://scrutinizer-ci.com/g/thephpleague/commonmark) -[](https://insight.sensiolabs.com/projects/9bf971c0-458f-4a19-9898-127728dbd65d) [](https://bestpractices.coreinfrastructure.org/projects/126) -**league/commonmark** is a PHP-based Markdown parser created by [Colin O'Dell][@colinodell] which supports the full [CommonMark] spec. It is based on the [CommonMark JS reference implementation][commonmark.js] by [John MacFarlane] \([@jgm]\). +[](https://www.patreon.com/colinodell) -## Goals + -* Fully support the CommonMark spec (100% compliance) -* Match the C and JavaScript implementations of CommonMark to make a logical and similar API -* Continuously improve performance without sacrificing quality or compliance -* Provide an extensible parser/renderer which users may customize as needed +**league/commonmark** is a highly-extensible PHP Markdown parser created by [Colin O'Dell][@colinodell] which supports the full [CommonMark] spec. It is based on the [CommonMark JS reference implementation][commonmark.js] by [John MacFarlane] \([@jgm]\). -## Installation +## 📦 Installation & Basic Usage This project can be installed via [Composer]: @@ -26,34 +22,34 @@ This project can be installed via [Composer]: $ composer require league/commonmark ``` -**Note:** See [Versioning](#versioning) for important information on which version constraints you should use. - -## Basic Usage - The `CommonMarkConverter` class provides a simple wrapper for converting CommonMark to HTML: ```php use League\CommonMark\CommonMarkConverter; -$converter = new CommonMarkConverter(); +$converter = new CommonMarkConverter([ + 'html_input' => 'strip', + 'allow_unsafe_links' => false, +]); + echo $converter->convertToHtml('# Hello World!'); // <h1>Hello World!</h1> ``` -:warning: **Security warning:** If you will be parsing untrusted input from users, please consider setting the `html_input` and `allow_unsafe_links` options. See <https://commonmark.thephpleague.com/security/> for more details. +Please note that only UTF-8 and ASCII encodings are supported. If your Markdown uses a different encoding please convert it to UTF-8 before running it through this library. -If you also do choose to allow raw HTML input from untrusted users, considering using a library (like [HTML Purifier](https://github.com/ezyang/htmlpurifier)) to provide additional HTML filtering. +🔒 If you will be parsing untrusted input from users, please consider setting the `html_input` and `allow_unsafe_links` options per the example above. See <https://commonmark.thephpleague.com/security/> for more details. If you also do choose to allow raw HTML input from untrusted users, considering using a library (like [HTML Purifier](https://github.com/ezyang/htmlpurifier)) to provide additional HTML filtering. -## Documentation +## 📓 Documentation Full documentation on advanced usage, configuration, and customization can be found at [commonmark.thephpleague.com][docs]. -## Upgrading +## ⏫ Upgrading Information on how to upgrade to newer versions of this library can be found at <https://commonmark.thephpleague.com/releases>. -## Related Packages +## 🗃️ Related Packages ### Integrations @@ -64,7 +60,6 @@ Information on how to upgrade to newer versions of this library can be found at - [Symfony 2 & 3](https://github.com/webuni/commonmark-bundle) - [Symfony 4](https://github.com/avensome/commonmark-bundle) - [Twig Markdown extension](https://github.com/twigphp/markdown-extension) -- [Twig-based renderer](https://github.com/webuni/commonmark-twig-renderer) - [Twig filter and tag](https://github.com/aptoma/twig-markdown) ### League Extensions @@ -74,7 +69,10 @@ The PHP League offers useful extensions that add extra syntax and features: - [`league/commonmark-extras`](https://github.com/thephpleague/commonmark-extras) - Bundles the extensions below into a single dependency for convenience - [`league/commonmark-ext-autolink`](https://github.com/thephpleague/commonmark-ext-autolink) - Extension for league/commonmark which autolinks URLs, emails, and (optionally) @-mentions - [`league/commonmark-ext-smartpunct`](https://github.com/thephpleague/commonmark-ext-smartpunct) - Intelligently converts ASCII quotes, dashes, and ellipses to their Unicode equivalents + - [`league/commonmark-ext-strikethrough`](https://github.com/thephpleague/commonmark-ext-strikethrough) - Adds support for `~~strikethrough~~` syntax + - [`league/commonmark-ext-task-list`](https://github.com/thephpleague/commonmark-ext-task-list) - Support for Github-style task lists - [`league/commonmark-ext-inlines-only`](https://github.com/thephpleague/commonmark-ext-inlines-only) - Renders inline text without paragraph tags or other block-level elements + - [`league/commonmark-ext-external-link`](https://github.com/thephpleague/commonmark-ext-external-link) - Mark external links, make them open in new windows, etc. You can add them to your project or use them as examples to [develop your own custom features](https://commonmark.thephpleague.com/customization/overview/). @@ -85,86 +83,85 @@ Custom parsers/renderers can be bundled into extensions which extend CommonMark. - [CommonMark Table Extension](https://github.com/webuni/commonmark-table-extension) - Adds the ability to create tables in CommonMark documents. - [CommonMark Attributes Extension](https://github.com/webuni/commonmark-attributes-extension) - Adds a syntax to define attributes on the various HTML elements. - [Alt Three Emoji](https://github.com/AltThree/Emoji) An emoji parser for CommonMark. - - [uafrica/commonmark-ext](https://github.com/uafrica/commonmark-ext) - Adds strikethrough support. - [Sup Sub extensions](https://github.com/OWS/commonmark-sup-sub-extensions) - Adds support of superscript and subscript (`<sup>` and `<sub>` HTML tags) +Others can be found on [Packagist under the `commonmark-extension` package type](https://packagist.org/packages/league/commonmark?type=commonmark-extension). + If you build your own, feel free to submit a PR to add it to this list! ### Others Check out the other cool things people are doing with `league/commonmark`: <https://packagist.org/packages/league/commonmark/dependents> -## Compatibility with CommonMark ## - -This project aims to fully support the entire [CommonMark spec]. Other flavors of Markdown may work but are not supported. Any/all changes made to the [spec][CommonMark spec] or [JS reference implementation][commonmark.js] should eventually find their way back into this codebase. - -league/commonmark 0.19.0 and higher supports version 0.29 of the [CommonMark spec]. - -(This package is **not** part of CommonMark, but rather a compatible derivative.) - -## Testing +## 🏷️ Versioning -``` bash -$ composer test -``` - -This will also test league/commonmark against the latest supported spec. +[SemVer](http://semver.org/) is followed closely. Minor and patch releases should not introduce breaking changes to the codebase; however, they might change the resulting AST or HTML output of parsed Markdown (due to bug fixes, spec changes, etc.) As a result, you might get slightly different HTML, but any custom code built onto this library should still function correctly. -## Performance Benchmarks +Any classes or methods marked `@internal` are not intended for use outside of this library and are subject to breaking changes at any time, so please avoid using them. -You can compare the performance of **league/commonmark** to other popular parsers by running the included benchmark tool: +## 🛠️ Maintenance & Support -``` bash -$ ./tests/benchmark/benchmark.php -``` +When a new **minor** version (`1.x`) is released, the previous one will continue to receive security and bug fixes for *at least* 3 months. -## Versioning +When a new **major** version is released (`1.0`, `2.0`, etc), the previous one (`0.19.x`) will receive bug fixes for *at least* 3 months and security updates for 6 months after that new release comes out. -[SemVer](http://semver.org/) will be followed closely. 0.x.0 versions will introduce breaking changes to the codebase, so be careful which version constraints you use. **It's highly recommended that you use [Composer's caret operator](https://getcomposer.org/doc/articles/versions.md#caret) to ensure compatibility**; for example: `^0.18`. This is equivalent to `>=0.18.0 <0.19.0`. +(This policy may change in the future and exceptions may be made on a case-by-case basis.) -0.x.y releases should not introduce breaking changes to the codebase; however, they might change the resulting AST or HTML output of parsed Markdown (due to bug fixes, minor spec changes, etc.) As a result, you might get slightly different HTML, but any custom code built onto this library will still function correctly. +## 👷♀️ Contributing -If you're only using the `CommonMarkConverter` class or `ConverterInterface` to convert Markdown (no other class references, custom parsers, etc.), then it should be safe to use a broader constraint like `~0.18`, `>0.18`, etc. I personally promise to never break this specific class in any future 0.x release. +To report a security vulnerability, please use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure with us. -## Stability +If you encounter a bug in the spec, please report it to the [CommonMark] project. Any resulting fix will eventually be implemented in this project as well. -While this package does work well, the underlying code should not be considered "stable" yet. The original spec and JS parser may undergo changes in the near future which will result in corresponding changes to this code. Any methods tagged with `@api` are not expected to change, but other methods/classes might. +Contributions to this library are **welcome**, especially ones that: -Major release 1.0.0 will be reserved for when either the CommonMark spec or this project are considered stable (see [outstanding CommonMark spec issues](http://talk.commonmark.org/t/issues-to-resolve-before-1-0-release/1287)). 0.x.y will be used until that happens. + * Improve usability or flexibility without compromising our ability to adhere to the [CommonMark spec] + * Mirror fixes made to the [reference implementation][commonmark.js] + * Optimize performance + * Fix issues with adhering to the [CommonMark spec] -## Contributing +Major refactoring to core parsing logic should be avoided if possible so that we can easily follow updates made to [the reference implementation][commonmark.js]. That being said, we will absolutely consider changes which don't deviate too far from the reference spec or which are favored by other popular CommonMark implementations. -If you encounter a bug in the spec, please report it to the [CommonMark] project. Any resulting fix will eventually be implemented in this project as well. +Please see [CONTRIBUTING](https://github.com/thephpleague/commonmark/blob/master/.github/CONTRIBUTING.md) for additional details. -For now, I'd like to maintain similar logic as the [JS reference implementation][commonmark.js] until everything is stable. I'll gladly accept any contributions which: +## 🧪 Testing - * Mirror fixes made to the [reference implementation][commonmark.js] - * Optimize existing methods or regular expressions - * Fix issues with adhering to the spec examples +``` bash +$ composer test +``` -Major refactoring should be avoided for now so that we can easily follow updates made to [the reference implementation][commonmark.js]. This restriction will likely be lifted once the CommonMark specs and implementations are considered stable. +This will also test league/commonmark against the latest supported spec. -Please see [CONTRIBUTING](https://github.com/thephpleague/commonmark/blob/master/CONTRIBUTING.md) for additional details. +## 🚀 Performance Benchmarks -## Security +You can compare the performance of **league/commonmark** to other popular parsers by running the included benchmark tool: -If you discover any security related issues, please email your report privately to colinodell@gmail.com instead of using the issue tracker. +``` bash +$ ./tests/benchmark/benchmark.php +``` -## Credits & Acknowledgements +## 👥 Credits & Acknowledgements - [Colin O'Dell][@colinodell] - [John MacFarlane][@jgm] - [All Contributors] -This code is a port of the [CommonMark JS reference implementation][commonmark.js] which is written, maintained and copyrighted by [John MacFarlane]. This project simply wouldn't exist without his work. +This code is partially based on the [CommonMark JS reference implementation][commonmark.js] which is written, maintained and copyrighted by [John MacFarlane]. This project simply wouldn't exist without his work. + +### Sponsors + +We'd also like to extend our sincere thanks the following sponsors who support ongoing development of this project: + + - [RIPS Technologies](https://www.ripstech.com/) for supporting this project with a complimentary [RIPS SaaS](https://www.ripstech.com/product/) license + - [JetBrains](https://www.jetbrains.com/) for supporting this project with complimentary [PhpStorm](https://www.jetbrains.com/phpstorm/) licenses -Also a huge thank you to [JetBrains](https://www.jetbrains.com/) for supporting the development of this project with complimentary [PhpStorm](https://www.jetbrains.com/phpstorm/) licenses. +Are you interested in sponsoring development of this project? [Make a pledge](https://www.patreon.com/join/colinodell) of $10 or more and we'll include your name [on our website](https://commonmark.thephpleague.com/#sponsors)! -## License ## +## 📄 License **league/commonmark** is licensed under the BSD-3 license. See the [`LICENSE`](LICENSE) file for more details. -## Governance +## 🏛️ Governance This project is primarily maintained by [Colin O'Dell][@colinodell]. Members of the [PHP League] Leadership Team may occasionally assist with some of these duties. diff --git a/vendor/league/commonmark/UPGRADE.md b/vendor/league/commonmark/UPGRADE.md deleted file mode 100644 index d33e139bdd..0000000000 --- a/vendor/league/commonmark/UPGRADE.md +++ /dev/null @@ -1,244 +0,0 @@ -# Upgrade Instructions - -**Note:** This file has been deprecated. Future upgrade instructions can be found on our website: <https://commonmark.thephpleague.com/releases> - -## UNRELEASED - -## 0.19 - -The `Environment` and extension framework underwent some major changes in this release. - -### PHP support - -This library no longer supports PHP 5.6 or 7.0. Feel free to remove support for those from your extensions as well. - -### HTML attribute escaping - -Previously, any attributes passed into an `HtmlElement` would need to be pre-escaped. This is now done for you so be sure to remove any references to `Xml::escape()` when applied to attributes. - -This does not affect inner contents which may still need pre-escaping of untrusted user input. - -### Removed classes and interface methods - -The `getName()` method has been removed from several classes: - - - `BlockParserInterface` and `AbstractBlockParser` - - `InlineParserInterface` and `AbstractInlineParser` - -This method was originally intended for supporting XML rendering, which was never implemented, and will likely define names a bit differently if/when we do add support. - -After doing this, the two abstract classes mentioned above had notthing left in them, so those were removed. Any parsers previously extending them should directly implement the corresponding interface instead. - -`InlineContainer` was also removed. - -`Xml::escape()` no longer accepts the deprecated `$preserveEntities` parameter. - -### Removed deprecated `RegexHelper` methods - -Several previously-deprecated methods inside of `RegexHelper` were finally removed. That functionality was made available with static methods and constants, so use those instead. - -### Parameter and return types - -Pretty much every method now uses parameter and return types, including several interfaces. Update your implementations accordingly. - -### Environment interfaces - -We have extracted two interfaces from the `Environment` class: - - - `EnvironmentInterface` - contains all the getters; use this in your parsers, renderers, etc. - - `ConfigurableEnvironmentInterface` - contains all the `add` methods, as well as `setConfig()` and `mergeConfig` - -As a result, `EnvironmentAwareInterface` now requires an `EnvironmentInterface` instead of an `Environment`, so update your parsers/processors/renderers accordingly. - -### Block Elements - -A few methods from `AbstractBlock` have been extracted into a new `AbstractStringContainerBlock` class and corresponding `StringContainerInterface` interface: - - - `addLine(string $line)` - - `getStringContent()` - - `handleRemainingContents(ContextInterface $context, Cursor $cursor)` - -These are used to represent a block which can contain strings of text inside (even if those strings do not contain "inline" elements but just plain text). - -To determine how to best upgrade your existing block element classes, look at the value returned by the `acceptsLines()` method: - - - If `acceptsLines()` returns `false`, simply remove the three methods from the bulleted list above, along with `acceptsLines()` and any calls to `parent::__construct()`. - - If `acceptsLines()` returns `true`, change your base class from `AbstractBlock` to `AbstractStringContainerBlock` and remove `acceptsLines()`. - -Additionally, `StringContainerInterface` now extends this new `StringContainerInterface` interface. Just make sure you've implemented the change mentioned above and you should be fine. - -### Extensions - -Extensions work much differently now. In the past, you'd have functions returning an array of things that the `Environment` would register for you. - -The `ExtensionInterface` was changed to have a single `register(ConfigurableEnvironmentInterface $environment)` method. You must now manually `add()` all your parsers, processors, and renderers yourself directly within the environment you are provided. See the changes made to `CommonMarkCoreExtension` for a good example. - -The `Environment` will still automatically inject the `Environment` or `Configuration` for any parsers, processors, and renderers implementing the `EnvironmentAwareInterface` or `ConfigurationAwareInterface` - that behavior hasn't changed. - -### Adding renderers with short names - -`Environment::add___Renderer()` now requires the fully-qualified class name with namespace as its first argument. Providing just the class name without the namespace will no longer work. - -### Prioritization of parsers, processors, and renderers - -The execution order of these things no longer depends on the order you add them - you can now specific custom priorities when `add()`ing them to the `Environment`! The priority can be any integer you want. The default value is `0`. All CommonMark Core things will have a priority between -255 and 255. The higher the number, the earlier it will be executed. - -### Multiple block/inline renderers per class - -Thanks to the new prioritization system, we now support multiple renderers for the same block/inline class! The first renderer to return a non-null result will be considered the "winner" and no subsequent renderers will execute for that block/inline. No change should be required for most extensions unless you were using some weird workaround to support multiple renderers yourself. - -### `RegexHelper::isEscapable()` no longer accepts `null` values - -In cases where you may have previously passed a `null` value in, skip the call to this method. The previous behavior was to return `false` for `null` values, but `null` is never escapable so it's silly to make this call when we know what the result will be. - -## 0.18.3 - -### Deprecated `Xml::escape()` argument - -Starting in `0.19.0`, the `Xml::escape()` function will no longer accept the second `$preserveEntities` argument as this can lead to XSS issues. Remove this argument if your code uses it. See https://github.com/thephpleague/commonmark/issues/353 for further details. - -## 0.18.0 - -No breaking changes were introduced, but we did add a new interface: `ConverterInface`. Consider depending on this interface in your code instead of the concrete implementation. (See #330) - -## 0.17.0 - -## Minimum PHP version - -The minimum PHP version has been increased to 5.6.5. Users on PHP 5.4 and 5.5 can still use previous versions of this library but will not receive future improvements or bug fixes. - -## Removal of deprecated features - -Pretty much everything marked as `@deprecated` in 0.16.0 has been removed. - -## `RegexHelper` - -We're now taking advantage of PHP 5.6's constant expression feature. This removes the need for `RegexHelper` to be a singleton where complex regular expressions are built and referenced using instance methods. **All regexes are now available as class constants.** - -For example, instead of doing this: - -```php -preg_match('/' . RegexHelper::getInstance()->getPartialRegex(RegexHelper::OPENTAG) . '/', $html); -``` - -You can now do this: - -```php -preg_match('/' . RegexHelper::PARTIAL_OPENTAG . '/', $html); -``` - -(Basically, remove that function call and prefix the constant name with `PARTIAL_`). - -Other instance functions like `getLinkTitleRegex()` which returned a regular expression have also been deprecated in favor of pre-defined constants like `PARTIAL_LINK_TITLE`. - -The now-deprecated functionality still exists in 0.17.0 **but will be removed in the next major release.** - -To summarize: - - - All `REGEX_` constants are fully-formed regexes. Most are unchanged. - - All `PARTIAL_` constants need to be wrapped with a `/` on each side before use. - - All instance methods are deprecated - use a constant instead. - -`RegexHelper` is also `final` now - it only contains constants and static methods and was never intended to be extended. - -## Cursor state - -`Cursor::saveState()` and `Cursor::restoreState()` provide the ability to rollback the state of a `Cursor`. For example: - -```php -$oldState = $cursor->saveState(); - -// Made-up example of trying to parse something using calls -$cursor->advanceToNextNonSpaceOrTab(); -$cursor->match('/foo(bar)?/'); -$cursor->advanceToNextNonSpaceOrTab(); - -if ($someConditionThatWeDidntExpect) { - // Roll back and abort - $cursor->restoreState($oldState); - return; -} -``` - -This useful feature encapsulated the internal, `private` state of the `Cursor` inside of a `CursorState` object with public methods. **This was a design mistake** as it meant that any changes to the interal structure of a `Cursor` meant causing BC-breaks on the `CursorState`. - -`CursorState` was also never intended for any other usage besides saving/restoring. - -For those reasons, we've removed the `CursorState` class entirely and now store the state using an array. **Do not depend on the contents or structure of the array for any reason as it may change in any release without warning!** If you really need to reference information about the prior state of the cursor, either `clone` it or grab the info you need before manipulating it. - -## `InlineContainer` interface - -The `InlineContainer` interface was renamed to `InlineContainerInterface`. The old one still exists as a deprecated interface and will be removed in the next major release. - -## 0.16.0 - -You may continue using the deprecated items listed below in version 0.16.x. **However, these deprecations will be removed in a future major release** (0.17.0+ or 1.0.0, whichever comes first) so consider updating your code now to prepare for that release. - -## `Cursor` and `CursorState` methods - -Basically, all methods in these two classes which contain `First` in their name have been deprecated. The original names were misleading as they always operated on the "first" non-space **after the current position**, which is not always the **first occurrence in the string**. You should instead use the `Next` versions instead: - - - Deprecated `Cursor::advanceWhileMatches()` - - Use `Cursor::match()` instead. - - Deprecated `CursorState::getFirstNonSpaceCache()` - - Use `CursorState::getNextNonSpaceCache()` instead (identical behavior) - - Deprecated `Cursor::getFirstNonSpaceCharacter()` - - Use `Cursor::getNextNonSpaceCharacter()` instead (identical behavior) - - Deprecated `Cursor::getFirstNonSpacePosition()` - - Use `Cursor::getNextNonSpacePosition()` instead (identical behavior) - - Deprecated `Cursor::advanceToFirstNonSpace()` - - You'll probably want to use `advanceToNextNonSpaceOrTab()` if you're using this to parse blocks, but beware that it does not behave identically to the original method. - - If you need the exact functionality as the original, use `advanceToNextNonSpaceOrNewline()` instead. We're currently using this internally for parsing links and references. - -The reason we now have two alternatives to the `advancedToFirstNonSpace()` function is because we accidentally assumed that a single approach would work in two different use cases. As you can see in [issue #279](https://github.com/thephpleague/commonmark/issues/279), this assumption was false. We have therefore split the two different parsing strategies into two different methods. Both will behave similarly for strings that only contain spaces, but they differ when newlines or tabs are involved. - -More details about this change can be found here: https://github.com/thephpleague/commonmark/issues/280 - -### `RegexHelper` - -`RegexHelper::REGEX_UNICODE_WHITESPACE` and `RegexHelper::getLinkDestinationRegex()` were no longer needed as of the 0.15.5 release and have therefore been deprecated and marked for removal. - -### `HtmlRenderer::escape()` - -`HtmlRenderer::escape()` was an instance method making it unusable as a general utility method. Its logic has been moved into a new static Xml::escape() method so use that instead - it takes the same exact methods and implements the same behavior. - -### Final Utility Classes - -The following utility classes were never meant to be extended and have therefore been marked `final`: - - - `Html5Entities` - - `LinkParserHelper` - - `UrlEncoder` - -## 0.15.0 - -### `CursorState` constructor - -The `CursorState` constructor now requires an additional boolean parameter `$partiallyConsumedTab`. -No change should be needed in your application unless you are directly instantiating this object (unlikely). - -### `DelimiterStack::findFirstMatchingOpener()` deprecated - -You should use `DelimiterStack::findMatchingOpener()` instead. - -The method signature is almost identical, except for the inclusion of a by-reference boolean `$oddMatch`. - -The deprecated `findFirstMatchingOpener()` method was removed in the 0.16.0 release. - -## 0.14.0 - -### `safe` option deprecated - -The `safe` option has been deprecated and replaced with two new configuration options: - -* `html_input` - How to handle HTML input. Set this option to one of the following values: - - `strip` - Strip all HTML (equivalent to `'safe' => true`) - - `allow` - Allow all HTML input as-is (equivalent to `'safe' => false) - - `escape` - Escape all HTML - -* `allow_unsafe_links` - Whether to allow risky image URLs and links - - `true` - Allow (equivalent to `'safe' => false`) - - `false` - Remove all risky URLs (equivalent to `'safe' => true`) - -Although `safe` will continue to work until 1.0.0 you should consider updating your configuration now if possible. - diff --git a/vendor/league/commonmark/bin/commonmark b/vendor/league/commonmark/bin/commonmark index 9b9696aeb3..ea3fc3b69b 100755 --- a/vendor/league/commonmark/bin/commonmark +++ b/vendor/league/commonmark/bin/commonmark @@ -15,11 +15,14 @@ $options_raw = getopt('', array( )); foreach ($options_raw as $option => $value) { switch ($option) { + case 'safe': + $options['html_input'] = 'strip'; + $options['allow_unsafe_links'] = false; + break; case 'use-asterisk': case 'use-underscore': case 'enable-strong': case 'enable-em': - case 'safe': if ($value !== true && $value !== false) { fail("Invalid value '$value' for option '$option'"); } diff --git a/vendor/league/commonmark/commonmark-banner.png b/vendor/league/commonmark/commonmark-banner.png Binary files differnew file mode 100644 index 0000000000..5ccbd149ff --- /dev/null +++ b/vendor/league/commonmark/commonmark-banner.png diff --git a/vendor/league/commonmark/composer.json b/vendor/league/commonmark/composer.json index 8c6d8b71fc..56d3cff0d1 100644 --- a/vendor/league/commonmark/composer.json +++ b/vendor/league/commonmark/composer.json @@ -66,7 +66,7 @@ }, "bin": ["bin/commonmark"], "scripts": { - "phpstan": "phpstan analyse -l 4 src", + "phpstan": "phpstan analyse", "phpunit": "phpunit --no-coverage", "test": [ "@phpstan", @@ -75,7 +75,7 @@ }, "extra": { "branch-alias": { - "dev-master": "0.20-dev" + "dev-master": "1.1-dev" } }, "config": { diff --git a/vendor/league/commonmark/src/Block/Element/AbstractBlock.php b/vendor/league/commonmark/src/Block/Element/AbstractBlock.php index 235dbfe13c..8fcc7e2f39 100644 --- a/vendor/league/commonmark/src/Block/Element/AbstractBlock.php +++ b/vendor/league/commonmark/src/Block/Element/AbstractBlock.php @@ -20,6 +20,8 @@ use League\CommonMark\Node\Node; /** * Block-level element + * + * @method parent() ?AbstractBlock */ abstract class AbstractBlock extends Node { @@ -90,6 +92,9 @@ abstract class AbstractBlock extends Node /** * Whether this is a code block * + * Code blocks are extra-greedy - they'll try to consume all subsequent + * lines of content without calling matchesNextLine() each time. + * * @return bool */ abstract public function isCode(): bool; @@ -200,7 +205,10 @@ abstract class AbstractBlock extends Node $this->open = false; $this->endLine = $endLineNumber; - $context->setTip($context->getTip()->parent()); + // This should almost always be true + if ($context->getTip() !== null) { + $context->setTip($context->getTip()->parent()); + } } /** diff --git a/vendor/league/commonmark/src/Block/Element/AbstractStringContainerBlock.php b/vendor/league/commonmark/src/Block/Element/AbstractStringContainerBlock.php index 583c26b52f..52bf70511b 100644 --- a/vendor/league/commonmark/src/Block/Element/AbstractStringContainerBlock.php +++ b/vendor/league/commonmark/src/Block/Element/AbstractStringContainerBlock.php @@ -18,6 +18,9 @@ use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; use League\CommonMark\Util\ArrayCollection; +/** + * @method children() AbstractInline[] + */ abstract class AbstractStringContainerBlock extends AbstractBlock implements StringContainerInterface { /** diff --git a/vendor/league/commonmark/src/Block/Element/BlockQuote.php b/vendor/league/commonmark/src/Block/Element/BlockQuote.php index 569bf8ecd8..46bb257065 100644 --- a/vendor/league/commonmark/src/Block/Element/BlockQuote.php +++ b/vendor/league/commonmark/src/Block/Element/BlockQuote.php @@ -16,6 +16,9 @@ namespace League\CommonMark\Block\Element; use League\CommonMark\Cursor; +/** + * @method children() AbstractBlock[] + */ class BlockQuote extends AbstractBlock { /** diff --git a/vendor/league/commonmark/src/Block/Element/Document.php b/vendor/league/commonmark/src/Block/Element/Document.php index 7ed806b33f..4fe386d008 100644 --- a/vendor/league/commonmark/src/Block/Element/Document.php +++ b/vendor/league/commonmark/src/Block/Element/Document.php @@ -16,25 +16,29 @@ namespace League\CommonMark\Block\Element; use League\CommonMark\Cursor; use League\CommonMark\Reference\ReferenceMap; +use League\CommonMark\Reference\ReferenceMapInterface; +/** + * @method children() AbstractBlock[] + */ class Document extends AbstractBlock { /*** - * @var ReferenceMap + * @var ReferenceMapInterface */ protected $referenceMap; - public function __construct() + public function __construct(?ReferenceMapInterface $referenceMap = null) { $this->setStartLine(1); - $this->referenceMap = new ReferenceMap(); + $this->referenceMap = $referenceMap ?? new ReferenceMap(); } /** - * @return ReferenceMap + * @return ReferenceMapInterface */ - public function getReferenceMap(): ReferenceMap + public function getReferenceMap(): ReferenceMapInterface { return $this->referenceMap; } diff --git a/vendor/league/commonmark/src/Block/Element/ListBlock.php b/vendor/league/commonmark/src/Block/Element/ListBlock.php index dd710d18ea..1d0f53bfce 100644 --- a/vendor/league/commonmark/src/Block/Element/ListBlock.php +++ b/vendor/league/commonmark/src/Block/Element/ListBlock.php @@ -17,6 +17,9 @@ namespace League\CommonMark\Block\Element; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; +/** + * @method children() AbstractBlock[] + */ class ListBlock extends AbstractBlock { const TYPE_UNORDERED = 'Bullet'; diff --git a/vendor/league/commonmark/src/Block/Element/ListItem.php b/vendor/league/commonmark/src/Block/Element/ListItem.php index e557d40f3a..2fec6f037b 100644 --- a/vendor/league/commonmark/src/Block/Element/ListItem.php +++ b/vendor/league/commonmark/src/Block/Element/ListItem.php @@ -16,6 +16,9 @@ namespace League\CommonMark\Block\Element; use League\CommonMark\Cursor; +/** + * @method children() AbstractBlock[] + */ class ListItem extends AbstractBlock { /** diff --git a/vendor/league/commonmark/src/Block/Parser/ATXHeadingParser.php b/vendor/league/commonmark/src/Block/Parser/ATXHeadingParser.php index dfabf7f72a..c39ea3f312 100644 --- a/vendor/league/commonmark/src/Block/Parser/ATXHeadingParser.php +++ b/vendor/league/commonmark/src/Block/Parser/ATXHeadingParser.php @@ -19,7 +19,7 @@ use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; use League\CommonMark\Util\RegexHelper; -class ATXHeadingParser implements BlockParserInterface +final class ATXHeadingParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/BlockQuoteParser.php b/vendor/league/commonmark/src/Block/Parser/BlockQuoteParser.php index 4c4ab61532..7300ede8f3 100644 --- a/vendor/league/commonmark/src/Block/Parser/BlockQuoteParser.php +++ b/vendor/league/commonmark/src/Block/Parser/BlockQuoteParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Block\Element\BlockQuote; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; -class BlockQuoteParser implements BlockParserInterface +final class BlockQuoteParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/FencedCodeParser.php b/vendor/league/commonmark/src/Block/Parser/FencedCodeParser.php index dc279640c2..56ca75717b 100644 --- a/vendor/league/commonmark/src/Block/Parser/FencedCodeParser.php +++ b/vendor/league/commonmark/src/Block/Parser/FencedCodeParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Block\Element\FencedCode; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; -class FencedCodeParser implements BlockParserInterface +final class FencedCodeParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/HtmlBlockParser.php b/vendor/league/commonmark/src/Block/Parser/HtmlBlockParser.php index 107ce1a297..24e8886d78 100644 --- a/vendor/league/commonmark/src/Block/Parser/HtmlBlockParser.php +++ b/vendor/league/commonmark/src/Block/Parser/HtmlBlockParser.php @@ -20,7 +20,7 @@ use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; use League\CommonMark\Util\RegexHelper; -class HtmlBlockParser implements BlockParserInterface +final class HtmlBlockParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/IndentedCodeParser.php b/vendor/league/commonmark/src/Block/Parser/IndentedCodeParser.php index 8e7ed0562c..52cc0e6f74 100644 --- a/vendor/league/commonmark/src/Block/Parser/IndentedCodeParser.php +++ b/vendor/league/commonmark/src/Block/Parser/IndentedCodeParser.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\Paragraph; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; -class IndentedCodeParser implements BlockParserInterface +final class IndentedCodeParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/LazyParagraphParser.php b/vendor/league/commonmark/src/Block/Parser/LazyParagraphParser.php index eaa245028a..d9bfa249db 100644 --- a/vendor/league/commonmark/src/Block/Parser/LazyParagraphParser.php +++ b/vendor/league/commonmark/src/Block/Parser/LazyParagraphParser.php @@ -17,7 +17,7 @@ namespace League\CommonMark\Block\Parser; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; -class LazyParagraphParser implements BlockParserInterface +final class LazyParagraphParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/ListParser.php b/vendor/league/commonmark/src/Block/Parser/ListParser.php index e12a42fb70..0ca69ab9fa 100644 --- a/vendor/league/commonmark/src/Block/Parser/ListParser.php +++ b/vendor/league/commonmark/src/Block/Parser/ListParser.php @@ -22,7 +22,7 @@ use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; use League\CommonMark\Util\RegexHelper; -class ListParser implements BlockParserInterface +final class ListParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Parser/SetExtHeadingParser.php b/vendor/league/commonmark/src/Block/Parser/SetExtHeadingParser.php index c69e2dcab6..e7770ad46d 100644 --- a/vendor/league/commonmark/src/Block/Parser/SetExtHeadingParser.php +++ b/vendor/league/commonmark/src/Block/Parser/SetExtHeadingParser.php @@ -18,10 +18,10 @@ use League\CommonMark\Block\Element\Heading; use League\CommonMark\Block\Element\Paragraph; use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; -use League\CommonMark\ReferenceParser; +use League\CommonMark\Reference\ReferenceParser; use League\CommonMark\Util\RegexHelper; -class SetExtHeadingParser implements BlockParserInterface +final class SetExtHeadingParser implements BlockParserInterface { /** * @param ContextInterface $context @@ -47,7 +47,7 @@ class SetExtHeadingParser implements BlockParserInterface $level = $match[0][0] === '=' ? 1 : 2; $strings = $context->getContainer()->getStrings(); - $strings = $this->resolveReferenceLinkDefinitions($strings, $cursor->getEncoding(), $context->getReferenceParser()); + $strings = $this->resolveReferenceLinkDefinitions($strings, $context->getReferenceParser()); if (empty($strings)) { return false; } @@ -63,15 +63,14 @@ class SetExtHeadingParser implements BlockParserInterface * @see https://github.com/commonmark/commonmark.js/commit/993bbe335931af847460effa99b2411eb643577d * * @param string[] $strings - * @param string $encoding * @param ReferenceParser $referenceParser * * @return string[] */ - private function resolveReferenceLinkDefinitions(array $strings, string $encoding, ReferenceParser $referenceParser): array + private function resolveReferenceLinkDefinitions(array $strings, ReferenceParser $referenceParser): array { foreach ($strings as &$string) { - $cursor = new Cursor($string, $encoding); + $cursor = new Cursor($string); while ($cursor->getCharacter() === '[' && $referenceParser->parse($cursor)) { $string = $cursor->getRemainder(); } diff --git a/vendor/league/commonmark/src/Block/Parser/ThematicBreakParser.php b/vendor/league/commonmark/src/Block/Parser/ThematicBreakParser.php index be008316b1..e9e6f214dd 100644 --- a/vendor/league/commonmark/src/Block/Parser/ThematicBreakParser.php +++ b/vendor/league/commonmark/src/Block/Parser/ThematicBreakParser.php @@ -19,7 +19,7 @@ use League\CommonMark\ContextInterface; use League\CommonMark\Cursor; use League\CommonMark\Util\RegexHelper; -class ThematicBreakParser implements BlockParserInterface +final class ThematicBreakParser implements BlockParserInterface { /** * @param ContextInterface $context diff --git a/vendor/league/commonmark/src/Block/Renderer/BlockQuoteRenderer.php b/vendor/league/commonmark/src/Block/Renderer/BlockQuoteRenderer.php index 9a2a572133..3fcb1c7202 100644 --- a/vendor/league/commonmark/src/Block/Renderer/BlockQuoteRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/BlockQuoteRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\BlockQuote; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class BlockQuoteRenderer implements BlockRendererInterface +final class BlockQuoteRenderer implements BlockRendererInterface { /** * @param BlockQuote $block diff --git a/vendor/league/commonmark/src/Block/Renderer/DocumentRenderer.php b/vendor/league/commonmark/src/Block/Renderer/DocumentRenderer.php index 7300cb43f1..a7df51659d 100644 --- a/vendor/league/commonmark/src/Block/Renderer/DocumentRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/DocumentRenderer.php @@ -18,7 +18,7 @@ use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\Document; use League\CommonMark\ElementRendererInterface; -class DocumentRenderer implements BlockRendererInterface +final class DocumentRenderer implements BlockRendererInterface { /** * @param AbstractBlock|Document $block diff --git a/vendor/league/commonmark/src/Block/Renderer/FencedCodeRenderer.php b/vendor/league/commonmark/src/Block/Renderer/FencedCodeRenderer.php index 29577d6fd9..a60b1d73ff 100644 --- a/vendor/league/commonmark/src/Block/Renderer/FencedCodeRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/FencedCodeRenderer.php @@ -20,7 +20,7 @@ use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; use League\CommonMark\Util\Xml; -class FencedCodeRenderer implements BlockRendererInterface +final class FencedCodeRenderer implements BlockRendererInterface { /** * @param FencedCode $block diff --git a/vendor/league/commonmark/src/Block/Renderer/HeadingRenderer.php b/vendor/league/commonmark/src/Block/Renderer/HeadingRenderer.php index 05d35cbb14..1c4f13f15c 100644 --- a/vendor/league/commonmark/src/Block/Renderer/HeadingRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/HeadingRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\Heading; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class HeadingRenderer implements BlockRendererInterface +final class HeadingRenderer implements BlockRendererInterface { /** * @param Heading $block diff --git a/vendor/league/commonmark/src/Block/Renderer/HtmlBlockRenderer.php b/vendor/league/commonmark/src/Block/Renderer/HtmlBlockRenderer.php index 53f106189b..68d8754fc4 100644 --- a/vendor/league/commonmark/src/Block/Renderer/HtmlBlockRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/HtmlBlockRenderer.php @@ -18,13 +18,13 @@ use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\HtmlBlock; use League\CommonMark\ElementRendererInterface; use League\CommonMark\EnvironmentInterface; -use League\CommonMark\Util\Configuration; use League\CommonMark\Util\ConfigurationAwareInterface; +use League\CommonMark\Util\ConfigurationInterface; -class HtmlBlockRenderer implements BlockRendererInterface, ConfigurationAwareInterface +final class HtmlBlockRenderer implements BlockRendererInterface, ConfigurationAwareInterface { /** - * @var Configuration + * @var ConfigurationInterface */ protected $config; @@ -41,16 +41,11 @@ class HtmlBlockRenderer implements BlockRendererInterface, ConfigurationAwareInt throw new \InvalidArgumentException('Incompatible block type: ' . \get_class($block)); } - // Kept for BC reasons - if ($this->config->getConfig('safe') === true) { + if ($this->config->get('html_input') === EnvironmentInterface::HTML_INPUT_STRIP) { return ''; } - if ($this->config->getConfig('html_input') === EnvironmentInterface::HTML_INPUT_STRIP) { - return ''; - } - - if ($this->config->getConfig('html_input') === EnvironmentInterface::HTML_INPUT_ESCAPE) { + if ($this->config->get('html_input') === EnvironmentInterface::HTML_INPUT_ESCAPE) { return \htmlspecialchars($block->getStringContent(), ENT_NOQUOTES); } @@ -58,9 +53,9 @@ class HtmlBlockRenderer implements BlockRendererInterface, ConfigurationAwareInt } /** - * @param Configuration $configuration + * @param ConfigurationInterface $configuration */ - public function setConfiguration(Configuration $configuration) + public function setConfiguration(ConfigurationInterface $configuration) { $this->config = $configuration; } diff --git a/vendor/league/commonmark/src/Block/Renderer/IndentedCodeRenderer.php b/vendor/league/commonmark/src/Block/Renderer/IndentedCodeRenderer.php index b4de15e1a0..62c483f597 100644 --- a/vendor/league/commonmark/src/Block/Renderer/IndentedCodeRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/IndentedCodeRenderer.php @@ -20,7 +20,7 @@ use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; use League\CommonMark\Util\Xml; -class IndentedCodeRenderer implements BlockRendererInterface +final class IndentedCodeRenderer implements BlockRendererInterface { /** * @param AbstractBlock $block diff --git a/vendor/league/commonmark/src/Block/Renderer/ListBlockRenderer.php b/vendor/league/commonmark/src/Block/Renderer/ListBlockRenderer.php index 755eec7b3e..9683dbd9ba 100644 --- a/vendor/league/commonmark/src/Block/Renderer/ListBlockRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/ListBlockRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\ListBlock; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class ListBlockRenderer implements BlockRendererInterface +final class ListBlockRenderer implements BlockRendererInterface { /** * @param ListBlock $block diff --git a/vendor/league/commonmark/src/Block/Renderer/ListItemRenderer.php b/vendor/league/commonmark/src/Block/Renderer/ListItemRenderer.php index 0a66060fcc..6f165a8af0 100644 --- a/vendor/league/commonmark/src/Block/Renderer/ListItemRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/ListItemRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\ListItem; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class ListItemRenderer implements BlockRendererInterface +final class ListItemRenderer implements BlockRendererInterface { /** * @param ListItem $block diff --git a/vendor/league/commonmark/src/Block/Renderer/ParagraphRenderer.php b/vendor/league/commonmark/src/Block/Renderer/ParagraphRenderer.php index 4c56bab41d..c530ade6b2 100644 --- a/vendor/league/commonmark/src/Block/Renderer/ParagraphRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/ParagraphRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\Paragraph; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class ParagraphRenderer implements BlockRendererInterface +final class ParagraphRenderer implements BlockRendererInterface { /** * @param Paragraph $block diff --git a/vendor/league/commonmark/src/Block/Renderer/ThematicBreakRenderer.php b/vendor/league/commonmark/src/Block/Renderer/ThematicBreakRenderer.php index 2ae9f07925..775f877aea 100644 --- a/vendor/league/commonmark/src/Block/Renderer/ThematicBreakRenderer.php +++ b/vendor/league/commonmark/src/Block/Renderer/ThematicBreakRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Block\Element\ThematicBreak; use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; -class ThematicBreakRenderer implements BlockRendererInterface +final class ThematicBreakRenderer implements BlockRendererInterface { /** * @param ThematicBreak $block diff --git a/vendor/league/commonmark/src/CommonMarkConverter.php b/vendor/league/commonmark/src/CommonMarkConverter.php index a47b825c2a..595ef2170b 100644 --- a/vendor/league/commonmark/src/CommonMarkConverter.php +++ b/vendor/league/commonmark/src/CommonMarkConverter.php @@ -23,10 +23,11 @@ class CommonMarkConverter extends Converter * The currently-installed version. * * This might be a typical `x.y.z` version, or `x.y-dev`. - * - * @deprecated This will be removed in 1.0.0 */ - const VERSION = '0.19.3'; + const VERSION = '1.0.0'; + + /** @var EnvironmentInterface */ + protected $environment; /** * Create a new commonmark converter instance. @@ -44,6 +45,16 @@ class CommonMarkConverter extends Converter $environment->mergeConfig($config); } + $this->environment = $environment; + parent::__construct(new DocParser($environment), new HtmlRenderer($environment)); } + + /** + * @return EnvironmentInterface + */ + public function getEnvironment(): EnvironmentInterface + { + return $this->environment; + } } diff --git a/vendor/league/commonmark/src/ConfigurableEnvironmentInterface.php b/vendor/league/commonmark/src/ConfigurableEnvironmentInterface.php index d9f0fa3d13..b47b1b92a0 100644 --- a/vendor/league/commonmark/src/ConfigurableEnvironmentInterface.php +++ b/vendor/league/commonmark/src/ConfigurableEnvironmentInterface.php @@ -13,9 +13,9 @@ namespace League\CommonMark; use League\CommonMark\Block\Parser\BlockParserInterface; use League\CommonMark\Block\Renderer\BlockRendererInterface; +use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface; use League\CommonMark\Extension\ExtensionInterface; use League\CommonMark\Inline\Parser\InlineParserInterface; -use League\CommonMark\Inline\Processor\InlineProcessorInterface; use League\CommonMark\Inline\Renderer\InlineRendererInterface; /** @@ -63,24 +63,13 @@ interface ConfigurableEnvironmentInterface extends EnvironmentInterface public function addInlineParser(InlineParserInterface $parser, int $priority = 0): ConfigurableEnvironmentInterface; /** - * Registers the given inline processor with the Environment + * Registers the given delimiter processor with the Environment * - * @param InlineProcessorInterface $processor Inline processor instance - * @param int $priority Priority (a higher number will be executed earlier) + * @param DelimiterProcessorInterface $processor Delimiter processors instance * - * @return self - */ - public function addInlineProcessor(InlineProcessorInterface $processor, int $priority = 0): ConfigurableEnvironmentInterface; - - /** - * Registers the given document processor with the Environment - * - * @param DocumentProcessorInterface $processor Document processor instance - * @param int $priority Priority (a higher number will be executed earlier) - * - * @return self + * @return ConfigurableEnvironmentInterface */ - public function addDocumentProcessor(DocumentProcessorInterface $processor, int $priority = 0): ConfigurableEnvironmentInterface; + public function addDelimiterProcessor(DelimiterProcessorInterface $processor): ConfigurableEnvironmentInterface; /** * @param string $blockClass The fully-qualified block element class name the renderer below should handle @@ -101,4 +90,15 @@ interface ConfigurableEnvironmentInterface extends EnvironmentInterface * @return self */ public function addInlineRenderer(string $inlineClass, InlineRendererInterface $renderer, int $priority = 0): ConfigurableEnvironmentInterface; + + /** + * Registers the given event listener + * + * @param string $eventClass Fully-qualified class name of the event this listener should respond to + * @param callable $listener Listener to be executed + * @param int $priority Priority (a higher number will be executed earlier) + * + * @return self + */ + public function addEventListener(string $eventClass, callable $listener, int $priority = 0): ConfigurableEnvironmentInterface; } diff --git a/vendor/league/commonmark/src/Context.php b/vendor/league/commonmark/src/Context.php index 476a73f480..a5799d0220 100644 --- a/vendor/league/commonmark/src/Context.php +++ b/vendor/league/commonmark/src/Context.php @@ -16,6 +16,7 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\Document; +use League\CommonMark\Reference\ReferenceParser; /** * Maintains the current state of the Markdown parser engine @@ -63,11 +64,6 @@ class Context implements ContextInterface protected $blocksParsed = false; /** - * @var string - */ - protected $encoding = 'UTF-8'; - - /** * @var ReferenceParser */ protected $referenceParser; @@ -175,11 +171,16 @@ class Context implements ContextInterface { $this->getBlockCloser()->closeUnmatchedBlocks(); $block->setStartLine($this->lineNumber); - while (!$this->tip->canContain($block)) { + + while ($this->tip !== null && !$this->tip->canContain($block)) { $this->tip->finalize($this, $this->lineNumber); } - $this->tip->appendChild($block); + // This should always be true + if ($this->tip !== null) { + $this->tip->appendChild($block); + } + $this->tip = $block; $this->container = $block; } @@ -226,24 +227,4 @@ class Context implements ContextInterface { return $this->referenceParser; } - - /** - * @return string - */ - public function getEncoding(): string - { - return $this->encoding; - } - - /** - * @param string $encoding - * - * @return $this - */ - public function setEncoding(string $encoding): self - { - $this->encoding = $encoding; - - return $this; - } } diff --git a/vendor/league/commonmark/src/ContextInterface.php b/vendor/league/commonmark/src/ContextInterface.php index c0902acc5e..db623a0e45 100644 --- a/vendor/league/commonmark/src/ContextInterface.php +++ b/vendor/league/commonmark/src/ContextInterface.php @@ -16,6 +16,7 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\Document; +use League\CommonMark\Reference\ReferenceParser; interface ContextInterface { @@ -87,9 +88,4 @@ interface ContextInterface * @return ReferenceParser */ public function getReferenceParser(): ReferenceParser; - - /** - * @return string - */ - public function getEncoding(): string; } diff --git a/vendor/league/commonmark/src/Converter.php b/vendor/league/commonmark/src/Converter.php index 20a6a7b046..500f0b3e81 100644 --- a/vendor/league/commonmark/src/Converter.php +++ b/vendor/league/commonmark/src/Converter.php @@ -22,7 +22,7 @@ class Converter implements ConverterInterface /** * The document parser instance. * - * @var \League\CommonMark\DocParser + * @var \League\CommonMark\DocParserInterface */ protected $docParser; @@ -36,10 +36,10 @@ class Converter implements ConverterInterface /** * Create a new commonmark converter instance. * - * @param DocParser $docParser + * @param DocParserInterface $docParser * @param ElementRendererInterface $htmlRenderer */ - public function __construct(DocParser $docParser, ElementRendererInterface $htmlRenderer) + public function __construct(DocParserInterface $docParser, ElementRendererInterface $htmlRenderer) { $this->docParser = $docParser; $this->htmlRenderer = $htmlRenderer; diff --git a/vendor/league/commonmark/src/Cursor.php b/vendor/league/commonmark/src/Cursor.php index d0dd8e7aca..ca9788211d 100644 --- a/vendor/league/commonmark/src/Cursor.php +++ b/vendor/league/commonmark/src/Cursor.php @@ -79,23 +79,17 @@ class Cursor private $charCache = []; /** - * @param string $line The line being parsed - * @param string $encoding The encoding of that line + * @param string $line The line being parsed (ASCII or UTF-8) */ - public function __construct(string $line, string $encoding = 'UTF-8') + public function __construct(string $line) { $this->line = $line; - $this->encoding = $encoding; - $this->length = \mb_strlen($line, $this->encoding); + $this->length = \mb_strlen($line, 'UTF-8') ?: 0; $this->isMultibyte = $this->length !== \strlen($line); + $this->encoding = $this->isMultibyte ? 'UTF-8' : 'ASCII'; $this->lineContainsTabs = \preg_match('/\t/', $line) > 0; } - public function getEncoding(): string - { - return $this->encoding; - } - /** * Returns the position of the next character which is not a space (or tab) * diff --git a/vendor/league/commonmark/src/Delimiter/Delimiter.php b/vendor/league/commonmark/src/Delimiter/Delimiter.php index 0777547540..de01598f60 100644 --- a/vendor/league/commonmark/src/Delimiter/Delimiter.php +++ b/vendor/league/commonmark/src/Delimiter/Delimiter.php @@ -14,53 +14,53 @@ namespace League\CommonMark\Delimiter; -use League\CommonMark\Node\Node; +use League\CommonMark\Inline\Element\AbstractStringContainer; -class Delimiter +final class Delimiter implements DelimiterInterface { /** @var string */ - protected $char; + private $char; /** @var int */ - protected $numDelims; + private $length; /** @var int */ - protected $origDelims; + private $originalLength; - /** @var Node */ - protected $inlineNode; + /** @var AbstractStringContainer */ + private $inlineNode; - /** @var Delimiter|null */ - protected $previous; + /** @var DelimiterInterface|null */ + private $previous; - /** @var Delimiter|null */ - protected $next; + /** @var DelimiterInterface|null */ + private $next; /** @var bool */ - protected $canOpen; + private $canOpen; /** @var bool */ - protected $canClose; + private $canClose; /** @var bool */ - protected $active; + private $active; /** @var int|null */ - protected $index; + private $index; /** - * @param string $char - * @param int $numDelims - * @param Node $node - * @param bool $canOpen - * @param bool $canClose - * @param int|null $index + * @param string $char + * @param int $numDelims + * @param AbstractStringContainer $node + * @param bool $canOpen + * @param bool $canClose + * @param int|null $index */ - public function __construct(string $char, int $numDelims, Node $node, bool $canOpen, bool $canClose, ?int $index = null) + public function __construct(string $char, int $numDelims, AbstractStringContainer $node, bool $canOpen, bool $canClose, ?int $index = null) { $this->char = $char; - $this->numDelims = $numDelims; - $this->origDelims = $numDelims; + $this->length = $numDelims; + $this->originalLength = $numDelims; $this->inlineNode = $node; $this->canOpen = $canOpen; $this->canClose = $canClose; @@ -69,7 +69,7 @@ class Delimiter } /** - * @return bool + * {@inheritdoc} */ public function canClose(): bool { @@ -77,19 +77,15 @@ class Delimiter } /** - * @param bool $canClose - * - * @return $this + * {@inheritdoc} */ public function setCanClose(bool $canClose) { $this->canClose = $canClose; - - return $this; } /** - * @return bool + * {@inheritdoc} */ public function canOpen(): bool { @@ -97,19 +93,7 @@ class Delimiter } /** - * @param bool $canOpen - * - * @return $this - */ - public function setCanOpen(bool $canOpen) - { - $this->canOpen = $canOpen; - - return $this; - } - - /** - * @return bool + * {@inheritdoc} */ public function isActive(): bool { @@ -117,19 +101,15 @@ class Delimiter } /** - * @param bool $active - * - * @return $this + * {@inheritdoc} */ public function setActive(bool $active) { $this->active = $active; - - return $this; } /** - * @return string + * {@inheritdoc} */ public function getChar(): string { @@ -137,19 +117,7 @@ class Delimiter } /** - * @param string $char - * - * @return $this - */ - public function setChar(string $char) - { - $this->char = $char; - - return $this; - } - - /** - * @return int|null + * {@inheritdoc} */ public function getIndex(): ?int { @@ -157,99 +125,65 @@ class Delimiter } /** - * @param int|null $index - * - * @return $this + * {@inheritdoc} */ - public function setIndex(?int $index) - { - $this->index = $index; - - return $this; - } - - /** - * @return Delimiter|null - */ - public function getNext(): ?self + public function getNext(): ?DelimiterInterface { return $this->next; } /** - * @param Delimiter|null $next - * - * @return $this + * {@inheritdoc} */ - public function setNext(?self $next) + public function setNext(?DelimiterInterface $next) { $this->next = $next; - - return $this; } /** - * @return int + * {@inheritdoc} */ - public function getNumDelims(): int + public function getLength(): int { - return $this->numDelims; + return $this->length; } /** - * @param int $numDelims - * - * @return $this + * {@inheritdoc} */ - public function setNumDelims(int $numDelims) + public function setLength(int $length) { - $this->numDelims = $numDelims; - - return $this; + $this->length = $length; } /** - * @return int + * {@inheritdoc} */ - public function getOrigDelims(): int + public function getOriginalLength(): int { - return $this->origDelims; + return $this->originalLength; } /** - * @return Node + * {@inheritdoc} */ - public function getInlineNode(): Node + public function getInlineNode(): AbstractStringContainer { return $this->inlineNode; } /** - * @param Node $node - * - * @return $this - */ - public function setInlineNode(Node $node) - { - $this->inlineNode = $node; - - return $this; - } - - /** - * @return Delimiter|null + * {@inheritdoc} */ - public function getPrevious(): ?self + public function getPrevious(): ?DelimiterInterface { return $this->previous; } /** - * @param Delimiter|null $previous - * - * @return $this + * {@inheritdoc} */ - public function setPrevious(?self $previous) + public function setPrevious(?DelimiterInterface $previous): DelimiterInterface { $this->previous = $previous; diff --git a/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php b/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php new file mode 100644 index 0000000000..abdca1154e --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/DelimiterInterface.php @@ -0,0 +1,90 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter; + +use League\CommonMark\Inline\Element\AbstractStringContainer; + +interface DelimiterInterface +{ + /** + * @return bool + */ + public function canClose(): bool; + + /** + * @return bool + */ + public function canOpen(): bool; + + /** + * @return bool + */ + public function isActive(): bool; + + /** + * @param bool $active + */ + public function setActive(bool $active); + + /** + * @return string + */ + public function getChar(): string; + + /** + * @return int|null + */ + public function getIndex(): ?int; + + /** + * @return DelimiterInterface|null + */ + public function getNext(): ?DelimiterInterface; + + /** + * @param DelimiterInterface|null $next + */ + public function setNext(?DelimiterInterface $next); + + /** + * @return int + */ + public function getLength(): int; + + /** + * @param int $length + */ + public function setLength(int $length); + + /** + * @return int + */ + public function getOriginalLength(): int; + + /** + * @return AbstractStringContainer + */ + public function getInlineNode(): AbstractStringContainer; + + /** + * @return DelimiterInterface|null + */ + public function getPrevious(): ?DelimiterInterface; + + /** + * @param DelimiterInterface|null $previous + */ + public function setPrevious(?DelimiterInterface $previous); +} diff --git a/vendor/league/commonmark/src/Delimiter/DelimiterStack.php b/vendor/league/commonmark/src/Delimiter/DelimiterStack.php index 04bc1f65f3..f4727d186e 100644 --- a/vendor/league/commonmark/src/Delimiter/DelimiterStack.php +++ b/vendor/league/commonmark/src/Delimiter/DelimiterStack.php @@ -8,25 +8,26 @@ * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) * - (c) John MacFarlane * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace League\CommonMark\Delimiter; -class DelimiterStack +use League\CommonMark\Delimiter\Processor\DelimiterProcessorCollection; +use League\CommonMark\Inline\AdjacentTextMerger; + +final class DelimiterStack { /** - * @var Delimiter|null + * @var DelimiterInterface|null */ - protected $top; - - public function getTop(): ?Delimiter - { - return $this->top; - } + private $top; - public function push(Delimiter $newDelimiter) + public function push(DelimiterInterface $newDelimiter) { $newDelimiter->setPrevious($this->top); @@ -38,11 +39,11 @@ class DelimiterStack } /** - * @param Delimiter|null $stackBottom + * @param DelimiterInterface|null $stackBottom * - * @return Delimiter|null + * @return DelimiterInterface|null */ - public function findEarliest(Delimiter $stackBottom = null): ?Delimiter + private function findEarliest(DelimiterInterface $stackBottom = null): ?DelimiterInterface { $delimiter = $this->top; while ($delimiter !== null && $delimiter->getPrevious() !== $stackBottom) { @@ -53,9 +54,9 @@ class DelimiterStack } /** - * @param Delimiter $delimiter + * @param DelimiterInterface $delimiter */ - public function removeDelimiter(Delimiter $delimiter) + public function removeDelimiter(DelimiterInterface $delimiter) { if ($delimiter->getPrevious() !== null) { $delimiter->getPrevious()->setNext($delimiter->getNext()); @@ -69,10 +70,26 @@ class DelimiterStack } } + private function removeDelimiterAndNode(DelimiterInterface $delimiter) + { + $delimiter->getInlineNode()->detach(); + $this->removeDelimiter($delimiter); + } + + private function removeDelimitersBetween(DelimiterInterface $opener, DelimiterInterface $closer) + { + $delimiter = $closer->getPrevious(); + while ($delimiter !== null && $delimiter !== $opener) { + $previous = $delimiter->getPrevious(); + $this->removeDelimiter($delimiter); + $delimiter = $previous; + } + } + /** - * @param Delimiter|null $stackBottom + * @param DelimiterInterface|null $stackBottom */ - public function removeAll(Delimiter $stackBottom = null) + public function removeAll(DelimiterInterface $stackBottom = null) { while ($this->top && $this->top !== $stackBottom) { $this->removeDelimiter($this->top); @@ -97,9 +114,9 @@ class DelimiterStack /** * @param string|string[] $characters * - * @return Delimiter|null + * @return DelimiterInterface|null */ - public function searchByCharacter($characters): ?Delimiter + public function searchByCharacter($characters): ?DelimiterInterface { if (!\is_array($characters)) { $characters = [$characters]; @@ -116,73 +133,90 @@ class DelimiterStack return $opener; } - /** - * @param string|string[] $characters - * @param callable $callback - * @param Delimiter $stackBottom - */ - public function iterateByCharacters($characters, callable $callback, Delimiter $stackBottom = null) + public function processDelimiters(?DelimiterInterface $stackBottom, DelimiterProcessorCollection $processors) { - if (!\is_array($characters)) { - $characters = [$characters]; - } - - $openersBottom = \array_fill_keys($characters, $stackBottom); + $openersBottom = []; // Find first closer above stackBottom $closer = $this->findEarliest($stackBottom); + // Move forward, looking for closers, and handling each while ($closer !== null) { - $closerChar = $closer->getChar(); + $delimiterChar = $closer->getChar(); - if (!$closer->canClose() || !\in_array($closerChar, $characters)) { + $delimiterProcessor = $processors->getDelimiterProcessor($delimiterChar); + if (!$closer->canClose() || $delimiterProcessor === null) { $closer = $closer->getNext(); continue; } - $oddMatch = false; - $opener = $this->findMatchingOpener($closer, $openersBottom, $stackBottom, $oddMatch); - if ($opener) { - $closer = $callback($opener, $closer, $this); - } elseif ($oddMatch) { - $closer = $closer->getNext(); - } else { - $oldCloser = $closer; - $closer = $closer->getNext(); - // Set lower bound for future searches for openers: - $openersBottom[$closerChar] = $oldCloser->getPrevious(); - if (!$oldCloser->canOpen()) { - // We can remove a closer that can't be an opener, - // once we've seen there's no matching opener: - $this->removeDelimiter($oldCloser); + $openingDelimiterChar = $delimiterProcessor->getOpeningCharacter(); + + $useDelims = 0; + $openerFound = false; + $potentialOpenerFound = false; + $opener = $closer->getPrevious(); + while ($opener !== null && $opener !== $stackBottom && $opener !== ($openersBottom[$delimiterChar] ?? null)) { + if ($opener->canOpen() && $opener->getChar() === $openingDelimiterChar) { + $potentialOpenerFound = true; + $useDelims = $delimiterProcessor->getDelimiterUse($opener, $closer); + if ($useDelims > 0) { + $openerFound = true; + break; + } } + $opener = $opener->getPrevious(); + } + + if (!$openerFound) { + if (!$potentialOpenerFound) { + // Only do this when we didn't even have a potential + // opener (one that matches the character and can open). + // If an opener was rejected because of the number of + // delimiters (e.g. because of the "multiple of 3" + // Set lower bound for future searches for openersrule), + // we want to consider it next time because the number + // of delimiters can change as we continue processing. + $openersBottom[$delimiterChar] = $closer->getPrevious(); + if (!$closer->canOpen()) { + // We can remove a closer that can't be an opener, + // once we've seen there's no matching opener. + $this->removeDelimiter($closer); + } + } + $closer = $closer->getNext(); continue; } - } - } - /** - * @param Delimiter $closer - * @param array $openersBottom - * @param Delimiter|null $stackBottom - * @param bool $oddMatch - * - * @return Delimiter|null - */ - protected function findMatchingOpener(Delimiter $closer, array $openersBottom, Delimiter $stackBottom = null, bool &$oddMatch = false): ?Delimiter - { - $closerChar = $closer->getChar(); - $opener = $closer->getPrevious(); + $openerNode = $opener->getInlineNode(); + $closerNode = $closer->getInlineNode(); + + // Remove number of used delimiters from stack and inline nodes. + $opener->setLength($opener->getLength() - $useDelims); + $closer->setLength($closer->getLength() - $useDelims); - while ($opener !== null && $opener !== $stackBottom && $opener !== $openersBottom[$closerChar]) { - $oddMatch = ($closer->canOpen() || $opener->canClose()) && $closer->getOrigDelims() % 3 !== 0 && ($opener->getOrigDelims() + $closer->getOrigDelims()) % 3 === 0; - if ($opener->getChar() === $closerChar && $opener->canOpen() && !$oddMatch) { - return $opener; + $openerNode->setContent(\substr($openerNode->getContent(), 0, -$useDelims)); + $closerNode->setContent(\substr($closerNode->getContent(), 0, -$useDelims)); + + $this->removeDelimitersBetween($opener, $closer); + // The delimiter processor can re-parent the nodes between opener and closer, + // so make sure they're contiguous already. Exclusive because we want to keep opener/closer themselves. + AdjacentTextMerger::mergeTextNodesBetweenExclusive($openerNode, $closerNode); + $delimiterProcessor->process($openerNode, $closerNode, $useDelims); + + // No delimiter characters left to process, so we can remove delimiter and the now empty node. + if ($opener->getLength() === 0) { + $this->removeDelimiterAndNode($opener); } - $opener = $opener->getPrevious(); + if ($closer->getLength() === 0) { + $next = $closer->getNext(); + $this->removeDelimiterAndNode($closer); + $closer = $next; + } } - return null; + // Remove all delimiters + $this->removeAll($stackBottom); } } diff --git a/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php new file mode 100644 index 0000000000..433dcde8f3 --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php @@ -0,0 +1,73 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter\Processor; + +final class DelimiterProcessorCollection implements DelimiterProcessorCollectionInterface +{ + /** @var array<string,DelimiterProcessorInterface>|DelimiterProcessorInterface[] */ + private $processorsByChar = []; + + public function add(DelimiterProcessorInterface $processor) + { + $opening = $processor->getOpeningCharacter(); + $closing = $processor->getClosingCharacter(); + + if ($opening === $closing) { + $old = $this->processorsByChar[$opening] ?? null; + if ($old !== null && $old->getOpeningCharacter() === $old->getClosingCharacter()) { + $this->addStaggeredDelimiterProcessorForChar($opening, $old, $processor); + } else { + $this->addDelimiterProcessorForChar($opening, $processor); + } + } else { + $this->addDelimiterProcessorForChar($opening, $processor); + $this->addDelimiterProcessorForChar($closing, $processor); + } + } + + public function getDelimiterProcessor(string $char): ?DelimiterProcessorInterface + { + return $this->processorsByChar[$char] ?? null; + } + + public function getDelimiterCharacters(): array + { + return array_keys($this->processorsByChar); + } + + private function addDelimiterProcessorForChar(string $delimiterChar, DelimiterProcessorInterface $processor) + { + if (isset($this->processorsByChar[$delimiterChar])) { + throw new \InvalidArgumentException(sprintf('Delim processor for character "%s" already exists', $processor->getOpeningCharacter())); + } + + $this->processorsByChar[$delimiterChar] = $processor; + } + + private function addStaggeredDelimiterProcessorForChar(string $opening, DelimiterProcessorInterface $old, DelimiterProcessorInterface $new): void + { + if ($old instanceof StaggeredDelimiterProcessor) { + $s = $old; + } else { + $s = new StaggeredDelimiterProcessor($opening, $old); + } + + $s->add($new); + $this->processorsByChar[$opening] = $s; + } +} diff --git a/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php new file mode 100644 index 0000000000..f35e0d16ea --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php @@ -0,0 +1,46 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter\Processor; + +interface DelimiterProcessorCollectionInterface +{ + /** + * Add the given delim processor to the collection + * + * @param DelimiterProcessorInterface $processor The delim processor to add + * + * @throws \InvalidArgumentException Exception will be thrown if attempting to add multiple processors for the same character + */ + public function add(DelimiterProcessorInterface $processor); + + /** + * Returns the delim processor which handles the given character if one exists + * + * @param string $char + * + * @return DelimiterProcessorInterface|null + */ + public function getDelimiterProcessor(string $char): ?DelimiterProcessorInterface; + + /** + * Returns an array of delimiter characters who have associated processors + * + * @return string[] + */ + public function getDelimiterCharacters(): array; +} diff --git a/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php new file mode 100644 index 0000000000..bf2ff80130 --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php @@ -0,0 +1,84 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter\Processor; + +use League\CommonMark\Delimiter\DelimiterInterface; +use League\CommonMark\Inline\Element\AbstractStringContainer; + +/** + * Interface for a delimiter processor + */ +interface DelimiterProcessorInterface +{ + /** + * Returns the character that marks the beginning of a delimited node. + * + * This must not clash with any other processors being added to the environment. + * + * @return string + */ + public function getOpeningCharacter(): string; + + /** + * Returns the character that marks the ending of a delimited node. + * + * This must not clash with any other processors being added to the environment. + * + * Note that for a symmetric delimiter such as "*", this is the same as the opening. + * + * @return string + */ + public function getClosingCharacter(): string; + + /** + * Minimum number of delimiter characters that are needed to active this. + * + * Must be at least 1. + * + * @return int + */ + public function getMinLength(): int; + + /** + * Determine how many (if any) of the delimiter characters should be used. + * + * This allows implementations to decide how many characters to be used + * based on the properties of the delimiter runs. An implementation can also + * return 0 when it doesn't want to allow this particular combination of + * delimiter runs. + * + * @param DelimiterInterface $opener The opening delimiter run + * @param DelimiterInterface $closer The closing delimiter run + * + * @return int + */ + public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int; + + /** + * Process the matched delimiters, e.g. by wrapping the nodes between opener + * and closer in a new node, or appending a new node after the opener. + * + * Note that removal of the delimiter from the delimiter nodes and detaching + * them is done by the caller. + * + * @param AbstractStringContainer $opener The node that contained the opening delimiter + * @param AbstractStringContainer $closer The node that contained the closing delimiter + * @param int $delimiterUse The number of delimiters that were used + */ + public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse); +} diff --git a/vendor/league/commonmark/src/Delimiter/Processor/EmphasisDelimiterProcessor.php b/vendor/league/commonmark/src/Delimiter/Processor/EmphasisDelimiterProcessor.php new file mode 100644 index 0000000000..dfae1f3268 --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/Processor/EmphasisDelimiterProcessor.php @@ -0,0 +1,123 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter\Processor; + +use League\CommonMark\Delimiter\DelimiterInterface; +use League\CommonMark\Inline\Element\AbstractStringContainer; +use League\CommonMark\Inline\Element\Emphasis; +use League\CommonMark\Inline\Element\Strong; +use League\CommonMark\Util\ConfigurationAwareInterface; +use League\CommonMark\Util\ConfigurationInterface; + +final class EmphasisDelimiterProcessor implements DelimiterProcessorInterface, ConfigurationAwareInterface +{ + /** @var string */ + private $char; + + /** @var ConfigurationInterface|null */ + private $config; + + /** + * @param string $char The emphasis character to use (typically '*' or '_') + */ + public function __construct(string $char) + { + $this->char = $char; + } + + /** + * {@inheritdoc} + */ + public function getOpeningCharacter(): string + { + return $this->char; + } + + /** + * {@inheritdoc} + */ + public function getClosingCharacter(): string + { + return $this->char; + } + + /** + * {@inheritdoc} + */ + public function getMinLength(): int + { + return 1; + } + + /** + * {@inheritdoc} + */ + public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int + { + // "Multiple of 3" rule for internal delimiter runs + if (($opener->canClose() || $closer->canOpen()) && $closer->getOriginalLength() % 3 !== 0 && ($opener->getOriginalLength() + $closer->getOriginalLength()) % 3 === 0) { + return 0; + } + + // Calculate actual number of delimiters used from this closer + if ($opener->getLength() >= 2 && $closer->getLength() >= 2) { + if ($this->config && $this->config->get('enable_strong', true)) { + return 2; + } + + return 0; + } + + if ($this->config && $this->config->get('enable_em', true)) { + return 1; + } + + return 0; + } + + /** + * {@inheritdoc} + */ + public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse) + { + if ($delimiterUse === 1) { + $emphasis = new Emphasis(); + } elseif ($delimiterUse === 2) { + $emphasis = new Strong(); + } else { + return; + } + + $next = $opener->next(); + while ($next !== null && $next !== $closer) { + $tmp = $next->next(); + $emphasis->appendChild($next); + $next = $tmp; + } + + $opener->insertAfter($emphasis); + } + + /** + * @param ConfigurationInterface $configuration + */ + public function setConfiguration(ConfigurationInterface $configuration) + { + $this->config = $configuration; + } +} diff --git a/vendor/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php b/vendor/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php new file mode 100644 index 0000000000..5364ca2bf1 --- /dev/null +++ b/vendor/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php @@ -0,0 +1,117 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Delimiter\Processor; + +use League\CommonMark\Delimiter\DelimiterInterface; +use League\CommonMark\Inline\Element\AbstractStringContainer; + +/** + * An implementation of DelimiterProcessorInterface that dispatches all calls to two or more other DelimiterProcessors + * depending on the length of the delimiter run. All child DelimiterProcessors must have different minimum + * lengths. A given delimiter run is dispatched to the child with the largest acceptable minimum length. If no + * child is applicable, the one with the largest minimum length is chosen. + * + * @internal + */ +final class StaggeredDelimiterProcessor implements DelimiterProcessorInterface +{ + private $delimiterChar; + + private $minLength = 0; + + /** @var array<int, DelimiterProcessorInterface>|DelimiterProcessorInterface[] */ + private $processors = []; // keyed by minLength in reverse order + + public function __construct(string $char, DelimiterProcessorInterface $processor) + { + $this->delimiterChar = $char; + $this->add($processor); + } + + /** + * {@inheritdoc} + */ + public function getOpeningCharacter(): string + { + return $this->delimiterChar; + } + + /** + * {@inheritdoc} + */ + public function getClosingCharacter(): string + { + return $this->delimiterChar; + } + + /** + * {@inheritdoc} + */ + public function getMinLength(): int + { + return $this->minLength; + } + + /** + * Adds the given processor to this staggered delimiter processor + * + * @param DelimiterProcessorInterface $processor + */ + public function add(DelimiterProcessorInterface $processor) + { + $len = $processor->getMinLength(); + + if (isset($this->processors[$len])) { + throw new \InvalidArgumentException(sprintf('Cannot add two delimiter processors for char "%s" and minimum length %d', $this->delimiterChar, $len)); + } + + $this->processors[$len] = $processor; + krsort($this->processors); + + $this->minLength = min($this->minLength, $len); + } + + /** + * {@inheritdoc} + */ + public function getDelimiterUse(DelimiterInterface $opener, DelimiterInterface $closer): int + { + return $this->findProcessor($opener->getLength())->getDelimiterUse($opener, $closer); + } + + /** + * {@inheritdoc} + */ + public function process(AbstractStringContainer $opener, AbstractStringContainer $closer, int $delimiterUse) + { + return $this->findProcessor($delimiterUse)->process($opener, $closer, $delimiterUse); + } + + private function findProcessor(int $len): DelimiterProcessorInterface + { + // Find the "longest" processor which can handle this length + foreach ($this->processors as $processor) { + if ($processor->getMinLength() <= $len) { + return $processor; + } + } + + // Just use the first one in our list + /** @var DelimiterProcessorInterface $first */ + $first = reset($this->processors); + + return $first; + } +} diff --git a/vendor/league/commonmark/src/DocParser.php b/vendor/league/commonmark/src/DocParser.php index 457efee115..45eee94ff2 100644 --- a/vendor/league/commonmark/src/DocParser.php +++ b/vendor/league/commonmark/src/DocParser.php @@ -15,17 +15,18 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; +use League\CommonMark\Block\Element\AbstractStringContainerBlock; use League\CommonMark\Block\Element\Document; -use League\CommonMark\Block\Element\InlineContainerInterface; use League\CommonMark\Block\Element\Paragraph; use League\CommonMark\Block\Element\StringContainerInterface; +use League\CommonMark\Event\DocumentParsedEvent; -class DocParser +final class DocParser implements DocParserInterface { /** * @var EnvironmentInterface */ - protected $environment; + private $environment; /** * @var InlineParserEngine @@ -48,14 +49,6 @@ class DocParser } /** - * @return EnvironmentInterface - */ - public function getEnvironment(): EnvironmentInterface - { - return $this->environment; - } - - /** * @param string $input * * @return string[] @@ -81,8 +74,8 @@ class DocParser */ public function parse(string $input): Document { - $context = new Context(new Document(), $this->getEnvironment()); - $context->setEncoding(\mb_detect_encoding($input, 'ASCII,UTF-8', true) ?: 'ISO-8859-1'); + $document = new Document(); + $context = new Context($document, $this->environment); $lines = $this->preProcessInput($input); foreach ($lines as $line) { @@ -97,9 +90,9 @@ class DocParser $this->processInlines($context); - $this->processDocument($context); + $this->environment->dispatch(new DocumentParsedEvent($document)); - return $context->getDocument(); + return $document; } private function incorporateLine(ContextInterface $context) @@ -107,7 +100,7 @@ class DocParser $context->getBlockCloser()->resetTip(); $context->setBlocksParsed(false); - $cursor = new Cursor($context->getLine(), $context->getEncoding()); + $cursor = new Cursor($context->getLine()); $this->resetContainer($context, $cursor); $context->getBlockCloser()->setLastMatchedContainer($context->getContainer()); @@ -139,13 +132,6 @@ class DocParser } } - private function processDocument(ContextInterface $context) - { - foreach ($this->getEnvironment()->getDocumentProcessors() as $documentProcessor) { - $documentProcessor->processDocument($context->getDocument()); - } - } - private function processInlines(ContextInterface $context) { $walker = $context->getDocument()->walker(); @@ -156,7 +142,7 @@ class DocParser } $node = $event->getNode(); - if ($node instanceof InlineContainerInterface) { + if ($node instanceof AbstractStringContainerBlock) { $this->inlineParserEngine->parse($node, $context->getDocument()->getReferenceMap()); } } @@ -208,7 +194,7 @@ class DocParser } } - if (!$parsed || $context->getContainer() instanceof StringContainerInterface || $context->getTip()->getDepth() >= $this->maxNestingLevel) { + if (!$parsed || $context->getContainer() instanceof StringContainerInterface || (($tip = $context->getTip()) && $tip->getDepth() >= $this->maxNestingLevel)) { $context->setBlocksParsed(true); break; } diff --git a/vendor/league/commonmark/src/DocumentProcessorInterface.php b/vendor/league/commonmark/src/DocParserInterface.php index 90f55266cf..f43c93093e 100644 --- a/vendor/league/commonmark/src/DocumentProcessorInterface.php +++ b/vendor/league/commonmark/src/DocParserInterface.php @@ -5,9 +5,6 @@ * * (c) Colin O'Dell <colinodell@gmail.com> * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ @@ -16,12 +13,12 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\Document; -interface DocumentProcessorInterface +interface DocParserInterface { /** - * @param Document $document + * @param string $input * - * @return void + * @return Document */ - public function processDocument(Document $document); + public function parse(string $input): Document; } diff --git a/vendor/league/commonmark/src/ElementRendererInterface.php b/vendor/league/commonmark/src/ElementRendererInterface.php index 46c8a8dd1b..86f28b3f50 100644 --- a/vendor/league/commonmark/src/ElementRendererInterface.php +++ b/vendor/league/commonmark/src/ElementRendererInterface.php @@ -31,6 +31,13 @@ interface ElementRendererInterface public function getOption(string $option, $default = null); /** + * @param AbstractInline $inline + * + * @return string + */ + public function renderInline(AbstractInline $inline): string; + + /** * @param AbstractInline[] $inlines * * @return string diff --git a/vendor/league/commonmark/src/Environment.php b/vendor/league/commonmark/src/Environment.php index 0a8dca3f81..a82609612e 100644 --- a/vendor/league/commonmark/src/Environment.php +++ b/vendor/league/commonmark/src/Environment.php @@ -16,10 +16,12 @@ namespace League\CommonMark; use League\CommonMark\Block\Parser\BlockParserInterface; use League\CommonMark\Block\Renderer\BlockRendererInterface; +use League\CommonMark\Delimiter\Processor\DelimiterProcessorCollection; +use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface; +use League\CommonMark\Event\AbstractEvent; use League\CommonMark\Extension\CommonMarkCoreExtension; use League\CommonMark\Extension\ExtensionInterface; use League\CommonMark\Inline\Parser\InlineParserInterface; -use League\CommonMark\Inline\Processor\InlineProcessorInterface; use League\CommonMark\Inline\Renderer\InlineRendererInterface; use League\CommonMark\Util\Configuration; use League\CommonMark\Util\ConfigurationAwareInterface; @@ -58,14 +60,9 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment private $inlineParsersByCharacter = []; /** - * @var PrioritizedList<DocumentProcessorInterface> + * @var DelimiterProcessorCollection */ - private $documentProcessors; - - /** - * @var PrioritizedList<InlineProcessorInterface> - */ - private $inlineProcessors; + private $delimiterProcessors; /** * @var array<string, PrioritizedList<BlockRendererInterface>> @@ -78,6 +75,11 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment private $inlineRenderersByClass = []; /** + * @var array<string, PrioritizedList<callable>> + */ + private $listeners = []; + + /** * @var Configuration */ private $config; @@ -93,8 +95,7 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment $this->blockParsers = new PrioritizedList(); $this->inlineParsers = new PrioritizedList(); - $this->documentProcessors = new PrioritizedList(); - $this->inlineProcessors = new PrioritizedList(); + $this->delimiterProcessors = new DelimiterProcessorCollection(); } /** @@ -104,7 +105,7 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment { $this->assertUninitialized('Failed to modify configuration.'); - $this->config->mergeConfig($config); + $this->config->merge($config); } /** @@ -114,7 +115,7 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment { $this->assertUninitialized('Failed to modify configuration.'); - $this->config->setConfig($config); + $this->config->replace($config); } /** @@ -122,7 +123,7 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment */ public function getConfig($key = null, $default = null) { - return $this->config->getConfig($key, $default); + return $this->config->get($key, $default); } /** @@ -162,24 +163,10 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment /** * {@inheritdoc} */ - public function addInlineProcessor(InlineProcessorInterface $processor, int $priority = 0): ConfigurableEnvironmentInterface - { - $this->assertUninitialized('Failed to add inline processor.'); - - $this->inlineProcessors->add($processor, $priority); - $this->injectEnvironmentAndConfigurationIfNeeded($processor); - - return $this; - } - - /** - * {@inheritdoc} - */ - public function addDocumentProcessor(DocumentProcessorInterface $processor, int $priority = 0): ConfigurableEnvironmentInterface + public function addDelimiterProcessor(DelimiterProcessorInterface $processor): ConfigurableEnvironmentInterface { - $this->assertUninitialized('Failed to add document processor.'); - - $this->documentProcessors->add($processor, $priority); + $this->assertUninitialized('Failed to add delimiter processor.'); + $this->delimiterProcessors->add($processor); $this->injectEnvironmentAndConfigurationIfNeeded($processor); return $this; @@ -246,21 +233,11 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment /** * {@inheritdoc} */ - public function getInlineProcessors(): iterable - { - $this->initializeExtensions(); - - return $this->inlineProcessors->getIterator(); - } - - /** - * {@inheritdoc} - */ - public function getDocumentProcessors(): iterable + public function getDelimiterProcessors(): DelimiterProcessorCollection { $this->initializeExtensions(); - return $this->documentProcessors->getIterator(); + return $this->delimiterProcessors; } /** @@ -364,7 +341,6 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment 'inner_separator' => "\n", 'soft_break' => "\n", ], - 'safe' => false, // deprecated option 'html_input' => self::HTML_INPUT_ALLOW, 'allow_unsafe_links' => true, 'max_nesting_level' => INF, @@ -381,9 +357,46 @@ final class Environment implements EnvironmentInterface, ConfigurableEnvironment return $this->inlineParserCharacterRegex; } + /** + * {@inheritdoc} + */ + public function addEventListener(string $eventClass, callable $listener, int $priority = 0): ConfigurableEnvironmentInterface + { + $this->assertUninitialized('Failed to add event listener.'); + + if (!isset($this->listeners[$eventClass])) { + $this->listeners[$eventClass] = new PrioritizedList(); + } + + $this->listeners[$eventClass]->add($listener, $priority); + + return $this; + } + + /** + * {@inheritdoc} + */ + public function dispatch(AbstractEvent $event): void + { + $this->initializeExtensions(); + + $type = get_class($event); + + foreach ($this->listeners[$type] ?? [] as $listener) { + if ($event->isPropagationStopped()) { + return; + } + + $listener($event); + } + } + private function buildInlineParserCharacterRegex() { - $chars = \array_keys($this->inlineParsersByCharacter); + $chars = \array_unique(\array_merge( + \array_keys($this->inlineParsersByCharacter), + $this->delimiterProcessors->getDelimiterCharacters() + )); if (empty($chars)) { // If no special inline characters exist then parse the whole line diff --git a/vendor/league/commonmark/src/EnvironmentInterface.php b/vendor/league/commonmark/src/EnvironmentInterface.php index 5f1c5af121..c0f53fcfa1 100644 --- a/vendor/league/commonmark/src/EnvironmentInterface.php +++ b/vendor/league/commonmark/src/EnvironmentInterface.php @@ -13,8 +13,9 @@ namespace League\CommonMark; use League\CommonMark\Block\Parser\BlockParserInterface; use League\CommonMark\Block\Renderer\BlockRendererInterface; +use League\CommonMark\Delimiter\Processor\DelimiterProcessorCollection; +use League\CommonMark\Event\AbstractEvent; use League\CommonMark\Inline\Parser\InlineParserInterface; -use League\CommonMark\Inline\Processor\InlineProcessorInterface; use League\CommonMark\Inline\Renderer\InlineRendererInterface; interface EnvironmentInterface @@ -44,14 +45,9 @@ interface EnvironmentInterface public function getInlineParsersForCharacter(string $character): iterable; /** - * @return iterable<InlineProcessorInterface> + * @return DelimiterProcessorCollection */ - public function getInlineProcessors(): iterable; - - /** - * @return iterable<DocumentProcessorInterface> - */ - public function getDocumentProcessors(): iterable; + public function getDelimiterProcessors(): DelimiterProcessorCollection; /** * @param string $blockClass @@ -75,4 +71,13 @@ interface EnvironmentInterface * @return string */ public function getInlineParserCharacterRegex(): string; + + /** + * Dispatches the given event to listeners + * + * @param AbstractEvent $event + * + * @return void + */ + public function dispatch(AbstractEvent $event): void; } diff --git a/vendor/league/commonmark/src/Event/AbstractEvent.php b/vendor/league/commonmark/src/Event/AbstractEvent.php new file mode 100644 index 0000000000..b2c04ffb0e --- /dev/null +++ b/vendor/league/commonmark/src/Event/AbstractEvent.php @@ -0,0 +1,49 @@ +<?php + +/** + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the Symfony EventDispatcher "Event" contract + * - (c) 2018-2019 Fabien Potencier + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Event; + +/** + * Base class for classes containing event data. + * + * This class contains no event data. It is used by events that do not pass + * state information to an event handler when an event is raised. + * + * You can call the method stopPropagation() to abort the execution of + * further listeners in your event listener. + */ +abstract class AbstractEvent +{ + private $propagationStopped = false; + + /** + * Returns whether further event listeners should be triggered. + */ + final public function isPropagationStopped(): bool + { + return $this->propagationStopped; + } + + /** + * Stops the propagation of the event to further event listeners. + * + * If multiple event listeners are connected to the same event, no + * further event listener will be triggered once any trigger calls + * stopPropagation(). + */ + final public function stopPropagation(): void + { + $this->propagationStopped = true; + } +} diff --git a/vendor/league/commonmark/src/Event/DocumentParsedEvent.php b/vendor/league/commonmark/src/Event/DocumentParsedEvent.php new file mode 100644 index 0000000000..e002e21c2c --- /dev/null +++ b/vendor/league/commonmark/src/Event/DocumentParsedEvent.php @@ -0,0 +1,39 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Event; + +use League\CommonMark\Block\Element\Document; + +/** + * Event dispatched when the document has been fully parsed + */ +final class DocumentParsedEvent extends AbstractEvent +{ + /** @var Document */ + private $document; + + /** + * @param Document $document + */ + public function __construct(Document $document) + { + $this->document = $document; + } + + /** + * @return Document + */ + public function getDocument(): Document + { + return $this->document; + } +} diff --git a/vendor/league/commonmark/src/Extension/CommonMarkCoreExtension.php b/vendor/league/commonmark/src/Extension/CommonMarkCoreExtension.php index 3c3f7c11c4..903e8991a0 100644 --- a/vendor/league/commonmark/src/Extension/CommonMarkCoreExtension.php +++ b/vendor/league/commonmark/src/Extension/CommonMarkCoreExtension.php @@ -18,9 +18,9 @@ use League\CommonMark\Block\Element as BlockElement; use League\CommonMark\Block\Parser as BlockParser; use League\CommonMark\Block\Renderer as BlockRenderer; use League\CommonMark\ConfigurableEnvironmentInterface; +use League\CommonMark\Delimiter\Processor\EmphasisDelimiterProcessor; use League\CommonMark\Inline\Element as InlineElement; use League\CommonMark\Inline\Parser as InlineParser; -use League\CommonMark\Inline\Processor as InlineProcessor; use League\CommonMark\Inline\Renderer as InlineRenderer; final class CommonMarkCoreExtension implements ExtensionInterface @@ -42,15 +42,12 @@ final class CommonMarkCoreExtension implements ExtensionInterface ->addInlineParser(new InlineParser\BacktickParser(), 150) ->addInlineParser(new InlineParser\EscapableParser(), 80) ->addInlineParser(new InlineParser\EntityParser(), 70) - ->addInlineParser(new InlineParser\EmphasisParser(), 60) ->addInlineParser(new InlineParser\AutolinkParser(), 50) ->addInlineParser(new InlineParser\HtmlInlineParser(), 40) ->addInlineParser(new InlineParser\CloseBracketParser(), 30) ->addInlineParser(new InlineParser\OpenBracketParser(), 20) ->addInlineParser(new InlineParser\BangParser(), 10) - ->addInlineProcessor(new InlineProcessor\EmphasisProcessor(), 0) - ->addBlockRenderer(BlockElement\BlockQuote::class, new BlockRenderer\BlockQuoteRenderer(), 0) ->addBlockRenderer(BlockElement\Document::class, new BlockRenderer\DocumentRenderer(), 0) ->addBlockRenderer(BlockElement\FencedCode::class, new BlockRenderer\FencedCodeRenderer(), 0) @@ -71,5 +68,13 @@ final class CommonMarkCoreExtension implements ExtensionInterface ->addInlineRenderer(InlineElement\Strong::class, new InlineRenderer\StrongRenderer(), 0) ->addInlineRenderer(InlineElement\Text::class, new InlineRenderer\TextRenderer(), 0) ; + + if ($environment->getConfig('use_asterisk', true)) { + $environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('*')); + } + + if ($environment->getConfig('use_underscore', true)) { + $environment->addDelimiterProcessor(new EmphasisDelimiterProcessor('_')); + } } } diff --git a/vendor/league/commonmark/src/HtmlElement.php b/vendor/league/commonmark/src/HtmlElement.php index c099bb44be..415d65b833 100644 --- a/vendor/league/commonmark/src/HtmlElement.php +++ b/vendor/league/commonmark/src/HtmlElement.php @@ -1,5 +1,17 @@ <?php +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace League\CommonMark; use League\CommonMark\Util\Xml; diff --git a/vendor/league/commonmark/src/HtmlRenderer.php b/vendor/league/commonmark/src/HtmlRenderer.php index aba9877061..97339ea396 100644 --- a/vendor/league/commonmark/src/HtmlRenderer.php +++ b/vendor/league/commonmark/src/HtmlRenderer.php @@ -22,7 +22,7 @@ use League\CommonMark\Inline\Renderer\InlineRendererInterface; /** * Renders a parsed AST to HTML */ -class HtmlRenderer implements ElementRendererInterface +final class HtmlRenderer implements ElementRendererInterface { /** * @var EnvironmentInterface @@ -55,7 +55,7 @@ class HtmlRenderer implements ElementRendererInterface * * @return string */ - protected function renderInline(AbstractInline $inline): string + public function renderInline(AbstractInline $inline): string { $renderers = $this->environment->getInlineRenderersForClass(get_class($inline)); diff --git a/vendor/league/commonmark/src/Inline/AdjacentTextMerger.php b/vendor/league/commonmark/src/Inline/AdjacentTextMerger.php new file mode 100644 index 0000000000..da28c3990e --- /dev/null +++ b/vendor/league/commonmark/src/Inline/AdjacentTextMerger.php @@ -0,0 +1,91 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Additional emphasis processing code based on commonmark-java (https://github.com/atlassian/commonmark-java) + * - (c) Atlassian Pty Ltd + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Inline; + +use League\CommonMark\Inline\Element\Text; +use League\CommonMark\Node\Node; + +/** + * @internal + */ +final class AdjacentTextMerger +{ + public static function mergeChildNodes(Node $node) + { + // No children or just one child node, no need for merging + if ($node->firstChild() === $node->lastChild() || $node->firstChild() === null || $node->lastChild() === null) { + return; + } + + self::mergeTextNodesInclusive($node->firstChild(), $node->lastChild()); + } + + public static function mergeTextNodesBetweenExclusive(Node $fromNode, Node $toNode) + { + // No nodes between them + if ($fromNode === $toNode || $fromNode->next() === $toNode || $fromNode->next() === null || $toNode->previous() === null) { + return; + } + + self::mergeTextNodesInclusive($fromNode->next(), $toNode->previous()); + } + + private static function mergeTextNodesInclusive(Node $fromNode, Node $toNode) + { + $first = null; + $last = null; + + $node = $fromNode; + while ($node !== null) { + if ($node instanceof Text) { + if ($first === null) { + $first = $node; + } + $last = $node; + } else { + self::mergeIfNeeded($first, $last); + $first = null; + $last = null; + } + if ($node === $toNode) { + break; + } + $node = $node->next(); + } + + self::mergeIfNeeded($first, $last); + } + + private static function mergeIfNeeded(?Text $first, ?Text $last) + { + if ($first === null || $last === null || $first === $last) { + // No merging needed + return; + } + + $s = $first->getContent(); + + $node = $first->next(); + $stop = $last->next(); + while ($node !== $stop && $node instanceof Text) { + $s .= $node->getContent(); + $unlink = $node; + $node = $node->next(); + $unlink->detach(); + } + + $first->setContent($s); + } +} diff --git a/vendor/league/commonmark/src/Inline/AdjoiningTextCollapser.php b/vendor/league/commonmark/src/Inline/AdjoiningTextCollapser.php deleted file mode 100644 index 312940548b..0000000000 --- a/vendor/league/commonmark/src/Inline/AdjoiningTextCollapser.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php - -/* - * This file is part of the league/commonmark package. - * - * (c) Colin O'Dell <colinodell@gmail.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Inline; - -use League\CommonMark\Inline\Element\Text; -use League\CommonMark\Node\Node; - -/** - * @internal - */ -final class AdjoiningTextCollapser -{ - /** - * @param Node $container - * - * @internal - */ - public static function collapseTextNodes(Node $container) - { - $walker = $container->walker(); - while (($event = $walker->next()) !== null) { - if ($event->isEntering()) { - $node = $event->getNode(); - $next = $node->next(); - if ($node instanceof Text && $next instanceof Text) { - $node->append($next->getContent()); - $next->detach(); - // Re-start the next `while` iteration at the same spot as before - $walker->resumeAt($node, true); - } - } - } - } -} diff --git a/vendor/league/commonmark/src/Inline/Element/AbstractInline.php b/vendor/league/commonmark/src/Inline/Element/AbstractInline.php index 2406148dfe..c597f37b30 100644 --- a/vendor/league/commonmark/src/Inline/Element/AbstractInline.php +++ b/vendor/league/commonmark/src/Inline/Element/AbstractInline.php @@ -16,6 +16,9 @@ namespace League\CommonMark\Inline\Element; use League\CommonMark\Node\Node; +/** + * @method children() AbstractInline[] + */ abstract class AbstractInline extends Node { /** diff --git a/vendor/league/commonmark/src/Inline/Element/AbstractWebResource.php b/vendor/league/commonmark/src/Inline/Element/AbstractWebResource.php index b39044fa74..ed1eb94015 100644 --- a/vendor/league/commonmark/src/Inline/Element/AbstractWebResource.php +++ b/vendor/league/commonmark/src/Inline/Element/AbstractWebResource.php @@ -14,7 +14,7 @@ namespace League\CommonMark\Inline\Element; -abstract class AbstractWebResource extends AbstractInlineContainer +abstract class AbstractWebResource extends AbstractInline { /** * @var string @@ -45,4 +45,12 @@ abstract class AbstractWebResource extends AbstractInlineContainer return $this; } + + /** + * {@inheritdoc} + */ + public function isContainer(): bool + { + return true; + } } diff --git a/vendor/league/commonmark/src/Inline/Element/Emphasis.php b/vendor/league/commonmark/src/Inline/Element/Emphasis.php index 046b760392..50dbff5f1e 100644 --- a/vendor/league/commonmark/src/Inline/Element/Emphasis.php +++ b/vendor/league/commonmark/src/Inline/Element/Emphasis.php @@ -14,6 +14,13 @@ namespace League\CommonMark\Inline\Element; -class Emphasis extends AbstractInlineContainer +class Emphasis extends AbstractInline { + /** + * {@inheritdoc} + */ + public function isContainer(): bool + { + return true; + } } diff --git a/vendor/league/commonmark/src/Inline/Element/Strong.php b/vendor/league/commonmark/src/Inline/Element/Strong.php index f519c3d8d5..3ff3226a18 100644 --- a/vendor/league/commonmark/src/Inline/Element/Strong.php +++ b/vendor/league/commonmark/src/Inline/Element/Strong.php @@ -14,6 +14,13 @@ namespace League\CommonMark\Inline\Element; -class Strong extends AbstractInlineContainer +class Strong extends AbstractInline { + /** + * {@inheritdoc} + */ + public function isContainer(): bool + { + return true; + } } diff --git a/vendor/league/commonmark/src/Inline/Parser/AutolinkParser.php b/vendor/league/commonmark/src/Inline/Parser/AutolinkParser.php index b61dc963f0..2d35e43743 100644 --- a/vendor/league/commonmark/src/Inline/Parser/AutolinkParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/AutolinkParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Inline\Element\Link; use League\CommonMark\InlineParserContext; use League\CommonMark\Util\UrlEncoder; -class AutolinkParser implements InlineParserInterface +final class AutolinkParser implements InlineParserInterface { const EMAIL_REGEX = '/^<([a-zA-Z0-9.!#$%&\'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/'; const OTHER_LINK_REGEX = '/^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>/i'; diff --git a/vendor/league/commonmark/src/Inline/Parser/BacktickParser.php b/vendor/league/commonmark/src/Inline/Parser/BacktickParser.php index f74e5413ed..8c9ab52a02 100644 --- a/vendor/league/commonmark/src/Inline/Parser/BacktickParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/BacktickParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Inline\Element\Code; use League\CommonMark\Inline\Element\Text; use League\CommonMark\InlineParserContext; -class BacktickParser implements InlineParserInterface +final class BacktickParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/BangParser.php b/vendor/league/commonmark/src/Inline/Parser/BangParser.php index 59740263d5..f5d72cabc9 100644 --- a/vendor/league/commonmark/src/Inline/Parser/BangParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/BangParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Delimiter\Delimiter; use League\CommonMark\Inline\Element\Text; use League\CommonMark\InlineParserContext; -class BangParser implements InlineParserInterface +final class BangParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/CloseBracketParser.php b/vendor/league/commonmark/src/Inline/Parser/CloseBracketParser.php index 71ca2e8ddb..2a3065de09 100644 --- a/vendor/league/commonmark/src/Inline/Parser/CloseBracketParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/CloseBracketParser.php @@ -15,25 +15,25 @@ namespace League\CommonMark\Inline\Parser; use League\CommonMark\Cursor; -use League\CommonMark\Delimiter\Delimiter; -use League\CommonMark\Delimiter\DelimiterStack; +use League\CommonMark\Delimiter\DelimiterInterface; use League\CommonMark\EnvironmentAwareInterface; use League\CommonMark\EnvironmentInterface; +use League\CommonMark\Inline\AdjacentTextMerger; use League\CommonMark\Inline\Element\AbstractWebResource; use League\CommonMark\Inline\Element\Image; use League\CommonMark\Inline\Element\Link; use League\CommonMark\InlineParserContext; -use League\CommonMark\Reference\Reference; -use League\CommonMark\Reference\ReferenceMap; +use League\CommonMark\Reference\ReferenceInterface; +use League\CommonMark\Reference\ReferenceMapInterface; use League\CommonMark\Util\LinkParserHelper; use League\CommonMark\Util\RegexHelper; -class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInterface +final class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInterface { /** * @var EnvironmentInterface */ - protected $environment; + private $environment; /** * @return string[] @@ -87,14 +87,14 @@ class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInter $inline->appendChild($label); } + // Process delimiters such as emphasis inside link/image $delimiterStack = $inlineContext->getDelimiterStack(); $stackBottom = $opener->getPrevious(); - foreach ($this->environment->getInlineProcessors() as $inlineProcessor) { - $inlineProcessor->processInlines($delimiterStack, $stackBottom); - } - if ($delimiterStack instanceof DelimiterStack) { - $delimiterStack->removeAll($stackBottom); - } + $delimiterStack->processDelimiters($stackBottom, $this->environment->getDelimiterProcessors()); + $delimiterStack->removeAll($stackBottom); + + // Merge any adjacent Text nodes together + AdjacentTextMerger::mergeChildNodes($inline); // processEmphasis will remove this and later delimiters. // Now, for a link, we also remove earlier link openers (no links in links) @@ -114,14 +114,14 @@ class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInter } /** - * @param Cursor $cursor - * @param ReferenceMap $referenceMap - * @param Delimiter $opener - * @param int $startPos + * @param Cursor $cursor + * @param ReferenceMapInterface $referenceMap + * @param DelimiterInterface $opener + * @param int $startPos * * @return array|bool */ - protected function tryParseLink(Cursor $cursor, ReferenceMap $referenceMap, Delimiter $opener, int $startPos) + private function tryParseLink(Cursor $cursor, ReferenceMapInterface $referenceMap, DelimiterInterface $opener, int $startPos) { // Check to see if we have a link/image // Inline link? @@ -141,7 +141,7 @@ class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInter * * @return array|bool */ - protected function tryParseInlineLinkAndTitle(Cursor $cursor) + private function tryParseInlineLinkAndTitle(Cursor $cursor) { if ($cursor->getCharacter() !== '(') { return false; @@ -177,15 +177,19 @@ class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInter } /** - * @param Cursor $cursor - * @param ReferenceMap $referenceMap - * @param Delimiter $opener - * @param int $startPos + * @param Cursor $cursor + * @param ReferenceMapInterface $referenceMap + * @param DelimiterInterface $opener + * @param int $startPos * - * @return Reference|null + * @return ReferenceInterface|null */ - protected function tryParseReference(Cursor $cursor, ReferenceMap $referenceMap, Delimiter $opener, int $startPos): ?Reference + private function tryParseReference(Cursor $cursor, ReferenceMapInterface $referenceMap, DelimiterInterface $opener, int $startPos): ?ReferenceInterface { + if ($opener->getIndex() === null) { + return null; + } + $savePos = $cursor->saveState(); $beforeLabel = $cursor->getPosition(); $n = LinkParserHelper::parseLinkLabel($cursor); @@ -211,7 +215,7 @@ class CloseBracketParser implements InlineParserInterface, EnvironmentAwareInter * * @return AbstractWebResource */ - protected function createInline(string $url, string $title, bool $isImage) + private function createInline(string $url, string $title, bool $isImage) { if ($isImage) { return new Image($url, null, $title); diff --git a/vendor/league/commonmark/src/Inline/Parser/EmphasisParser.php b/vendor/league/commonmark/src/Inline/Parser/EmphasisParser.php deleted file mode 100644 index f58022b869..0000000000 --- a/vendor/league/commonmark/src/Inline/Parser/EmphasisParser.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php - -/* - * This file is part of the league/commonmark package. - * - * (c) Colin O'Dell <colinodell@gmail.com> - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Inline\Parser; - -use League\CommonMark\Delimiter\Delimiter; -use League\CommonMark\EnvironmentAwareInterface; -use League\CommonMark\EnvironmentInterface; -use League\CommonMark\Inline\Element\Text; -use League\CommonMark\InlineParserContext; -use League\CommonMark\Util\Configuration; -use League\CommonMark\Util\RegexHelper; - -class EmphasisParser implements InlineParserInterface, EnvironmentAwareInterface -{ - protected $config; - - public function __construct(array $newConfig = []) - { - $this->config = new Configuration([ - 'use_asterisk' => true, - 'use_underscore' => true, - 'enable_em' => true, - 'enable_strong' => true, - ]); - $this->config->mergeConfig($newConfig); - } - - public function setEnvironment(EnvironmentInterface $environment) - { - $this->config->mergeConfig($environment->getConfig()); - } - - /** - * @return string[] - */ - public function getCharacters(): array - { - if (!$this->config->getConfig('enable_em') && !$this->config->getConfig('enable_strong')) { - return []; - } - - $chars = []; - if ($this->config->getConfig('use_asterisk')) { - $chars[] = '*'; - } - if ($this->config->getConfig('use_underscore')) { - $chars[] = '_'; - } - - return $chars; - } - - /** - * @param InlineParserContext $inlineContext - * - * @return bool - */ - public function parse(InlineParserContext $inlineContext): bool - { - $character = $inlineContext->getCursor()->getCharacter(); - if (!\in_array($character, $this->getCharacters())) { - return false; - } - - $numDelims = 0; - - $cursor = $inlineContext->getCursor(); - $charBefore = $cursor->peek(-1); - if ($charBefore === null) { - $charBefore = "\n"; - } - - while ($cursor->peek($numDelims) === $character) { - ++$numDelims; - } - - if ($numDelims === 0) { - return false; - } - - // Skip single delims if emphasis is disabled - if ($numDelims === 1 && !$this->config->getConfig('enable_em')) { - return false; - } - - $cursor->advanceBy($numDelims); - - $charAfter = $cursor->getCharacter(); - if ($charAfter === null) { - $charAfter = "\n"; - } - - list($canOpen, $canClose) = $this->determineCanOpenOrClose($charBefore, $charAfter, $character); - - $node = new Text($cursor->getPreviousText(), [ - 'delim' => true, - 'emphasis_config' => $this->config, - ]); - $inlineContext->getContainer()->appendChild($node); - - // Add entry to stack to this opener - $delimiter = new Delimiter($character, $numDelims, $node, $canOpen, $canClose); - $inlineContext->getDelimiterStack()->push($delimiter); - - return true; - } - - /** - * @param string $charBefore - * @param string $charAfter - * @param string $character - * - * @return bool[] - */ - private function determineCanOpenOrClose(string $charBefore, string $charAfter, string $character) - { - $afterIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charAfter); - $afterIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charAfter); - $beforeIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charBefore); - $beforeIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charBefore); - - $leftFlanking = !$afterIsWhitespace && (!$afterIsPunctuation || $beforeIsWhitespace || $beforeIsPunctuation); - $rightFlanking = !$beforeIsWhitespace && (!$beforeIsPunctuation || $afterIsWhitespace || $afterIsPunctuation); - - if ($character === '_') { - $canOpen = $leftFlanking && (!$rightFlanking || $beforeIsPunctuation); - $canClose = $rightFlanking && (!$leftFlanking || $afterIsPunctuation); - } else { - $canOpen = $leftFlanking; - $canClose = $rightFlanking; - } - - return [$canOpen, $canClose]; - } -} diff --git a/vendor/league/commonmark/src/Inline/Parser/EntityParser.php b/vendor/league/commonmark/src/Inline/Parser/EntityParser.php index 83a207f7f8..772642380c 100644 --- a/vendor/league/commonmark/src/Inline/Parser/EntityParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/EntityParser.php @@ -19,7 +19,7 @@ use League\CommonMark\InlineParserContext; use League\CommonMark\Util\Html5Entities; use League\CommonMark\Util\RegexHelper; -class EntityParser implements InlineParserInterface +final class EntityParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/EscapableParser.php b/vendor/league/commonmark/src/Inline/Parser/EscapableParser.php index d96400ab77..6bbaf435dd 100644 --- a/vendor/league/commonmark/src/Inline/Parser/EscapableParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/EscapableParser.php @@ -19,7 +19,7 @@ use League\CommonMark\Inline\Element\Text; use League\CommonMark\InlineParserContext; use League\CommonMark\Util\RegexHelper; -class EscapableParser implements InlineParserInterface +final class EscapableParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/HtmlInlineParser.php b/vendor/league/commonmark/src/Inline/Parser/HtmlInlineParser.php index 297f088842..8f0650ec8a 100644 --- a/vendor/league/commonmark/src/Inline/Parser/HtmlInlineParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/HtmlInlineParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Inline\Element\HtmlInline; use League\CommonMark\InlineParserContext; use League\CommonMark\Util\RegexHelper; -class HtmlInlineParser implements InlineParserInterface +final class HtmlInlineParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/NewlineParser.php b/vendor/league/commonmark/src/Inline/Parser/NewlineParser.php index 1ca8c01f52..6ac4077733 100644 --- a/vendor/league/commonmark/src/Inline/Parser/NewlineParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/NewlineParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Inline\Element\Newline; use League\CommonMark\Inline\Element\Text; use League\CommonMark\InlineParserContext; -class NewlineParser implements InlineParserInterface +final class NewlineParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Parser/OpenBracketParser.php b/vendor/league/commonmark/src/Inline/Parser/OpenBracketParser.php index 81c453d918..d11edc3039 100644 --- a/vendor/league/commonmark/src/Inline/Parser/OpenBracketParser.php +++ b/vendor/league/commonmark/src/Inline/Parser/OpenBracketParser.php @@ -18,7 +18,7 @@ use League\CommonMark\Delimiter\Delimiter; use League\CommonMark\Inline\Element\Text; use League\CommonMark\InlineParserContext; -class OpenBracketParser implements InlineParserInterface +final class OpenBracketParser implements InlineParserInterface { /** * @return string[] diff --git a/vendor/league/commonmark/src/Inline/Processor/EmphasisProcessor.php b/vendor/league/commonmark/src/Inline/Processor/EmphasisProcessor.php deleted file mode 100644 index 1bc96162ec..0000000000 --- a/vendor/league/commonmark/src/Inline/Processor/EmphasisProcessor.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/* - * This file is part of the league/commonmark package. - * - * (c) Colin O'Dell <colinodell@gmail.com> - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Inline\Processor; - -use League\CommonMark\Delimiter\Delimiter; -use League\CommonMark\Delimiter\DelimiterStack; -use League\CommonMark\Inline\Element\Emphasis; -use League\CommonMark\Inline\Element\Strong; -use League\CommonMark\Inline\Element\Text; - -class EmphasisProcessor implements InlineProcessorInterface -{ - public function processInlines(DelimiterStack $delimiterStack, Delimiter $stackBottom = null) - { - $callback = function (Delimiter $opener, Delimiter $closer, DelimiterStack $stack) { - // Calculate actual number of delimiters used from this closer - $useDelims = ($closer->getNumDelims() >= 2 && $opener->getNumDelims() >= 2) ? 2 : 1; - /** @var Text $openerInline */ - $openerInline = $opener->getInlineNode(); - /** @var Text $closerInline */ - $closerInline = $closer->getInlineNode(); - - // Remove used delimiters from stack elts and inlines - $opener->setNumDelims($opener->getNumDelims() - $useDelims); - $closer->setNumDelims($closer->getNumDelims() - $useDelims); - $openerInline->setContent(\substr($openerInline->getContent(), 0, -$useDelims)); - $closerInline->setContent(\substr($closerInline->getContent(), 0, -$useDelims)); - - // Build contents for new emph element - if ($useDelims === 1 && $openerInline->data['emphasis_config']->getConfig('enable_em')) { - $emph = new Emphasis(); - } elseif ($useDelims > 1 && $openerInline->data['emphasis_config']->getConfig('enable_strong')) { - $emph = new Strong(); - } else { - return $closer->getNext(); - } - - $openerInline->insertAfter($emph); - while (($node = $emph->next()) !== $closerInline) { - $emph->appendChild($node); - } - - // Remove elts btw opener and closer in delimiters stack - $tempStack = $closer->getPrevious(); - while ($tempStack !== null && $tempStack !== $opener) { - $nextStack = $tempStack->getPrevious(); - $stack->removeDelimiter($tempStack); - $tempStack = $nextStack; - } - // If opener has 0 delims, remove it and the inline - if ($opener->getNumDelims() === 0) { - $openerInline->detach(); - $stack->removeDelimiter($opener); - } - if ($closer->getNumDelims() === 0) { - $closerInline->detach(); - $tempStack = $closer->getNext(); - $stack->removeDelimiter($closer); - - return $tempStack; - } - - return $closer; - }; - - // Process the emphasis characters - $delimiterStack->iterateByCharacters(['_', '*'], $callback, $stackBottom); - } -} diff --git a/vendor/league/commonmark/src/Inline/Processor/InlineProcessorInterface.php b/vendor/league/commonmark/src/Inline/Processor/InlineProcessorInterface.php deleted file mode 100644 index b1a6041799..0000000000 --- a/vendor/league/commonmark/src/Inline/Processor/InlineProcessorInterface.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php - -/* - * This file is part of the league/commonmark package. - * - * (c) Colin O'Dell <colinodell@gmail.com> - * - * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) - * - (c) John MacFarlane - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace League\CommonMark\Inline\Processor; - -use League\CommonMark\Delimiter\Delimiter; -use League\CommonMark\Delimiter\DelimiterStack; - -interface InlineProcessorInterface -{ - /** - * @param DelimiterStack $delimiterStack - * @param Delimiter $stackBottom - * - * @return void - */ - public function processInlines(DelimiterStack $delimiterStack, Delimiter $stackBottom = null); -} diff --git a/vendor/league/commonmark/src/Inline/Renderer/CodeRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/CodeRenderer.php index d629b16d6f..63fa095b47 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/CodeRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/CodeRenderer.php @@ -20,7 +20,7 @@ use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Code; use League\CommonMark\Util\Xml; -class CodeRenderer implements InlineRendererInterface +final class CodeRenderer implements InlineRendererInterface { /** * @param Code $inline diff --git a/vendor/league/commonmark/src/Inline/Renderer/EmphasisRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/EmphasisRenderer.php index ac06590a66..d2df5dfd81 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/EmphasisRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/EmphasisRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\HtmlElement; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Emphasis; -class EmphasisRenderer implements InlineRendererInterface +final class EmphasisRenderer implements InlineRendererInterface { /** * @param Emphasis $inline diff --git a/vendor/league/commonmark/src/Inline/Renderer/HtmlInlineRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/HtmlInlineRenderer.php index 720a8c6c19..2dff18f045 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/HtmlInlineRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/HtmlInlineRenderer.php @@ -18,13 +18,13 @@ use League\CommonMark\ElementRendererInterface; use League\CommonMark\EnvironmentInterface; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\HtmlInline; -use League\CommonMark\Util\Configuration; use League\CommonMark\Util\ConfigurationAwareInterface; +use League\CommonMark\Util\ConfigurationInterface; -class HtmlInlineRenderer implements InlineRendererInterface, ConfigurationAwareInterface +final class HtmlInlineRenderer implements InlineRendererInterface, ConfigurationAwareInterface { /** - * @var Configuration + * @var ConfigurationInterface */ protected $config; @@ -40,16 +40,11 @@ class HtmlInlineRenderer implements InlineRendererInterface, ConfigurationAwareI throw new \InvalidArgumentException('Incompatible inline type: ' . \get_class($inline)); } - // Kept for BC reasons - if ($this->config->getConfig('safe') === true) { + if ($this->config->get('html_input') === EnvironmentInterface::HTML_INPUT_STRIP) { return ''; } - if ($this->config->getConfig('html_input') === EnvironmentInterface::HTML_INPUT_STRIP) { - return ''; - } - - if ($this->config->getConfig('html_input') === EnvironmentInterface::HTML_INPUT_ESCAPE) { + if ($this->config->get('html_input') === EnvironmentInterface::HTML_INPUT_ESCAPE) { return htmlspecialchars($inline->getContent(), ENT_NOQUOTES); } @@ -57,9 +52,9 @@ class HtmlInlineRenderer implements InlineRendererInterface, ConfigurationAwareI } /** - * @param Configuration $configuration + * @param ConfigurationInterface $configuration */ - public function setConfiguration(Configuration $configuration) + public function setConfiguration(ConfigurationInterface $configuration) { $this->config = $configuration; } diff --git a/vendor/league/commonmark/src/Inline/Renderer/ImageRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/ImageRenderer.php index 77fd8918ea..e43a0a5d25 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/ImageRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/ImageRenderer.php @@ -18,14 +18,14 @@ use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Image; -use League\CommonMark\Util\Configuration; use League\CommonMark\Util\ConfigurationAwareInterface; +use League\CommonMark\Util\ConfigurationInterface; use League\CommonMark\Util\RegexHelper; -class ImageRenderer implements InlineRendererInterface, ConfigurationAwareInterface +final class ImageRenderer implements InlineRendererInterface, ConfigurationAwareInterface { /** - * @var Configuration + * @var ConfigurationInterface */ protected $config; @@ -43,7 +43,7 @@ class ImageRenderer implements InlineRendererInterface, ConfigurationAwareInterf $attrs = $inline->getData('attributes', []); - $forbidUnsafeLinks = $this->config->getConfig('safe') || !$this->config->getConfig('allow_unsafe_links'); + $forbidUnsafeLinks = !$this->config->get('allow_unsafe_links'); if ($forbidUnsafeLinks && RegexHelper::isLinkPotentiallyUnsafe($inline->getUrl())) { $attrs['src'] = ''; } else { @@ -62,9 +62,9 @@ class ImageRenderer implements InlineRendererInterface, ConfigurationAwareInterf } /** - * @param Configuration $configuration + * @param ConfigurationInterface $configuration */ - public function setConfiguration(Configuration $configuration) + public function setConfiguration(ConfigurationInterface $configuration) { $this->config = $configuration; } diff --git a/vendor/league/commonmark/src/Inline/Renderer/LinkRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/LinkRenderer.php index 7ad85152c5..c83125e689 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/LinkRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/LinkRenderer.php @@ -18,14 +18,14 @@ use League\CommonMark\ElementRendererInterface; use League\CommonMark\HtmlElement; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Link; -use League\CommonMark\Util\Configuration; use League\CommonMark\Util\ConfigurationAwareInterface; +use League\CommonMark\Util\ConfigurationInterface; use League\CommonMark\Util\RegexHelper; -class LinkRenderer implements InlineRendererInterface, ConfigurationAwareInterface +final class LinkRenderer implements InlineRendererInterface, ConfigurationAwareInterface { /** - * @var Configuration + * @var ConfigurationInterface */ protected $config; @@ -43,7 +43,7 @@ class LinkRenderer implements InlineRendererInterface, ConfigurationAwareInterfa $attrs = $inline->getData('attributes', []); - $forbidUnsafeLinks = $this->config->getConfig('safe') || !$this->config->getConfig('allow_unsafe_links'); + $forbidUnsafeLinks = !$this->config->get('allow_unsafe_links'); if (!($forbidUnsafeLinks && RegexHelper::isLinkPotentiallyUnsafe($inline->getUrl()))) { $attrs['href'] = $inline->getUrl(); } @@ -60,9 +60,9 @@ class LinkRenderer implements InlineRendererInterface, ConfigurationAwareInterfa } /** - * @param Configuration $configuration + * @param ConfigurationInterface $configuration */ - public function setConfiguration(Configuration $configuration) + public function setConfiguration(ConfigurationInterface $configuration) { $this->config = $configuration; } diff --git a/vendor/league/commonmark/src/Inline/Renderer/NewlineRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/NewlineRenderer.php index 334e0e2b1d..2314b22cea 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/NewlineRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/NewlineRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\HtmlElement; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Newline; -class NewlineRenderer implements InlineRendererInterface +final class NewlineRenderer implements InlineRendererInterface { /** * @param Newline $inline diff --git a/vendor/league/commonmark/src/Inline/Renderer/StrongRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/StrongRenderer.php index 6aaa3848bc..1862433027 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/StrongRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/StrongRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\HtmlElement; use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Strong; -class StrongRenderer implements InlineRendererInterface +final class StrongRenderer implements InlineRendererInterface { /** * @param Strong $inline diff --git a/vendor/league/commonmark/src/Inline/Renderer/TextRenderer.php b/vendor/league/commonmark/src/Inline/Renderer/TextRenderer.php index b009ee8e2c..fd7bb9bca7 100644 --- a/vendor/league/commonmark/src/Inline/Renderer/TextRenderer.php +++ b/vendor/league/commonmark/src/Inline/Renderer/TextRenderer.php @@ -19,7 +19,7 @@ use League\CommonMark\Inline\Element\AbstractInline; use League\CommonMark\Inline\Element\Text; use League\CommonMark\Util\Xml; -class TextRenderer implements InlineRendererInterface +final class TextRenderer implements InlineRendererInterface { /** * @param Text $inline diff --git a/vendor/league/commonmark/src/InlineParserContext.php b/vendor/league/commonmark/src/InlineParserContext.php index ef14a6dfda..d4e58f9ea9 100644 --- a/vendor/league/commonmark/src/InlineParserContext.php +++ b/vendor/league/commonmark/src/InlineParserContext.php @@ -17,7 +17,7 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; use League\CommonMark\Block\Element\AbstractStringContainerBlock; use League\CommonMark\Delimiter\DelimiterStack; -use League\CommonMark\Reference\ReferenceMap; +use League\CommonMark\Reference\ReferenceMapInterface; class InlineParserContext { @@ -26,7 +26,7 @@ class InlineParserContext private $cursor; private $delimiterStack; - public function __construct(AbstractStringContainerBlock $container, ReferenceMap $referenceMap) + public function __construct(AbstractStringContainerBlock $container, ReferenceMapInterface $referenceMap) { $this->referenceMap = $referenceMap; $this->container = $container; @@ -43,9 +43,9 @@ class InlineParserContext } /** - * @return ReferenceMap + * @return ReferenceMapInterface */ - public function getReferenceMap(): ReferenceMap + public function getReferenceMap(): ReferenceMapInterface { return $this->referenceMap; } diff --git a/vendor/league/commonmark/src/InlineParserEngine.php b/vendor/league/commonmark/src/InlineParserEngine.php index e92e158076..29de8e23d8 100644 --- a/vendor/league/commonmark/src/InlineParserEngine.php +++ b/vendor/league/commonmark/src/InlineParserEngine.php @@ -14,12 +14,19 @@ namespace League\CommonMark; -use League\CommonMark\Inline\AdjoiningTextCollapser; +use League\CommonMark\Block\Element\AbstractStringContainerBlock; +use League\CommonMark\Delimiter\Delimiter; +use League\CommonMark\Delimiter\Processor\DelimiterProcessorInterface; +use League\CommonMark\Inline\AdjacentTextMerger; use League\CommonMark\Inline\Element\Text; use League\CommonMark\Node\Node; -use League\CommonMark\Reference\ReferenceMap; +use League\CommonMark\Reference\ReferenceMapInterface; +use League\CommonMark\Util\RegexHelper; -class InlineParserEngine +/** + * @internal + */ +final class InlineParserEngine { protected $environment; @@ -29,10 +36,10 @@ class InlineParserEngine } /** - * @param Node $container - * @param ReferenceMap $referenceMap + * @param AbstractStringContainerBlock $container + * @param ReferenceMapInterface $referenceMap */ - public function parse(Node $container, ReferenceMap $referenceMap) + public function parse(AbstractStringContainerBlock $container, ReferenceMapInterface $referenceMap) { $inlineParserContext = new InlineParserContext($container, $referenceMap); while (($character = $inlineParserContext->getCursor()->getCharacter()) !== null) { @@ -43,7 +50,7 @@ class InlineParserEngine $this->processInlines($inlineParserContext); - AdjoiningTextCollapser::collapseTextNodes($container); + AdjacentTextMerger::mergeChildNodes($container); } /** @@ -52,7 +59,7 @@ class InlineParserEngine * * @return bool Whether we successfully parsed a character at that position */ - protected function parseCharacter(string $character, InlineParserContext $inlineParserContext): bool + private function parseCharacter(string $character, InlineParserContext $inlineParserContext): bool { foreach ($this->environment->getInlineParsersForCharacter($character) as $parser) { if ($parser->parse($inlineParserContext)) { @@ -60,19 +67,60 @@ class InlineParserEngine } } + if ($delimiterProcessor = $this->environment->getDelimiterProcessors()->getDelimiterProcessor($character)) { + return $this->parseDelimiters($delimiterProcessor, $inlineParserContext); + } + return false; } + private function parseDelimiters(DelimiterProcessorInterface $delimiterProcessor, InlineParserContext $inlineContext): bool + { + $character = $inlineContext->getCursor()->getCharacter(); + $numDelims = 0; + + $cursor = $inlineContext->getCursor(); + $charBefore = $cursor->peek(-1); + if ($charBefore === null) { + $charBefore = "\n"; + } + + while ($cursor->peek($numDelims) === $character) { + ++$numDelims; + } + + if ($numDelims < $delimiterProcessor->getMinLength()) { + return false; + } + + $cursor->advanceBy($numDelims); + + $charAfter = $cursor->getCharacter(); + if ($charAfter === null) { + $charAfter = "\n"; + } + + list($canOpen, $canClose) = self::determineCanOpenOrClose($charBefore, $charAfter, $character, $delimiterProcessor); + + $node = new Text($cursor->getPreviousText(), [ + 'delim' => true, + ]); + $inlineContext->getContainer()->appendChild($node); + + // Add entry to stack to this opener + $delimiter = new Delimiter($character, $numDelims, $node, $canOpen, $canClose); + $inlineContext->getDelimiterStack()->push($delimiter); + + return true; + } + /** * @param InlineParserContext $inlineParserContext */ - protected function processInlines(InlineParserContext $inlineParserContext) + private function processInlines(InlineParserContext $inlineParserContext) { $delimiterStack = $inlineParserContext->getDelimiterStack(); - - foreach ($this->environment->getInlineProcessors() as $inlineProcessor) { - $inlineProcessor->processInlines($delimiterStack); - } + $delimiterStack->processDelimiters(null, $this->environment->getDelimiterProcessors()); // Remove all delimiters $delimiterStack->removeAll(); @@ -101,4 +149,33 @@ class InlineParserEngine $container->appendChild(new Text($text)); } } + + /** + * @param string $charBefore + * @param string $charAfter + * @param string $character + * @param DelimiterProcessorInterface $delimiterProcessor + * + * @return bool[] + */ + private static function determineCanOpenOrClose(string $charBefore, string $charAfter, string $character, DelimiterProcessorInterface $delimiterProcessor) + { + $afterIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charAfter); + $afterIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charAfter); + $beforeIsWhitespace = \preg_match(RegexHelper::REGEX_UNICODE_WHITESPACE_CHAR, $charBefore); + $beforeIsPunctuation = \preg_match(RegexHelper::REGEX_PUNCTUATION, $charBefore); + + $leftFlanking = !$afterIsWhitespace && (!$afterIsPunctuation || $beforeIsWhitespace || $beforeIsPunctuation); + $rightFlanking = !$beforeIsWhitespace && (!$beforeIsPunctuation || $afterIsWhitespace || $afterIsPunctuation); + + if ($character === '_') { + $canOpen = $leftFlanking && (!$rightFlanking || $beforeIsPunctuation); + $canClose = $rightFlanking && (!$leftFlanking || $afterIsPunctuation); + } else { + $canOpen = $leftFlanking && $character === $delimiterProcessor->getOpeningCharacter(); + $canClose = $rightFlanking && $character === $delimiterProcessor->getClosingCharacter(); + } + + return [$canOpen, $canClose]; + } } diff --git a/vendor/league/commonmark/src/Node/Node.php b/vendor/league/commonmark/src/Node/Node.php index 17f373ccca..46df3a6540 100644 --- a/vendor/league/commonmark/src/Node/Node.php +++ b/vendor/league/commonmark/src/Node/Node.php @@ -1,5 +1,17 @@ <?php +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace League\CommonMark\Node; abstract class Node @@ -85,7 +97,7 @@ abstract class Node $this->next = $sibling; $sibling->setParent($this->parent); - if (!$sibling->next) { + if (!$sibling->next && $sibling->parent) { $sibling->parent->lastChild = $sibling; } } @@ -108,7 +120,7 @@ abstract class Node $this->previous = $sibling; $sibling->setParent($this->parent); - if (!$sibling->previous) { + if (!$sibling->previous && $sibling->parent) { $sibling->parent->firstChild = $sibling; } } diff --git a/vendor/league/commonmark/src/Node/NodeWalker.php b/vendor/league/commonmark/src/Node/NodeWalker.php index 0d5e2b1872..6be7193b94 100644 --- a/vendor/league/commonmark/src/Node/NodeWalker.php +++ b/vendor/league/commonmark/src/Node/NodeWalker.php @@ -1,8 +1,20 @@ <?php +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace League\CommonMark\Node; -class NodeWalker +final class NodeWalker { /** * @var Node diff --git a/vendor/league/commonmark/src/Node/NodeWalkerEvent.php b/vendor/league/commonmark/src/Node/NodeWalkerEvent.php index aee2c86b82..541f61ad84 100644 --- a/vendor/league/commonmark/src/Node/NodeWalkerEvent.php +++ b/vendor/league/commonmark/src/Node/NodeWalkerEvent.php @@ -1,5 +1,17 @@ <?php +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace League\CommonMark\Node; final class NodeWalkerEvent @@ -18,7 +30,7 @@ final class NodeWalkerEvent * @param Node $node * @param bool $isEntering */ - public function __construct(Node $node = null, $isEntering = true) + public function __construct(Node $node, $isEntering = true) { $this->node = $node; $this->isEntering = $isEntering; diff --git a/vendor/league/commonmark/src/Reference/Reference.php b/vendor/league/commonmark/src/Reference/Reference.php index 819a80a56a..f734ce4854 100644 --- a/vendor/league/commonmark/src/Reference/Reference.php +++ b/vendor/league/commonmark/src/Reference/Reference.php @@ -14,10 +14,7 @@ namespace League\CommonMark\Reference; -/** - * Link reference - */ -class Reference +final class Reference implements ReferenceInterface { /** * @var string @@ -35,6 +32,16 @@ class Reference protected $title; /** + * @var array + * + * Source: https://github.com/symfony/polyfill-mbstring/blob/master/Mbstring.php + */ + private static $caseFold = [ + ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE", "\xC3\x9F", "\xE1\xBA\x9E"], + ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι', 'ss', 'ss'], + ]; + + /** * Constructor * * @param string $label @@ -49,7 +56,7 @@ class Reference } /** - * @return string + * {@inheritdoc} */ public function getLabel(): string { @@ -57,7 +64,7 @@ class Reference } /** - * @return string + * {@inheritdoc} */ public function getDestination(): string { @@ -65,7 +72,7 @@ class Reference } /** - * @return string + * {@inheritdoc} */ public function getTitle(): string { @@ -85,8 +92,15 @@ class Reference { // Collapse internal whitespace to single space and remove // leading/trailing whitespace - $string = \preg_replace('/\s+/', ' ', trim($string)); + $string = \preg_replace('/\s+/', ' ', \trim($string)); + + if (!\defined('MB_CASE_FOLD')) { + // We're not on a version of PHP (7.3+) which has this feature + $string = \str_replace(self::$caseFold[0], self::$caseFold[1], $string); + + return \mb_strtoupper($string, 'UTF-8'); + } - return \mb_strtoupper($string, 'UTF-8'); + return \mb_convert_case($string, \MB_CASE_FOLD, 'UTF-8'); } } diff --git a/vendor/league/commonmark/src/Inline/Element/AbstractInlineContainer.php b/vendor/league/commonmark/src/Reference/ReferenceInterface.php index a80bd8981e..351c6f6746 100644 --- a/vendor/league/commonmark/src/Inline/Element/AbstractInlineContainer.php +++ b/vendor/league/commonmark/src/Reference/ReferenceInterface.php @@ -12,15 +12,25 @@ * file that was distributed with this source code. */ -namespace League\CommonMark\Inline\Element; +namespace League\CommonMark\Reference; -abstract class AbstractInlineContainer extends AbstractInline +/** + * Link reference + */ +interface ReferenceInterface { /** - * @return bool + * @return string + */ + public function getLabel(): string; + + /** + * @return string + */ + public function getDestination(): string; + + /** + * @return string */ - public function isContainer(): bool - { - return true; - } + public function getTitle(): string; } diff --git a/vendor/league/commonmark/src/Reference/ReferenceMap.php b/vendor/league/commonmark/src/Reference/ReferenceMap.php index 97f878f9fe..1af59d74e1 100644 --- a/vendor/league/commonmark/src/Reference/ReferenceMap.php +++ b/vendor/league/commonmark/src/Reference/ReferenceMap.php @@ -17,30 +17,24 @@ namespace League\CommonMark\Reference; /** * A collection of references, indexed by label */ -class ReferenceMap +final class ReferenceMap implements ReferenceMapInterface { /** - * @var Reference[] + * @var ReferenceInterface[] */ protected $references = []; /** - * @param Reference $reference - * - * @return $this + * {@inheritdoc} */ - public function addReference(Reference $reference) + public function addReference(ReferenceInterface $reference): void { $key = Reference::normalizeReference($reference->getLabel()); $this->references[$key] = $reference; - - return $this; } /** - * @param string $label - * - * @return bool + * {@inheritdoc} */ public function contains(string $label): bool { @@ -50,11 +44,9 @@ class ReferenceMap } /** - * @param string $label - * - * @return Reference|null + * {@inheritdoc} */ - public function getReference(string $label): ?Reference + public function getReference(string $label): ?ReferenceInterface { $label = Reference::normalizeReference($label); @@ -66,9 +58,7 @@ class ReferenceMap } /** - * Lists all registered references. - * - * @return Reference[] + * {@inheritdoc} */ public function listReferences(): iterable { diff --git a/vendor/league/commonmark/src/Reference/ReferenceMapInterface.php b/vendor/league/commonmark/src/Reference/ReferenceMapInterface.php new file mode 100644 index 0000000000..69b6d5c89e --- /dev/null +++ b/vendor/league/commonmark/src/Reference/ReferenceMapInterface.php @@ -0,0 +1,49 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * Original code based on the CommonMark JS reference parser (https://bitly.com/commonmark-js) + * - (c) John MacFarlane + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Reference; + +/** + * A collection of references + */ +interface ReferenceMapInterface +{ + /** + * @param ReferenceInterface $reference + * + * @return void + */ + public function addReference(ReferenceInterface $reference): void; + + /** + * @param string $label + * + * @return bool + */ + public function contains(string $label): bool; + + /** + * @param string $label + * + * @return ReferenceInterface|null + */ + public function getReference(string $label): ?ReferenceInterface; + + /** + * Lists all registered references. + * + * @return ReferenceInterface[] + */ + public function listReferences(): iterable; +} diff --git a/vendor/league/commonmark/src/ReferenceParser.php b/vendor/league/commonmark/src/Reference/ReferenceParser.php index 5c0bc8a0dd..c9bea6b571 100644 --- a/vendor/league/commonmark/src/ReferenceParser.php +++ b/vendor/league/commonmark/src/Reference/ReferenceParser.php @@ -12,20 +12,19 @@ * file that was distributed with this source code. */ -namespace League\CommonMark; +namespace League\CommonMark\Reference; -use League\CommonMark\Reference\Reference; -use League\CommonMark\Reference\ReferenceMap; +use League\CommonMark\Cursor; use League\CommonMark\Util\LinkParserHelper; -class ReferenceParser +final class ReferenceParser { /** - * @var ReferenceMap + * @var ReferenceMapInterface */ - protected $referenceMap; + private $referenceMap; - public function __construct(ReferenceMap $referenceMap) + public function __construct(ReferenceMapInterface $referenceMap) { $this->referenceMap = $referenceMap; } diff --git a/vendor/league/commonmark/src/UnmatchedBlockCloser.php b/vendor/league/commonmark/src/UnmatchedBlockCloser.php index eab47cda2c..d495c9bba3 100644 --- a/vendor/league/commonmark/src/UnmatchedBlockCloser.php +++ b/vendor/league/commonmark/src/UnmatchedBlockCloser.php @@ -16,6 +16,9 @@ namespace League\CommonMark; use League\CommonMark\Block\Element\AbstractBlock; +/** + * @internal + */ class UnmatchedBlockCloser { /** @@ -65,6 +68,10 @@ class UnmatchedBlockCloser public function resetTip() { + if ($this->context->getTip() === null) { + throw new \RuntimeException('No tip to reset to'); + } + $this->oldTip = $this->context->getTip(); } diff --git a/vendor/league/commonmark/src/Util/ArrayCollection.php b/vendor/league/commonmark/src/Util/ArrayCollection.php index 3b96eaa50e..cb71911ff2 100644 --- a/vendor/league/commonmark/src/Util/ArrayCollection.php +++ b/vendor/league/commonmark/src/Util/ArrayCollection.php @@ -15,6 +15,8 @@ namespace League\CommonMark\Util; * Array collection * * Provides a wrapper around a standard PHP array. + * + * @internal */ class ArrayCollection implements \IteratorAggregate, \Countable, \ArrayAccess { diff --git a/vendor/league/commonmark/src/Util/Configuration.php b/vendor/league/commonmark/src/Util/Configuration.php index 26f676b091..f97c86cb66 100644 --- a/vendor/league/commonmark/src/Util/Configuration.php +++ b/vendor/league/commonmark/src/Util/Configuration.php @@ -14,9 +14,9 @@ namespace League\CommonMark\Util; -class Configuration +final class Configuration implements ConfigurationInterface { - protected $config; + private $config; /** * @param array $config @@ -27,28 +27,25 @@ class Configuration } /** - * @param array $config + * {@inheritdoc} */ - public function mergeConfig(array $config = []) + public function merge(array $config = []) { $this->config = \array_replace_recursive($this->config, $config); } /** - * @param array $config + * {@inheritdoc} */ - public function setConfig(array $config = []) + public function replace(array $config = []) { $this->config = $config; } /** - * @param string|null $key - * @param mixed $default - * - * @return mixed + * {@inheritdoc} */ - public function getConfig(?string $key = null, $default = null) + public function get(?string $key = null, $default = null) { if ($key === null) { return $this->config; @@ -67,12 +64,25 @@ class Configuration } /** + * {@inheritdoc} + */ + public function set(string $key, $value = null) + { + // accept a/b/c as ['a']['b']['c'] + if (\strpos($key, '/')) { + $this->setByPath($key, $value); + } + + $this->config[$key] = $value; + } + + /** * @param string $keyPath * @param string|null $default * - * @return mixed + * @return mixed|null */ - protected function getConfigByPath(string $keyPath, $default = null) + private function getConfigByPath(string $keyPath, $default = null) { $keyArr = \explode('/', $keyPath); $data = $this->config; @@ -86,4 +96,27 @@ class Configuration return $data; } + + /** + * @param string $keyPath + * @param string|null $value + */ + private function setByPath(string $keyPath, $value = null) + { + $keyArr = \explode('/', $keyPath); + $pointer = &$this->config; + while (($k = array_shift($keyArr)) !== null) { + if (!\is_array($pointer)) { + $pointer = []; + } + + if (!isset($pointer[$k])) { + $pointer[$k] = null; + } + + $pointer = &$pointer[$k]; + } + + $pointer = $value; + } } diff --git a/vendor/league/commonmark/src/Util/ConfigurationAwareInterface.php b/vendor/league/commonmark/src/Util/ConfigurationAwareInterface.php index a51fdaba9c..0f1d444d01 100644 --- a/vendor/league/commonmark/src/Util/ConfigurationAwareInterface.php +++ b/vendor/league/commonmark/src/Util/ConfigurationAwareInterface.php @@ -1,5 +1,14 @@ <?php +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace League\CommonMark\Util; /** @@ -8,7 +17,7 @@ namespace League\CommonMark\Util; interface ConfigurationAwareInterface { /** - * @param Configuration $configuration + * @param ConfigurationInterface $configuration */ - public function setConfiguration(Configuration $configuration); + public function setConfiguration(ConfigurationInterface $configuration); } diff --git a/vendor/league/commonmark/src/Util/ConfigurationInterface.php b/vendor/league/commonmark/src/Util/ConfigurationInterface.php new file mode 100644 index 0000000000..8e07a083d5 --- /dev/null +++ b/vendor/league/commonmark/src/Util/ConfigurationInterface.php @@ -0,0 +1,51 @@ +<?php + +/* + * This file is part of the league/commonmark package. + * + * (c) Colin O'Dell <colinodell@gmail.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace League\CommonMark\Util; + +interface ConfigurationInterface +{ + /** + * Merge an existing array into the current configuration + * + * @param array $config + */ + public function merge(array $config = []); + + /** + * Replace the entire array with something else + * + * @param array $config + */ + public function replace(array $config = []); + + /** + * Return the configuration value at the given key, or $default if no such config exists + * + * The key can be a string or a slash-delimited path to a nested value + * + * @param string|null $key + * @param mixed|null $default + * + * @return mixed|null + */ + public function get(?string $key = null, $default = null); + + /** + * Set the configuration value at the given key + * + * The key can be a string or a slash-delimited path to a nested value + * + * @param string $key + * @param mixed|null $value + */ + public function set(string $key, $value = null); +} diff --git a/vendor/league/commonmark/src/Util/PrioritizedList.php b/vendor/league/commonmark/src/Util/PrioritizedList.php index 83be39dc01..dea69e90c4 100644 --- a/vendor/league/commonmark/src/Util/PrioritizedList.php +++ b/vendor/league/commonmark/src/Util/PrioritizedList.php @@ -14,6 +14,9 @@ namespace League\CommonMark\Util; +/** + * @internal + */ final class PrioritizedList implements \IteratorAggregate { private $list = []; diff --git a/vendor/league/commonmark/src/Util/RegexHelper.php b/vendor/league/commonmark/src/Util/RegexHelper.php index a4703bd075..01ef1195b4 100644 --- a/vendor/league/commonmark/src/Util/RegexHelper.php +++ b/vendor/league/commonmark/src/Util/RegexHelper.php @@ -21,87 +21,6 @@ use League\CommonMark\Block\Element\HtmlBlock; */ final class RegexHelper { - /** @deprecated Use PARTIAL_ESCAPABLE instead */ - const ESCAPABLE = 0; - - /** @deprecated Use PARTIAL_ESCAPED_CHAR instead */ - const ESCAPED_CHAR = 1; - - /** @deprecated Use PARTIAL_IN_DOUBLE_QUOTES instead */ - const IN_DOUBLE_QUOTES = 2; - - /** @deprecated Use PARTIAL_IN_SINGLE_QUOTES instead */ - const IN_SINGLE_QUOTES = 3; - - /** @deprecated Use PARTIAL_IN_PARENS instead */ - const IN_PARENS = 4; - - /** @deprecated Use PARTIAL_REG_CHAR instead */ - const REG_CHAR = 5; - - /** @deprecated Use PARTIAL_IN_PARENS_NOSP instead */ - const IN_PARENS_NOSP = 6; - - /** @deprecated Use PARTIAL_TAGNAME instead */ - const TAGNAME = 7; - - /** @deprecated Use PARTIAL_BLOCKTAGNAME instead */ - const BLOCKTAGNAME = 8; - - /** @deprecated Use PARTIAL_ATTRIBUTENAME instead */ - const ATTRIBUTENAME = 9; - - /** @deprecated Use PARTIAL_UNQUOTEDVALUE instead */ - const UNQUOTEDVALUE = 10; - - /** @deprecated Use PARTIAL_SINGLEQUOTEDVALUE instead */ - const SINGLEQUOTEDVALUE = 11; - - /** @deprecated Use PARTIAL_DOUBLEQUOTEDVALUE instead */ - const DOUBLEQUOTEDVALUE = 12; - - /** @deprecated Use PARTIAL_ATTRIBUTEVALUE instead */ - const ATTRIBUTEVALUE = 13; - - /** @deprecated Use PARTIAL_ATTRIBUTEVALUESPEC instead */ - const ATTRIBUTEVALUESPEC = 14; - - /** @deprecated Use PARTIAL_ATTRIBUTE instead */ - const ATTRIBUTE = 15; - - /** @deprecated Use PARTIAL_OPENTAG instead */ - const OPENTAG = 16; - - /** @deprecated Use PARTIAL_CLOSETAG instead */ - const CLOSETAG = 17; - - /** @deprecated Use PARTIAL_OPENBLOCKTAG instead */ - const OPENBLOCKTAG = 18; - - /** @deprecated Use PARTIAL_CLOSEBLOCKTAG instead */ - const CLOSEBLOCKTAG = 19; - - /** @deprecated Use PARTIAL_HTMLCOMMENT instead */ - const HTMLCOMMENT = 20; - - /** @deprecated Use PARTIAL_PROCESSINGINSTRUCTION instead */ - const PROCESSINGINSTRUCTION = 21; - - /** @deprecated Use PARTIAL_DECLARATION instead */ - const DECLARATION = 22; - - /** @deprecated Use PARTIAL_CDATA instead */ - const CDATA = 23; - - /** @deprecated Use PARTIAL_HTMLTAG instead */ - const HTMLTAG = 24; - - /** @deprecated Use PARTIAL_HTMLBLOCKOPEN instead */ - const HTMLBLOCKOPEN = 25; - - /** @deprecated Use PARTIAL_LINK_TITLE instead */ - const LINK_TITLE = 26; - // Partial regular expressions (wrap with `/` on each side before use) const PARTIAL_ENTITY = '&(?:#x[a-f0-9]{1,6}|#[0-9]{1,7}|[a-z][a-z0-9]{1,31});'; const PARTIAL_ESCAPABLE = '[!"#$%&\'()*+,.\/:;<=>?@[\\\\\]^_`{|}~-]'; @@ -136,12 +55,6 @@ final class RegexHelper '|' . '\'(' . self::PARTIAL_ESCAPED_CHAR . '|[^\'\x00])*\'' . '|' . '\((' . self::PARTIAL_ESCAPED_CHAR . '|[^()\x00])*\))'; - /** @deprecated Use PARTIAL_ESCAPABLE instead */ - const REGEX_ESCAPABLE = self::PARTIAL_ESCAPABLE; - - /** @deprecated Use PARTIAL_ENTITY instead */ - const REGEX_ENTITY = self::PARTIAL_ENTITY; - const REGEX_PUNCTUATION = '/^[\x{2000}-\x{206F}\x{2E00}-\x{2E7F}\p{Pc}\p{Pd}\p{Pe}\p{Pf}\p{Pi}\p{Po}\p{Ps}\\\\\'!"#\$%&\(\)\*\+,\-\.\\/:;<=>\?@\[\]\^_`\{\|\}~]/u'; const REGEX_UNSAFE_PROTOCOL = '/^javascript:|vbscript:|file:|data:/i'; const REGEX_SAFE_DATA_PROTOCOL = '/^data:image\/(?:png|gif|jpeg|webp)/i'; @@ -239,9 +152,11 @@ final class RegexHelper /** * @param int $type HTML block type * - * @return string|null + * @return string + * + * @internal */ - public static function getHtmlBlockOpenRegex(int $type): ?string + public static function getHtmlBlockOpenRegex(int $type): string { switch ($type) { case HtmlBlock::TYPE_1_CODE_CONTAINER: @@ -260,15 +175,17 @@ final class RegexHelper return '/^(?:' . self::PARTIAL_OPENTAG . '|' . self::PARTIAL_CLOSETAG . ')\\s*$/i'; } - return null; + throw new \InvalidArgumentException('Invalid HTML block type'); } /** * @param int $type HTML block type * - * @return string|null + * @return string + * + * @internal */ - public static function getHtmlBlockCloseRegex(int $type): ?string + public static function getHtmlBlockCloseRegex(int $type): string { switch ($type) { case HtmlBlock::TYPE_1_CODE_CONTAINER: @@ -283,7 +200,7 @@ final class RegexHelper return '/\]\]>/'; } - return null; + throw new \InvalidArgumentException('Invalid HTML block type'); } /** diff --git a/vendor/nesbot/carbon/composer.json b/vendor/nesbot/carbon/composer.json index 5cfb6be56d..bbc765957b 100644 --- a/vendor/nesbot/carbon/composer.json +++ b/vendor/nesbot/carbon/composer.json @@ -34,7 +34,7 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^1.1", - "phpmd/phpmd": "^2.6", + "phpmd/phpmd": "dev-php-7.1-compatibility", "phpstan/phpstan": "^0.11", "phpunit/phpunit": "^7.5 || ^8.0", "squizlabs/php_codesniffer": "^3.4" diff --git a/vendor/nesbot/carbon/phpmd.xml b/vendor/nesbot/carbon/phpmd.xml index 151d4a088c..6894f5c14f 100644 --- a/vendor/nesbot/carbon/phpmd.xml +++ b/vendor/nesbot/carbon/phpmd.xml @@ -22,14 +22,16 @@ <rule ref="rulesets/cleancode.xml"> <exclude name="BooleanArgumentFlag" /> <exclude name="StaticAccess" /> + <exclude name="IfStatementAssignment" /> </rule> <rule ref="rulesets/controversial.xml" /> <rule ref="rulesets/design.xml"> + <exclude name="EvalExpression" /> <exclude name="CouplingBetweenObjects" /> </rule> <rule ref="rulesets/design.xml/CouplingBetweenObjects"> <properties> - <property name="minimum" value="16" /> + <property name="maximum" value="20" /> </properties> </rule> <rule ref="rulesets/naming.xml/ShortVariable"> diff --git a/vendor/nesbot/carbon/src/Carbon/Carbon.php b/vendor/nesbot/carbon/src/Carbon/Carbon.php index 9ccba4eda3..a6033b0461 100644 --- a/vendor/nesbot/carbon/src/Carbon/Carbon.php +++ b/vendor/nesbot/carbon/src/Carbon/Carbon.php @@ -507,6 +507,11 @@ class Carbon extends DateTime implements CarbonInterface { use Date; + /** + * Returns true if the current class/instance is mutable. + * + * @return bool + */ public static function isMutable() { return true; diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php index 3fea121758..e42ea23c6b 100644 --- a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php +++ b/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php @@ -788,6 +788,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is between two others * + * @example + * ``` + * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', true); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 * @param bool $equal Indicates if an equal to comparison should be done @@ -1509,6 +1517,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see equalTo() @@ -1520,6 +1535,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -2108,6 +2130,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -2117,6 +2146,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is greater (after) than or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -2126,6 +2162,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThan() @@ -2137,6 +2180,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is greater (after) than or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThanOrEqualTo() @@ -2148,6 +2198,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Checks if the (date)time string is in a given format. * + * @example + * ``` + * Carbon::hasFormat('11:12:45', 'h:i:s'); // true + * Carbon::hasFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @SuppressWarnings(PHPMD.EmptyCatchBlock) + * * @param string $date * @param string $format * @@ -2219,6 +2277,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThan() @@ -2230,6 +2295,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThan() @@ -2241,6 +2313,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is between two others * + * @example + * ``` + * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', true); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 * @param bool $equal Indicates if an equal to comparison should be done @@ -2252,6 +2332,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if its the birthday. Compares the date/month values of the two dates. * + * @example + * ``` + * Carbon::now()->subYears(5)->isBirthday(); // true + * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. * * @return bool @@ -2261,6 +2349,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is in the current unit given. * + * @example + * ``` + * Carbon::now()->isCurrentUnit('hour'); // true + * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false + * ``` + * * @param string $unit The unit to test. * * @throws \BadMethodCallException @@ -2272,6 +2366,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Checks if this day is a specific day of the week. * + * @example + * ``` + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false + * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true + * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false + * ``` + * * @param int $dayOfWeek * * @return bool @@ -2281,6 +2383,17 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if the instance is end of day. * + * @example + * ``` + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false + * ``` + * * @param bool $checkMicroseconds check time at microseconds precision * * @return bool @@ -2290,6 +2403,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is in the future, ie. greater (after) than now. * + * @example + * ``` + * Carbon::now()->addHours(5)->isFuture(); // true + * Carbon::now()->subHours(5)->isFuture(); // false + * ``` + * * @return bool */ public function isFuture(); @@ -2304,6 +2423,15 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if today is the last day of the Month * + * @example + * ``` + * Carbon::parse('2019-02-28')->isLastOfMonth(); // true + * Carbon::parse('2019-03-28')->isLastOfMonth(); // false + * Carbon::parse('2019-03-30')->isLastOfMonth(); // false + * Carbon::parse('2019-03-31')->isLastOfMonth(); // true + * Carbon::parse('2019-04-30')->isLastOfMonth(); // true + * ``` + * * @return bool */ public function isLastOfMonth(); @@ -2311,6 +2439,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is a leap year. * + * @example + * ``` + * Carbon::parse('2020-01-01')->isLeapYear(); // true + * Carbon::parse('2019-01-01')->isLeapYear(); // false + * ``` + * * @return bool */ public function isLeapYear(); @@ -2318,6 +2452,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is a long year * + * @example + * ``` + * Carbon::parse('2015-01-01')->isLongYear(); // true + * Carbon::parse('2016-01-01')->isLongYear(); // false + * ``` + * * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates * * @return bool @@ -2327,6 +2467,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if the instance is midday. * + * @example + * ``` + * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false + * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false + * ``` + * * @return bool */ public function isMidday(); @@ -2334,6 +2482,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if the instance is start of day / midnight. * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false + * ``` + * * @return bool */ public function isMidnight(); @@ -2347,11 +2502,22 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable */ public static function isModifiableUnit($unit); + /** + * Returns true if the current class/instance is mutable. + * + * @return bool + */ public static function isMutable(); /** * Determines if the instance is in the past, ie. less (before) than now. * + * @example + * ``` + * Carbon::now()->subHours(5)->isPast(); // true + * Carbon::now()->addHours(5)->isPast(); // false + * ``` + * * @return bool */ public function isPast(); @@ -2359,6 +2525,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Compares the formatted values of the two dates. * + * @example + * ``` + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false + * ``` + * * @param string $format date formats to compare. * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. * @@ -2371,8 +2543,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Checks if the passed in date is in the same month as the instance´s month. * - * Note that this defaults to only comparing the month while ignoring the year. - * To test if it is the same exact month of the same year, pass in true as the second parameter. + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true + * ``` * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. * @param bool $ofSameYear Check if it is the same month in the same year. @@ -2384,6 +2561,14 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. * @param bool $ofSameYear Check if it is the same month in the same year. * @@ -2394,6 +2579,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is in the current unit given. * + * @example + * ``` + * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true + * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false + * ``` + * * @param string $unit singular unit string * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. * @@ -2406,6 +2597,15 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Check if the instance is start of day / midnight. * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false + * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true + * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false + * ``` + * * @param bool $checkMicroseconds check time at microseconds precision * * @return bool @@ -2423,6 +2623,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is today. * + * @example + * ``` + * Carbon::today()->isToday(); // true + * Carbon::tomorrow()->isToday(); // false + * ``` + * * @return bool */ public function isToday(); @@ -2430,6 +2636,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is tomorrow. * + * @example + * ``` + * Carbon::tomorrow()->isTomorrow(); // true + * Carbon::yesterday()->isTomorrow(); // false + * ``` + * * @return bool */ public function isTomorrow(); @@ -2437,6 +2649,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is a weekday. * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekday(); // false + * Carbon::parse('2019-07-15')->isWeekday(); // true + * ``` + * * @return bool */ public function isWeekday(); @@ -2444,6 +2662,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is a weekend day. * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekend(); // true + * Carbon::parse('2019-07-15')->isWeekend(); // false + * ``` + * * @return bool */ public function isWeekend(); @@ -2451,6 +2675,12 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is yesterday. * + * @example + * ``` + * Carbon::yesterday()->isYesterday(); // true + * Carbon::tomorrow()->isYesterday(); // false + * ``` + * * @return bool */ public function isYesterday(); @@ -2558,6 +2788,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -2567,6 +2804,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is less (before) or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -2636,6 +2880,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThan() @@ -2647,6 +2898,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is less (before) or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThanOrEqualTo() @@ -2784,7 +3042,7 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable * echo "$previousBlackMoon\n"; * ``` * - * @param object $mixin + * @param object|string $mixin * * @throws \ReflectionException * @@ -2802,6 +3060,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is not equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see notEqualTo() @@ -2839,6 +3104,13 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable /** * Determines if the instance is not equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -3413,7 +3685,7 @@ interface CarbonInterface extends DateTimeInterface, JsonSerializable * * @param array $settings * - * @return $this + * @return $this|static */ public function settings(array $settings); diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php index 07c8760d2e..1ff4fa0b5c 100644 --- a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php +++ b/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php @@ -370,6 +370,16 @@ class CarbonInterval extends DateInterval } /** + * Get a copy of the instance. + * + * @return static + */ + public function clone() + { + return $this->copy(); + } + + /** * Provide static helpers to create instances. Allows CarbonInterval::years(3). * * Note: This is done using the magic method to allow static and instance methods to @@ -687,6 +697,15 @@ class CarbonInterval extends DateInterval return !$interval || $interval->isEmpty() ? null : $interval; } + protected function resolveInterval($interval) + { + if (!($interval instanceof self)) { + return self::make($interval); + } + + return $interval; + } + /** * Sets up a DateInterval from the relative parts of the string. * @@ -1666,4 +1685,232 @@ class CarbonInterval extends DateInterval return $result; } + + /** + * Determines if the instance is equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see equalTo() + * + * @return bool + */ + public function eq($interval): bool + { + return $this->equalTo($interval); + } + + /** + * Determines if the instance is equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function equalTo($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval !== null && $this->totalMicroseconds === $interval->totalMicroseconds; + } + + /** + * Determines if the instance is not equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($interval): bool + { + return $this->notEqualTo($interval); + } + + /** + * Determines if the instance is not equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function notEqualTo($interval): bool + { + return !$this->eq($interval); + } + + /** + * Determines if the instance is greater (longer) than another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see greaterThan() + * + * @return bool + */ + public function gt($interval): bool + { + return $this->greaterThan($interval); + } + + /** + * Determines if the instance is greater (longer) than another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function greaterThan($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval === null || $this->totalMicroseconds > $interval->totalMicroseconds; + } + + /** + * Determines if the instance is greater (longer) than or equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see greaterThanOrEqualTo() + * + * @return bool + */ + public function gte($interval): bool + { + return $this->greaterThanOrEqualTo($interval); + } + + /** + * Determines if the instance is greater (longer) than or equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function greaterThanOrEqualTo($interval): bool + { + return $this->greaterThan($interval) || $this->equalTo($interval); + } + + /** + * Determines if the instance is less (shorter) than another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see lessThan() + * + * @return bool + */ + public function lt($interval): bool + { + return $this->lessThan($interval); + } + + /** + * Determines if the instance is less (shorter) than another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function lessThan($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval !== null && $this->totalMicroseconds < $interval->totalMicroseconds; + } + + /** + * Determines if the instance is less (shorter) than or equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @see lessThanOrEqualTo() + * + * @return bool + */ + public function lte($interval): bool + { + return $this->lessThanOrEqualTo($interval); + } + + /** + * Determines if the instance is less (shorter) than or equal to another + * + * @param \Carbon\CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function lessThanOrEqualTo($interval): bool + { + return $this->lessThan($interval) || $this->equalTo($interval); + } + + /** + * Determines if the instance is between two others. + * + * @example + * ``` + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2)); // true + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2), false); // false + * ``` + * + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval1 + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function between($interval1, $interval2, $equal = true): bool + { + return $equal + ? $this->greaterThanOrEqualTo($interval1) && $this->lessThanOrEqualTo($interval2) + : $this->greaterThan($interval1) && $this->lessThan($interval2); + } + + /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // false + * ``` + * + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval1 + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval2 + * + * @return bool + */ + public function betweenExcluded($interval1, $interval2): bool + { + return $this->between($interval1, $interval2, false); + } + + /** + * Determines if the instance is between two others + * + * @example + * ``` + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2)); // true + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2), false); // false + * ``` + * + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval1 + * @param \Carbon\CarbonInterval|\DateInterval|mixed $interval2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function isBetween($interval1, $interval2, $equal = true): bool + { + return $this->between($interval1, $interval2, $equal); + } } diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php b/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php index 279d15735c..8cda779818 100644 --- a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php +++ b/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php @@ -11,10 +11,12 @@ namespace Carbon; use BadMethodCallException; +use Carbon\Exceptions\NotAPeriodException; use Carbon\Traits\Options; use Closure; use Countable; use DateInterval; +use DatePeriod; use DateTime; use DateTimeInterface; use InvalidArgumentException; @@ -232,6 +234,76 @@ class CarbonPeriod implements Iterator, Countable protected $tzName; /** + * Make a CarbonPeriod instance from given variable if possible. + * + * @param mixed $var + * + * @return static|null + */ + public static function make($var) + { + try { + return static::instance($var); + } catch (NotAPeriodException $e) { + return static::create($var); + } + } + + /** + * Create a new instance from a DatePeriod or CarbonPeriod object. + * + * @param CarbonPeriod|DatePeriod $period + * + * @return static + */ + public static function instance($period) + { + if ($period instanceof self) { + return $period->copy(); + } + + if ($period instanceof DatePeriod) { + return new static( + $period->start, + $period->end ?: $period->recurrences, + $period->interval, + $period->include_start_date ? 0 : static::EXCLUDE_START_DATE + ); + } + + $class = get_called_class(); + $type = gettype($period); + + throw new NotAPeriodException( + 'Argument 1 passed to '.$class.'::'.__METHOD__.'() '. + 'must be an instance of DatePeriod or '.$class.', '. + ($type === 'object' ? 'instance of '.get_class($period) : $type).' given.' + ); + } + + /** + * Get a copy of the instance. + * + * @return static + */ + public function copy() + { + return clone $this; + } + + /** + * @alias copy + * + * Get a copy of the instance. + * + * @return static + */ + public function clone() + { + return clone $this; + } + + /** * Create a new instance. * * @return static @@ -1589,4 +1661,105 @@ class CarbonPeriod implements Iterator, Countable return $this->calculateEnd() > $range->getStartDate() && $range->calculateEnd() > $this->getStartDate(); } + + /** + * Execute a given function on each date of the period. + * + * @example + * ``` + * Carbon::create('2020-11-29')->daysUntil('2020-12-24')->forEach(function (Carbon $date) { + * echo $date->diffInDays('2020-12-25')." days before Christmas!\n"; + * }); + * ``` + * + * @param callable $callback + */ + public function forEach(callable $callback) + { + foreach ($this as $date) { + $callback($date); + } + } + + /** + * Execute a given function on each date of the period and yield the result of this function. + * + * @example + * ``` + * $period = Carbon::create('2020-11-29')->daysUntil('2020-12-24'); + * echo implode("\n", iterator_to_array($period->map(function (Carbon $date) { + * return $date->diffInDays('2020-12-25').' days before Christmas!'; + * }))); + * ``` + * + * @param callable $callback + * + * @return \Generator + */ + public function map(callable $callback) + { + foreach ($this as $date) { + yield $callback($date); + } + } + + /** + * Determines if the instance is equal to another + * + * @param mixed $period + * + * @see equalTo() + * + * @return bool + */ + public function eq($period): bool + { + return $this->equalTo($period); + } + + /** + * Determines if the instance is equal to another + * + * @param mixed $period + * + * @return bool + */ + public function equalTo($period): bool + { + if (!($period instanceof self)) { + $period = self::make($period); + } + + return $period !== null + && $this->getDateInterval()->eq($period->getDateInterval()) + && $this->getStartDate()->eq($period->getStartDate()) + && $this->getEndDate()->eq($period->getEndDate()) + && $this->getOptions() === $period->getOptions(); + } + + /** + * Determines if the instance is not equal to another + * + * @param mixed $period + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($period): bool + { + return $this->notEqualTo($period); + } + + /** + * Determines if the instance is not equal to another + * + * @param mixed $period + * + * @return bool + */ + public function notEqualTo($period): bool + { + return !$this->eq($period); + } } diff --git a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php b/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php index c2e57b4b8c..2078c3d699 100644 --- a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php +++ b/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php @@ -19,7 +19,8 @@ class Invoker return $this->runWithCli(self::CLI_CLASS_NAME, $parameters); } - shell_exec('composer require carbon-cli/carbon-cli --no-interaction'); + $function = (($parameters[1] ?? '') === 'install' ? ($parameters[2] ?? null) : null) ?: 'shell_exec'; + $function('composer require carbon-cli/carbon-cli --no-interaction'); echo 'Installation succeeded.'; diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php new file mode 100644 index 0000000000..14494fafd7 --- /dev/null +++ b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php @@ -0,0 +1,29 @@ +<?php + +/** + * This file is part of the Carbon package. + * + * (c) Brian Nesbitt <brian@nesbot.com> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace Carbon\Exceptions; + +use Exception; +use InvalidArgumentException; + +class NotAPeriodException extends InvalidArgumentException +{ + /** + * Constructor. + * + * @param string $message + * @param int $code + * @param \Exception|null $previous + */ + public function __construct($message, $code = 0, Exception $previous = null) + { + parent::__construct($message, $code, $previous); + } +} diff --git a/vendor/nesbot/carbon/src/Carbon/Factory.php b/vendor/nesbot/carbon/src/Carbon/Factory.php index 688dbd8bc8..85054d01a5 100644 --- a/vendor/nesbot/carbon/src/Carbon/Factory.php +++ b/vendor/nesbot/carbon/src/Carbon/Factory.php @@ -77,7 +77,7 @@ namespace Carbon; * @method Carbon instance($date) Create a Carbon instance from a DateTime one. * @method bool isImmutable() Returns true if the current class/instance is immutable. * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. - * @method Carbon isMutable() + * @method bool isMutable() Returns true if the current class/instance is mutable. * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. * (It can be overridden in specific instances.) * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). diff --git a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php b/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php index 16d8ef0693..c42bf2a7ba 100644 --- a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php +++ b/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php @@ -77,7 +77,7 @@ namespace Carbon; * @method CarbonImmutable instance($date) Create a Carbon instance from a DateTime one. * @method bool isImmutable() Returns true if the current class/instance is immutable. * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. - * @method CarbonImmutable isMutable() + * @method bool isMutable() Returns true if the current class/instance is mutable. * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. * (It can be overridden in specific instances.) * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca.php index 05545f9d0d..e5c8d458ac 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/ca.php @@ -44,7 +44,7 @@ return [ 'a_second' => 'uns segons|:count segons', 's' => ':count s', 'ago' => 'fa :time', - 'from_now' => 'd\'aquí :time', + 'from_now' => 'd\'aquí a :time', 'after' => ':time després', 'before' => ':time abans', 'diff_now' => 'ara mateix', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa.php index 6f790f5e80..5c2fb13def 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/fa.php @@ -18,6 +18,7 @@ * - Hossein Jabbari * - nimamo * - hafezdivandari + * - Hassan Pezeshk (hpez) */ return [ 'year' => ':count سال', @@ -33,15 +34,15 @@ return [ 'a_day' => 'یک روز'.'|:count '.'روز', 'd' => ':count روز', 'hour' => ':count ساعت', - 'a_hour' => 'یک دقیقهیک ساعت'.'|:count '.'ساعت', + 'a_hour' => 'یک ساعت'.'|:count '.'ساعت', 'h' => ':count ساعت', 'minute' => ':count دقیقه', 'a_minute' => 'یک دقیقه'.'|:count '.'دقیقه', 'min' => ':count دقیقه', - 'second' => ':count ثانیه|چند ثانیه', + 'second' => ':count ثانیه', 's' => ':count ثانیه', 'ago' => ':time پیش', - 'from_now' => 'در :time', + 'from_now' => ':time دیگر', 'after' => ':time پس از', 'before' => ':time پیش از', 'formats' => [ diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php index 79c4a2e47e..df75b8685c 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php @@ -12,6 +12,7 @@ /** * Authors: * - Rene Torres Rene Torres, Pablo Saratxaga rgtorre@rocketmail.com, pablo@mandrakesoft.com + * - Jaycee Mariano (alohajaycee) */ return array_replace_recursive(require __DIR__.'/en.php', [ 'formats' => [ diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr.php index 1c06c89901..3d03f32510 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/hr.php @@ -25,6 +25,7 @@ * - JD Isaacks * - tomhorvat * - Stjepan + * - Vanja Retkovac (vr00) */ return [ 'year' => ':count godinu|:count godine|:count godina', @@ -40,11 +41,12 @@ return [ 'minute' => ':count minutu|:count minute|:count minuta', 'min' => ':count min.|:count min.|:count min.', 'second' => ':count sekundu|:count sekunde|:count sekundi', + 'a_second' => 'nekoliko sekundi|:count sekunde|:count sekundi', 's' => ':count sek.|:count sek.|:count sek.', 'ago' => 'prije :time', 'from_now' => 'za :time', - 'after' => 'za :time', - 'before' => 'prije :time', + 'after' => ':time poslije', + 'before' => ':time prije', 'diff_yesterday' => 'jučer', 'diff_tomorrow' => 'sutra', 'diff_before_yesterday' => 'prekjučer', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php b/vendor/nesbot/carbon/src/Carbon/Lang/lt.php index 2f1e48c20a..3a8a44a86e 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/lt.php @@ -32,22 +32,23 @@ * - Ričardas * - Kirill Chalkin * - Rolandas + * - Justinas (Gamesh) */ return [ 'year' => ':count metus|:count metus|:count metų', - 'y' => ':count metus|:count metus|:count metų', + 'y' => ':count m.', 'month' => ':count mėnesį|:count mėnesius|:count mėnesių', - 'm' => ':count mėnesį|:count mėnesius|:count mėnesių', + 'm' => ':count mėn.', 'week' => ':count savaitę|:count savaites|:count savaičių', - 'w' => ':count savaitę|:count savaites|:count savaičių', + 'w' => ':count sav.', 'day' => ':count dieną|:count dienas|:count dienų', - 'd' => ':count dieną|:count dienas|:count dienų', + 'd' => ':count d.', 'hour' => ':count valandą|:count valandas|:count valandų', - 'h' => ':count valandą|:count valandas|:count valandų', + 'h' => ':count val.', 'minute' => ':count minutę|:count minutes|:count minučių', - 'min' => ':count minutę|:count minutes|:count minučių', + 'min' => ':count min.', 'second' => ':count sekundę|:count sekundes|:count sekundžių', - 's' => ':count sekundę|:count sekundes|:count sekundžių', + 's' => ':count sek.', 'second_from_now' => ':count sekundės|:count sekundžių|:count sekundžių', 'minute_from_now' => ':count minutės|:count minučių|:count minučių', 'hour_from_now' => ':count valandos|:count valandų|:count valandų', @@ -70,11 +71,11 @@ return [ 'period_interval' => 'kiekvieną :interval', 'period_start_date' => 'nuo :date', 'period_end_date' => 'iki :date', - 'months' => ['Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugpjūtis', 'Rugsėjis', 'Spalis', 'Lapkritis', 'Gruodis'], - 'months_short' => ['Sau', 'Vas', 'Kov', 'Bal', 'Geg', 'Bir', 'Lie', 'Rgp', 'Rgs', 'Spa', 'Lap', 'Gru'], - 'weekdays' => ['Sekmadienis', 'Pirmadienis', 'Antradienis', 'Trečiadienis', 'Ketvirtadienis', 'Penktadienis', 'Šeštadienis'], - 'weekdays_short' => ['Sek', 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš'], - 'weekdays_min' => ['Se', 'Pi', 'An', 'Tr', 'Ke', 'Pe', 'Še'], + 'months' => ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'], + 'months_short' => ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'gru'], + 'weekdays' => ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'], + 'weekdays_short' => ['sek', 'pir', 'ant', 'tre', 'ket', 'pen', 'šeš'], + 'weekdays_min' => ['se', 'pi', 'an', 'tr', 'ke', 'pe', 'še'], 'list' => [', ', ' ir '], 'formats' => [ 'LT' => 'HH:mm', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php b/vendor/nesbot/carbon/src/Carbon/Lang/mr.php index 60c1e834b6..492512b158 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/mr.php @@ -8,6 +8,11 @@ * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ + +/* + * Authors: + * - Vikram-enyota + */ return [ 'year' => ':count वर्ष', 'y' => ':count वर्ष', @@ -26,6 +31,8 @@ return [ 'ago' => ':timeपूर्वी', 'from_now' => ':timeमध्ये', + 'before' => ':timeपूर्वी', + 'after' => ':timeनंतर', 'diff_yesterday' => 'काल', 'diff_tomorrow' => 'उद्या', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php b/vendor/nesbot/carbon/src/Carbon/Lang/pl.php index 5747f3a590..bd54c459dc 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/pl.php @@ -26,17 +26,23 @@ */ return [ 'year' => ':count rok|:count lata|:count lat', + 'a_year' => 'rok|:count lata|:count lat', 'y' => ':countr|:countl', 'month' => ':count miesiąc|:count miesiące|:count miesięcy', + 'a_month' => 'miesiąc|:count miesiące|:count miesięcy', 'm' => ':countmies', 'week' => ':count tydzień|:count tygodnie|:count tygodni', + 'a_week' => 'tydzień|:count tygodnie|:count tygodni', 'w' => ':counttyg', 'day' => ':count dzień|:count dni|:count dni', + 'a_day' => 'dzień|:count dni|:count dni', 'd' => ':countd', 'hour' => ':count godzina|:count godziny|:count godzin', + 'a_hour' => 'godzina|:count godziny|:count godzin', 'h' => ':countg', 'minute' => ':count minuta|:count minuty|:count minut', 'min' => ':countm', + 'a_minute' => 'minuta|:count minuty|:count minut', 'second' => ':count sekunda|:count sekundy|:count sekund', 'a_second' => '{1}kilka sekund|:count sekunda|:count sekundy|:count sekund', 's' => ':counts', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php b/vendor/nesbot/carbon/src/Carbon/Lang/ps.php index be7195f595..a928b28e37 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/ps.php @@ -12,6 +12,7 @@ /* * Authors: * - Muhammad Nasir Rahimi + * - Nassim Nasibullah (spinzar) */ return [ 'year' => ':count کال|:count کاله', @@ -34,9 +35,9 @@ return [ 'before' => ':time دمخه', 'list' => ['، ', ' او '], 'meridiem' => ['غ.م.', 'غ.و.'], - 'weekdays' => ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], - 'weekdays_short' => ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], - 'weekdays_min' => ['يونۍ', 'دونۍ', 'درېنۍ', 'څلرنۍ', 'پينځنۍ', 'جمعه', 'اونۍ'], + 'weekdays' => ['اتوار', 'ګل', 'نهه', 'شورو', 'زيارت', 'جمعه', 'خالي'], + 'weekdays_short' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'], + 'weekdays_min' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'], 'months' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], 'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], 'months_standalone' => ['جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv.php index 1e2a403137..e418821afe 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/sv.php @@ -16,6 +16,7 @@ * - JD Isaacks * - Jens Herlevsen * - Nightpine + * - Anders Nygren (litemerafrukt) */ return [ 'year' => ':count år', @@ -23,22 +24,22 @@ return [ 'y' => ':count år', 'month' => ':count månad|:count månader', 'a_month' => 'en månad|:count månader', - 'm' => ':count mån.', + 'm' => ':count mån', 'week' => ':count vecka|:count veckor', 'a_week' => 'en vecka|:count veckor', - 'w' => ':count v.', + 'w' => ':count v', 'day' => ':count dag|:count dagar', 'a_day' => 'en dag|:count dagar', - 'd' => ':count d.', + 'd' => ':count dgr', 'hour' => ':count timme|:count timmar', 'a_hour' => 'en timme|:count timmar', - 'h' => ':count t.', + 'h' => ':count tim', 'minute' => ':count minut|:count minuter', 'a_minute' => 'en minut|:count minuter', - 'min' => ':count min.', + 'min' => ':count min', 'second' => ':count sekund|:count sekunder', 'a_second' => 'några sekunder|:count sekunder', - 's' => ':count s.', + 's' => ':count s', 'ago' => 'för :time sedan', 'from_now' => 'om :time', 'after' => ':time efter', diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh.php index d84826f459..70615d3a93 100644 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php +++ b/vendor/nesbot/carbon/src/Carbon/Lang/zh.php @@ -15,6 +15,7 @@ * - sycuato * - bokideckonja * - Luo Ning + * - William Yang (williamyang233) */ return [ 'year' => ':count年', @@ -32,7 +33,7 @@ return [ 'second' => ':count秒', 's' => ':count秒', 'ago' => ':time前', - 'from_now' => '距现在:time', + 'from_now' => ':time后', 'after' => ':time后', 'before' => ':time前', 'diff_yesterday' => '昨天', diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php index fc1f7237f2..0412617679 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php @@ -33,6 +33,13 @@ trait Comparison /** * Determines if the instance is equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see equalTo() @@ -47,6 +54,13 @@ trait Comparison /** * Determines if the instance is equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -59,6 +73,13 @@ trait Comparison /** * Determines if the instance is not equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see notEqualTo() @@ -73,6 +94,13 @@ trait Comparison /** * Determines if the instance is not equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -85,6 +113,13 @@ trait Comparison /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThan() @@ -99,6 +134,13 @@ trait Comparison /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -111,6 +153,13 @@ trait Comparison /** * Determines if the instance is greater (after) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThan() @@ -125,6 +174,13 @@ trait Comparison /** * Determines if the instance is greater (after) than or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see greaterThanOrEqualTo() @@ -139,6 +195,13 @@ trait Comparison /** * Determines if the instance is greater (after) than or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:18'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -151,6 +214,13 @@ trait Comparison /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThan() @@ -165,6 +235,13 @@ trait Comparison /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -177,6 +254,13 @@ trait Comparison /** * Determines if the instance is less (before) than another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThan() @@ -191,6 +275,13 @@ trait Comparison /** * Determines if the instance is less (before) or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @see lessThanOrEqualTo() @@ -205,6 +296,13 @@ trait Comparison /** * Determines if the instance is less (before) or equal to another * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:18'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date * * @return bool @@ -215,7 +313,15 @@ trait Comparison } /** - * Determines if the instance is between two others + * Determines if the instance is between two others. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', true); // true + * ``` * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 @@ -242,8 +348,36 @@ trait Comparison } /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return bool + */ + public function betweenExcluded($date1, $date2): bool + { + return $this->between($date1, $date2, false); + } + + /** * Determines if the instance is between two others * + * @example + * ``` + * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', true); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 * @param bool $equal Indicates if an equal to comparison should be done @@ -258,6 +392,12 @@ trait Comparison /** * Determines if the instance is a weekday. * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekday(); // false + * Carbon::parse('2019-07-15')->isWeekday(); // true + * ``` + * * @return bool */ public function isWeekday() @@ -268,6 +408,12 @@ trait Comparison /** * Determines if the instance is a weekend day. * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekend(); // true + * Carbon::parse('2019-07-15')->isWeekend(); // false + * ``` + * * @return bool */ public function isWeekend() @@ -278,6 +424,12 @@ trait Comparison /** * Determines if the instance is yesterday. * + * @example + * ``` + * Carbon::yesterday()->isYesterday(); // true + * Carbon::tomorrow()->isYesterday(); // false + * ``` + * * @return bool */ public function isYesterday() @@ -288,6 +440,12 @@ trait Comparison /** * Determines if the instance is today. * + * @example + * ``` + * Carbon::today()->isToday(); // true + * Carbon::tomorrow()->isToday(); // false + * ``` + * * @return bool */ public function isToday() @@ -298,6 +456,12 @@ trait Comparison /** * Determines if the instance is tomorrow. * + * @example + * ``` + * Carbon::tomorrow()->isTomorrow(); // true + * Carbon::yesterday()->isTomorrow(); // false + * ``` + * * @return bool */ public function isTomorrow() @@ -308,6 +472,12 @@ trait Comparison /** * Determines if the instance is in the future, ie. greater (after) than now. * + * @example + * ``` + * Carbon::now()->addHours(5)->isFuture(); // true + * Carbon::now()->subHours(5)->isFuture(); // false + * ``` + * * @return bool */ public function isFuture() @@ -318,6 +488,12 @@ trait Comparison /** * Determines if the instance is in the past, ie. less (before) than now. * + * @example + * ``` + * Carbon::now()->subHours(5)->isPast(); // true + * Carbon::now()->addHours(5)->isPast(); // false + * ``` + * * @return bool */ public function isPast() @@ -328,6 +504,12 @@ trait Comparison /** * Determines if the instance is a leap year. * + * @example + * ``` + * Carbon::parse('2020-01-01')->isLeapYear(); // true + * Carbon::parse('2019-01-01')->isLeapYear(); // false + * ``` + * * @return bool */ public function isLeapYear() @@ -338,6 +520,12 @@ trait Comparison /** * Determines if the instance is a long year * + * @example + * ``` + * Carbon::parse('2015-01-01')->isLongYear(); // true + * Carbon::parse('2016-01-01')->isLongYear(); // false + * ``` + * * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates * * @return bool @@ -350,6 +538,12 @@ trait Comparison /** * Compares the formatted values of the two dates. * + * @example + * ``` + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false + * ``` + * * @param string $format date formats to compare. * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. * @@ -371,6 +565,12 @@ trait Comparison /** * Determines if the instance is in the current unit given. * + * @example + * ``` + * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true + * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false + * ``` + * * @param string $unit singular unit string * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. * @@ -421,6 +621,12 @@ trait Comparison /** * Determines if the instance is in the current unit given. * + * @example + * ``` + * Carbon::now()->isCurrentUnit('hour'); // true + * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false + * ``` + * * @param string $unit The unit to test. * * @throws \BadMethodCallException @@ -435,6 +641,14 @@ trait Comparison /** * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. * @param bool $ofSameYear Check if it is the same month in the same year. * @@ -452,8 +666,13 @@ trait Comparison /** * Checks if the passed in date is in the same month as the instance´s month. * - * Note that this defaults to only comparing the month while ignoring the year. - * To test if it is the same exact month of the same year, pass in true as the second parameter. + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true + * ``` * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. * @param bool $ofSameYear Check if it is the same month in the same year. @@ -468,6 +687,14 @@ trait Comparison /** * Checks if this day is a specific day of the week. * + * @example + * ``` + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false + * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true + * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false + * ``` + * * @param int $dayOfWeek * * @return bool @@ -484,6 +711,14 @@ trait Comparison /** * Check if its the birthday. Compares the date/month values of the two dates. * + * @example + * ``` + * Carbon::now()->subYears(5)->isBirthday(); // true + * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false + * ``` + * * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. * * @return bool @@ -496,6 +731,15 @@ trait Comparison /** * Check if today is the last day of the Month * + * @example + * ``` + * Carbon::parse('2019-02-28')->isLastOfMonth(); // true + * Carbon::parse('2019-03-28')->isLastOfMonth(); // false + * Carbon::parse('2019-03-30')->isLastOfMonth(); // false + * Carbon::parse('2019-03-31')->isLastOfMonth(); // true + * Carbon::parse('2019-04-30')->isLastOfMonth(); // true + * ``` + * * @return bool */ public function isLastOfMonth() @@ -506,6 +750,15 @@ trait Comparison /** * Check if the instance is start of day / midnight. * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false + * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true + * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false + * ``` + * * @param bool $checkMicroseconds check time at microseconds precision * * @return bool @@ -521,6 +774,17 @@ trait Comparison /** * Check if the instance is end of day. * + * @example + * ``` + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false + * ``` + * * @param bool $checkMicroseconds check time at microseconds precision * * @return bool @@ -536,6 +800,13 @@ trait Comparison /** * Check if the instance is start of day / midnight. * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false + * ``` + * * @return bool */ public function isMidnight() @@ -546,6 +817,14 @@ trait Comparison /** * Check if the instance is midday. * + * @example + * ``` + * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false + * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false + * ``` + * * @return bool */ public function isMidday() @@ -557,6 +836,14 @@ trait Comparison /** * Checks if the (date)time string is in a given format. * + * @example + * ``` + * Carbon::hasFormat('11:12:45', 'h:i:s'); // true + * Carbon::hasFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @SuppressWarnings(PHPMD.EmptyCatchBlock) + * * @param string $date * @param string $format * @@ -578,11 +865,13 @@ trait Comparison // Build the regex string $regex = ''; + for ($i = 0; $i < strlen($quotedFormat); ++$i) { // Backslash – the next character does not represent a date token so add it on as-is and continue. // We're doing an extra ++$i here to increment the loop by 2. if ($quotedFormat[$i] === '\\') { - $regex .= '\\'.$quotedFormat[++$i]; + $char = $quotedFormat[++$i]; + $regex .= $char === '\\' ? '\\\\' : $char; continue; } diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php b/vendor/nesbot/carbon/src/Carbon/Traits/Date.php index fc870a350b..8a8747d531 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Date.php @@ -2234,7 +2234,14 @@ trait Date protected static function executeStaticCallable($macro, ...$parameters) { if ($macro instanceof Closure) { - return call_user_func_array(Closure::bind($macro, null, get_called_class()), $parameters); + // @TODO allow to call new static() / unbind $this in PHP 8 + // (see with Laravel team how they plan to handle this in marcos) + + if (version_compare(PHP_VERSION, '8.0.0-dev', '<')) { + $macro = Closure::bind($macro, null, get_called_class()); + } + + return call_user_func_array($macro, $parameters); } return call_user_func_array($macro, $parameters); diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php b/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php index 8873c315f6..471de0c200 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php @@ -34,11 +34,12 @@ use DateTimeInterface; trait Difference { /** + * @codeCoverageIgnore + * * @param CarbonInterval $diff */ protected static function fixNegativeMicroseconds(CarbonInterval $diff) { - // @codeCoverageIgnoreStart if ($diff->s !== 0 || $diff->i !== 0 || $diff->h !== 0 || $diff->d !== 0 || $diff->m !== 0 || $diff->y !== 0) { $diff->f = (round($diff->f * 1000000) + 1000000) / 1000000; $diff->s--; @@ -73,7 +74,6 @@ trait Difference $diff->f *= -1; $diff->invert(); - // @codeCoverageIgnoreEnd } /** @@ -325,10 +325,12 @@ trait Difference public function diffInSeconds($date = null, $absolute = true) { $diff = $this->diff($this->resolveCarbon($date)); + if ($diff->days === 0) { $diff = static::fixDiffInterval($diff, $absolute); } - $value = ((($diff->days * static::HOURS_PER_DAY) + + + $value = (((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + $diff->h) * static::MINUTES_PER_HOUR + $diff->i) * static::SECONDS_PER_MINUTE + $diff->s; @@ -347,7 +349,7 @@ trait Difference public function diffInMicroseconds($date = null, $absolute = true) { $diff = $this->diff($this->resolveCarbon($date)); - $value = (int) round((((($diff->days * static::HOURS_PER_DAY) + + $value = (int) round(((((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + $diff->h) * static::MINUTES_PER_HOUR + $diff->i) * static::SECONDS_PER_MINUTE + ($diff->f + $diff->s)) * static::MICROSECONDS_PER_SECOND); diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php b/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php index a89b52ad40..5ff97ffd57 100644 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php +++ b/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php @@ -10,6 +10,8 @@ */ namespace Carbon\Traits; +use Closure; + /** * Trait Boundaries. * @@ -121,7 +123,7 @@ trait Macro * echo "$previousBlackMoon\n"; * ``` * - * @param object $mixin + * @param object|string $mixin * * @throws \ReflectionException * @@ -129,6 +131,25 @@ trait Macro */ public static function mixin($mixin) { + is_string($mixin) && trait_exists($mixin) + ? static::loadMixinTrait($mixin) + : static::loadMixinClass($mixin); + } + + /** + * Checks if macro is registered. + * + * @param string $name + * + * @return bool + */ + public static function hasMacro($name) + { + return isset(static::$globalMacros[$name]); + } + + private static function loadMixinClass($mixin) + { $methods = (new \ReflectionClass($mixin))->getMethods( \ReflectionMethod::IS_PUBLIC | \ReflectionMethod::IS_PROTECTED ); @@ -137,21 +158,27 @@ trait Macro if ($method->isConstructor() || $method->isDestructor()) { continue; } + $method->setAccessible(true); static::macro($method->name, $method->invoke($mixin)); } } - /** - * Checks if macro is registered. - * - * @param string $name - * - * @return bool - */ - public static function hasMacro($name) + private static function loadMixinTrait($trait) { - return isset(static::$globalMacros[$name]); + $context = eval('return new class() extends '.static::class.' {use '.$trait.';};'); + $className = get_class($context); + + foreach (get_class_methods($context) as $name) { + $closureBase = Closure::fromCallable([$context, $name]); + + static::macro($name, function () use ($closureBase, $className) { + $context = isset($this) ? $this->cast($className) : $className::now(); + $closure = $closureBase->bindTo($context); + + return $closure(...func_get_args()); + }); + } } } diff --git a/vendor/nesbot/carbon/src/Carbon/Translator.php b/vendor/nesbot/carbon/src/Carbon/Translator.php index 4a72b8b569..00adb6191e 100644 --- a/vendor/nesbot/carbon/src/Carbon/Translator.php +++ b/vendor/nesbot/carbon/src/Carbon/Translator.php @@ -202,8 +202,10 @@ class Translator extends Translation\Translator public function getLocalesFiles($prefix = '') { $files = []; + foreach ($this->getDirectories() as $directory) { $directory = rtrim($directory, '\\/'); + foreach (glob("$directory/$prefix*.php") as $file) { $files[] = $file; } @@ -316,7 +318,7 @@ class Translator extends Translation\Translator } if ($locale === 'auto') { - $completeLocale = setlocale(LC_TIME, 0); + $completeLocale = setlocale(LC_TIME, '0'); $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale); $locales = $this->getAvailableLocales($locale); diff --git a/vendor/symfony/cache/Traits/PhpFilesTrait.php b/vendor/symfony/cache/Traits/PhpFilesTrait.php index 6afdd8c3a5..5ed4d6023e 100644 --- a/vendor/symfony/cache/Traits/PhpFilesTrait.php +++ b/vendor/symfony/cache/Traits/PhpFilesTrait.php @@ -50,12 +50,15 @@ trait PhpFilesTrait { $time = time(); $pruned = true; + $getExpiry = true; set_error_handler($this->includeHandler); try { foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($this->directory, \FilesystemIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { try { - list($expiresAt) = include $file; + if (\is_array($expiresAt = include $file)) { + $expiresAt = $expiresAt[0]; + } } catch (\ErrorException $e) { $expiresAt = $time; } @@ -87,15 +90,21 @@ trait PhpFilesTrait $values = []; begin: + $getExpiry = false; + foreach ($ids as $id) { if (null === $value = $this->values[$id] ?? null) { $missingIds[] = $id; } elseif ('N;' === $value) { $values[$id] = null; - } elseif ($value instanceof \Closure) { - $values[$id] = $value(); - } else { + } elseif (!\is_object($value)) { $values[$id] = $value; + } elseif (!$value instanceof LazyValue) { + // calling a Closure is for @deprecated BC and should be removed in Symfony 5.0 + $values[$id] = $value(); + } elseif (false === $values[$id] = include $value->file) { + unset($values[$id], $this->values[$id]); + $missingIds[] = $id; } if (!$this->appendOnly) { unset($this->values[$id]); @@ -108,10 +117,18 @@ trait PhpFilesTrait set_error_handler($this->includeHandler); try { + $getExpiry = true; + foreach ($missingIds as $k => $id) { try { $file = $this->files[$id] ?? $this->files[$id] = $this->getFile($id); - list($expiresAt, $this->values[$id]) = include $file; + + if (\is_array($expiresAt = include $file)) { + [$expiresAt, $this->values[$id]] = $expiresAt; + } elseif ($now < $expiresAt) { + $this->values[$id] = new LazyValue($file); + } + if ($now >= $expiresAt) { unset($this->values[$id], $missingIds[$k]); } @@ -140,7 +157,13 @@ trait PhpFilesTrait set_error_handler($this->includeHandler); try { $file = $this->files[$id] ?? $this->files[$id] = $this->getFile($id); - list($expiresAt, $value) = include $file; + $getExpiry = true; + + if (\is_array($expiresAt = include $file)) { + [$expiresAt, $value] = $expiresAt; + } elseif ($this->appendOnly) { + $value = new LazyValue($file); + } } catch (\ErrorException $e) { return false; } finally { @@ -189,13 +212,16 @@ trait PhpFilesTrait } if (!$isStaticValue) { - $value = str_replace("\n", "\n ", $value); - $value = "static function () {\n\n return {$value};\n\n}"; + // We cannot use a closure here because of https://bugs.php.net/76982 + $value = str_replace('\Symfony\Component\VarExporter\Internal\\', '', $value); + $value = "<?php\n\nnamespace Symfony\Component\VarExporter\Internal;\n\nreturn \$getExpiry ? {$expiry} : {$value};\n"; + } else { + $value = "<?php return [{$expiry}, {$value}];\n"; } $file = $this->files[$key] = $this->getFile($key, true); // Since OPcache only compiles files older than the script execution start, set the file's mtime in the past - $ok = $this->write($file, "<?php return [{$expiry}, {$value}];\n", self::$startTime - 10) && $ok; + $ok = $this->write($file, $value, self::$startTime - 10) && $ok; if ($allowCompile) { @opcache_invalidate($file, true); @@ -241,3 +267,16 @@ trait PhpFilesTrait return @unlink($file); } } + +/** + * @internal + */ +class LazyValue +{ + public $file; + + public function __construct($file) + { + $this->file = $file; + } +} diff --git a/vendor/symfony/debug/DebugClassLoader.php b/vendor/symfony/debug/DebugClassLoader.php index ff9a8d72f9..463a43e2ae 100644 --- a/vendor/symfony/debug/DebugClassLoader.php +++ b/vendor/symfony/debug/DebugClassLoader.php @@ -153,11 +153,11 @@ class DebugClassLoader if (!$file = $this->classLoader[0]->findFile($class) ?: false) { // no-op } elseif (\function_exists('opcache_is_script_cached') && @opcache_is_script_cached($file)) { - require $file; + include $file; return; - } else { - require $file; + } elseif (false === include $file) { + return; } } else { ($this->classLoader)($class); diff --git a/vendor/symfony/debug/Tests/ErrorHandlerTest.php b/vendor/symfony/debug/Tests/ErrorHandlerTest.php index f758d21e0e..9ceeb0f097 100644 --- a/vendor/symfony/debug/Tests/ErrorHandlerTest.php +++ b/vendor/symfony/debug/Tests/ErrorHandlerTest.php @@ -70,8 +70,8 @@ class ErrorHandlerTest extends TestCase public function testErrorGetLast() { - $handler = ErrorHandler::register(); $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); + $handler = ErrorHandler::register(); $handler->setDefaultLogger($logger); $handler->screamAt(E_ALL); @@ -143,9 +143,8 @@ class ErrorHandlerTest extends TestCase public function testDefaultLogger() { try { - $handler = ErrorHandler::register(); - $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); + $handler = ErrorHandler::register(); $handler->setDefaultLogger($logger, E_NOTICE); $handler->setDefaultLogger($logger, [E_USER_NOTICE => LogLevel::CRITICAL]); @@ -331,12 +330,11 @@ class ErrorHandlerTest extends TestCase public function testHandleException() { try { + $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); $handler = ErrorHandler::register(); $exception = new \Exception('foo'); - $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); - $logArgCheck = function ($level, $message, $context) { $this->assertSame('Uncaught Exception: foo', $message); $this->assertArrayHasKey('exception', $context); @@ -442,6 +440,7 @@ class ErrorHandlerTest extends TestCase public function testHandleFatalError() { try { + $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); $handler = ErrorHandler::register(); $error = [ @@ -451,8 +450,6 @@ class ErrorHandlerTest extends TestCase 'line' => 123, ]; - $logger = $this->getMockBuilder('Psr\Log\LoggerInterface')->getMock(); - $logArgCheck = function ($level, $message, $context) { $this->assertEquals('Fatal Parse Error: foo', $message); $this->assertArrayHasKey('exception', $context); diff --git a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php index 4910fe5ec9..3a9af8b6b8 100644 --- a/vendor/symfony/debug/Tests/ExceptionHandlerTest.php +++ b/vendor/symfony/debug/Tests/ExceptionHandlerTest.php @@ -85,7 +85,7 @@ content="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg" ob_start(); $handler->sendPhpResponse(new MethodNotAllowedHttpException(['POST'])); - $response = ob_get_clean(); + ob_get_clean(); $expectedHeaders = [ ['HTTP/1.0 405', true, null], @@ -108,35 +108,65 @@ content="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg" public function testHandle() { - $exception = new \Exception('foo'); + $handler = new ExceptionHandler(true); + ob_start(); - $handler = $this->getMockBuilder('Symfony\Component\Debug\ExceptionHandler')->setMethods(['sendPhpResponse'])->getMock(); - $handler - ->expects($this->exactly(2)) - ->method('sendPhpResponse'); + $handler->handle(new \Exception('foo')); - $handler->handle($exception); + $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'foo'); + } - $handler->setHandler(function ($e) use ($exception) { - $this->assertSame($exception, $e); + public function testHandleWithACustomHandlerThatOutputsSomething() + { + $handler = new ExceptionHandler(true); + ob_start(); + $handler->setHandler(function () { + echo 'ccc'; }); - $handler->handle($exception); + $handler->handle(new \Exception()); + ob_end_flush(); // Necessary because of this PHP bug : https://bugs.php.net/bug.php?id=76563 + $this->assertSame('ccc', ob_get_clean()); } - public function testHandleOutOfMemoryException() + public function testHandleWithACustomHandlerThatOutputsNothing() + { + $handler = new ExceptionHandler(true); + $handler->setHandler(function () {}); + + $handler->handle(new \Exception('ccc')); + + $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc'); + } + + public function testHandleWithACustomHandlerThatFails() { - $exception = new OutOfMemoryException('foo', 0, E_ERROR, __FILE__, __LINE__); + $handler = new ExceptionHandler(true); + $handler->setHandler(function () { + throw new \RuntimeException(); + }); - $handler = $this->getMockBuilder('Symfony\Component\Debug\ExceptionHandler')->setMethods(['sendPhpResponse'])->getMock(); - $handler - ->expects($this->once()) - ->method('sendPhpResponse'); + $handler->handle(new \Exception('ccc')); - $handler->setHandler(function ($e) { + $this->assertThatTheExceptionWasOutput(ob_get_clean(), \Exception::class, 'Exception', 'ccc'); + } + + public function testHandleOutOfMemoryException() + { + $handler = new ExceptionHandler(true); + ob_start(); + $handler->setHandler(function () { $this->fail('OutOfMemoryException should bypass the handler'); }); - $handler->handle($exception); + $handler->handle(new OutOfMemoryException('foo', 0, E_ERROR, __FILE__, __LINE__)); + + $this->assertThatTheExceptionWasOutput(ob_get_clean(), OutOfMemoryException::class, 'OutOfMemoryException', 'foo'); + } + + private function assertThatTheExceptionWasOutput($content, $expectedClass, $expectedTitle, $expectedMessage) + { + $this->assertContains(sprintf('<span class="exception_title"><abbr title="%s">%s</abbr></span>', $expectedClass, $expectedTitle), $content); + $this->assertContains(sprintf('<p class="break-long-words trace-message">%s</p>', $expectedMessage), $content); } } diff --git a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php b/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php index 8e615ac640..9a56b3b4ec 100644 --- a/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php +++ b/vendor/symfony/debug/Tests/FatalErrorHandler/ClassNotFoundFatalErrorHandlerTest.php @@ -61,7 +61,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase } $this->assertInstanceOf('Symfony\Component\Debug\Exception\ClassNotFoundException', $exception); - $this->assertSame($translatedMessage, $exception->getMessage()); + $this->assertRegExp($translatedMessage, $exception->getMessage()); $this->assertSame($error['type'], $exception->getSeverity()); $this->assertSame($error['file'], $exception->getFile()); $this->assertSame($error['line'], $exception->getLine()); @@ -71,6 +71,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase { $autoloader = new ComposerClassLoader(); $autoloader->add('Symfony\Component\Debug\Exception\\', realpath(__DIR__.'/../../Exception')); + $autoloader->add('Symfony_Component_Debug_Tests_Fixtures', realpath(__DIR__.'/../../Tests/Fixtures')); $debugClassLoader = new DebugClassLoader([$autoloader, 'loadClass']); @@ -82,7 +83,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'WhizBangFactory\' not found', ], - "Attempted to load class \"WhizBangFactory\" from the global namespace.\nDid you forget a \"use\" statement?", + "/^Attempted to load class \"WhizBangFactory\" from the global namespace.\nDid you forget a \"use\" statement\?$/", ], [ [ @@ -91,7 +92,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'Foo\\Bar\\WhizBangFactory\' not found', ], - "Attempted to load class \"WhizBangFactory\" from namespace \"Foo\\Bar\".\nDid you forget a \"use\" statement for another namespace?", + "/^Attempted to load class \"WhizBangFactory\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/", ], [ [ @@ -100,7 +101,8 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'UndefinedFunctionException\' not found', ], - "Attempted to load class \"UndefinedFunctionException\" from the global namespace.\nDid you forget a \"use\" statement for \"Symfony\Component\Debug\Exception\UndefinedFunctionException\"?", + "/^Attempted to load class \"UndefinedFunctionException\" from the global namespace.\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/", + [$debugClassLoader, 'loadClass'], ], [ [ @@ -109,7 +111,8 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'PEARClass\' not found', ], - "Attempted to load class \"PEARClass\" from the global namespace.\nDid you forget a \"use\" statement for \"Symfony_Component_Debug_Tests_Fixtures_PEARClass\"?", + "/^Attempted to load class \"PEARClass\" from the global namespace.\nDid you forget a \"use\" statement for \"Symfony_Component_Debug_Tests_Fixtures_PEARClass\"\?$/", + [$debugClassLoader, 'loadClass'], ], [ [ @@ -118,7 +121,8 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found', ], - "Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\Bar\".\nDid you forget a \"use\" statement for \"Symfony\Component\Debug\Exception\UndefinedFunctionException\"?", + "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for .*\"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/", + [$debugClassLoader, 'loadClass'], ], [ [ @@ -127,7 +131,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found', ], - "Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\Bar\".\nDid you forget a \"use\" statement for \"Symfony\Component\Debug\Exception\UndefinedFunctionException\"?", + "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?$/", [$autoloader, 'loadClass'], ], [ @@ -137,7 +141,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found', ], - "Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\Bar\".\nDid you forget a \"use\" statement for \"Symfony\Component\Debug\Exception\UndefinedFunctionException\"?", + "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for \"Symfony\\\\Component\\\\Debug\\\\Exception\\\\UndefinedFunctionException\"\?/", [$debugClassLoader, 'loadClass'], ], [ @@ -147,7 +151,7 @@ class ClassNotFoundFatalErrorHandlerTest extends TestCase 'file' => 'foo.php', 'message' => 'Class \'Foo\\Bar\\UndefinedFunctionException\' not found', ], - "Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\Bar\".\nDid you forget a \"use\" statement for another namespace?", + "/^Attempted to load class \"UndefinedFunctionException\" from namespace \"Foo\\\\Bar\".\nDid you forget a \"use\" statement for another namespace\?$/", function ($className) { /* do nothing here */ }, ], ]; diff --git a/vendor/symfony/debug/Tests/MockExceptionHandler.php b/vendor/symfony/debug/Tests/MockExceptionHandler.php deleted file mode 100644 index 2d6ce564d2..0000000000 --- a/vendor/symfony/debug/Tests/MockExceptionHandler.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Tests; - -use Symfony\Component\Debug\ExceptionHandler; - -class MockExceptionHandler extends ExceptionHandler -{ - public $e; - - public function handle(\Exception $e) - { - $this->e = $e; - } -} diff --git a/vendor/symfony/event-dispatcher/EventDispatcher.php b/vendor/symfony/event-dispatcher/EventDispatcher.php index 304caec1d1..a5f0b7eda5 100644 --- a/vendor/symfony/event-dispatcher/EventDispatcher.php +++ b/vendor/symfony/event-dispatcher/EventDispatcher.php @@ -54,15 +54,13 @@ class EventDispatcher implements EventDispatcherInterface if (\is_object($event)) { $eventName = $eventName ?? \get_class($event); - } else { - @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', EventDispatcherInterface::class), E_USER_DEPRECATED); + } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) { + @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', EventDispatcherInterface::class), E_USER_DEPRECATED); $swap = $event; $event = $eventName ?? new Event(); $eventName = $swap; - - if (!$event instanceof Event) { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of %s, %s given.', EventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event))); - } + } else { + throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', EventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event))); } if (null !== $this->optimized && null !== $eventName) { diff --git a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php index 534eec98a5..afa3e988d0 100644 --- a/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php +++ b/vendor/symfony/event-dispatcher/LegacyEventDispatcherProxy.php @@ -16,7 +16,7 @@ use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface; /** - * An helper class to provide BC/FC with the legacy signature of EventDispatcherInterface::dispatch(). + * A helper class to provide BC/FC with the legacy signature of EventDispatcherInterface::dispatch(). * * This class should be deprecated in Symfony 5.1 * @@ -57,15 +57,13 @@ final class LegacyEventDispatcherProxy implements EventDispatcherInterface if (\is_object($event)) { $eventName = $eventName ?? \get_class($event); - } else { - @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as first argument is deprecated since Symfony 4.3, pass it second and provide the event object first instead.', ContractsEventDispatcherInterface::class), E_USER_DEPRECATED); + } elseif (\is_string($event) && (null === $eventName || $eventName instanceof Event)) { + @trigger_error(sprintf('Calling the "%s::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead.', ContractsEventDispatcherInterface::class), E_USER_DEPRECATED); $swap = $event; $event = $eventName ?? new Event(); $eventName = $swap; - - if (!$event instanceof Event) { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an instance of %s, %s given.', ContractsEventDispatcherInterface::class, Event::class, \is_object($event) ? \get_class($event) : \gettype($event))); - } + } else { + throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', ContractsEventDispatcherInterface::class, \is_object($event) ? \get_class($event) : \gettype($event))); } $listeners = $this->getListeners($eventName); diff --git a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php index e89f78cda8..658a941239 100644 --- a/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php +++ b/vendor/symfony/event-dispatcher/Tests/EventDispatcherTest.php @@ -412,6 +412,33 @@ class EventDispatcherTest extends TestCase $this->assertTrue($testLoaded); } + + /** + * @group legacy + * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead. + */ + public function testLegacySignatureWithoutEvent() + { + $this->dispatcher->dispatch('foo'); + } + + /** + * @group legacy + * @expectedDeprecation Calling the "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead. + */ + public function testLegacySignatureWithEvent() + { + $this->dispatcher->dispatch('foo', new Event()); + } + + /** + * @expectedException \TypeError + * @expectedExceptionMessage Argument 1 passed to "Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given. + */ + public function testLegacySignatureWithNewEventObject() + { + $this->dispatcher->dispatch('foo', new ContractsEvent()); + } } class CallableClass diff --git a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php b/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php index 49aa2f9ff3..ffa767cf8b 100644 --- a/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php +++ b/vendor/symfony/event-dispatcher/Tests/LegacyEventDispatcherTest.php @@ -14,12 +14,42 @@ namespace Symfony\Component\EventDispatcher\Tests; use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy; +use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; /** * @group legacy */ class LegacyEventDispatcherTest extends EventDispatcherTest { + /** + * @group legacy + * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3. + * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead. + */ + public function testLegacySignatureWithoutEvent() + { + $this->createEventDispatcher()->dispatch('foo'); + } + + /** + * @group legacy + * @expectedDeprecation The signature of the "Symfony\Component\EventDispatcher\Tests\TestLegacyEventDispatcher::dispatch()" method should be updated to "dispatch($event, string $eventName = null)", not doing so is deprecated since Symfony 4.3. + * @expectedDeprecation Calling the "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" method with the event name as the first argument is deprecated since Symfony 4.3, pass it as the second argument and provide the event object as the first argument instead. + */ + public function testLegacySignatureWithEvent() + { + $this->createEventDispatcher()->dispatch('foo', new Event()); + } + + /** + * @expectedException \TypeError + * @expectedExceptionMessage Argument 1 passed to "Symfony\Contracts\EventDispatcher\EventDispatcherInterface::dispatch()" must be an object, string given. + */ + public function testLegacySignatureWithNewEventObject() + { + $this->createEventDispatcher()->dispatch('foo', new ContractsEvent()); + } + protected function createEventDispatcher() { return LegacyEventDispatcherProxy::decorate(new TestLegacyEventDispatcher()); diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php index fffe2ab81e..27d5f43b67 100644 --- a/vendor/symfony/http-foundation/Request.php +++ b/vendor/symfony/http-foundation/Request.php @@ -913,8 +913,8 @@ class Request $pos = strrpos($host, ':'); } - if (false !== $pos) { - return (int) substr($host, $pos + 1); + if (false !== $pos && $port = substr($host, $pos + 1)) { + return (int) $port; } return 'https' === $this->getScheme() ? 443 : 80; diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php index 904dc1b523..4efaf412a3 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php @@ -17,7 +17,7 @@ namespace Symfony\Component\HttpFoundation\Session\Storage\Handler; * @author Markus Bachmann <markus.bachmann@bachi.biz> * * @see https://packagist.org/packages/mongodb/mongodb - * @see http://php.net/manual/en/set.mongodb.php + * @see https://php.net/mongodb */ class MongoDbSessionHandler extends AbstractSessionHandler { diff --git a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php index f962965a82..fbc25c3ef3 100644 --- a/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php +++ b/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php @@ -23,7 +23,7 @@ class NativeFileSessionHandler extends \SessionHandler * Default null will leave setting as defined by PHP. * '/path', 'N;/path', or 'N;octal-mode;/path * - * @see http://php.net/session.configuration.php#ini.session.save-path for further details. + * @see https://php.net/manual/session.configuration.php#ini.session.save-path for further details. * * @throws \InvalidArgumentException On invalid $savePath * @throws \RuntimeException When failing to create the save directory diff --git a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php index ce7027954e..9e03bfa41b 100644 --- a/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php +++ b/vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php @@ -103,6 +103,10 @@ class NativeSessionStorage implements SessionStorageInterface */ public function __construct(array $options = [], $handler = null, MetadataBag $metaBag = null) { + if (!\extension_loaded('session')) { + throw new \LogicException('PHP extension "session" is required.'); + } + $options += [ 'cache_limiter' => '', 'cache_expire' => 0, diff --git a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php index 662ed5015a..8969e609aa 100644 --- a/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php +++ b/vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php @@ -24,6 +24,10 @@ class PhpBridgeSessionStorage extends NativeSessionStorage */ public function __construct($handler = null, MetadataBag $metaBag = null) { + if (!\extension_loaded('session')) { + throw new \LogicException('PHP extension "session" is required.'); + } + $this->setMetadataBag($metaBag); $this->setSaveHandler($handler); } diff --git a/vendor/symfony/http-foundation/Tests/RequestTest.php b/vendor/symfony/http-foundation/Tests/RequestTest.php index ab0dcf6818..20883221d3 100644 --- a/vendor/symfony/http-foundation/Tests/RequestTest.php +++ b/vendor/symfony/http-foundation/Tests/RequestTest.php @@ -2303,6 +2303,18 @@ class RequestTest extends TestCase $this->assertSame(443, $request->getPort()); } + + public function testTrustedPortDoesNotDefaultToZero() + { + Request::setTrustedProxies(['1.1.1.1'], Request::HEADER_X_FORWARDED_ALL); + + $request = Request::create('/'); + $request->server->set('REMOTE_ADDR', '1.1.1.1'); + $request->headers->set('X-Forwarded-Host', 'test.example.com'); + $request->headers->set('X-Forwarded-Port', ''); + + $this->assertSame(80, $request->getPort()); + } } class RequestContentProxy extends Request diff --git a/vendor/symfony/http-foundation/UrlHelper.php b/vendor/symfony/http-foundation/UrlHelper.php index 3c06e93217..f114c0a9fb 100644 --- a/vendor/symfony/http-foundation/UrlHelper.php +++ b/vendor/symfony/http-foundation/UrlHelper.php @@ -23,7 +23,7 @@ final class UrlHelper private $requestStack; private $requestContext; - public function __construct(RequestStack $requestStack, ?RequestContext $requestContext = null) + public function __construct(RequestStack $requestStack, RequestContext $requestContext = null) { $this->requestStack = $requestStack; $this->requestContext = $requestContext; diff --git a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php index dd527708be..f28fbd60cc 100644 --- a/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php +++ b/vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php @@ -50,10 +50,9 @@ class CacheWarmerAggregate implements CacheWarmerInterface */ public function warmUp($cacheDir) { - if ($this->debug) { + if ($collectDeprecations = $this->debug && !\defined('PHPUNIT_COMPOSER_INSTALL')) { $collectedLogs = []; - $previousHandler = \defined('PHPUNIT_COMPOSER_INSTALL'); - $previousHandler = $previousHandler ?: set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) { + $previousHandler = set_error_handler(function ($type, $message, $file, $line) use (&$collectedLogs, &$previousHandler) { if (E_USER_DEPRECATED !== $type && E_DEPRECATED !== $type) { return $previousHandler ? $previousHandler($type, $message, $file, $line) : false; } @@ -96,7 +95,7 @@ class CacheWarmerAggregate implements CacheWarmerInterface $warmer->warmUp($cacheDir); } } finally { - if ($this->debug && true !== $previousHandler) { + if ($collectDeprecations) { restore_error_handler(); if (file_exists($this->deprecationLogsFilepath)) { diff --git a/vendor/symfony/http-kernel/Client.php b/vendor/symfony/http-kernel/Client.php index 66ce0649f0..d4ae5f8e65 100644 --- a/vendor/symfony/http-kernel/Client.php +++ b/vendor/symfony/http-kernel/Client.php @@ -23,6 +23,9 @@ use Symfony\Component\HttpFoundation\Response; /** * Client simulates a browser and makes requests to an HttpKernel instance. * + * @method Request getRequest() A Request instance + * @method Response getResponse() A Response instance + * * @deprecated since Symfony 4.3, use HttpKernelBrowser instead. */ class Client extends AbstractBrowser diff --git a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php index 4091b6760f..405a951526 100644 --- a/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php +++ b/vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php @@ -149,7 +149,7 @@ class LoggerDataCollector extends DataCollector implements LateDataCollectorInte return $logs; } - private function getContainerCompilerLogs(?string $compilerLogsFilepath = null): array + private function getContainerCompilerLogs(string $compilerLogsFilepath = null): array { if (!file_exists($compilerLogsFilepath)) { return []; diff --git a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php index 325b8cbc0d..fb8e67e7ed 100644 --- a/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php +++ b/vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php @@ -63,7 +63,7 @@ class LocaleAwareListener implements EventSubscriberInterface ]; } - private function setLocale(string $locale, ?string $defaultLocale = null): void + private function setLocale(string $locale, string $defaultLocale = null): void { foreach ($this->localeAwareServices as $service) { try { diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php index 4752759004..65476f80e3 100644 --- a/vendor/symfony/http-kernel/Kernel.php +++ b/vendor/symfony/http-kernel/Kernel.php @@ -73,11 +73,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private $requestStackSize = 0; private $resetServices = false; - const VERSION = '4.3.2'; - const VERSION_ID = 40302; + const VERSION = '4.3.3'; + const VERSION_ID = 40303; const MAJOR_VERSION = 4; const MINOR_VERSION = 3; - const RELEASE_VERSION = 2; + const RELEASE_VERSION = 3; const EXTRA_VERSION = ''; const END_OF_MAINTENANCE = '01/2020'; diff --git a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php b/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php index bd70de9c3b..eb16d6e988 100644 --- a/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php +++ b/vendor/symfony/http-kernel/Tests/Debug/TraceableEventDispatcherTest.php @@ -26,7 +26,7 @@ class TraceableEventDispatcherTest extends TestCase public function testStopwatchSections() { $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), $stopwatch = new Stopwatch()); - $kernel = $this->getHttpKernel($dispatcher, function () { return new Response(); }); + $kernel = $this->getHttpKernel($dispatcher, function () { return new Response('', 200, ['X-Debug-Token' => '292e1e']); }); $request = Request::create('/'); $response = $kernel->handle($request); $kernel->terminate($request, $response); diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionAbsentBundle/ExtensionAbsentBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionAbsentBundle/ExtensionAbsentBundle.php deleted file mode 100644 index c8bfd36e66..0000000000 --- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionAbsentBundle/ExtensionAbsentBundle.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionAbsentBundle; - -use Symfony\Component\HttpKernel\Bundle\Bundle; - -class ExtensionAbsentBundle extends Bundle -{ -} diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/DependencyInjection/ExtensionLoadedExtension.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/DependencyInjection/ExtensionLoadedExtension.php deleted file mode 100644 index b43bc665a8..0000000000 --- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/DependencyInjection/ExtensionLoadedExtension.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionLoadedBundle\DependencyInjection; - -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Extension\Extension; - -class ExtensionLoadedExtension extends Extension -{ - public function load(array $configs, ContainerBuilder $container) - { - } -} diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/ExtensionLoadedBundle.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/ExtensionLoadedBundle.php deleted file mode 100644 index 3af81cb073..0000000000 --- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionLoadedBundle/ExtensionLoadedBundle.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien@symfony.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionLoadedBundle; - -use Symfony\Component\HttpKernel\Bundle\Bundle; - -class ExtensionLoadedBundle extends Bundle -{ -} diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/BarCommand.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/BarCommand.php deleted file mode 100644 index 977976b75f..0000000000 --- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/BarCommand.php +++ /dev/null @@ -1,17 +0,0 @@ -<?php - -namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\Command; - -use Symfony\Component\Console\Command\Command; - -/** - * This command has a required parameter on the constructor and will be ignored by the default Bundle implementation. - * - * @see Bundle::registerCommands() - */ -class BarCommand extends Command -{ - public function __construct($example, $name = 'bar') - { - } -} diff --git a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/FooCommand.php b/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/FooCommand.php deleted file mode 100644 index c6570aa046..0000000000 --- a/vendor/symfony/http-kernel/Tests/Fixtures/ExtensionPresentBundle/Command/FooCommand.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -/* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier <fabien.potencier@symfony-project.com> - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Tests\Fixtures\ExtensionPresentBundle\Command; - -use Symfony\Component\Console\Command\Command; - -class FooCommand extends Command -{ - protected function configure() - { - $this->setName('foo'); - } -} diff --git a/vendor/symfony/mime/CHANGELOG.md b/vendor/symfony/mime/CHANGELOG.md new file mode 100644 index 0000000000..796cfdd155 --- /dev/null +++ b/vendor/symfony/mime/CHANGELOG.md @@ -0,0 +1,12 @@ +CHANGELOG +========= + +4.3.3 +----- + + * [BC BREAK] Renamed method `Headers::getAll()` to `Headers::all()`. + +4.3.0 +----- + + * Introduced the component as experimental diff --git a/vendor/symfony/mime/Email.php b/vendor/symfony/mime/Email.php index 7812372d53..3fbebc461f 100644 --- a/vendor/symfony/mime/Email.php +++ b/vendor/symfony/mime/Email.php @@ -103,7 +103,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -113,7 +113,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -131,7 +131,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -141,7 +141,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -159,7 +159,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -169,7 +169,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -187,7 +187,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -197,7 +197,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ @@ -215,7 +215,7 @@ class Email extends Message } /** - * @param Address|NamedAddress|string $addresses + * @param Address|NamedAddress|string ...$addresses * * @return $this */ @@ -225,7 +225,7 @@ class Email extends Message } /** - * @param Address|string $addresses + * @param Address|string ...$addresses * * @return $this */ diff --git a/vendor/symfony/mime/Header/Headers.php b/vendor/symfony/mime/Header/Headers.php index c0e45e0d0a..57f02b25a3 100644 --- a/vendor/symfony/mime/Header/Headers.php +++ b/vendor/symfony/mime/Header/Headers.php @@ -51,7 +51,7 @@ final class Headers public function setMaxLineLength(int $lineLength) { $this->lineLength = $lineLength; - foreach ($this->getAll() as $header) { + foreach ($this->all() as $header) { $header->setMaxLineLength($lineLength); } } @@ -177,7 +177,7 @@ final class Headers return array_shift($values); } - public function getAll(string $name = null): iterable + public function all(string $name = null): iterable { if (null === $name) { foreach ($this->headers as $name => $collection) { @@ -220,7 +220,7 @@ final class Headers public function toArray(): array { $arr = []; - foreach ($this->getAll() as $header) { + foreach ($this->all() as $header) { if ('' !== $header->getBodyAsString()) { $arr[] = $header->toString(); } diff --git a/vendor/symfony/mime/Message.php b/vendor/symfony/mime/Message.php index db6e13fae6..4d6af1c94d 100644 --- a/vendor/symfony/mime/Message.php +++ b/vendor/symfony/mime/Message.php @@ -130,17 +130,11 @@ class Message extends RawMessage return bin2hex(random_bytes(16)).strstr($email, '@'); } - /** - * @internal - */ public function __serialize(): array { return [$this->headers, $this->body]; } - /** - * @internal - */ public function __unserialize(array $data): void { [$this->headers, $this->body] = $data; diff --git a/vendor/symfony/mime/RawMessage.php b/vendor/symfony/mime/RawMessage.php index 16b090c954..40a2795e23 100644 --- a/vendor/symfony/mime/RawMessage.php +++ b/vendor/symfony/mime/RawMessage.php @@ -69,17 +69,11 @@ class RawMessage implements \Serializable $this->__unserialize(unserialize($serialized)); } - /** - * @internal - */ public function __serialize(): array { return [$this->message]; } - /** - * @internal - */ public function __unserialize(array $data): void { [$this->message] = $data; diff --git a/vendor/symfony/mime/Tests/Header/HeadersTest.php b/vendor/symfony/mime/Tests/Header/HeadersTest.php index 2f4a1dd635..3568c9a6e4 100644 --- a/vendor/symfony/mime/Tests/Header/HeadersTest.php +++ b/vendor/symfony/mime/Tests/Header/HeadersTest.php @@ -141,7 +141,7 @@ class HeadersTest extends TestCase $this->assertNull($headers->get('Message-ID')); } - public function testGetAllReturnsAllHeadersMatchingName() + public function testAllReturnsAllHeadersMatchingName() { $header0 = new UnstructuredHeader('X-Test', 'some@id'); $header1 = new UnstructuredHeader('X-Test', 'other@id'); @@ -150,10 +150,10 @@ class HeadersTest extends TestCase $headers->addTextHeader('X-Test', 'some@id'); $headers->addTextHeader('X-Test', 'other@id'); $headers->addTextHeader('X-Test', 'more@id'); - $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->getAll('X-Test'))); + $this->assertEquals([$header0, $header1, $header2], iterator_to_array($headers->all('X-Test'))); } - public function testGetAllReturnsAllHeadersIfNoArguments() + public function testAllReturnsAllHeadersIfNoArguments() { $header0 = new IdentificationHeader('Message-ID', 'some@id'); $header1 = new UnstructuredHeader('Subject', 'thing'); @@ -162,13 +162,13 @@ class HeadersTest extends TestCase $headers->addIdHeader('Message-ID', 'some@id'); $headers->addTextHeader('Subject', 'thing'); $headers->addMailboxListHeader('To', [new Address('person@example.org')]); - $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->getAll())); + $this->assertEquals(['message-id' => $header0, 'subject' => $header1, 'to' => $header2], iterator_to_array($headers->all())); } - public function testGetAllReturnsEmptyArrayIfNoneSet() + public function testAllReturnsEmptyArrayIfNoneSet() { $headers = new Headers(); - $this->assertEquals([], iterator_to_array($headers->getAll('Received'))); + $this->assertEquals([], iterator_to_array($headers->all('Received'))); } public function testRemoveRemovesAllHeadersWithName() @@ -199,12 +199,12 @@ class HeadersTest extends TestCase $this->assertEquals($header, $headers->get('message-id')); } - public function testGetAllIsNotCaseSensitive() + public function testAllIsNotCaseSensitive() { $header = new IdentificationHeader('Message-ID', 'some@id'); $headers = new Headers(); $headers->addIdHeader('Message-ID', 'some@id'); - $this->assertEquals([$header], iterator_to_array($headers->getAll('message-id'))); + $this->assertEquals([$header], iterator_to_array($headers->all('message-id'))); } public function testRemoveIsNotCaseSensitive() diff --git a/vendor/symfony/mime/Tests/MessageTest.php b/vendor/symfony/mime/Tests/MessageTest.php index dbeb0a5544..cc806b919e 100644 --- a/vendor/symfony/mime/Tests/MessageTest.php +++ b/vendor/symfony/mime/Tests/MessageTest.php @@ -68,7 +68,7 @@ class MessageTest extends TestCase $message = new Message(); $message->getHeaders()->addMailboxListHeader('From', ['fabien@symfony.com']); $h = $message->getPreparedHeaders(); - $this->assertCount(4, iterator_to_array($h->getAll())); + $this->assertCount(4, iterator_to_array($h->all())); $this->assertEquals(new MailboxListHeader('From', [new Address('fabien@symfony.com')]), $h->get('From')); $this->assertEquals(new UnstructuredHeader('MIME-Version', '1.0'), $h->get('mime-version')); $this->assertTrue($h->has('Message-Id')); diff --git a/vendor/symfony/translation/Loader/MoFileLoader.php b/vendor/symfony/translation/Loader/MoFileLoader.php index 16a3dfc618..d344c6e21a 100644 --- a/vendor/symfony/translation/Loader/MoFileLoader.php +++ b/vendor/symfony/translation/Loader/MoFileLoader.php @@ -111,17 +111,12 @@ class MoFileLoader extends FileLoader $ids = ['singular' => $singularId, 'plural' => $pluralId]; $item = compact('ids', 'translated'); - if (\is_array($item['translated'])) { - $messages[$item['ids']['singular']] = stripcslashes($item['translated'][0]); + if (!empty($item['ids']['singular'])) { + $id = $item['ids']['singular']; if (isset($item['ids']['plural'])) { - $plurals = []; - foreach ($item['translated'] as $plural => $translated) { - $plurals[] = sprintf('{%d} %s', $plural, $translated); - } - $messages[$item['ids']['plural']] = stripcslashes(implode('|', $plurals)); + $id .= '|'.$item['ids']['plural']; } - } elseif (!empty($item['ids']['singular'])) { - $messages[$item['ids']['singular']] = stripcslashes($item['translated']); + $messages[$id] = stripcslashes(implode('|', (array) $item['translated'])); } } diff --git a/vendor/symfony/translation/Loader/PoFileLoader.php b/vendor/symfony/translation/Loader/PoFileLoader.php index 1412a786a7..5e460fbfb8 100644 --- a/vendor/symfony/translation/Loader/PoFileLoader.php +++ b/vendor/symfony/translation/Loader/PoFileLoader.php @@ -12,7 +12,7 @@ namespace Symfony\Component\Translation\Loader; /** - * @copyright Copyright (c) 2010, Union of RAD http://union-of-rad.org (http://lithify.me/) + * @copyright Copyright (c) 2010, Union of RAD https://github.com/UnionOfRAD/lithium * @copyright Copyright (c) 2012, Clemens Tolboom */ class PoFileLoader extends FileLoader @@ -20,7 +20,7 @@ class PoFileLoader extends FileLoader /** * Parses portable object (PO) format. * - * From http://www.gnu.org/software/gettext/manual/gettext.html#PO-Files + * From https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files * we should be able to parse files having: * * white-space @@ -126,23 +126,24 @@ class PoFileLoader extends FileLoader */ private function addMessage(array &$messages, array $item) { - if (\is_array($item['translated'])) { - $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated'][0]); + if (!empty($item['ids']['singular'])) { + $id = stripcslashes($item['ids']['singular']); if (isset($item['ids']['plural'])) { - $plurals = $item['translated']; - // PO are by definition indexed so sort by index. - ksort($plurals); - // Make sure every index is filled. - end($plurals); - $count = key($plurals); - // Fill missing spots with '-'. - $empties = array_fill(0, $count + 1, '-'); - $plurals += $empties; - ksort($plurals); - $messages[stripcslashes($item['ids']['plural'])] = stripcslashes(implode('|', $plurals)); + $id .= '|'.stripcslashes($item['ids']['plural']); } - } elseif (!empty($item['ids']['singular'])) { - $messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated']); + + $translated = (array) $item['translated']; + // PO are by definition indexed so sort by index. + ksort($translated); + // Make sure every index is filled. + end($translated); + $count = key($translated); + // Fill missing spots with '-'. + $empties = array_fill(0, $count + 1, '-'); + $translated += $empties; + ksort($translated); + + $messages[$id] = stripcslashes(implode('|', $translated)); } } } diff --git a/vendor/symfony/translation/Tests/Loader/MoFileLoaderTest.php b/vendor/symfony/translation/Tests/Loader/MoFileLoaderTest.php index 63de5cebaa..d6adecb173 100644 --- a/vendor/symfony/translation/Tests/Loader/MoFileLoaderTest.php +++ b/vendor/symfony/translation/Tests/Loader/MoFileLoaderTest.php @@ -34,7 +34,10 @@ class MoFileLoaderTest extends TestCase $resource = __DIR__.'/../fixtures/plurals.mo'; $catalogue = $loader->load($resource, 'en', 'domain1'); - $this->assertEquals(['foo' => 'bar', 'foos' => '{0} bar|{1} bars'], $catalogue->all('domain1')); + $this->assertEquals([ + 'foo|foos' => 'bar|bars', + '{0} no foos|one foo|%count% foos' => '{0} no bars|one bar|%count% bars', + ], $catalogue->all('domain1')); $this->assertEquals('en', $catalogue->getLocale()); $this->assertEquals([new FileResource($resource)], $catalogue->getResources()); } diff --git a/vendor/symfony/translation/Tests/Loader/PoFileLoaderTest.php b/vendor/symfony/translation/Tests/Loader/PoFileLoaderTest.php index d8e2c1993b..cb94e90a94 100644 --- a/vendor/symfony/translation/Tests/Loader/PoFileLoaderTest.php +++ b/vendor/symfony/translation/Tests/Loader/PoFileLoaderTest.php @@ -34,7 +34,10 @@ class PoFileLoaderTest extends TestCase $resource = __DIR__.'/../fixtures/plurals.po'; $catalogue = $loader->load($resource, 'en', 'domain1'); - $this->assertEquals(['foo' => 'bar', 'foos' => 'bar|bars'], $catalogue->all('domain1')); + $this->assertEquals([ + 'foo|foos' => 'bar|bars', + '{0} no foos|one foo|%count% foos' => '{0} no bars|one bar|%count% bars', + ], $catalogue->all('domain1')); $this->assertEquals('en', $catalogue->getLocale()); $this->assertEquals([new FileResource($resource)], $catalogue->getResources()); } @@ -89,10 +92,8 @@ class PoFileLoaderTest extends TestCase $catalogue = $loader->load($resource, 'en', 'domain1'); $messages = $catalogue->all('domain1'); - $this->assertArrayHasKey('escaped "foo"', $messages); - $this->assertArrayHasKey('escaped "foos"', $messages); - $this->assertEquals('escaped "bar"', $messages['escaped "foo"']); - $this->assertEquals('escaped "bar"|escaped "bars"', $messages['escaped "foos"']); + $this->assertArrayHasKey('escaped "foo"|escaped "foos"', $messages); + $this->assertEquals('escaped "bar"|escaped "bars"', $messages['escaped "foo"|escaped "foos"']); } public function testSkipFuzzyTranslations() @@ -106,4 +107,16 @@ class PoFileLoaderTest extends TestCase $this->assertArrayNotHasKey('foo2', $messages); $this->assertArrayHasKey('foo3', $messages); } + + public function testMissingPlurals() + { + $loader = new PoFileLoader(); + $resource = __DIR__.'/../fixtures/missing-plurals.po'; + $catalogue = $loader->load($resource, 'en', 'domain1'); + + $this->assertEquals([ + 'foo|foos' => '-|bar|-|bars', + ], $catalogue->all('domain1')); + $this->assertEquals('en', $catalogue->getLocale()); + } } diff --git a/vendor/symfony/translation/Tests/fixtures/missing-plurals.po b/vendor/symfony/translation/Tests/fixtures/missing-plurals.po new file mode 100644 index 0000000000..3b47fca805 --- /dev/null +++ b/vendor/symfony/translation/Tests/fixtures/missing-plurals.po @@ -0,0 +1,4 @@ +msgid "foo" +msgid_plural "foos" +msgstr[3] "bars" +msgstr[1] "bar" diff --git a/vendor/symfony/translation/Tests/fixtures/plurals.mo b/vendor/symfony/translation/Tests/fixtures/plurals.mo Binary files differindex 6445e77bea..3945ad95be 100644 --- a/vendor/symfony/translation/Tests/fixtures/plurals.mo +++ b/vendor/symfony/translation/Tests/fixtures/plurals.mo diff --git a/vendor/symfony/translation/Tests/fixtures/plurals.po b/vendor/symfony/translation/Tests/fixtures/plurals.po index 439c41ad7f..61d1ba42b4 100644 --- a/vendor/symfony/translation/Tests/fixtures/plurals.po +++ b/vendor/symfony/translation/Tests/fixtures/plurals.po @@ -3,3 +3,5 @@ msgid_plural "foos" msgstr[0] "bar" msgstr[1] "bars" +msgid "{0} no foos|one foo|%count% foos" +msgstr "{0} no bars|one bar|%count% bars" |
