diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml index 39d76099f..c33aa8df7 100644 --- a/.github/workflows/assets.yml +++ b/.github/workflows/assets.yml @@ -22,7 +22,7 @@ jobs: - name: "Install Node" uses: actions/setup-node@v3 with: - node-version: "12" + node-version: "16" - name: "Install dependencies with Yarn" run: "yarn install" diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..b6a7d89c6 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +16 diff --git a/.scrutinizer.yml b/.scrutinizer.yml deleted file mode 100644 index b3dcad267..000000000 --- a/.scrutinizer.yml +++ /dev/null @@ -1,47 +0,0 @@ -filter: - paths: - - src/* - excluded_paths: - - 'vendor/*' - - 'app/*' - - 'var/*' - - 'web/*' - - 'src/Wallabag/*Bundle/Tests/*' - - '*Test.php' - -tools: - php_cs_fixer: true - php_analyzer: true - php_mess_detector: true - php_changetracking: true - php_code_sniffer: true - php_pdepend: true - sensiolabs_security_checker: true - #external_code_coverage: - # timeout: 3600 - php_code_coverage: true - php_sim: false - php_cpd: false - -checks: - php: - code_rating: true - -# use the new PHP analysis engine -# https://scrutinizer-ci.com/docs/tools/php/php-analyzer/guides/migrate_to_new_php_analysis -build: - environment: - php: - version: 7.4 - - nodes: - analysis: - tests: - override: - - php-scrutinizer-run - - dependencies: - override: - - npm install -g 'yarn' - - yarn install --force - - COMPOSER_MEMORY_LIMIT=-1 composer install -o --no-interaction --no-progress --prefer-dist diff --git a/CHANGELOG.md b/CHANGELOG.md index c0fbb84f9..af6f79815 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## [2.5.1](https://github.com/wallabag/wallabag/tree/2.5.1) + [Full Changelog](https://github.com/wallabag/wallabag/compare/2.5.0...2.5.1) + +### Fixes +- Jump to Node 16 to build assets by @j0k3r in https://github.com/wallabag/wallabag/pull/5822 +- Update some deps by @j0k3r in https://github.com/wallabag/wallabag/pull/5834 +- Fix error about template not found in 2fa form by @j0k3r in https://github.com/wallabag/wallabag/pull/5833 +- Translations update from Hosted Weblate by @weblate in https://github.com/wallabag/wallabag/pull/5846 +- material: fix "untagged entries" chip style by @Kdecherf in https://github.com/wallabag/wallabag/pull/5840 + ## [2.5.0](https://github.com/wallabag/wallabag/tree/2.5.0) [Full Changelog](https://github.com/wallabag/wallabag/compare/2.4.3...2.5.0) diff --git a/app/Resources/static/themes/material/css/cards.scss b/app/Resources/static/themes/material/css/cards.scss index 918944501..a648c3887 100644 --- a/app/Resources/static/themes/material/css/cards.scss +++ b/app/Resources/static/themes/material/css/cards.scss @@ -164,6 +164,7 @@ a.original:not(.waves-effect) { border-radius: 3px; color: #fff; cursor: default; + line-height: 20px; } .card-entry-labels li { @@ -188,7 +189,7 @@ a.original:not(.waves-effect) { } .card-tag-link { - width: calc(100% - 48px); + width: calc(100% - 24px); line-height: 1.3; white-space: nowrap; text-overflow: ellipsis; @@ -212,7 +213,7 @@ a.original:not(.waves-effect) { .card-tag-labels { display: grid; - grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); } .card-tag-labels li { diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml index b902a9ef5..6f5315b98 100644 --- a/app/config/wallabag.yml +++ b/app/config/wallabag.yml @@ -1,5 +1,5 @@ wallabag_core: - version: 2.5.0 + version: 2.5.1 paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb" languages: en: 'English' diff --git a/composer.lock b/composer.lock index 1a5b97af3..9a610cbdc 100644 --- a/composer.lock +++ b/composer.lock @@ -613,16 +613,16 @@ }, { "name": "doctrine/cache", - "version": "1.12.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8" + "reference": "56cd022adb5514472cb144c087393c1821911d09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/4cf401d14df219fa6f38b671f5493449151c9ad8", - "reference": "4cf401d14df219fa6f38b671f5493449151c9ad8", + "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", + "reference": "56cd022adb5514472cb144c087393c1821911d09", "shasum": "" }, "require": { @@ -634,13 +634,13 @@ "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "suggest": { "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" @@ -692,7 +692,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.12.1" + "source": "https://github.com/doctrine/cache/tree/1.13.0" }, "funding": [ { @@ -708,7 +708,7 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:39:21+00:00" + "time": "2022-05-20T20:06:54+00:00" }, { "name": "doctrine/collections", @@ -1915,16 +1915,16 @@ }, { "name": "doctrine/reflection", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", + "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", "shasum": "" }, "require": { @@ -1936,18 +1936,13 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" + "doctrine/coding-standard": "^9", + "doctrine/common": "^3.3", + "phpstan/phpstan": "^1.4.10", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -1991,23 +1986,23 @@ ], "support": { "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.2" + "source": "https://github.com/doctrine/reflection/tree/1.2.3" }, "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" + "time": "2022-05-31T18:46:25+00:00" }, { "name": "egulias/email-validator", - "version": "3.1.2", + "version": "3.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a5ed8d58ed0c340a7c2109f587951b1c84cf6286", + "reference": "a5ed8d58ed0c340a7c2109f587951b1c84cf6286", "shasum": "" }, "require": { @@ -2054,7 +2049,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + "source": "https://github.com/egulias/EmailValidator/tree/3.2" }, "funding": [ { @@ -2062,7 +2057,7 @@ "type": "github" } ], - "time": "2021-10-11T09:18:27+00:00" + "time": "2022-05-28T22:19:18+00:00" }, { "name": "fig/link-util", @@ -2127,16 +2122,16 @@ }, { "name": "fossar/htmlawed", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/fossar/HTMLawed.git", - "reference": "cc42f2104e46d57485466f702af273f7d2658ae5" + "reference": "5bd4ce8bca395685a06f7dd18cc40832c77aa60f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fossar/HTMLawed/zipball/cc42f2104e46d57485466f702af273f7d2658ae5", - "reference": "cc42f2104e46d57485466f702af273f7d2658ae5", + "url": "https://api.github.com/repos/fossar/HTMLawed/zipball/5bd4ce8bca395685a06f7dd18cc40832c77aa60f", + "reference": "5bd4ce8bca395685a06f7dd18cc40832c77aa60f", "shasum": "" }, "require": { @@ -2178,9 +2173,9 @@ ], "support": { "issues": "https://github.com/fossar/HTMLawed/issues", - "source": "https://github.com/fossar/HTMLawed/tree/1.3.0" + "source": "https://github.com/fossar/HTMLawed/tree/1.3.1" }, - "time": "2022-02-01T21:46:30+00:00" + "time": "2022-06-07T07:27:07+00:00" }, { "name": "friendsofsymfony/jsrouting-bundle", @@ -4312,26 +4307,26 @@ }, { "name": "incenteev/composer-parameter-handler", - "version": "v2.1.4", + "version": "v2.1.5", "source": { "type": "git", "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "084befb11ec21faeadcddefb88b66132775ff59b" + "reference": "e1dd118763503f7fd766f907013e1d76d525fcc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/084befb11ec21faeadcddefb88b66132775ff59b", - "reference": "084befb11ec21faeadcddefb88b66132775ff59b", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/e1dd118763503f7fd766f907013e1d76d525fcc4", + "reference": "e1dd118763503f7fd766f907013e1d76d525fcc4", "shasum": "" }, "require": { "php": ">=5.3.3", - "symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0" + "symfony/yaml": "^2.3 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { "composer/composer": "^1.0@dev", - "symfony/filesystem": "^2.3 || ^3 || ^4 || ^5", - "symfony/phpunit-bridge": "^4.0 || ^5.0" + "symfony/filesystem": "^2.3 || ^3 || ^4 || ^5 || ^6.0", + "symfony/phpunit-bridge": "^3.4.47 || ^4.4.41 || ^5.4.8 || ^6.0" }, "type": "library", "extra": { @@ -4361,9 +4356,9 @@ ], "support": { "issues": "https://github.com/Incenteev/ParameterHandler/issues", - "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.1.4" + "source": "https://github.com/Incenteev/ParameterHandler/tree/v2.1.5" }, - "time": "2020-03-17T21:10:00+00:00" + "time": "2022-05-25T10:57:22+00:00" }, { "name": "j0k3r/graby", @@ -4452,16 +4447,16 @@ }, { "name": "j0k3r/graby-site-config", - "version": "1.0.150", + "version": "1.0.153", "source": { "type": "git", "url": "https://github.com/j0k3r/graby-site-config.git", - "reference": "16e759f50bf9bba0f675052210d92b3613deff55" + "reference": "eee81c160c0fbb570756f3e4992898057f47e614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/16e759f50bf9bba0f675052210d92b3613deff55", - "reference": "16e759f50bf9bba0f675052210d92b3613deff55", + "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/eee81c160c0fbb570756f3e4992898057f47e614", + "reference": "eee81c160c0fbb570756f3e4992898057f47e614", "shasum": "" }, "require": { @@ -4490,9 +4485,9 @@ "description": "Graby site config files", "support": { "issues": "https://github.com/j0k3r/graby-site-config/issues", - "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.150" + "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.153" }, - "time": "2022-05-03T13:14:24+00:00" + "time": "2022-06-08T04:55:59+00:00" }, { "name": "j0k3r/httplug-ssrf-plugin", @@ -6754,16 +6749,16 @@ }, { "name": "php-http/discovery", - "version": "1.14.1", + "version": "1.14.2", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "de90ab2b41d7d61609f504e031339776bc8c7223" + "reference": "c8d48852fbc052454af42f6de27635ddd916b959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223", - "reference": "de90ab2b41d7d61609f504e031339776bc8c7223", + "url": "https://api.github.com/repos/php-http/discovery/zipball/c8d48852fbc052454af42f6de27635ddd916b959", + "reference": "c8d48852fbc052454af42f6de27635ddd916b959", "shasum": "" }, "require": { @@ -6776,8 +6771,7 @@ "graham-campbell/phpspec-skip-example-extension": "^5.0", "php-http/httplug": "^1.0 || ^2.0", "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^5.1 || ^6.1", - "puli/composer-plugin": "1.0.0-beta10" + "phpspec/phpspec": "^5.1 || ^6.1" }, "suggest": { "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories" @@ -6816,9 +6810,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.1" + "source": "https://github.com/php-http/discovery/tree/1.14.2" }, - "time": "2021-09-18T07:57:46+00:00" + "time": "2022-05-25T07:26:05+00:00" }, { "name": "php-http/guzzle5-adapter", @@ -9125,16 +9119,16 @@ }, { "name": "symfony/http-client", - "version": "v5.4.8", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "0dabec4e3898d3e00451dd47b5ef839168f9bbf5" + "reference": "dc0b15e42b762c040761c1eb9ce86a55d47cf672" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/0dabec4e3898d3e00451dd47b5ef839168f9bbf5", - "reference": "0dabec4e3898d3e00451dd47b5ef839168f9bbf5", + "url": "https://api.github.com/repos/symfony/http-client/zipball/dc0b15e42b762c040761c1eb9ce86a55d47cf672", + "reference": "dc0b15e42b762c040761c1eb9ce86a55d47cf672", "shasum": "" }, "require": { @@ -9192,7 +9186,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.8" + "source": "https://github.com/symfony/http-client/tree/v5.4.9" }, "funding": [ { @@ -9208,7 +9202,7 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:02:29+00:00" + "time": "2022-05-21T08:57:05+00:00" }, { "name": "symfony/http-client-contracts", @@ -9289,6 +9283,7 @@ "time": "2022-03-13T20:07:29+00:00" }, { + "name": "symfony/monolog-bundle", "version": "v3.6.0", "source": { @@ -9371,16 +9366,16 @@ }, { "name": "symfony/polyfill-apcu", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18" + "reference": "43273a33c46f9d5a08dac76859f63d6814242e81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/80f7fb64c5b64ebcba76f40215e63808a2062a18", - "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/43273a33c46f9d5a08dac76859f63d6814242e81", + "reference": "43273a33c46f9d5a08dac76859f63d6814242e81", "shasum": "" }, "require": { @@ -9389,7 +9384,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9428,7 +9423,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-apcu/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-apcu/tree/v1.26.0" }, "funding": [ { @@ -9444,20 +9439,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", "shasum": "" }, "require": { @@ -9472,7 +9467,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9510,7 +9505,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" }, "funding": [ { @@ -9526,20 +9521,20 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" + "reference": "143f1881e655bebca1312722af8068de235ae5dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", - "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", + "reference": "143f1881e655bebca1312722af8068de235ae5dc", "shasum": "" }, "require": { @@ -9554,7 +9549,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9593,7 +9588,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" }, "funding": [ { @@ -9609,20 +9604,20 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:04:05+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "c023a439b8551e320cc3c8433b198e408a623af1" + "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/c023a439b8551e320cc3c8433b198e408a623af1", - "reference": "c023a439b8551e320cc3c8433b198e408a623af1", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e407643d610e5f2c8a4b14189150f68934bf5e48", + "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48", "shasum": "" }, "require": { @@ -9634,7 +9629,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9680,7 +9675,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.26.0" }, "funding": [ { @@ -9696,20 +9691,20 @@ "type": "tidelift" } ], - "time": "2021-10-26T17:16:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { @@ -9723,7 +9718,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9767,7 +9762,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -9783,20 +9778,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { @@ -9808,7 +9803,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9851,7 +9846,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" }, "funding": [ { @@ -9867,20 +9862,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", "shasum": "" }, "require": { @@ -9895,7 +9890,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9934,7 +9929,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -9950,7 +9945,7 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php56", @@ -10090,16 +10085,16 @@ }, { "name": "symfony/polyfill-php72", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", "shasum": "" }, "require": { @@ -10108,7 +10103,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10146,7 +10141,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" }, "funding": [ { @@ -10162,20 +10157,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", + "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", "shasum": "" }, "require": { @@ -10184,7 +10179,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10225,7 +10220,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" }, "funding": [ { @@ -10241,20 +10236,20 @@ "type": "tidelift" } ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", "shasum": "" }, "require": { @@ -10263,7 +10258,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10308,7 +10303,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" }, "funding": [ { @@ -10324,20 +10319,20 @@ "type": "tidelift" } ], - "time": "2022-03-04T08:16:47+00:00" + "time": "2022-05-10T07:21:04+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.25.0", + "version": "v1.26.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "7529922412d23ac44413d0f308861d50cf68d3ee" + "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/7529922412d23ac44413d0f308861d50cf68d3ee", - "reference": "7529922412d23ac44413d0f308861d50cf68d3ee", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/a41886c1c81dc075a09c71fe6db5b9d68c79de23", + "reference": "a41886c1c81dc075a09c71fe6db5b9d68c79de23", "shasum": "" }, "require": { @@ -10352,7 +10347,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10390,7 +10385,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.25.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.26.0" }, "funding": [ { @@ -10406,7 +10401,7 @@ "type": "tidelift" } ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { "name": "symfony/service-contracts", @@ -12152,16 +12147,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.14.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", + "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", "shasum": "" }, "require": { @@ -12202,9 +12197,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-05-31T20:59:12+00:00" }, { "name": "php-cs-fixer/diff", @@ -12719,16 +12714,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.0.8", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "4959a1eedd473bdb3f19db5b1525d5415dfab471" + "reference": "092ccc3b364925cd8ed6046bc31dcf3a022bd5a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/4959a1eedd473bdb3f19db5b1525d5415dfab471", - "reference": "4959a1eedd473bdb3f19db5b1525d5415dfab471", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/092ccc3b364925cd8ed6046bc31dcf3a022bd5a4", + "reference": "092ccc3b364925cd8ed6046bc31dcf3a022bd5a4", "shasum": "" }, "require": { @@ -12782,7 +12777,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.0.8" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.0" }, "funding": [ { @@ -12798,7 +12793,7 @@ "type": "tidelift" } ], - "time": "2022-04-12T16:11:42+00:00" + "time": "2022-04-12T16:22:53+00:00" } ], "aliases": [], diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile index f96b9d6b4..c22237266 100644 --- a/docker/php/Dockerfile +++ b/docker/php/Dockerfile @@ -1,7 +1,7 @@ FROM php:7.4-fpm AS rootless ARG DEBIAN_FRONTEND=noninteractive -ARG NODE_VERSION=14 +ARG NODE_VERSION=16 RUN apt-get update \ && apt-get install -y \ diff --git a/package.json b/package.json index d5fcf6b15..64d42d6bd 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "wallabag", - "version": "2.3.3", + "version": "2.5.0", "description": "wallabag is a self hostable application for saving web pages", "private": true, "directories": { "doc": "docs" }, "engines": { - "node": ">=12" + "node": ">=16" }, "repository": { "type": "git", @@ -36,13 +36,13 @@ "url": "https://github.com/wallabag/wallabag/issues" }, "devDependencies": { - "@babel/core": "^7.17.10", - "@babel/eslint-parser": "^7.17.0", - "@babel/preset-env": "^7.17.10", + "@babel/core": "^7.18.2", + "@babel/eslint-parser": "^7.18.2", + "@babel/preset-env": "^7.18.2", "autoprefixer": "^10.4.7", "babel-loader": "^8.2.5", "css-loader": "^6.7.1", - "eslint": "^8.15.0", + "eslint": "^8.17.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.26.0", "eslint-webpack-plugin": "^3.1.1", @@ -50,21 +50,21 @@ "lato-font": "^3.0.0", "mini-css-extract-plugin": "^2.6.0", "node-sass": "^7.0.1", - "postcss": "^8.4.13", - "postcss-loader": "^6.2.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", "postcss-scss": "^4.0.4", - "sass": "^1.51.0", - "sass-loader": "^12.6.0", + "sass": "^1.52.2", + "sass-loader": "^13.0.0", "style-loader": "^3.3.1", - "stylelint": "^14.8.2", + "stylelint": "^14.8.5", "stylelint-config-standard": "^25.0.0", "stylelint-scss": "^4.2.0", - "stylelint-webpack-plugin": "^3.2.0", - "terser-webpack-plugin": "^5.3.1", + "stylelint-webpack-plugin": "^3.3.0", + "terser-webpack-plugin": "^5.3.3", "url-loader": "^4.1.1", - "webpack": "^5.72.1", + "webpack": "^5.73.0", "webpack-cli": "^4.9.2", - "webpack-dev-server": "^4.9.0", + "webpack-dev-server": "^4.9.2", "webpack-manifest-plugin": "^5.0.0", "webpack-merge": "^5.7.3" }, @@ -79,7 +79,7 @@ "jr-qrcode": "^1.0.7", "material-design-icons-iconfont": "^6.7.0", "materialize-css": "^0.98.1", - "mathjax": "^3.1.2", + "mathjax": "^3.2.1", "mousetrap": "^1.6.0", "ptsans-npm-webfont": "^0.0.4", "roboto-fontface": "^0.10.0", diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 6a5188879..c3fc7bb90 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml @@ -226,6 +226,7 @@ entry: filtered_search: 'Articles filtrés par recherche :' untagged: Article sans étiquette all: Tous les articles + same_domain: Même site list: number_on_the_page: '{0} Il n’y a pas d’article.|{1} Il y a un article.|]1,Inf[ Il y a %count% articles.' reading_time: durée de lecture @@ -239,6 +240,8 @@ entry: toogle_as_star: Marquer comme favori delete: Supprimer export_title: Exporter + show_same_domain: Afficher les articles du même site + assign_search_tag: Ajouter cette recherche comme un tag à chaque résultat filters: title: Filtres status_label: Status @@ -519,6 +522,10 @@ import: elcurator: description: Cet outil va importer tous vos articles depuis elCurator. Allez dans vos préférences sur elCurator et exportez vos contenus. Vous allez récupérer un fichier JSON. page_title: Importer > elCurator + delicious: + page_title: Importer > del.icio.us + how_to: Choisissez le fichier de votre export Delicious et cliquez sur le bouton ci-dessous pour l'importer. + description: Depuis 2021, vous pouvez à nouveau exporter vos données depuis Delicious (https://del.icio.us/export). Choisissez le format "JSON" et téléchargez le (un fichier du genre "delicious_export.2021.02.06_21.10.json"). developer: page_title: Gestion des clients API welcome_message: Bienvenue sur l’API de wallabag diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.hu.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.hu.yml index 83cc918cd..bd22f314c 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.hu.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.hu.yml @@ -393,6 +393,7 @@ tag: list: number_on_the_page: '{0} Nincsenek címkék.|{1} Egy címke.|]1,Inf[ %count% címke.' see_untagged_entries: Címkézetlen bejegyzések megtekintése + untagged: Címkézetlen bejegyzések new: add: Hozzáad placeholder: Több címkét is hozzáadhat, vesszővel elválasztva. diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index 179fd9368..8989195e2 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml @@ -409,6 +409,7 @@ tag: list: number_on_the_page: "{0} Non ci sono etichette.|{1} C'è un'etichetta.|]1,Inf[ ci sono %count% etichette." see_untagged_entries: Vedi articoli non etichettati + untagged: Articoli non etichettati new: add: Aggiungi placeholder: Puoi aggiungere varie etichette, separate da una virgola. diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index e76515a9b..f6cb8596b 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml @@ -405,6 +405,7 @@ tag: list: number_on_the_page: "{0} I a pas cap d'etiquetas.|{1} I a una etiqueta.|]1,Inf[ I a %count% etiquetas." see_untagged_entries: Afichar las entradas sens etiquetas + untagged: Articles sens etiqueta new: add: Ajustar placeholder: Podètz ajustar mai qu'una etiqueta, separadas per de virgula. diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index 09ee2b92b..4c188ac4c 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml @@ -440,6 +440,7 @@ tag: list: number_on_the_page: '{0} Nie ma tagów.|{1} Jest jeden tag.|]1,Inf[ Są %count% tagi.' see_untagged_entries: Zobacz nieotagowane wpisy + untagged: Odtaguj wpisy new: add: Dodaj placeholder: Możesz dodać kilka tagów, oddzielając je przecinkami. diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml index 73631f392..8ac9f919d 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pt.yml @@ -329,6 +329,7 @@ tag: list: number_on_the_page: '{0} Não existem tags.|{1} Uma tag.|]1,Inf[ Existem %count% tags.' see_untagged_entries: 'Ver entradas sem tags' + untagged: Entradas sem tags import: page_title: 'Importar' page_description: 'Bem-vindo ao importador do wallabag. Por favo selecione o serviço do qual deseja migrar.' diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml index 3929eace2..84e289b27 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.th.yml @@ -381,6 +381,7 @@ tag: list: number_on_the_page: '{0} ไม่มีการแท็ก|{1} มีหนึ่งแท็ก|]1,Inf[ มี %count% แท็ก' see_untagged_entries: 'พบรายการที่ไม่ได้แท็ก' + untagged: รายการที่ไม่ได้แท็ก new: add: 'เพิ่ม' placeholder: 'คุณสามารถเพิ่มได้หลายแท็ก, จากการแบ่งโดย comma' diff --git a/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig index e15ed255b..22945b51b 100644 --- a/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig @@ -1,5 +1,5 @@ {# Override `vendor/scheb/two-factor-bundle/Resources/views/Authentication/form.html.twig` #} -{% extends "WallabagUserBundle::layout.html.twig" %} +{% extends "FOSUserBundle::layout.html.twig" %} {% block fos_user_content %}
diff --git a/web/wallassets/baggy.js b/web/wallassets/baggy.js index ef693f87e..53b7ae970 100644 --- a/web/wallassets/baggy.js +++ b/web/wallassets/baggy.js @@ -1,2 +1,2 @@ -(()=>{var e={5641:(e,t,n)=>{"use strict";n(8186)(n(262));var r=n(9731),i=n(9999);t.gV=r.App,n(1849),n(5587),t.notification=n(3612),t.storage=n(4623),t.ui=n(5443);var o=n.g.wgxpath;null!=o&&"function"==typeof o.install&&o.install();var a=n.g.annotator},9731:(e,t,n)=>{"use strict";var r=n(280),i=n(2702).Promise,o=n(1849),a=n(5587),s=n(3612),l=n(1258),T=n(4623);function c(){this.modules=[],this.registry=new l.Registry,this._started=!1,this.registry.registerUtility(s.defaultNotifier,"notifier"),this.include(o.acl),this.include(a.simple),this.include(T.noop)}c.prototype.include=function(e,t){var n=e(t);return"function"==typeof n.configure&&n.configure(this.registry),this.modules.push(n),this},c.prototype.start=function(){if(!this._started){this._started=!0;var e=this,t=this.registry;return this.authz=t.getUtility("authorizationPolicy"),this.ident=t.getUtility("identityPolicy"),this.notify=t.getUtility("notifier"),this.annotations=new T.StorageAdapter(t.getUtility("storage"),(function(){return e.runHook.apply(e,arguments)})),this.runHook("start",[this])}},c.prototype.destroy=function(){return this.runHook("destroy")},c.prototype.runHook=function(e,t){for(var n=[],r=0,o=this.modules.length;r{"use strict";var n;t.acl=function(){var e=new n;return{configure:function(t){t.registerUtility(e,"authorizationPolicy")}}},(n=t.AclAuthzPolicy=function(){}).prototype.permits=function(e,t,n){var r=this.authorizedUserId(n),i=t.permissions;if(i){var o=i[e];if(null==o)return!0;for(var a=0,s=o.length;a{"use strict";var n;t.simple=function(){var e=new n;return{configure:function(t){t.registerUtility(e,"identityPolicy")},beforeAnnotationCreated:function(t){t.user=e.who()}}},n=function(){this.identity=null},t.SimpleIdentityPolicy=n,n.prototype.who=function(){return this.identity}},3612:(e,t,n)=>{"use strict";var r=n(9999),i=r.$,o="info",a={show:"annotator-notice-show",info:"annotator-notice-info",success:"annotator-notice-success",error:"annotator-notice-error"};function s(e,t){null==t&&(t=o);var s=i("
")[0],l=!1,T=function(){l||(l=!0,i(s).removeClass(a.show).removeClass(a[t]),setTimeout((function(){i(s).remove()}),500))};return i(s).addClass(a.show).addClass(a[t]).html(r.escapeHtml(e||"")).appendTo(n.g.document.body),i(s).on("click",T),setTimeout(T,5e3),{close:T}}t.banner=s,t.defaultNotifier=s,t.INFO=o,t.SUCCESS="success",t.ERROR="error"},1258:(e,t)=>{"use strict";function n(){this.utilities={}}function r(e){this.name="LookupError",this.message='No utility registered for interface "'+e+'".'}n.prototype.registerUtility=function(e,t){this.utilities[t]=e},n.prototype.getUtility=function(e){var t=this.queryUtility(e);if(null===t)throw new r(e);return t},n.prototype.queryUtility=function(e){var t=this.utilities[e];return null==t?null:t},r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,t.LookupError=r,t.Registry=n},4623:(e,t,n)=>{"use strict";var r,i,o=n(9999),a=o.$,s=o.gettext,l=o.Promise,T=(r=-1,function(){return r+=1});function c(e,t){this.store=e,this.runHook=t}t.debug=function(){function e(e,t){var n=JSON.parse(JSON.stringify(t));console.debug("annotator.storage.debug: "+e,n)}return{create:function(t){return t.id=T(),e("create",t),t},update:function(t){return e("update",t),t},delete:function(t){return e("destroy",t),t},query:function(t){return e("query",t),{results:[],meta:{total:0}}},configure:function(e){e.registerUtility(this,"storage")}}},t.noop=function(){return{create:function(e){return void 0!==e.id&&null!==e.id||(e.id=T()),e},update:function(e){return e},delete:function(e){return e},query:function(){return{results:[]}},configure:function(e){e.registerUtility(this,"storage")}}},t.http=function(e){var t=function(){};null==e&&(e={}),e.onError=e.onError||function(e,n){console.error(e,n),t(e,"error")};var n=new i(e);return{configure:function(e){e.registerUtility(n,"storage")},start:function(e){t=e.notify}}},(i=t.HttpStorage=function e(t){this.options=a.extend(!0,{},e.options,t),this.onError=this.options.onError}).prototype.create=function(e){return this._apiRequest("create",e)},i.prototype.update=function(e){return this._apiRequest("update",e)},i.prototype.delete=function(e){return this._apiRequest("destroy",e)},i.prototype.query=function(e){return this._apiRequest("search",e).then((function(e){var t=e.rows;return delete e.rows,{results:t,meta:e}}))},i.prototype.setHeader=function(e,t){this.options.headers[e]=t},i.prototype._apiRequest=function(e,t){var n=t&&t.id,r=this._urlFor(e,n),i=this._apiRequestOptions(e,t),o=a.ajax(r,i);return o._id=n,o._action=e,o},i.prototype._apiRequestOptions=function(e,t){var n=this._methodFor(e),r=this,i={type:n,dataType:"json",error:function(){r._onError.apply(r,arguments)},headers:this.options.headers};if(!this.options.emulateHTTP||"PUT"!==n&&"DELETE"!==n||(i.headers=a.extend(i.headers,{"X-HTTP-Method-Override":n}),i.type="POST"),"search"===e)return i=a.extend(i,{data:t});var o=t&&JSON.stringify(t);return this.options.emulateJSON?(i.data={json:o},this.options.emulateHTTP&&(i.data._method=n),i):i=a.extend(i,{data:o,contentType:"application/json; charset=utf-8"})},i.prototype._urlFor=function(e,t){null==t&&(t="");var n="";return void 0!==this.options.prefix&&null!==this.options.prefix&&(n=this.options.prefix),n=(n+=this.options.urls[e]).replace(/idAnnotation/,t)},i.prototype._methodFor=function(e){return{create:"POST",update:"PUT",destroy:"DELETE",search:"GET"}[e]},i.prototype._onError=function(e){var t;"function"==typeof this.onError&&(t=400===e.status?s("The annotation store did not understand the request! (Error 400)"):401===e.status?s("You must be logged in to perform this operation! (Error 401)"):403===e.status?s("You don't have permission to perform this operation! (Error 403)"):404===e.status?s("Could not connect to the annotation store! (Error 404)"):500===e.status?s("Internal error in annotation store! (Error 500)"):s("Unknown error while speaking to annotation store!"),this.onError(t,e))},i.options={emulateHTTP:!1,emulateJSON:!1,headers:{},onError:function(e){console.error("API request failed: "+e)},prefix:"/store",urls:{create:"/annotations",update:"/annotations/idAnnotation",destroy:"/annotations/idAnnotation",search:"/search"}},c.prototype.create=function(e){return null==e&&(e={}),this._cycle(e,"create","beforeAnnotationCreated","annotationCreated")},c.prototype.update=function(e){if(void 0===e.id||null===e.id)throw new TypeError("annotation must have an id for update()");return this._cycle(e,"update","beforeAnnotationUpdated","annotationUpdated")},c.prototype.delete=function(e){if(void 0===e.id||null===e.id)throw new TypeError("annotation must have an id for delete()");return this._cycle(e,"delete","beforeAnnotationDeleted","annotationDeleted")},c.prototype.query=function(e){return l.resolve(this.store.query(e))},c.prototype.load=function(e){var t=this;return this.query(e).then((function(e){t.runHook("annotationsLoaded",[e.results])}))},c.prototype._cycle=function(e,t,n,r){var i=this;return this.runHook(n,[e]).then((function(){var n=a.extend(!0,{},e);delete n._local;var r=i.store[t](n);return l.resolve(r)})).then((function(t){for(var n in e)e.hasOwnProperty(n)&&"_local"!==n&&delete e[n];return a.extend(e,t),i.runHook(r,[e]),e}))},t.StorageAdapter=c},5443:(e,t,n)=>{t.main=n(3735).main,n(5107),n(8486),n(3826),n(7930),n(863),n(6996),n(7224),n(4233),n(3553)},5107:(e,t,n)=>{"use strict";var r=n(3553).$,i=n(9999),o=i.$,a=i.gettext,s="annotator-adder",l=r.extend({constructor:function(e){r.call(this,e),this.ignoreMouseup=!1,this.annotation=null,this.onCreate=this.options.onCreate;var t=this;this.element.on("click."+s,"button",(function(e){t._onClick(e)})).on("mousedown."+s,"button",(function(e){t._onMousedown(e)})),this.document=this.element[0].ownerDocument,o(this.document.body).on("mouseup."+s,(function(e){t._onMouseup(e)}))},destroy:function(){this.element.off("."+s),o(this.document.body).off("."+s),r.prototype.destroy.call(this)},load:function(e,t){this.annotation=e,this.show(t)},show:function(e){null!=e&&this.element.css({top:e.top,left:e.left}),r.prototype.show.call(this)},_onMousedown:function(e){e.which>1||(e.preventDefault(),this.ignoreMouseup=!0)},_onMouseup:function(e){e.which>1||this.ignoreMouseup&&e.stopImmediatePropagation()},_onClick:function(e){e.which>1||(e.preventDefault(),this.hide(),this.ignoreMouseup=!1,null!==this.annotation&&"function"==typeof this.onCreate&&this.onCreate(this.annotation,e))}});l.template=['
',' ","
"].join("\n"),l.options={onCreate:null},t.Adder=l},8486:(e,t,n)=>{"use strict";var r,i=n(3553).$,o=n(9999),a=o.$,s=o.gettext,l=o.Promise,T="annotator-editor",c=(r=-1,function(){return r+=1});function Q(e){null!=e&&"function"==typeof e.preventDefault&&e.preventDefault()}var u=t.dragTracker=function(e,t){var n=null,r=!1;function i(e){if(!r&&null!==n){var i={y:e.pageY-n.top,x:e.pageX-n.left},o=!0;"function"==typeof t&&(o=t(i)),!1!==o&&(n={top:e.pageY,left:e.pageX}),r=!0,setTimeout((function(){r=!1}),1e3/60)}}function o(){n=null,a(e.ownerDocument).off("mouseup",o).off("mousemove",i)}function s(t){t.target===e&&(n={top:t.pageY,left:t.pageX},a(e.ownerDocument).on("mouseup",o).on("mousemove",i),t.preventDefault())}return a(e).on("mousedown",s),{destroy:function(){a(e).off("mousedown",s)}}},d=t.resizer=function(e,t,n){var r=a(e);return null==n&&(n={}),u(t,(function(e){var t=r.height(),i=r.width(),o=function(e){var t=1,r=-1;return"function"==typeof n.invertedX&&n.invertedX()&&(t=-1),"function"==typeof n.invertedY&&n.invertedY()&&(r=1),{x:e.x*t,y:e.y*r}}(e);return Math.abs(o.x)>0&&r.width(i+o.x),Math.abs(o.y)>0&&r.height(t+o.y),r.height()!==t||r.width()!==i}))},p=t.mover=function(e,t){return u(t,(function(t){a(e).css({top:parseInt(a(e).css("top"),10)+t.y,left:parseInt(a(e).css("left"),10)+t.x})}))},_=t.Editor=i.extend({constructor:function(e){i.call(this,e),this.fields=[],this.annotation={},this.options.defaultFields&&this.addField({type:"textarea",label:s("Comments")+"…",load:function(e,t){a(e).find("textarea").val(t.text||"")},submit:function(e,t){t.text=a(e).find("textarea").val()}});var t=this;this.element.on("submit."+T,"form",(function(e){t._onFormSubmit(e)})).on("click."+T,".annotator-save",(function(e){t._onSaveClick(e)})).on("click."+T,".annotator-cancel",(function(e){t._onCancelClick(e)})).on("mouseover."+T,".annotator-cancel",(function(e){t._onCancelMouseover(e)})).on("keydown."+T,"textarea",(function(e){t._onTextareaKeydown(e)}))},destroy:function(){this.element.off("."+T),i.prototype.destroy.call(this)},show:function(e){null!=e&&this.element.css({top:e.top,left:e.left}),this.element.find(".annotator-save").addClass(this.classes.focus),i.prototype.show.call(this),this.element.find(":input:first").focus(),this._setupDraggables()},load:function(e,t){this.annotation=e;for(var n=0,r=this.fields.length;n');return t.element=r[0],"textarea"===t.type?n=a("",m.noCloneChecked=!!pe.cloneNode(!0).lastChild.defaultValue,pe.innerHTML="",m.option=!!pe.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Ee(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&H(e,t)?S.merge([e],n):n}function be(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function Le(e,t,n,r,i){for(var o,a,s,l,T,c,Q=t.createDocumentFragment(),u=[],d=0,p=e.length;d-1)i&&i.push(o);else if(T=se(o),a=Ee(Q.appendChild(o),"script"),T&&be(a),n)for(c=0;o=a[c++];)he.test(o.type||"")&&n.push(o);return Q}var Se=/^([^.]*)(?:\.(.+)|)/;function ve(){return!0}function Oe(){return!1}function Ce(e,t){return e===function(){try{return g.activeElement}catch(e){}}()==("focus"===t)}function Ne(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ne(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Oe;else if(!i)return e;return 1===o&&(a=i,i=function(e){return S().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=S.guid++)),e.each((function(){S.event.add(this,t,i,r,n)}))}function Me(e,t,n){n?(X.set(e,t,!1),S.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=X.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(S.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=s.call(arguments),X.set(this,t,o),r=n(this,t),this[t](),o!==(i=X.get(this,t))||r?X.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i&&i.value}else o.length&&(X.set(this,t,{value:S.event.trigger(S.extend(o[0],S.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===X.get(e,t)&&S.event.add(e,t,ve)}S.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,T,c,Q,u,d,p,_,m=X.get(e);if($(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(ae,i),n.guid||(n.guid=S.guid++),(l=m.events)||(l=m.events=Object.create(null)),(a=m.handle)||(a=m.handle=function(t){return void 0!==S&&S.event.triggered!==t.type?S.event.dispatch.apply(e,arguments):void 0}),T=(t=(t||"").match(V)||[""]).length;T--;)d=_=(s=Se.exec(t[T])||[])[1],p=(s[2]||"").split(".").sort(),d&&(Q=S.event.special[d]||{},d=(i?Q.delegateType:Q.bindType)||d,Q=S.event.special[d]||{},c=S.extend({type:d,origType:_,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:p.join(".")},o),(u=l[d])||((u=l[d]=[]).delegateCount=0,Q.setup&&!1!==Q.setup.call(e,r,p,a)||e.addEventListener&&e.addEventListener(d,a)),Q.add&&(Q.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?u.splice(u.delegateCount++,0,c):u.push(c),S.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,T,c,Q,u,d,p,_,m=X.hasData(e)&&X.get(e);if(m&&(l=m.events)){for(T=(t=(t||"").match(V)||[""]).length;T--;)if(d=_=(s=Se.exec(t[T])||[])[1],p=(s[2]||"").split(".").sort(),d){for(Q=S.event.special[d]||{},u=l[d=(r?Q.delegateType:Q.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=u.length;o--;)c=u[o],!i&&_!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(u.splice(o,1),c.selector&&u.delegateCount--,Q.remove&&Q.remove.call(e,c));a&&!u.length&&(Q.teardown&&!1!==Q.teardown.call(e,p,m.handle)||S.removeEvent(e,d,m.handle),delete l[d])}else for(d in l)S.event.remove(e,d+t[T],n,r,!0);S.isEmptyObject(l)&&X.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),l=S.event.fix(e),T=(X.get(this,"events")||Object.create(null))[l.type]||[],c=S.event.special[l.type]||{};for(s[0]=l,t=1;t=1))for(;T!==this;T=T.parentNode||this)if(1===T.nodeType&&("click"!==e.type||!0!==T.disabled)){for(o=[],a={},n=0;n-1:S.find(i,this,null,[T]).length),a[i]&&o.push(r);o.length&&s.push({elem:T,handlers:o})}return T=this,l\s*$/g;function xe(e,t){return H(e,"table")&&H(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function we(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function De(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(X.hasData(e)&&(s=X.get(e).events))for(i in X.remove(t,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof p&&!m.checkClone&&Re.test(p))return e.each((function(i){var o=e.eq(i);_&&(t[0]=p.call(this,i,o.html())),Ve(o,t,n,r)}));if(u&&(o=(i=Le(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=S.map(Ee(i,"script"),Ie)).length;Q0&&be(a,!l&&Ee(e,"script")),s},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[X.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[X.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),S.fn.extend({detach:function(e){return ke(this,e,!0)},remove:function(e){return ke(this,e)},text:function(e){return Y(this,(function(e){return void 0===e?S.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Ve(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||xe(this,e).appendChild(e)}))},prepend:function(){return Ve(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=xe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Ve(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Ve(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(Ee(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return S.clone(this,e,t)}))},html:function(e){return Y(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!He.test(e)&&!ge[(fe.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function nt(e,t,n){var r=Fe(e),i=(!m.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=je(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Be.test(a)){if(!n)return a;a="auto"}return(!m.boxSizingReliable()&&i||!m.reliableTrDimensions()&&H(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(i?"border":"content"),o,r,a)+"px"}function rt(e,t,n,r,i){return new rt.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=Z(t),l=Ke.test(t),T=e.style;if(l||(t=Ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:T[t];"string"===(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ce(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),m.clearCloneStyle||""!==n||0!==t.indexOf("background")||(T[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(l?T.setProperty(t,n):T[t]=n))}},css:function(e,t,n,r){var i,o,a,s=Z(t);return Ke.test(t)||(t=Ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=je(e,t,r)),"normal"===i&&t in Je&&(i=Je[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],(function(e,t){S.cssHooks[t]={get:function(e,n,r){if(n)return!$e.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,t,r):Ue(e,Xe,(function(){return nt(e,t,r)}))},set:function(e,n,r){var i,o=Fe(e),a=!m.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===S.css(e,"boxSizing",!1,o),l=r?tt(e,t,r,s,o):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-tt(e,t,"border",!1,o)-.5)),l&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=S.css(e,t)),et(0,n,l)}}})),S.cssHooks.marginLeft=Ye(m.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(je(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),S.each({margin:"",padding:"",border:"Width"},(function(e,t){S.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(S.cssHooks[e+t].set=et)})),S.fn.extend({css:function(e,t){return Y(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),S.Tween=rt,rt.prototype={constructor:rt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=rt.propHooks[this.prop];return e&&e.get?e.get(this):rt.propHooks._default.get(this)},run:function(e){var t,n=rt.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rt.propHooks._default.set(this),this}},rt.prototype.init.prototype=rt.prototype,rt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}},rt.propHooks.scrollTop=rt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=rt.prototype.init,S.fx.step={};var it,ot,at=/^(?:toggle|show|hide)$/,st=/queueHooks$/;function lt(){ot&&(!1===g.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(lt):r.setTimeout(lt,S.fx.interval),S.fx.tick())}function Tt(){return r.setTimeout((function(){it=void 0})),it=Date.now()}function ct(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Qt(e,t,n){for(var r,i=(ut.tweeners[t]||[]).concat(ut.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){S.removeAttr(this,e)}))}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&"radio"===t&&H(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(V);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=pt[t]||S.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var _t=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function ft(e){return(e.match(V)||[]).join(" ")}function ht(e){return e.getAttribute&&e.getAttribute("class")||""}function gt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(V)||[]}S.fn.extend({prop:function(e,t){return Y(this,S.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[S.propFix[e]||e]}))}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):_t.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){S.propFix[this.toLowerCase()]=this})),S.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(f(e))return this.each((function(t){S(this).addClass(e.call(this,t,ht(this)))}));if((t=gt(e)).length)for(;n=this[l++];)if(i=ht(n),r=1===n.nodeType&&" "+ft(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ft(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(f(e))return this.each((function(t){S(this).removeClass(e.call(this,t,ht(this)))}));if(!arguments.length)return this.attr("class","");if((t=gt(e)).length)for(;n=this[l++];)if(i=ht(n),r=1===n.nodeType&&" "+ft(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=ft(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):f(e)?this.each((function(n){S(this).toggleClass(e.call(this,n,ht(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=S(this),a=gt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=ht(this))&&X.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":X.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+ft(ht(n))+" ").indexOf(t)>-1)return!0;return!1}});var Et=/\r/g;S.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=f(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,S(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=S.map(i,(function(e){return null==e?"":e+""}))),(t=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=S.valHooks[i.type]||S.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(Et,""):null==n?"":n:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ft(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],(function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=S.inArray(S(e).val(),t)>-1}},m.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),m.focusin="onfocusin"in r;var bt=/^(?:focusinfocus|focusoutblur)$/,yt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,i){var o,a,s,l,T,c,Q,u,p=[n||g],_=d.call(e,"type")?e.type:e,m=d.call(e,"namespace")?e.namespace.split("."):[];if(a=u=s=n=n||g,3!==n.nodeType&&8!==n.nodeType&&!bt.test(_+S.event.triggered)&&(_.indexOf(".")>-1&&(m=_.split("."),_=m.shift(),m.sort()),T=_.indexOf(":")<0&&"on"+_,(e=e[S.expando]?e:new S.Event(_,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=m.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),Q=S.event.special[_]||{},i||!Q.trigger||!1!==Q.trigger.apply(n,t))){if(!i&&!Q.noBubble&&!h(n)){for(l=Q.delegateType||_,bt.test(l+_)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(n.ownerDocument||g)&&p.push(s.defaultView||s.parentWindow||r)}for(o=0;(a=p[o++])&&!e.isPropagationStopped();)u=a,e.type=o>1?l:Q.bindType||_,(c=(X.get(a,"events")||Object.create(null))[e.type]&&X.get(a,"handle"))&&c.apply(a,t),(c=T&&a[T])&&c.apply&&$(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=_,i||e.isDefaultPrevented()||Q._default&&!1!==Q._default.apply(p.pop(),t)||!$(n)||T&&f(n[_])&&!h(n)&&((s=n[T])&&(n[T]=null),S.event.triggered=_,e.isPropagationStopped()&&u.addEventListener(_,yt),n[_](),e.isPropagationStopped()&&u.removeEventListener(_,yt),S.event.triggered=void 0,s&&(n[T]=s)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each((function(){S.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),m.focusin||S.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){S.event.simulate(t,e.target,S.event.fix(e))};S.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=X.access(r,t);i||r.addEventListener(e,n,!0),X.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=X.access(r,t)-1;i?X.access(r,t,i):(r.removeEventListener(e,n,!0),X.remove(r,t))}}}));var Lt=r.location,St={guid:Date.now()},vt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new r.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,(function(e){return e.textContent})).join("\n"):e)),t};var Ot=/\[\]$/,Ct=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,Mt=/^(?:input|select|textarea|keygen)/i;function Ht(e,t,n,r){var i;if(Array.isArray(t))S.each(t,(function(t,i){n||Ot.test(e)?r(e,i):Ht(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==y(t))r(e,t);else for(i in t)Ht(e+"["+i+"]",t[i],n,r)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=f(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,(function(){i(this.name,this.value)}));else for(n in e)Ht(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Mt.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,(function(e){return{name:t.name,value:e.replace(Ct,"\r\n")}})):{name:t.name,value:n.replace(Ct,"\r\n")}})).get()}});var Rt=/%20/g,At=/#.*$/,xt=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,wt=/^(?:GET|HEAD)$/,Dt=/^\/\//,Pt={},Vt={},kt="*/".concat("*"),Bt=g.createElement("a");function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(V)||[];if(f(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ut(e,t,n,r){var i={},o=e===Vt;function a(s){var l;return i[s]=!0,S.each(e[s]||[],(function(e,s){var T=s(t,n,r);return"string"!=typeof T||o||i[T]?o?!(l=T):void 0:(t.dataTypes.unshift(T),a(T),!1)})),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Gt(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Bt.href=Lt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Lt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Lt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":kt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,S.ajaxSettings),t):Gt(S.ajaxSettings,e)},ajaxPrefilter:Ft(Pt),ajaxTransport:Ft(Vt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var n,i,o,a,s,l,T,c,Q,u,d=S.ajaxSetup({},t),p=d.context||d,_=d.context&&(p.nodeType||p.jquery)?S(p):S.event,m=S.Deferred(),f=S.Callbacks("once memory"),h=d.statusCode||{},E={},b={},y="canceled",L={readyState:0,getResponseHeader:function(e){var t;if(T){if(!a)for(a={};t=It.exec(o);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return T?o:null},setRequestHeader:function(e,t){return null==T&&(e=b[e.toLowerCase()]=b[e.toLowerCase()]||e,E[e]=t),this},overrideMimeType:function(e){return null==T&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(T)L.always(e[L.status]);else for(t in e)h[t]=[h[t],e[t]];return this},abort:function(e){var t=e||y;return n&&n.abort(t),v(0,t),this}};if(m.promise(L),d.url=((e||d.url||Lt.href)+"").replace(Dt,Lt.protocol+"//"),d.type=t.method||t.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(V)||[""],null==d.crossDomain){l=g.createElement("a");try{l.href=d.url,l.href=l.href,d.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=S.param(d.data,d.traditional)),Ut(Pt,d,t,L),T)return L;for(Q in(c=S.event&&d.global)&&0==S.active++&&S.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!wt.test(d.type),i=d.url.replace(At,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(Rt,"+")):(u=d.url.slice(i.length),d.data&&(d.processData||"string"==typeof d.data)&&(i+=(vt.test(i)?"&":"?")+d.data,delete d.data),!1===d.cache&&(i=i.replace(xt,"$1"),u=(vt.test(i)?"&":"?")+"_="+St.guid+++u),d.url=i+u),d.ifModified&&(S.lastModified[i]&&L.setRequestHeader("If-Modified-Since",S.lastModified[i]),S.etag[i]&&L.setRequestHeader("If-None-Match",S.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||t.contentType)&&L.setRequestHeader("Content-Type",d.contentType),L.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+kt+"; q=0.01":""):d.accepts["*"]),d.headers)L.setRequestHeader(Q,d.headers[Q]);if(d.beforeSend&&(!1===d.beforeSend.call(p,L,d)||T))return L.abort();if(y="abort",f.add(d.complete),L.done(d.success),L.fail(d.error),n=Ut(Vt,d,t,L)){if(L.readyState=1,c&&_.trigger("ajaxSend",[L,d]),T)return L;d.async&&d.timeout>0&&(s=r.setTimeout((function(){L.abort("timeout")}),d.timeout));try{T=!1,n.send(E,v)}catch(e){if(T)throw e;v(-1,e)}}else v(-1,"No Transport");function v(e,t,a,l){var Q,u,g,E,b,y=t;T||(T=!0,s&&r.clearTimeout(s),n=void 0,o=l||"",L.readyState=e>0?4:0,Q=e>=200&&e<300||304===e,a&&(E=function(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(d,L,a)),!Q&&S.inArray("script",d.dataTypes)>-1&&S.inArray("json",d.dataTypes)<0&&(d.converters["text script"]=function(){}),E=function(e,t,n,r){var i,o,a,s,l,T={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)T[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=T[l+" "+o]||T["* "+o]))for(i in T)if((s=i.split(" "))[1]===o&&(a=T[l+" "+s[0]]||T["* "+s[0]])){!0===a?a=T[i]:!0!==T[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}(d,E,L,Q),Q?(d.ifModified&&((b=L.getResponseHeader("Last-Modified"))&&(S.lastModified[i]=b),(b=L.getResponseHeader("etag"))&&(S.etag[i]=b)),204===e||"HEAD"===d.type?y="nocontent":304===e?y="notmodified":(y=E.state,u=E.data,Q=!(g=E.error))):(g=y,!e&&y||(y="error",e<0&&(e=0))),L.status=e,L.statusText=(t||y)+"",Q?m.resolveWith(p,[u,y,L]):m.rejectWith(p,[L,y,g]),L.statusCode(h),h=void 0,c&&_.trigger(Q?"ajaxSuccess":"ajaxError",[L,d,Q?u:g]),f.fireWith(p,[L,y]),c&&(_.trigger("ajaxComplete",[L,d]),--S.active||S.event.trigger("ajaxStop")))}return L},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],(function(e,t){S[t]=function(e,n,r,i){return f(n)&&(i=i||r,r=n,n=void 0),S.ajax(S.extend({url:e,type:t,dataType:i,data:n,success:r},S.isPlainObject(e)&&e))}})),S.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(f(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return f(e)?this.each((function(t){S(this).wrapInner(e.call(this,t))})):this.each((function(){var t=S(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=f(e);return this.each((function(n){S(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){S(this).replaceWith(this.childNodes)})),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Yt=S.ajaxSettings.xhr();m.cors=!!Yt&&"withCredentials"in Yt,m.ajax=Yt=!!Yt,S.ajaxTransport((function(e){var t,n;if(m.cors||Yt&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=n=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(jt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),n=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=n:s.onreadystatechange=function(){4===s.readyState&&r.setTimeout((function(){t&&n()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),S.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),S.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=S("