From fd14efa5eb547c1fe1beadf35ec2f9311a17fa35 Mon Sep 17 00:00:00 2001 From: nuxsmin Date: Thu, 5 Apr 2018 23:52:37 +0200 Subject: [PATCH] * [MOD] Improved tooltip displaying in account search view * [ADD] Public links are shown in account search view * [MOD] Code cleanup --- .../Helpers/Account/AccountSearchHelper.php | 1 + .../web/Controllers/ResourceController.php | 3 +- .../views/account/search-rows.inc | 38 +- lib/SP/Account/AccountSearchItem.php | 16 +- lib/SP/DataModel/AccountSearchVData.php | 64 +- public/css/jquery.tagsinput.min.css | 1 - public/css/reset.css | 76 ++ public/css/toastr.css | 23 - public/css/toastr.min.css | 2 +- public/js/jquery-3.2.0.min.js | 174 ---- .../js/{jquery-3.2.0.js => jquery-3.3.1.js} | 824 ++++++++++-------- public/js/jquery-3.3.1.min.js | 175 ++++ public/js/jquery-migrate-3.0.0.min.js | 2 +- schemas/30018010101.sql | 12 +- 14 files changed, 844 insertions(+), 567 deletions(-) delete mode 100644 public/css/jquery.tagsinput.min.css create mode 100644 public/css/reset.css delete mode 100644 public/js/jquery-3.2.0.min.js rename public/js/{jquery-3.2.0.js => jquery-3.3.1.js} (94%) create mode 100644 public/js/jquery-3.3.1.min.js diff --git a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php index 04f166d4..dccc74bd 100644 --- a/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php +++ b/app/modules/web/Controllers/Helpers/Account/AccountSearchHelper.php @@ -120,6 +120,7 @@ class AccountSearchHelper extends HelperBase AccountSearchItem::$optionalActions = $userPreferences->isOptionalActions(); AccountSearchItem::$wikiEnabled = $this->configData->isWikiEnabled(); AccountSearchItem::$dokuWikiEnabled = $this->configData->isDokuwikiEnabled(); + AccountSearchItem::$publicLinkEnabled = $this->configData->isPublinksEnabled(); AccountSearchItem::$isDemoMode = $this->configData->isDemoEnabled(); if (AccountSearchItem::$wikiEnabled) { diff --git a/app/modules/web/Controllers/ResourceController.php b/app/modules/web/Controllers/ResourceController.php index 293574af..1cb0e01c 100644 --- a/app/modules/web/Controllers/ResourceController.php +++ b/app/modules/web/Controllers/ResourceController.php @@ -61,7 +61,6 @@ class ResourceController extends SimpleControllerBase ->addFiles(['reset.min.css', 'jquery-ui.min.css', 'jquery-ui.structure.min.css', - 'jquery.tagsinput.min.css', 'fonts.min.css', 'material-icons.min.css', 'toastr.min.css', @@ -95,7 +94,7 @@ class ResourceController extends SimpleControllerBase if ($group === 0) { $minify->addFiles([ - 'jquery-3.2.0.min.js', + 'jquery-3.3.1.min.js', 'jquery-migrate-3.0.0.min.js', 'jquery.fileDownload.min.js', 'clipboard.min.js', diff --git a/app/modules/web/themes/material-blue/views/account/search-rows.inc b/app/modules/web/themes/material-blue/views/account/search-rows.inc index 1330e40e..d77138a0 100644 --- a/app/modules/web/themes/material-blue/views/account/search-rows.inc +++ b/app/modules/web/themes/material-blue/views/account/search-rows.inc @@ -19,7 +19,7 @@
- getClientLink())): ?> + getClientLink()): ?> @@ -116,8 +116,12 @@
-
- ', $accountSearchItem->getAccesses()); ?> +
+

+

+ ', $accountSearchItem->getAccesses()); ?> +

+
@@ -147,8 +151,12 @@ speaker_notes
-
- getShortNotes(); ?> +
+

+

+ getShortNotes(); ?> +

+
@@ -157,7 +165,25 @@ class="material-icons">attach_file
- getNumFiles(); ?> +
+ getNumFiles(); ?> +
+
+ + + getPublicLink()): ?> + getIconPublicLink()->getIcon(); ?> +
+
+

+

+ getPublicLinkDateExpire())); ?> +
+ getPublicLinkTotalCountViews()); ?> +

+
diff --git a/lib/SP/Account/AccountSearchItem.php b/lib/SP/Account/AccountSearchItem.php index 425ba4d4..02cc68bc 100644 --- a/lib/SP/Account/AccountSearchItem.php +++ b/lib/SP/Account/AccountSearchItem.php @@ -30,6 +30,7 @@ use SP\Config\ConfigData; use SP\DataModel\AccountSearchVData; use SP\DataModel\ItemData; use SP\Html\Html; +use SP\Services\PublicLink\PublicLinkService; /** * Class AccountSearchItem para contener los datos de cada cuenta en la búsqueda @@ -62,6 +63,10 @@ class AccountSearchItem * @var bool */ public static $dokuWikiEnabled = false; + /** + * @var bool + */ + public static $publicLinkEnabled = false; /** * @var bool */ @@ -224,7 +229,16 @@ class AccountSearchItem */ public function getClientLink() { - return self::$wikiEnabled ? $this->configData->getWikiSearchurl() . $this->accountSearchVData->getClientName() : ''; + return self::$wikiEnabled ? $this->configData->getWikiSearchurl() . $this->accountSearchVData->getClientName() : null; + } + + /** + * @return string + */ + public function getPublicLink() + { + return self::$publicLinkEnabled + && $this->accountSearchVData->getPublicLinkHash() !== null ? PublicLinkService::getLinkForHash($this->accountSearchVData->getPublicLinkHash()) : null; } /** diff --git a/lib/SP/DataModel/AccountSearchVData.php b/lib/SP/DataModel/AccountSearchVData.php index a038c0a8..67c462ac 100644 --- a/lib/SP/DataModel/AccountSearchVData.php +++ b/lib/SP/DataModel/AccountSearchVData.php @@ -2,8 +2,8 @@ /** * sysPass * - * @author nuxsmin - * @link https://syspass.org + * @author nuxsmin + * @link https://syspass.org * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org * * This file is part of sysPass. @@ -135,6 +135,18 @@ class AccountSearchVData * @var int */ public $num_files = 0; + /** + * @var string + */ + public $publicLinkHash; + /** + * @var int + */ + public $publicLinkDateExpire; + /** + * @var int + */ + public $publicLinkTotalCountViews; /** * AccountData constructor. @@ -505,4 +517,52 @@ class AccountSearchVData { $this->dateEdit = $dateEdit; } + + /** + * @return int + */ + public function getPublicLinkDateExpire(): int + { + return (int)$this->publicLinkDateExpire; + } + + /** + * @param int $publicLinkDateExpire + */ + public function setPublicLinkDateExpire(int $publicLinkDateExpire) + { + $this->publicLinkDateExpire = $publicLinkDateExpire; + } + + /** + * @return int + */ + public function getPublicLinkTotalCountViews(): int + { + return (int)$this->publicLinkTotalCountViews; + } + + /** + * @param int $publicLinkTotalCountViews + */ + public function setPublicLinkTotalCountViews(int $publicLinkTotalCountViews) + { + $this->publicLinkTotalCountViews = $publicLinkTotalCountViews; + } + + /** + * @return string + */ + public function getPublicLinkHash(): string + { + return $this->publicLinkHash; + } + + /** + * @param string $publicLinkHash + */ + public function setPublicLinkHash(string $publicLinkHash) + { + $this->publicLinkHash = $publicLinkHash; + } } \ No newline at end of file diff --git a/public/css/jquery.tagsinput.min.css b/public/css/jquery.tagsinput.min.css deleted file mode 100644 index 05a9d74b..00000000 --- a/public/css/jquery.tagsinput.min.css +++ /dev/null @@ -1 +0,0 @@ -div.tagsinput{border:1px solid #CCC;background:#FFF;padding:5px;width:300px;height:100px;overflow-y:auto}div.tagsinput span.tag{border:1px solid #a5d24a;-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:5px;text-decoration:none;background:#cde69c;color:#638421;margin-right:5px;margin-bottom:5px;font-family:helvetica;font-size:13px}div.tagsinput span.tag a{font-weight:bold;color:#82ad2b;text-decoration:none;font-size:11px}div.tagsinput input{width:80px;margin:0;font-family:helvetica;font-size:13px;border:1px solid transparent;padding:5px;background:transparent;color:#000;outline:0;margin-right:5px;margin-bottom:5px}div.tagsinput div{display:block;float:left}.tags_clear{clear:both;width:100%;height:0}.not_valid{background:#fbd8db !important;color:#90111a !important}div.tagsinput{border:1px solid #dfdfdf;background-color:#fffef0;box-shadow:0 0 8px rgba(0,0,0,0.075) inset;border-radius:5px}div.tagsinput span.tag{min-width:62px}div.tagsinput input{width:120px}div.tagsinput span.tag{background:url("images/ui-bg_glass_75_e6e6e6_1x400.png") repeat-x scroll 50% 50% #e6e6e6;border:1px solid #d3d3d3;color:#555}div.tagsinput span.tag a{color:#555} \ No newline at end of file diff --git a/public/css/reset.css b/public/css/reset.css new file mode 100644 index 00000000..eee14c9a --- /dev/null +++ b/public/css/reset.css @@ -0,0 +1,76 @@ +html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, abbr, address, cite, code, del, dfn, em, img, ins, kbd, q, samp, small, strong, sub, sup, var, b, i, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; + vertical-align: middle; + background: transparent +} + +body { + line-height: 1 +} + +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block +} + +nav ul { + list-style: none +} + +blockquote, q { + quotes: none +} + +blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none +} + +a { + margin: 0; + padding: 0; + font-size: 100%; + background: transparent +} + +ins { + background-color: #ff9; + color: #000; + text-decoration: none +} + +mark { + background-color: #ff9; + color: #000; + font-style: italic; + font-weight: bold +} + +del { + text-decoration: line-through +} + +abbr[title], dfn[title] { + border-bottom: 1px dotted; + cursor: help +} + +table { + border-spacing: 0 +} + +hr { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #d9d9d9; + margin: 1em 0; + padding: 0 +} + +input, select { + vertical-align: middle +} \ No newline at end of file diff --git a/public/css/toastr.css b/public/css/toastr.css index 75d326cd..76f7f572 100644 --- a/public/css/toastr.css +++ b/public/css/toastr.css @@ -1,26 +1,3 @@ -/* - * sysPass - * - * @author nuxsmin - * @link http://syspass.org - * @copyright 2012-2017, Rubén Domínguez nuxsmin@$syspass.org - * - * This file is part of sysPass. - * - * sysPass is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * sysPass is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with sysPass. If not, see . - */ - .toast-title { font-weight: bold; } diff --git a/public/css/toastr.min.css b/public/css/toastr.min.css index c174f8f3..d095e5ac 100644 --- a/public/css/toastr.min.css +++ b/public/css/toastr.min.css @@ -1 +1 @@ -.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:hover,.toast-close-button:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-0.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")!important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")!important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")!important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}#toast-container .rtl .toast-close-button{left:-0.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}#toast-container .rtl .toast-close-button{left:-0.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}} \ No newline at end of file +.toast-title{font-weight:bold}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-0.3em;top:-0.3em;float:right;font-size:20px;font-weight:bold;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80);line-height:1}.toast-close-button:hover,.toast-close-button:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}.rtl .toast-close-button{left:-0.3em;float:left;right:.3em}button.toast-close-button{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.toast-top-center{top:0;right:0;width:100%}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999;pointer-events:none}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#toast-container>div{position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:15px 15px 15px 50px;width:300px;-moz-border-radius:3px 3px 3px 3px;-webkit-border-radius:3px 3px 3px 3px;border-radius:3px 3px 3px 3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;opacity:.8;-ms-filter:alpha(opacity=80);filter:alpha(opacity=80)}#toast-container>div.rtl{direction:rtl;padding:15px 50px 15px 15px;background-position:right 15px center}#toast-container>div:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:alpha(opacity=100);filter:alpha(opacity=100);cursor:pointer}#toast-container>.toast-info{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important}#toast-container>.toast-error{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important}#toast-container>.toast-success{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important}#toast-container>.toast-warning{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important}#toast-container.toast-top-center>div,#toast-container.toast-bottom-center>div{width:300px;margin-left:auto;margin-right:auto}#toast-container.toast-top-full-width>div,#toast-container.toast-bottom-full-width>div{width:96%;margin-left:auto;margin-right:auto}.toast{background-color:#030303}.toast-success{background-color:#51a351}.toast-error{background-color:#bd362f}.toast-info{background-color:#2f96b4}.toast-warning{background-color:#f89406}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:alpha(opacity=40);filter:alpha(opacity=40)}@media all and (max-width:240px){#toast-container>div{padding:8px 8px 8px 50px;width:11em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}#toast-container .rtl .toast-close-button{left:-0.2em;right:.2em}}@media all and (min-width:241px) and (max-width:480px){#toast-container>div{padding:8px 8px 8px 50px;width:18em}#toast-container>div.rtl{padding:8px 50px 8px 8px}#toast-container .toast-close-button{right:-0.2em;top:-0.2em}#toast-container .rtl .toast-close-button{left:-0.2em;right:.2em}}@media all and (min-width:481px) and (max-width:768px){#toast-container>div{padding:15px 15px 15px 50px;width:25em}#toast-container>div.rtl{padding:15px 50px 15px 15px}} \ No newline at end of file diff --git a/public/js/jquery-3.2.0.min.js b/public/js/jquery-3.2.0.min.js deleted file mode 100644 index 3b62c7f9..00000000 --- a/public/js/jquery-3.2.0.min.js +++ /dev/null @@ -1,174 +0,0 @@ -var $jscomp={scope:{},findInternal:function(p,t,K){p instanceof String&&(p=String(p));for(var F=p.length,D=0;Dtbody",a)[0]||a:a}function Vb(a){a.type=(null!==a.getAttribute("type"))+"/"+a.type;return a}function Wb(a){var b=Xb.exec(a.type);b?a.type=b[1]:a.removeAttribute("type");return a}function hb(a,b){var c,e,f,g;if(1===b.nodeType){if(v.hasData(a)&&(g=v.access(a),c=v.set(b,g),g=g.events))for(f in delete c.handle,c.events={},g)for(c= -0,e=g[f].length;cb;b+=2)"margin"===c&&(g+=d.css(a,c+T[b],!0,f)),e?("content"===c&&(g-=d.css(a,"padding"+T[b],!0,f)),"margin"!==c&&(g-=d.css(a,"border"+T[b]+"Width",!0,f))):(g+=d.css(a,"padding"+T[b],!0,f),"padding"!==c&&(g+=d.css(a,"border"+T[b]+"Width", -!0,f)));return g}function rb(a,b,c){var e,f=Ca(a),g=ta(a,b,f),h="border-box"===d.css(a,"boxSizing",!1,f);if(Na.test(g))return g;e=h&&(x.boxSizingReliable()||g===a.style[b]);g=parseFloat(g)||0;return g+qb(a,b,c||(h?"border":"content"),e,f)+"px"}function A(a,b,c,d,f){return new A.prototype.init(a,b,c,d,f)}function Oa(){Da&&(!1===r.hidden&&p.requestAnimationFrame?p.requestAnimationFrame(Oa):p.setTimeout(Oa,d.fx.interval),d.fx.tick())}function sb(){p.setTimeout(function(){ka=void 0});return ka=d.now()} -function Ea(a,b){var c,d=0,f={height:a};for(b=b?1:0;4>d;d+=2-b)c=T[d],f["margin"+c]=f["padding"+c]=a;b&&(f.opacity=f.width=a);return f}function tb(a,b,c){for(var d,f=(R.tweeners[b]||[]).concat(R.tweeners["*"]),g=0,h=f.length;gc&&f)return b;f||h.notifyWith(a,[l,1,0]);h.resolveWith(a,[l]);return!1},l=h.promise({elem:a,props:d.extend({},b),opts:d.extend(!0,{specialEasing:{},easing:d.easing._default},c),originalProperties:b,originalOptions:c, -startTime:ka||sb(),duration:c.duration,tweens:[],createTween:function(b,c){var e=d.Tween(a,l.opts,b,c,l.opts.specialEasing[b]||l.opts.easing);l.tweens.push(e);return e},stop:function(b){var c=0,d=b?l.tweens.length:0;if(e)return this;for(e=!0;ca?this[a+this.length]:this[a]},pushStack:function(a){a=d.merge(this.constructor(),a);a.prevObject=this;return a},each:function(a){return d.each(this,a)},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(ba.apply(this,arguments))},first:function(){return this.eq(0)}, -last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&aw.cacheLength&&delete a[b.shift()];return a[c+" "]=d}var b=[];return a}function d(a){a[B]=!0;return a}function f(a){var b=z.createElement("fieldset");try{return!!a(b)}catch(E){return!1}finally{b.parentNode&&b.parentNode.removeChild(b)}}function g(a,b){for(var c=a.split("|"),d=c.length;d--;)w.attrHandle[c[d]]=b}function h(a,b){var c=b&&a,d=c&&1=== -a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function k(a){return function(b){return"input"===b.nodeName.toLowerCase()&&b.type===a}}function l(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function n(a){return function(b){return"form"in b?b.parentNode&&!1===b.disabled?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a|| -b.isDisabled!==!a&&xa(b)===a:b.disabled===a:"label"in b?b.disabled===a:!1}}function q(a){return d(function(b){b=+b;return d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function O(a){return a&&"undefined"!==typeof a.getElementsByTagName&&a}function m(){}function p(a){for(var b=0,c=a.length,d="";b+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,ka=RegExp("=[\\x20\\t\\r\\n\\f]*([^\\]'\"]*?)[\\x20\\t\\r\\n\\f]*\\]","g"),na=/:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/, -oa=/^(?:\\.|[\w-]|[^\x00-\xa0])+$/,Y={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:/^((?:\\.|[\w-]|[^\x00-\xa0])+|[*])/,ATTR:/^\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\]/,PSEUDO:/^:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/, -CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},ra=/^(?:input|select|textarea|button)$/i,ta=/^h\d$/i,X=/^[^{]+\{\s*\[native \w/, -wa=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ga=/[+~]/,da=RegExp("\\\\([\\da-f]{1,6}[\\x20\\t\\r\\n\\f]?|([\\x20\\t\\r\\n\\f])|.)","ig"),ea=function(a,b,c){a="0x"+b-65536;return a!==a||c?b:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)},pa=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,qa=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},sa=function(){M()},xa=Ba(function(a){return!0===a.disabled&&("form"in -a||"label"in a)},{dir:"parentNode",next:"legend"});try{la.apply(P=Z.call(S.childNodes),S.childNodes),P[S.childNodes.length].nodeType}catch(y){la={apply:P.length?function(a,b){fa.apply(a,Z.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}u=b.support={};zb=b.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};M=b.setDocument=function(a){var b;a=a?a.ownerDocument||a:S;if(a===z||9!==a.nodeType||!a.documentElement)return z;z=a;L=z.documentElement; -G=!zb(z);S!==z&&(b=z.defaultView)&&b.top!==b&&(b.addEventListener?b.addEventListener("unload",sa,!1):b.attachEvent&&b.attachEvent("onunload",sa));u.attributes=f(function(a){a.className="i";return!a.getAttribute("className")});u.getElementsByTagName=f(function(a){a.appendChild(z.createComment(""));return!a.getElementsByTagName("*").length});u.getElementsByClassName=X.test(z.getElementsByClassName);u.getById=f(function(a){L.appendChild(a).id=B;return!z.getElementsByName||!z.getElementsByName(B).length}); -u.getById?(w.filter.ID=function(a){var b=a.replace(da,ea);return function(a){return a.getAttribute("id")===b}},w.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&G){var c=b.getElementById(a);return c?[c]:[]}}):(w.filter.ID=function(a){var b=a.replace(da,ea);return function(a){return(a="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id"))&&a.value===b}},w.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&G){var c,d,e,f=b.getElementById(a);if(f){if((c=f.getAttributeNode("id"))&& -c.value===a)return[f];e=b.getElementsByName(a);for(d=0;f=e[d++];)if((c=f.getAttributeNode("id"))&&c.value===a)return[f]}return[]}});w.find.TAG=u.getElementsByTagName?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a);if(u.qsa)return b.querySelectorAll(a)}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f};w.find.CLASS=u.getElementsByClassName&&function(a,b){if("undefined"!==typeof b.getElementsByClassName&& -G)return b.getElementsByClassName(a)};va=[];I=[];if(u.qsa=X.test(z.querySelectorAll))f(function(a){L.appendChild(a).innerHTML="
";a.querySelectorAll("[msallowcapture^='']").length&&I.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")");a.querySelectorAll("[selected]").length||I.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)"); -a.querySelectorAll("[id~="+B+"-]").length||I.push("~=");a.querySelectorAll(":checked").length||I.push(":checked");a.querySelectorAll("a#"+B+"+*").length||I.push(".#.+[+~]")}),f(function(a){a.innerHTML="";var b=z.createElement("input");b.setAttribute("type","hidden");a.appendChild(b).setAttribute("name","D");a.querySelectorAll("[name=d]").length&&I.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?=");2!==a.querySelectorAll(":enabled").length&& -I.push(":enabled",":disabled");L.appendChild(a).disabled=!0;2!==a.querySelectorAll(":disabled").length&&I.push(":enabled",":disabled");a.querySelectorAll("*,:x");I.push(",.*:")});(u.matchesSelector=X.test(F=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&f(function(a){u.disconnectedMatch=F.call(a,"*");F.call(a,"[s!='']:x");va.push("!=",":((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?=)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|((?:\\\\.|[\\w-]|[^\x00-\\xa0])+))|)[\\x20\\t\\r\\n\\f]*\\])*)|.*)\\)|)")}); -I=I.length&&new RegExp(I.join("|"));va=va.length&&new RegExp(va.join("|"));Aa=(b=X.test(L.compareDocumentPosition))||X.test(L.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&1===d.nodeType&&(c.contains?c.contains(d):a.compareDocumentPosition&&a.compareDocumentPosition(d)&16))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};W=b?function(a,b){if(a===b)return ya=!0,0;var c=!a.compareDocumentPosition-!b.compareDocumentPosition; -if(c)return c;c=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;return c&1||!u.sortDetached&&b.compareDocumentPosition(a)===c?a===z||a.ownerDocument===S&&Aa(S,a)?-1:b===z||b.ownerDocument===S&&Aa(S,b)?1:ma?ua(ma,a)-ua(ma,b):0:c&4?-1:1}:function(a,b){if(a===b)return ya=!0,0;var c,d=0;c=a.parentNode;var e=b.parentNode,f=[a],g=[b];if(!c||!e)return a===z?-1:b===z?1:c?-1:e?1:ma?ua(ma,a)-ua(ma,b):0;if(c===e)return h(a,b);for(c=a;c=c.parentNode;)f.unshift(c);for(c=b;c=c.parentNode;)g.unshift(c); -for(;f[d]===g[d];)d++;return d?h(f[d],g[d]):f[d]===S?-1:g[d]===S?1:0};return z};b.matches=function(a,c){return b(a,null,null,c)};b.matchesSelector=function(a,c){(a.ownerDocument||a)!==z&&M(a);c=c.replace(ka,"='$1']");if(!(!u.matchesSelector||!G||T[c+" "]||va&&va.test(c)||I&&I.test(c)))try{var d=F.call(a,c);if(d||u.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(ca){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0}, -"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(da,ea);a[3]=(a[3]||a[4]||a[5]||"").replace(da,ea);"~="===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]);return a},PSEUDO:function(a){var b,c=!a[6]&&a[2];if(Y.CHILD.test(a[0]))return null;a[3]?a[2]=a[4]||a[5]||"":c&&na.test(c)&& -(b=J(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b));return a.slice(0,3)}},filter:{TAG:function(a){var b=a.replace(da,ea).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"),R(a,function(a){return b.test("string"===typeof a.className&&a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")|| -"")}))},ATTR:function(a,c,d){return function(e){e=b.attr(e,a);if(null==e)return"!="===c;if(!c)return!0;e+="";return"="===c?e===d:"!="===c?e!==d:"^="===c?d&&0===e.indexOf(d):"*="===c?d&&-1a.nodeType)return!1;return!0},parent:function(a){return!w.pseudos.empty(a)},header:function(a){return ta.test(a.nodeName)},input:function(a){return ra.test(a.nodeName)},button:function(a){var b= -a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:q(function(){return[0]}),last:q(function(a,b){return[b-1]}),eq:q(function(a,b,c){return[0>c?c+b:c]}),even:q(function(a,b){for(var c=0;cc?c+b:c;0<=--b;)a.push(b); -return a}),gt:q(function(a,b,c){for(c=0>c?c+b:c;++c";a.firstChild.setAttribute("value","");return""===a.firstChild.getAttribute("value")})|| -g("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue});f(function(a){return null==a.getAttribute("disabled")})||g("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",function(a,b,c){var d;if(!c)return!0===a[b]?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null});return b}(p);d.find=fa;d.expr=fa.selectors;d.expr[":"]=d.expr.pseudos;d.uniqueSort=d.unique=fa.uniqueSort;d.text= -fa.getText;d.isXMLDoc=fa.isXML;d.contains=fa.contains;d.escapeSelector=fa.escape;var na=function(a,b,c){for(var e=[],f=void 0!==c;(a=a[b])&&9!==a.nodeType;)if(1===a.nodeType){if(f&&d(a).is(c))break;e.push(a)}return e},Ab=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},Bb=d.expr.match.needsContext,Cb=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,Qb=/^.[^:#\[\.,]*$/;d.filter=function(a,b,c){var e=b[0];c&&(a=":not("+a+")");return 1===b.length&& -1===e.nodeType?d.find.matchesSelector(e,a)?[e]:[]:d.find.matches(a,d.grep(b,function(a){return 1===a.nodeType}))};d.fn.extend({find:function(a){var b,c,e=this.length,f=this;if("string"!==typeof a)return this.pushStack(d(a).filter(function(){for(b=0;b)[^>]*|#([\w-]+))$/;(d.fn.init=function(a,b,c){var e;if(!a)return this;c=c||Db;if("string"===typeof a){e="<"===a[0]&&">"===a[a.length-1]&&3<=a.length?[null,a,null]:hc.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof d?b[0]:b,d.merge(this,d.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:r,!0)),Cb.test(e[1])&&d.isPlainObject(b))for(e in b)if(d.isFunction(this[e]))this[e](b[e]); -else this.attr(e,b[e])}else if(a=r.getElementById(e[2]))this[0]=a,this.length=1;return this}return a.nodeType?(this[0]=a,this.length=1,this):d.isFunction(a)?void 0!==c.ready?c.ready(a):a(d):d.makeArray(a,this)}).prototype=d.fn;Db=d(r);var ic=/^(?:parents|prev(?:Until|All))/,jc={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({has:function(a){var b=d(a,this),c=b.length;return this.filter(function(){for(var a=0;ac.nodeType&&(h?-1=g&&(c!==pa&&(h=void 0,k=[yb]),b.rejectWith(h,k))}};a?m():(d.Deferred.getStackHook&&(m.stackTrace=d.Deferred.getStackHook()),p.setTimeout(m))}}var g=0;return d.Deferred(function(g){b[0][3].add(f(0, -g,d.isFunction(e)?e:ha,g.notifyWith));b[1][3].add(f(0,g,d.isFunction(a)?a:ha));b[2][3].add(f(0,g,d.isFunction(c)?c:pa))}).promise()},promise:function(a){return null!=a?d.extend(a,e):e}},f={};d.each(b,function(a,d){var g=d[2],h=d[5];e[d[1]]=g.add;h&&g.add(function(){c=h},b[3-a][2].disable,b[0][2].lock);g.add(d[3].fire);f[d[0]]=function(){f[d[0]+"With"](this===f?void 0:this,arguments);return this};f[d[0]+"With"]=g.fireWith});e.promise(f);a&&a.call(f,f);return f},when:function(a){var b=arguments.length, -c=b,e=Array(c),f=ba.call(arguments),g=d.Deferred(),h=function(a){return function(c){e[a]=this;f[a]=1=b&&(Za(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||d.isFunction(f[c]&&f[c].then)))return g.then();for(;c--;)Za(f[c],h(c),g.reject);return g.promise()}});var kc=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;d.Deferred.exceptionHook=function(a,b){p.console&&p.console.warn&&a&&kc.test(a.name)&&p.console.warn("jQuery.Deferred exception: "+ -a.message,a.stack,b)};d.readyException=function(a){p.setTimeout(function(){throw a;})};var Ta=d.Deferred();d.fn.ready=function(a){Ta.then(a)["catch"](function(a){d.readyException(a)});return this};d.extend({isReady:!1,readyWait:1,ready:function(a){(!0===a?--d.readyWait:d.isReady)||(d.isReady=!0,!0!==a&&0<--d.readyWait||Ta.resolveWith(r,[d]))}});d.ready.then=Ta.then;"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?p.setTimeout(d.ready):(r.addEventListener("DOMContentLoaded", -qa),p.addEventListener("load",qa));var U=function(a,b,c,e,f,g,h){var k=0,l=a.length,n=null==c;if("object"===d.type(c))for(k in f=!0,c)U(a,b,k,c[k],!0,g,h);else if(void 0!==e&&(f=!0,d.isFunction(e)||(h=!0),n&&(h?(b.call(a,e),b=null):(n=b,b=function(a,b,c){return n.call(d(a),c)})),b))for(;k\x20\t\r\n\f]+)/i,eb=/^$|\/(?:java|ecma)script/i,Q={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};Q.optgroup=Q.option;Q.tbody=Q.tfoot=Q.colgroup=Q.caption=Q.thead;Q.th=Q.td; -var Ub=/<|&#?\w+;/;(function(){var a=r.createDocumentFragment().appendChild(r.createElement("div")),b=r.createElement("input");b.setAttribute("type","radio");b.setAttribute("checked","checked");b.setAttribute("name","t");a.appendChild(b);x.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked;a.innerHTML="";x.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue})();var Ka=r.documentElement,lc=/^key/,mc=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Gb=/^([^.]*)(?:\.(.+)|)/; -d.event={global:{},add:function(a,b,c,e,f){var g,h,k,l,n,q,p,m,r;if(n=v.get(a))for(c.handler&&(g=c,c=g.handler,f=g.selector),f&&d.find.matchesSelector(Ka,f),c.guid||(c.guid=d.guid++),(l=n.events)||(l=n.events={}),(h=n.handle)||(h=n.handle=function(b){return"undefined"!==typeof d&&d.event.triggered!==b.type?d.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(C)||[""],n=b.length;n--;)k=Gb.exec(b[n])||[],m=q=k[1],r=(k[2]||"").split(".").sort(),m&&(k=d.event.special[m]||{},m=(f?k.delegateType: -k.bindType)||m,k=d.event.special[m]||{},q=d.extend({type:m,origType:q,data:e,handler:c,guid:c.guid,selector:f,needsContext:f&&d.expr.match.needsContext.test(f),namespace:r.join(".")},g),(p=l[m])||(p=l[m]=[],p.delegateCount=0,k.setup&&!1!==k.setup.call(a,e,r,h)||a.addEventListener&&a.addEventListener(m,h)),k.add&&(k.add.call(a,q),q.handler.guid||(q.handler.guid=c.guid)),f?p.splice(p.delegateCount++,0,q):p.push(q),d.event.global[m]=!0)},remove:function(a,b,c,e,f){var g,h,k,l,n,q,p,m,r,x,D,t=v.hasData(a)&& -v.get(a);if(t&&(l=t.events)){b=(b||"").match(C)||[""];for(n=b.length;n--;)if(k=Gb.exec(b[n])||[],r=D=k[1],x=(k[2]||"").split(".").sort(),r){p=d.event.special[r]||{};r=(e?p.delegateType:p.bindType)||r;m=l[r]||[];k=k[2]&&new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)");for(h=g=m.length;g--;)q=m[g],!f&&D!==q.origType||c&&c.guid!==q.guid||k&&!k.test(q.namespace)||e&&e!==q.selector&&("**"!==e||!q.selector)||(m.splice(g,1),q.selector&&m.delegateCount--,p.remove&&p.remove.call(a,q));h&&!m.length&& -(p.teardown&&!1!==p.teardown.call(a,x,t.handle)||d.removeEvent(a,r,t.handle),delete l[r])}else for(r in l)d.event.remove(a,r+b[n],c,e,!0);d.isEmptyObject(l)&&v.remove(a,"handle events")}},dispatch:function(a){var b=d.event.fix(a),c,e,f,g,h,k=Array(arguments.length);e=(v.get(this,"events")||{})[b.type]||[];var l=d.event.special[b.type]||{};k[0]=b;for(c=1;c\x20\t\r\n\f]*)[^>]*)\/>/gi,oc=/\s*$/g;d.extend({htmlPrefilter:function(a){return a.replace(nc,"<$1>")},clone:function(a,b,c){var e,f,g,h,k=a.cloneNode(!0),l=d.contains(a.ownerDocument,a);if(!(x.noCloneChecked|| -1!==a.nodeType&&11!==a.nodeType||d.isXMLDoc(a)))for(h=H(k),g=H(a),e=0,f=g.length;ed.inArray(this,a)&&(d.cleanData(H(this)),c&&c.replaceChild(b,this))},a)}});d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(a){for(var c=[],f=d(a),g=f.length-1,h=0;h<=g;h++)a=h===g?this:this.clone(!0),d(f[h])[b](a),Sa.apply(c,a.get());return this.pushStack(c)}}); -var kb=/^margin/,Na=new RegExp("^("+Eb+")(?!px)[a-z%]+$","i"),Ca=function(a){var b=a.ownerDocument.defaultView;b&&b.opener||(b=p);return b.getComputedStyle(a)};(function(){function a(){if(h){h.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%";h.innerHTML="";Ka.appendChild(g);var a=p.getComputedStyle(h);b="1%"!==a.top;f="2px"===a.marginLeft;c="4px"===a.width;h.style.marginRight="50%";e="4px"===a.marginRight;Ka.removeChild(g);h= -null}}var b,c,e,f,g=r.createElement("div"),h=r.createElement("div");h.style&&(h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",x.clearCloneStyle="content-box"===h.style.backgroundClip,g.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",g.appendChild(h),d.extend(x,{pixelPosition:function(){a();return b},boxSizingReliable:function(){a();return c},pixelMarginRight:function(){a();return e},reliableMarginLeft:function(){a(); -return f}}))})();var pc=/^(none|table(?!-c[ea]).+)/,Hb=/^--/,qc={position:"absolute",visibility:"hidden",display:"block"},Ib={letterSpacing:"0",fontWeight:"400"},ob=["Webkit","Moz","ms"],nb=r.createElement("div").style;d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=ta(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"}, -style:function(a,b,c,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f,g,h,k=d.camelCase(b),l=Hb.test(b),n=a.style;l||(b=mb(k));h=d.cssHooks[b]||d.cssHooks[k];if(void 0!==c)g=typeof c,"string"===g&&(f=ra.exec(c))&&f[1]&&(c=ab(a,b,f),g="number"),null!=c&&c===c&&("number"===g&&(c+=f&&f[3]||(d.cssNumber[k]?"":"px")),x.clearCloneStyle||""!==c||0!==b.indexOf("background")||(n[b]="inherit"),h&&"set"in h&&void 0===(c=h.set(a,c,e))||(l?n.setProperty(b,c):n[b]=c));else return h&&"get"in h&&void 0!== -(f=h.get(a,!1,e))?f:n[b]}},css:function(a,b,c,e){var f,g;g=d.camelCase(b);Hb.test(b)||(b=mb(g));(g=d.cssHooks[b]||d.cssHooks[g])&&"get"in g&&(f=g.get(a,!0,c));void 0===f&&(f=ta(a,b,e));"normal"===f&&b in Ib&&(f=Ib[b]);return""===c||c?(a=parseFloat(f),!0===c||isFinite(a)?a||0:f):f}});d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,e,f){if(e)return!pc.test(d.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?rb(a,b,f):Fb(a,qc,function(){return rb(a,b, -f)})},set:function(a,e,f){var c,h=f&&Ca(a);(f=f&&qb(a,b,f,"border-box"===d.css(a,"boxSizing",!1,h),h))&&(c=ra.exec(e))&&"px"!==(c[3]||"px")&&(a.style[b]=e,e=d.css(a,b));return pb(a,e,f)}}});d.cssHooks.marginLeft=lb(x.reliableMarginLeft,function(a,b){if(b)return(parseFloat(ta(a,"marginLeft"))||a.getBoundingClientRect().left-Fb(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"});d.each({margin:"",padding:"",border:"Width"},function(a,b){d.cssHooks[a+b]={expand:function(c){var d= -0,f={};for(c="string"===typeof c?c.split(" "):[c];4>d;d++)f[a+T[d]+b]=c[d]||c[d-2]||c[0];return f}};kb.test(a)||(d.cssHooks[a+b].set=pb)});d.fn.extend({css:function(a,b){return U(this,function(a,b,f){var c,e={},k=0;if(Array.isArray(b)){f=Ca(a);for(c=b.length;ke.indexOf(" "+g+" ")&&(e+=g+" ");e=W(e);f!==e&&c.setAttribute("class",e)}return this},removeClass:function(a){var b,c,e,f,g,h,k=0;if(d.isFunction(a))return this.each(function(b){d(this).removeClass(a.call(this,b,aa(this)))});if(!arguments.length)return this.attr("class","");if("string"===typeof a&&a)for(b=a.match(C)||[];c=this[k++];)if(f=aa(c),e=1===c.nodeType&&" "+W(f)+" "){for(h=0;g=b[h++];)for(;-1e?h:f?e:0;at.indexOf(":")&&"on"+t,a=a[d.expando]?a:new d.Event(t,"object"===typeof a&& -a),a.isTrigger=e?2:3,a.namespace=n.join("."),a.rnamespace=a.namespace?new RegExp("(^|\\.)"+n.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=c),b=null==b?[a]:d.makeArray(b,[a]),n=d.event.special[t]||{},e||!n.trigger||!1!==n.trigger.apply(c,b))){if(!e&&!n.noBubble&&!d.isWindow(c)){h=n.delegateType||t;Kb.test(h+t)||(g=g.parentNode);for(;g;g=g.parentNode)q.push(g),f=g;f===(c.ownerDocument||r)&&q.push(f.defaultView||f.parentWindow||p)}for(f=0;(g=q[f++])&&!a.isPropagationStopped();)a.type= -1a||304===a;if(c){r=m;for(var C=u,M,z,L,G,I=r.contents,F=r.dataTypes;"*"===F[0];)F.shift(),void 0===M&&(M=r.mimeType||C.getResponseHeader("Content-Type"));if(M)for(z in I)if(I[z]&&I[z].test(M)){F.unshift(z);break}if(F[0]in c)L=F[0];else{for(z in c){if(!F[0]||r.converters[z+" "+F[0]]){L=z;break}G|| -(G=z)}L=L||G}L?(L!==F[0]&&F.unshift(L),r=c[L]):r=void 0}a:{c=m;M=r;z=u;L=h;var H,A,B,C={},I=c.dataTypes.slice();if(I[1])for(A in c.converters)C[A.toLowerCase()]=c.converters[A];for(G=I.shift();G;)if(c.responseFields[G]&&(z[c.responseFields[G]]=M),!B&&L&&c.dataFilter&&(M=c.dataFilter(M,c.dataType)),B=G,G=I.shift())if("*"===G)G=B;else if("*"!==B&&B!==G){A=C[B+" "+G]||C["* "+G];if(!A)for(H in C)if(r=H.split(" "),r[1]===G&&(A=C[B+" "+r[0]]||C["* "+r[0]])){!0===A?A=C[H]:!0!==C[H]&&(G=r[0],I.unshift(r[1])); -break}if(!0!==A)if(A&&c["throws"])M=A(M);else try{M=A(M)}catch(S){r={state:"parsererror",error:A?S:"No conversion from "+B+" to "+G};break a}}r={state:"success",data:M}}if(h)m.ifModified&&((w=u.getResponseHeader("Last-Modified"))&&(d.lastModified[f]=w),(w=u.getResponseHeader("etag"))&&(d.etag[f]=w)),204===a||"HEAD"===m.type?w="nocontent":304===a?w="notmodified":(w=r.state,l=r.data,t=r.error,h=!t);else if(t=w,a||!w)w="error",0>a&&(a=0);u.status=a;u.statusText=(b||w)+"";h?D.resolveWith(v,[l,w,u]):D.rejectWith(v, -[u,w,t]);u.statusCode(J);J=void 0;q&&x.trigger(h?"ajaxSuccess":"ajaxError",[u,m,h?l:t]);K.fireWith(v,[u,w]);q&&(x.trigger("ajaxComplete",[u,m]),--d.active||d.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=void 0);b=b||{};var e,f,g,h,k,l,n,q,t,m=d.ajaxSetup({},b),v=m.context||m,x=m.context&&(v.nodeType||v.jquery)?d(v):d.event,D=d.Deferred(),K=d.Callbacks("once memory"),J=m.statusCode||{},F={},H={},A="canceled",u={readyState:0,getResponseHeader:function(a){var b;if(n){if(!h)for(h={};b=Bc.exec(g);)h[b[1].toLowerCase()]= -b[2];b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return n?g:null},setRequestHeader:function(a,b){null==n&&(a=H[a.toLowerCase()]=H[a.toLowerCase()]||a,F[a]=b);return this},overrideMimeType:function(a){null==n&&(m.mimeType=a);return this},statusCode:function(a){var b;if(a)if(n)u.always(a[u.status]);else for(b in a)J[b]=[J[b],a[b]];return this},abort:function(a){a=a||A;e&&e.abort(a);c(0,a);return this}};D.promise(u);m.url=((a||m.url||wa.href)+"").replace(Dc,wa.protocol+ -"//");m.type=b.method||b.type||m.method||m.type;m.dataTypes=(m.dataType||"*").toLowerCase().match(C)||[""];if(null==m.crossDomain){l=r.createElement("a");try{l.href=m.url,l.href=l.href,m.crossDomain=Wa.protocol+"//"+Wa.host!==l.protocol+"//"+l.host}catch(w){m.crossDomain=!0}}m.data&&m.processData&&"string"!==typeof m.data&&(m.data=d.param(m.data,m.traditional));vb(Nb,m,b,u);if(n)return u;(q=d.event&&m.global)&&0===d.active++&&d.event.trigger("ajaxStart");m.type=m.type.toUpperCase();m.hasContent=!Cc.test(m.type); -f=m.url.replace(zc,"");m.hasContent?m.data&&m.processData&&0===(m.contentType||"").indexOf("application/x-www-form-urlencoded")&&(m.data=m.data.replace(yc,"+")):(l=m.url.slice(f.length),m.data&&(f+=(Va.test(f)?"&":"?")+m.data,delete m.data),!1===m.cache&&(f=f.replace(Ac,"$1"),l=(Va.test(f)?"&":"?")+"_="+Lb++ +l),m.url=f+l);m.ifModified&&(d.lastModified[f]&&u.setRequestHeader("If-Modified-Since",d.lastModified[f]),d.etag[f]&&u.setRequestHeader("If-None-Match",d.etag[f]));(m.data&&m.hasContent&&!1!== -m.contentType||b.contentType)&&u.setRequestHeader("Content-Type",m.contentType);u.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+Ob+"; q=0.01":""):m.accepts["*"]);for(t in m.headers)u.setRequestHeader(t,m.headers[t]);if(m.beforeSend&&(!1===m.beforeSend.call(v,u,m)||n))return u.abort();A="abort";K.add(m.complete);u.done(m.success);u.fail(m.error);if(e=vb(Qa,m,b,u)){u.readyState=1;q&&x.trigger("ajaxSend",[u,m]);if(n)return u; -m.async&&0").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove();c=null;a&&f("error"===a.type?404:200,a.type)});r.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Pb=[],Xa=/(=)\?(?=&|$)|\?\?/;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Pb.pop()||d.expando+"_"+Lb++;this[a]=!0;return a}});d.ajaxPrefilter("json jsonp",function(a,b,c){var e,f,g,h=!1!==a.jsonp&&(Xa.test(a.url)?"url": -"string"===typeof a.data&&0===(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&Xa.test(a.data)&&"data");if(h||"jsonp"===a.dataTypes[0])return e=a.jsonpCallback=d.isFunction(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,h?a[h]=a[h].replace(Xa,"$1"+e):!1!==a.jsonp&&(a.url+=(Va.test(a.url)?"&":"?")+a.jsonp+"="+e),a.converters["script json"]=function(){g||d.error(e+" was not called");return g[0]},a.dataTypes[0]="json",f=p[e],p[e]=function(){g=arguments},c.always(function(){void 0=== -f?d(p).removeProp(e):p[e]=f;a[e]&&(a.jsonpCallback=b.jsonpCallback,Pb.push(e));g&&d.isFunction(f)&&f(g[0]);g=f=void 0}),"script"});x.createHTMLDocument=function(){var a=r.implementation.createHTMLDocument("").body;a.innerHTML="
";return 2===a.childNodes.length}();d.parseHTML=function(a,b,c){if("string"!==typeof a)return[];"boolean"===typeof b&&(c=b,b=!1);var e;b||(x.createHTMLDocument?(b=r.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=r.location.href, -b.head.appendChild(e)):b=r);e=Cb.exec(a);c=!c&&[];if(e)return[b.createElement(e[1])];e=cb([a],b,c);c&&c.length&&d(c).remove();return d.merge([],e.childNodes)};d.fn.load=function(a,b,c){var e,f,g,h=this,k=a.indexOf(" ");-1").append(d.parseHTML(a)).find(e):a)}).always(c&&function(a,b){h.each(function(){c.apply(this, -g||[a.responseText,b,a])})});return this};d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.on(b,a)}});d.expr.pseudos.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length};d.offset={setOffset:function(a,b,c){var e,f,g,h=d.css(a,"position"),k=d(a),l={};"static"===h&&(a.style.position="relative");g=k.offset();f=d.css(a,"top");e=d.css(a,"left");("absolute"===h||"fixed"===h)&&-1<(f+e).indexOf("auto")? -(e=k.position(),f=e.top,e=e.left):(f=parseFloat(f)||0,e=parseFloat(e)||0);d.isFunction(b)&&(b=b.call(a,c,d.extend({},g)));null!=b.top&&(l.top=b.top-g.top+f);null!=b.left&&(l.left=b.left-g.left+e);"using"in b?b.using.call(a,l):k.css(l)}};d.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){d.offset.setOffset(this,a,b)});var b,c,e;if(c=this[0]){if(!c.getClientRects().length)return{top:0,left:0};e=c.getBoundingClientRect();b=c.ownerDocument;c=b.documentElement; -b=b.defaultView;return{top:e.top+b.pageYOffset-c.clientTop,left:e.left+b.pageXOffset-c.clientLeft}}},position:function(){if(this[0]){var a,b,c=this[0],e={top:0,left:0};"fixed"===d.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),D(a[0],"html")||(e=a.offset()),e={top:e.top+d.css(a[0],"borderTopWidth",!0),left:e.left+d.css(a[0],"borderLeftWidth",!0)});return{top:b.top-e.top-d.css(c,"marginTop",!0),left:b.left-e.left-d.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a= -this.offsetParent;a&&"static"===d.css(a,"position");)a=a.offsetParent;return a||Ka})}});d.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;d.fn[a]=function(e){return U(this,function(a,e,h){var f;d.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView);if(void 0===h)return f?f[b]:a[e];f?f.scrollTo(c?f.pageXOffset:h,c?h:f.pageYOffset):a[e]=h},a,e,arguments.length)}});d.each(["top","left"],function(a,b){d.cssHooks[b]=lb(x.pixelPosition,function(a,e){if(e)return e= -ta(a,b),Na.test(e)?d(a).position()[b]+"px":e})});d.each({Height:"height",Width:"width"},function(a,b){d.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,e){d.fn[e]=function(f,g){var h=arguments.length&&(c||"boolean"!==typeof f),k=c||(!0===f||!0===g?"margin":"border");return U(this,function(b,c,f){return d.isWindow(b)?0===e.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(c=b.documentElement,Math.max(b.body["scroll"+a],c["scroll"+a],b.body["offset"+a], -c["offset"+a],c["client"+a])):void 0===f?d.css(b,c,k):d.style(b,c,f,k)},b,h?f:void 0,h)}})});d.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)},holdReady:function(a){a?d.readyWait++:d.ready(!0)}});d.isArray=Array.isArray;d.parseJSON=JSON.parse;d.nodeName=D;"function"===typeof define&&define.amd&& -define("jquery",[],function(){return d});var Fc=p.jQuery,Gc=p.$;d.noConflict=function(a){p.$===d&&(p.$=Gc);a&&p.jQuery===d&&(p.jQuery=Fc);return d};t||(p.jQuery=p.$=d);return d}); diff --git a/public/js/jquery-3.2.0.js b/public/js/jquery-3.3.1.js similarity index 94% rename from public/js/jquery-3.2.0.js rename to public/js/jquery-3.3.1.js index b8e81143..9b5206bc 100644 --- a/public/js/jquery-3.2.0.js +++ b/public/js/jquery-3.3.1.js @@ -1,5 +1,5 @@ /*! - * jQuery JavaScript Library v3.2.0 + * jQuery JavaScript Library v3.3.1 * https://jquery.com/ * * Includes Sizzle.js @@ -9,7 +9,7 @@ * Released under the MIT license * https://jquery.org/license * - * Date: 2017-03-16T21:26Z + * Date: 2018-01-20T17:24Z */ ( function( global, factory ) { @@ -71,16 +71,57 @@ var ObjectFunctionString = fnToString.call( Object ); var support = {}; +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; - function DOMEval( code, doc ) { +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + + + + var preservedScriptAttributes = { + type: true, + src: true, + noModule: true + }; + + function DOMEval( code, doc, node ) { doc = doc || document; - var script = doc.createElement( "script" ); + var i, + script = doc.createElement( "script" ); script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + if ( node[ i ] ) { + script[ i ] = node[ i ]; + } + } + } doc.head.appendChild( script ).parentNode.removeChild( script ); } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} /* global Symbol */ // Defining this global in .eslintrc.json would create a danger of using the global // unguarded in another place, it seems safer to define global only for this module @@ -88,7 +129,7 @@ var support = {}; var - version = "3.2.0", + version = "3.3.1", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -100,16 +141,7 @@ var // Support: Android <=4.0 only // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([a-z])/g, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; jQuery.fn = jQuery.prototype = { @@ -209,7 +241,7 @@ jQuery.extend = jQuery.fn.extend = function() { } // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + if ( typeof target !== "object" && !isFunction( target ) ) { target = {}; } @@ -275,28 +307,6 @@ jQuery.extend( { noop: function() {}, - isFunction: function( obj ) { - return jQuery.type( obj ) === "function"; - }, - - isWindow: function( obj ) { - return obj != null && obj === obj.window; - }, - - isNumeric: function( obj ) { - - // As of jQuery 3.0, isNumeric is limited to - // strings and numbers (primitives or objects) - // that can be coerced to finite numbers (gh-2662) - var type = jQuery.type( obj ); - return ( type === "number" || type === "string" ) && - - // parseFloat NaNs numeric-cast false positives ("") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - !isNaN( obj - parseFloat( obj ) ); - }, - isPlainObject: function( obj ) { var proto, Ctor; @@ -330,29 +340,11 @@ jQuery.extend( { return true; }, - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - - // Support: Android <=2.3 only (functionish RegExp) - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call( obj ) ] || "object" : - typeof obj; - }, - // Evaluates a script in a global context globalEval: function( code ) { DOMEval( code ); }, - // Convert dashed to camelCase; used by the css and data modules - // Support: IE <=9 - 11, Edge 12 - 13 - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - each: function( obj, callback ) { var length, i = 0; @@ -473,37 +465,6 @@ jQuery.extend( { // A global GUID counter for objects guid: 1, - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var tmp, args, proxy; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: Date.now, - // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support @@ -526,9 +487,9 @@ function isArrayLike( obj ) { // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, - type = jQuery.type( obj ); + type = toType( obj ); - if ( type === "function" || jQuery.isWindow( obj ) ) { + if ( isFunction( obj ) || isWindow( obj ) ) { return false; } @@ -2848,11 +2809,9 @@ var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>| -var risSimple = /^.[^:#\[\.,]*$/; - // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { + if ( isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { return !!qualifier.call( elem, i, elem ) !== not; } ); @@ -2872,16 +2831,8 @@ function winnow( elements, qualifier, not ) { } ); } - // Simple selector that can be filtered directly, removing non-Elements - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - // Complex selector, compare the two sets, removing non-Elements - qualifier = jQuery.filter( qualifier, elements ); - return jQuery.grep( elements, function( elem ) { - return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1; - } ); + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); } jQuery.filter = function( expr, elems, not ) { @@ -3002,7 +2953,7 @@ var rootjQuery, for ( match in context ) { // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { + if ( isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes @@ -3045,7 +2996,7 @@ var rootjQuery, // HANDLE: $(function) // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { + } else if ( isFunction( selector ) ) { return root.ready !== undefined ? root.ready( selector ) : @@ -3360,11 +3311,11 @@ jQuery.Callbacks = function( options ) { ( function add( args ) { jQuery.each( args, function( _, arg ) { - if ( jQuery.isFunction( arg ) ) { + if ( isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } - } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + } else if ( arg && arg.length && toType( arg ) !== "string" ) { // Inspect recursively add( arg ); @@ -3479,11 +3430,11 @@ function adoptValue( value, resolve, reject, noValue ) { try { // Check for promise aspect first to privilege synchronous behavior - if ( value && jQuery.isFunction( ( method = value.promise ) ) ) { + if ( value && isFunction( ( method = value.promise ) ) ) { method.call( value ).done( resolve ).fail( reject ); // Other thenables - } else if ( value && jQuery.isFunction( ( method = value.then ) ) ) { + } else if ( value && isFunction( ( method = value.then ) ) ) { method.call( value, resolve, reject ); // Other non-thenables @@ -3541,14 +3492,14 @@ jQuery.extend( { jQuery.each( tuples, function( i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) - var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; // deferred.progress(function() { bind to newDefer or newDefer.notify }) // deferred.done(function() { bind to newDefer or newDefer.resolve }) // deferred.fail(function() { bind to newDefer or newDefer.reject }) deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { + if ( returned && isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) @@ -3602,7 +3553,7 @@ jQuery.extend( { returned.then; // Handle a returned thenable - if ( jQuery.isFunction( then ) ) { + if ( isFunction( then ) ) { // Special processors (notify) just wait for resolution if ( special ) { @@ -3698,7 +3649,7 @@ jQuery.extend( { resolve( 0, newDefer, - jQuery.isFunction( onProgress ) ? + isFunction( onProgress ) ? onProgress : Identity, newDefer.notifyWith @@ -3710,7 +3661,7 @@ jQuery.extend( { resolve( 0, newDefer, - jQuery.isFunction( onFulfilled ) ? + isFunction( onFulfilled ) ? onFulfilled : Identity ) @@ -3721,7 +3672,7 @@ jQuery.extend( { resolve( 0, newDefer, - jQuery.isFunction( onRejected ) ? + isFunction( onRejected ) ? onRejected : Thrower ) @@ -3761,8 +3712,15 @@ jQuery.extend( { // fulfilled_callbacks.disable tuples[ 3 - i ][ 2 ].disable, + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + // progress_callbacks.lock - tuples[ 0 ][ 2 ].lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock ); } @@ -3832,7 +3790,7 @@ jQuery.extend( { // Use .then() to unwrap secondary thenables (cf. gh-3000) if ( master.state() === "pending" || - jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { return master.then(); } @@ -3960,7 +3918,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { bulk = key == null; // Sets many values - if ( jQuery.type( key ) === "object" ) { + if ( toType( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); @@ -3970,7 +3928,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { } else if ( value !== undefined ) { chainable = true; - if ( !jQuery.isFunction( value ) ) { + if ( !isFunction( value ) ) { raw = true; } @@ -4012,6 +3970,23 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { return len ? fn( elems[ 0 ], key ) : emptyGet; }; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} var acceptData = function( owner ) { // Accepts only: @@ -4074,14 +4049,14 @@ Data.prototype = { // Handle: [ owner, key, value ] args // Always use camelCase key (gh-2257) if ( typeof data === "string" ) { - cache[ jQuery.camelCase( data ) ] = value; + cache[ camelCase( data ) ] = value; // Handle: [ owner, { properties } ] args } else { // Copy the properties one-by-one to the cache object for ( prop in data ) { - cache[ jQuery.camelCase( prop ) ] = data[ prop ]; + cache[ camelCase( prop ) ] = data[ prop ]; } } return cache; @@ -4091,7 +4066,7 @@ Data.prototype = { this.cache( owner ) : // Always use camelCase key (gh-2257) - owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ]; + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; }, access: function( owner, key, value ) { @@ -4139,9 +4114,9 @@ Data.prototype = { // If key is an array of keys... // We always set camelCase keys, so remove that. - key = key.map( jQuery.camelCase ); + key = key.map( camelCase ); } else { - key = jQuery.camelCase( key ); + key = camelCase( key ); // If a key with the spaces exists, use it. // Otherwise, create an array by matching non-whitespace @@ -4287,7 +4262,7 @@ jQuery.fn.extend( { if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice( 5 ) ); + name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } @@ -4534,8 +4509,7 @@ var swap = function( elem, options, callback, args ) { function adjustCSS( elem, prop, valueParts, tween ) { - var adjusted, - scale = 1, + var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { @@ -4553,30 +4527,33 @@ function adjustCSS( elem, prop, valueParts, tween ) { if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; - // Make sure we update the tween properties later on - valueParts = valueParts || []; - // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; - do { + while ( maxIterations-- ) { - // If previous iteration zeroed out, double until we get *something*. - // Use string for doubling so we don't accidentally see scale as unchanged below - scale = scale || ".5"; - - // Adjust and apply - initialInUnit = initialInUnit / scale; + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; - // Update scale, tolerating zero or NaN from tween.cur() - // Break the loop if scale is unchanged or perfect, or if we've just had enough. - } while ( - scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations - ); + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; } if ( valueParts ) { @@ -4694,7 +4671,7 @@ var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); -var rscriptType = ( /^$|\/(?:java|ecma)script/i ); +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); @@ -4776,7 +4753,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { if ( elem || elem === 0 ) { // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { + if ( toType( elem ) === "object" ) { // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit @@ -5286,7 +5263,7 @@ jQuery.event = { enumerable: true, configurable: true, - get: jQuery.isFunction( hook ) ? + get: isFunction( hook ) ? function() { if ( this.originalEvent ) { return hook( this.originalEvent ); @@ -5343,11 +5320,9 @@ jQuery.event = { }, click: { - // For checkable types, fire native event so checked state will be right + // For checkbox, fire native event so checked state will be right trigger: function() { - if ( rcheckableType.test( this.type ) && - this.click && nodeName( this, "input" ) ) { - + if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { this.click(); return false; } @@ -5423,7 +5398,7 @@ jQuery.Event = function( src, props ) { } // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); + this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; @@ -5622,14 +5597,13 @@ var /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 + // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g; // Prefer a tbody over its parent table for containing new rows @@ -5637,7 +5611,7 @@ function manipulationTarget( elem, content ) { if ( nodeName( elem, "table" ) && nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { - return jQuery( ">tbody", elem )[ 0 ] || elem; + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; } return elem; @@ -5649,10 +5623,8 @@ function disableScript( elem ) { return elem; } function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - - if ( match ) { - elem.type = match[ 1 ]; + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); } else { elem.removeAttribute( "type" ); } @@ -5718,15 +5690,15 @@ function domManip( collection, args, callback, ignored ) { l = collection.length, iNoClone = l - 1, value = args[ 0 ], - isFunction = jQuery.isFunction( value ); + valueIsFunction = isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || + if ( valueIsFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); - if ( isFunction ) { + if ( valueIsFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); @@ -5780,14 +5752,14 @@ function domManip( collection, args, callback, ignored ) { !dataPriv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - if ( node.src ) { + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc ); + DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); } } } @@ -6067,8 +6039,6 @@ jQuery.each( { return this.pushStack( ret ); }; } ); -var rmargin = ( /^margin/ ); - var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); var getStyles = function( elem ) { @@ -6085,6 +6055,8 @@ var getStyles = function( elem ) { return view.getComputedStyle( elem ); }; +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + ( function() { @@ -6098,25 +6070,33 @@ var getStyles = function( elem ) { return; } + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; div.style.cssText = - "box-sizing:border-box;" + - "position:relative;display:block;" + + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + - "top:1%;width:50%"; - div.innerHTML = ""; - documentElement.appendChild( container ); + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); var divStyle = window.getComputedStyle( div ); pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 - reliableMarginLeftVal = divStyle.marginLeft === "2px"; - boxSizingReliableVal = divStyle.width === "4px"; + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; - // Support: Android 4.0 - 4.3 only + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 // Some styles come back with percentage values, even though they shouldn't - div.style.marginRight = "50%"; - pixelMarginRightVal = divStyle.marginRight === "4px"; + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + div.style.position = "absolute"; + scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; documentElement.removeChild( container ); @@ -6125,7 +6105,12 @@ var getStyles = function( elem ) { div = null; } - var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal, + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); @@ -6140,26 +6125,26 @@ var getStyles = function( elem ) { div.cloneNode( true ).style.backgroundClip = ""; support.clearCloneStyle = div.style.backgroundClip === "content-box"; - container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + - "padding:0;margin-top:1px;position:absolute"; - container.appendChild( div ); - jQuery.extend( support, { - pixelPosition: function() { - computeStyleTests(); - return pixelPositionVal; - }, boxSizingReliable: function() { computeStyleTests(); return boxSizingReliableVal; }, - pixelMarginRight: function() { + pixelBoxStyles: function() { computeStyleTests(); - return pixelMarginRightVal; + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; }, reliableMarginLeft: function() { computeStyleTests(); return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; } } ); } )(); @@ -6167,6 +6152,11 @@ var getStyles = function( elem ) { function curCSS( elem, name, computed ) { var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements style = elem.style; computed = computed || getStyles( elem ); @@ -6186,7 +6176,7 @@ function curCSS( elem, name, computed ) { // but width seems to be reliably pixels. // This is against the CSSOM draft spec: // https://drafts.csswg.org/cssom/#resolved-values - if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { // Remember the original values width = style.width; @@ -6291,81 +6281,120 @@ function setPositiveNumber( elem, value, subtract ) { value; } -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { - var i, - val = 0; +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; - // If we already have the right measurement, avoid augmentation - if ( extra === ( isBorderBox ? "border" : "content" ) ) { - i = 4; - - // Otherwise initialize for horizontal or vertical properties - } else { - i = name === "width" ? 1 : 0; + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; } for ( ; i < 4; i += 2 ) { - // Both box models exclude margin, so add it if we want it - if ( extra === "margin" ) { - val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); } - if ( isBorderBox ) { + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { - // border-box includes padding, so remove it if we want content - if ( extra === "content" ) { - val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } - // At this point, extra isn't border nor margin, so remove border - if ( extra !== "margin" ) { - val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); - } + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" } else { - // At this point, extra isn't content, so add padding - val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } - // At this point, extra isn't content nor padding, so add border - if ( extra !== "padding" ) { - val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); } } } - return val; + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + ) ); + } + + return delta; } -function getWidthOrHeight( elem, name, extra ) { +function getWidthOrHeight( elem, dimension, extra ) { // Start with computed style - var valueIsBorderBox, - styles = getStyles( elem ), - val = curCSS( elem, name, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + var styles = getStyles( elem ), + val = curCSS( elem, dimension, styles ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox; - // Computed unit is not pixels. Stop here and return. + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. if ( rnumnonpx.test( val ) ) { - return val; + if ( !extra ) { + return val; + } + val = "auto"; } // Check for style in case a browser which returns unreliable values // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = isBorderBox && - ( support.boxSizingReliable() || val === elem.style[ name ] ); + valueIsBorderBox = valueIsBorderBox && + ( support.boxSizingReliable() || val === elem.style[ dimension ] ); - // Normalize "", auto, and prepare for extra + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + if ( val === "auto" || + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { + + val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; + + // offsetWidth/offsetHeight provide border-box values + valueIsBorderBox = true; + } + + // Normalize "" and auto val = parseFloat( val ) || 0; - // Use the active box-sizing model to add/subtract irrelevant styles + // Adjust for the element's box model return ( val + - augmentWidthOrHeight( + boxModelAdjustment( elem, - name, + dimension, extra || ( isBorderBox ? "border" : "content" ), valueIsBorderBox, - styles + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val ) ) + "px"; } @@ -6406,9 +6435,7 @@ jQuery.extend( { // Add in properties whose names you wish to fix before // setting or getting the value - cssProps: { - "float": "cssFloat" - }, + cssProps: {}, // Get and set the style property on a DOM Node style: function( elem, name, value, extra ) { @@ -6420,7 +6447,7 @@ jQuery.extend( { // Make sure that we're working with the right name var ret, type, hooks, - origName = jQuery.camelCase( name ), + origName = camelCase( name ), isCustomProp = rcustomProp.test( name ), style = elem.style; @@ -6488,7 +6515,7 @@ jQuery.extend( { css: function( elem, name, extra, styles ) { var val, num, hooks, - origName = jQuery.camelCase( name ), + origName = camelCase( name ), isCustomProp = rcustomProp.test( name ); // Make sure that we're working with the right name. We don't @@ -6526,8 +6553,8 @@ jQuery.extend( { } } ); -jQuery.each( [ "height", "width" ], function( i, name ) { - jQuery.cssHooks[ name ] = { +jQuery.each( [ "height", "width" ], function( i, dimension ) { + jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { @@ -6543,29 +6570,41 @@ jQuery.each( [ "height", "width" ], function( i, name ) { // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? swap( elem, cssShow, function() { - return getWidthOrHeight( elem, name, extra ); + return getWidthOrHeight( elem, dimension, extra ); } ) : - getWidthOrHeight( elem, name, extra ); + getWidthOrHeight( elem, dimension, extra ); } }, set: function( elem, value, extra ) { var matches, - styles = extra && getStyles( elem ), - subtract = extra && augmentWidthOrHeight( + styles = getStyles( elem ), + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra && boxModelAdjustment( elem, - name, + dimension, extra, - jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + isBorderBox, styles ); + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && support.scrollboxSize() === styles.position ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + // Convert to pixels if value adjustment is needed if ( subtract && ( matches = rcssNum.exec( value ) ) && ( matches[ 3 ] || "px" ) !== "px" ) { - elem.style[ name ] = value; - value = jQuery.css( elem, name ); + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); } return setPositiveNumber( elem, value, subtract ); @@ -6609,7 +6648,7 @@ jQuery.each( { } }; - if ( !rmargin.test( prefix ) ) { + if ( prefix !== "margin" ) { jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; } } ); @@ -6780,7 +6819,7 @@ function createFxNow() { window.setTimeout( function() { fxNow = undefined; } ); - return ( fxNow = jQuery.now() ); + return ( fxNow = Date.now() ); } // Generate parameters to create a standard animation @@ -6884,9 +6923,10 @@ function defaultPrefilter( elem, props, opts ) { // Restrict "overflow" and "display" styles during box animations if ( isBox && elem.nodeType === 1 ) { - // Support: IE <=9 - 11, Edge 12 - 13 + // Support: IE <=9 - 11, Edge 12 - 15 // Record all 3 overflow attributes because IE does not infer the shorthand - // from identically-valued overflowX and overflowY + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; // Identify a display type, preferring old show/hide data over the CSS cascade @@ -6994,7 +7034,7 @@ function propFilter( props, specialEasing ) { // camelCase, specialEasing and expand cssHook pass for ( index in props ) { - name = jQuery.camelCase( index ); + name = camelCase( index ); easing = specialEasing[ name ]; value = props[ index ]; if ( Array.isArray( value ) ) { @@ -7119,9 +7159,9 @@ function Animation( elem, properties, options ) { for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { - if ( jQuery.isFunction( result.stop ) ) { + if ( isFunction( result.stop ) ) { jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = - jQuery.proxy( result.stop, result ); + result.stop.bind( result ); } return result; } @@ -7129,7 +7169,7 @@ function Animation( elem, properties, options ) { jQuery.map( props, createTween, animation ); - if ( jQuery.isFunction( animation.opts.start ) ) { + if ( isFunction( animation.opts.start ) ) { animation.opts.start.call( elem, animation ); } @@ -7162,7 +7202,7 @@ jQuery.Animation = jQuery.extend( Animation, { }, tweener: function( props, callback ) { - if ( jQuery.isFunction( props ) ) { + if ( isFunction( props ) ) { callback = props; props = [ "*" ]; } else { @@ -7194,9 +7234,9 @@ jQuery.Animation = jQuery.extend( Animation, { jQuery.speed = function( speed, easing, fn ) { var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, + isFunction( speed ) && speed, duration: speed, - easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + easing: fn && easing || easing && !isFunction( easing ) && easing }; // Go to the end state if fx are off @@ -7223,7 +7263,7 @@ jQuery.speed = function( speed, easing, fn ) { opt.old = opt.complete; opt.complete = function() { - if ( jQuery.isFunction( opt.old ) ) { + if ( isFunction( opt.old ) ) { opt.old.call( this ); } @@ -7387,7 +7427,7 @@ jQuery.fx.tick = function() { i = 0, timers = jQuery.timers; - fxNow = jQuery.now(); + fxNow = Date.now(); for ( ; i < timers.length; i++ ) { timer = timers[ i ]; @@ -7740,7 +7780,7 @@ jQuery.each( [ // Strip and collapse whitespace according to HTML spec - // https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace function stripAndCollapse( value ) { var tokens = value.match( rnothtmlwhite ) || []; return tokens.join( " " ); @@ -7751,20 +7791,30 @@ function getClass( elem ) { return elem.getAttribute && elem.getAttribute( "class" ) || ""; } +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + jQuery.fn.extend( { addClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if ( jQuery.isFunction( value ) ) { + if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); } ); } - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; + classes = classesToArray( value ); + if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); @@ -7793,7 +7843,7 @@ jQuery.fn.extend( { var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; - if ( jQuery.isFunction( value ) ) { + if ( isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); } ); @@ -7803,9 +7853,9 @@ jQuery.fn.extend( { return this.attr( "class", "" ); } - if ( typeof value === "string" && value ) { - classes = value.match( rnothtmlwhite ) || []; + classes = classesToArray( value ); + if ( classes.length ) { while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); @@ -7835,13 +7885,14 @@ jQuery.fn.extend( { }, toggleClass: function( value, stateVal ) { - var type = typeof value; + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); - if ( typeof stateVal === "boolean" && type === "string" ) { + if ( typeof stateVal === "boolean" && isValidValue ) { return stateVal ? this.addClass( value ) : this.removeClass( value ); } - if ( jQuery.isFunction( value ) ) { + if ( isFunction( value ) ) { return this.each( function( i ) { jQuery( this ).toggleClass( value.call( this, i, getClass( this ), stateVal ), @@ -7853,12 +7904,12 @@ jQuery.fn.extend( { return this.each( function() { var className, i, self, classNames; - if ( type === "string" ) { + if ( isValidValue ) { // Toggle individual class names i = 0; self = jQuery( this ); - classNames = value.match( rnothtmlwhite ) || []; + classNames = classesToArray( value ); while ( ( className = classNames[ i++ ] ) ) { @@ -7917,7 +7968,7 @@ var rreturn = /\r/g; jQuery.fn.extend( { val: function( value ) { - var hooks, ret, isFunction, + var hooks, ret, valueIsFunction, elem = this[ 0 ]; if ( !arguments.length ) { @@ -7946,7 +7997,7 @@ jQuery.fn.extend( { return; } - isFunction = jQuery.isFunction( value ); + valueIsFunction = isFunction( value ); return this.each( function( i ) { var val; @@ -7955,7 +8006,7 @@ jQuery.fn.extend( { return; } - if ( isFunction ) { + if ( valueIsFunction ) { val = value.call( this, i, jQuery( this ).val() ); } else { val = value; @@ -8097,18 +8148,24 @@ jQuery.each( [ "radio", "checkbox" ], function() { // Return jQuery for attributes-only inclusion -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/; +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; jQuery.extend( jQuery.event, { trigger: function( event, data, elem, onlyHandlers ) { - var i, cur, tmp, bubbleType, ontype, handle, special, + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; - cur = tmp = elem = elem || document; + cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { @@ -8160,7 +8217,7 @@ jQuery.extend( jQuery.event, { // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { @@ -8180,7 +8237,7 @@ jQuery.extend( jQuery.event, { // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { - + lastElement = cur; event.type = i > 1 ? bubbleType : special.bindType || type; @@ -8212,7 +8269,7 @@ jQuery.extend( jQuery.event, { // Call a native DOM method on the target with the same name as the event. // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; @@ -8223,7 +8280,17 @@ jQuery.extend( jQuery.event, { // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + jQuery.event.triggered = undefined; if ( tmp ) { @@ -8269,31 +8336,6 @@ jQuery.fn.extend( { } ); -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup contextmenu" ).split( " " ), - function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - return arguments.length > 0 ? - this.on( name, null, data, fn ) : - this.trigger( name ); - }; -} ); - -jQuery.fn.extend( { - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -} ); - - - - -support.focusin = "onfocusin" in window; - - // Support: Firefox <=44 // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 @@ -8337,7 +8379,7 @@ if ( !support.focusin ) { } var location = window.location; -var nonce = jQuery.now(); +var nonce = Date.now(); var rquery = ( /\?/ ); @@ -8395,7 +8437,7 @@ function buildParams( prefix, obj, traditional, add ) { } } ); - } else if ( !traditional && jQuery.type( obj ) === "object" ) { + } else if ( !traditional && toType( obj ) === "object" ) { // Serialize object item. for ( name in obj ) { @@ -8417,7 +8459,7 @@ jQuery.param = function( a, traditional ) { add = function( key, valueOrFunction ) { // If value is a function, invoke it and use its return value - var value = jQuery.isFunction( valueOrFunction ) ? + var value = isFunction( valueOrFunction ) ? valueOrFunction() : valueOrFunction; @@ -8535,7 +8577,7 @@ function addToPrefiltersOrTransports( structure ) { i = 0, dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; - if ( jQuery.isFunction( func ) ) { + if ( isFunction( func ) ) { // For each dataType in the dataTypeExpression while ( ( dataType = dataTypes[ i++ ] ) ) { @@ -9007,7 +9049,7 @@ jQuery.extend( { if ( s.crossDomain == null ) { urlAnchor = document.createElement( "a" ); - // Support: IE <=8 - 11, Edge 12 - 13 + // Support: IE <=8 - 11, Edge 12 - 15 // IE throws exception on accessing the href property if url is malformed, // e.g. http://example.com:80x/ try { @@ -9065,8 +9107,8 @@ jQuery.extend( { // Remember the hash so we can put it back uncached = s.url.slice( cacheURL.length ); - // If data is available, append data to url - if ( s.data ) { + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; // #9682: remove data so that it's not used in an eventual retry @@ -9303,7 +9345,7 @@ jQuery.each( [ "get", "post" ], function( i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { + if ( isFunction( data ) ) { type = type || callback; callback = data; data = undefined; @@ -9341,7 +9383,7 @@ jQuery.fn.extend( { var wrap; if ( this[ 0 ] ) { - if ( jQuery.isFunction( html ) ) { + if ( isFunction( html ) ) { html = html.call( this[ 0 ] ); } @@ -9367,7 +9409,7 @@ jQuery.fn.extend( { }, wrapInner: function( html ) { - if ( jQuery.isFunction( html ) ) { + if ( isFunction( html ) ) { return this.each( function( i ) { jQuery( this ).wrapInner( html.call( this, i ) ); } ); @@ -9387,10 +9429,10 @@ jQuery.fn.extend( { }, wrap: function( html ) { - var isFunction = jQuery.isFunction( html ); + var htmlIsFunction = isFunction( html ); return this.each( function( i ) { - jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); } ); }, @@ -9482,7 +9524,8 @@ jQuery.ajaxTransport( function( options ) { return function() { if ( callback ) { callback = errorCallback = xhr.onload = - xhr.onerror = xhr.onabort = xhr.onreadystatechange = null; + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; if ( type === "abort" ) { xhr.abort(); @@ -9522,7 +9565,7 @@ jQuery.ajaxTransport( function( options ) { // Listen to events xhr.onload = callback(); - errorCallback = xhr.onerror = callback( "error" ); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); // Support: IE 9 only // Use onreadystatechange to replace onabort @@ -9676,7 +9719,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { // Get callback name, remembering preexisting value associated with it - callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback; @@ -9727,7 +9770,7 @@ jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { } // Call if it was a function and we have a response - if ( responseContainer && jQuery.isFunction( overwritten ) ) { + if ( responseContainer && isFunction( overwritten ) ) { overwritten( responseContainer[ 0 ] ); } @@ -9819,7 +9862,7 @@ jQuery.fn.load = function( url, params, callback ) { } // If it's a function - if ( jQuery.isFunction( params ) ) { + if ( isFunction( params ) ) { // We assume that it's the callback callback = params; @@ -9927,7 +9970,7 @@ jQuery.offset = { curLeft = parseFloat( curCSSLeft ) || 0; } - if ( jQuery.isFunction( options ) ) { + if ( isFunction( options ) ) { // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); @@ -9950,6 +9993,8 @@ jQuery.offset = { }; jQuery.fn.extend( { + + // offset() relates an element's border box to the document origin offset: function( options ) { // Preserve chaining for setter @@ -9961,7 +10006,7 @@ jQuery.fn.extend( { } ); } - var doc, docElem, rect, win, + var rect, win, elem = this[ 0 ]; if ( !elem ) { @@ -9976,50 +10021,52 @@ jQuery.fn.extend( { return { top: 0, left: 0 }; } + // Get document-relative position by adding viewport scroll to viewport-relative gBCR rect = elem.getBoundingClientRect(); - - doc = elem.ownerDocument; - docElem = doc.documentElement; - win = doc.defaultView; - + win = elem.ownerDocument.defaultView; return { - top: rect.top + win.pageYOffset - docElem.clientTop, - left: rect.left + win.pageXOffset - docElem.clientLeft + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset }; }, + // position() relates an element's margin box to its offset parent's padding box + // This corresponds to the behavior of CSS absolute positioning position: function() { if ( !this[ 0 ] ) { return; } - var offsetParent, offset, + var offsetParent, offset, doc, elem = this[ 0 ], parentOffset = { top: 0, left: 0 }; - // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, - // because it is its only offset parent + // position:fixed elements are offset from the viewport, which itself always has zero offset if ( jQuery.css( elem, "position" ) === "fixed" ) { - // Assume getBoundingClientRect is there when computed position is fixed + // Assume position:fixed implies availability of getBoundingClientRect offset = elem.getBoundingClientRect(); } else { - - // Get *real* offsetParent - offsetParent = this.offsetParent(); - - // Get correct offsets offset = this.offset(); - if ( !nodeName( offsetParent[ 0 ], "html" ) ) { - parentOffset = offsetParent.offset(); - } - // Add offsetParent borders - parentOffset = { - top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ), - left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ) - }; + // Account for the *real* offset parent, which can be the document or its root element + // when a statically positioned element is identified + doc = elem.ownerDocument; + offsetParent = elem.offsetParent || doc.documentElement; + while ( offsetParent && + ( offsetParent === doc.body || offsetParent === doc.documentElement ) && + jQuery.css( offsetParent, "position" ) === "static" ) { + + offsetParent = offsetParent.parentNode; + } + if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { + + // Incorporate borders into its offset, since they are outside its content origin + parentOffset = jQuery( offsetParent ).offset(); + parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); + parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); + } } // Subtract parent offsets and element margins @@ -10061,7 +10108,7 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( // Coalesce documents and windows var win; - if ( jQuery.isWindow( elem ) ) { + if ( isWindow( elem ) ) { win = elem; } else if ( elem.nodeType === 9 ) { win = elem.defaultView; @@ -10119,7 +10166,7 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { return access( this, function( elem, type, value ) { var doc; - if ( jQuery.isWindow( elem ) ) { + if ( isWindow( elem ) ) { // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) return funcName.indexOf( "outer" ) === 0 ? @@ -10153,6 +10200,28 @@ jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { } ); +jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + + + jQuery.fn.extend( { bind: function( types, data, fn ) { @@ -10171,19 +10240,70 @@ jQuery.fn.extend( { return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn ); - }, - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } } } ); +// Bind a function to a context, optionally partially applying any +// arguments. +// jQuery.proxy is deprecated to promote standards (specifically Function#bind) +// However, it is not slated for removal any time soon +jQuery.proxy = function( fn, context ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; +}; + +jQuery.holdReady = function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } +}; jQuery.isArray = Array.isArray; jQuery.parseJSON = JSON.parse; jQuery.nodeName = nodeName; +jQuery.isFunction = isFunction; +jQuery.isWindow = isWindow; +jQuery.camelCase = camelCase; +jQuery.type = toType; + +jQuery.now = Date.now; + +jQuery.isNumeric = function( obj ) { + + // As of jQuery 3.0, isNumeric is limited to + // strings and numbers (primitives or objects) + // that can be coerced to finite numbers (gh-2662) + var type = jQuery.type( obj ); + return ( type === "number" || type === "string" ) && + + // parseFloat NaNs numeric-cast false positives ("") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + !isNaN( obj - parseFloat( obj ) ); +}; diff --git a/public/js/jquery-3.3.1.min.js b/public/js/jquery-3.3.1.min.js new file mode 100644 index 00000000..f13145f5 --- /dev/null +++ b/public/js/jquery-3.3.1.min.js @@ -0,0 +1,175 @@ +var $jscomp={scope:{},findInternal:function(p,E,C){p instanceof String&&(p=String(p));for(var H=p.length,I=0;I=(1-g)*(1-(g=k()/l||.5))&&(h=0),q/=g;q*=2;d.style(a,b,q+n);c=c||[]}c&&(q=+q||+l||0,f=c[1]?q+(c[1]+1)*c[2]:+c[2],e&&(e.unit=n,e.start=q,e.end=f));return f}function ka(a,b){for(var c,e,f=[],g=0,h=a.length;gh;h+=2)"margin"===c&&(l+=d.css(a,c+Z[h],!0,f)),e?("content"===c&&(l-=d.css(a, +"padding"+Z[h],!0,f)),"margin"!==c&&(l-=d.css(a,"border"+Z[h]+"Width",!0,f))):(l+=d.css(a,"padding"+Z[h],!0,f),"padding"!==c?l+=d.css(a,"border"+Z[h]+"Width",!0,f):k+=d.css(a,"border"+Z[h]+"Width",!0,f));!e&&0<=g&&(l+=Math.max(0,Math.ceil(a["offset"+b[0].toUpperCase()+b.slice(1)]-g-l-k-.5)));return l}function vb(a,b,c){var e=Ha(a),f=Y(a,b,e),g="border-box"===d.css(a,"boxSizing",!1,e),h=g;if(Ra.test(f)){if(!c)return f;f="auto"}h=h&&(v.boxSizingReliable()||f===a.style[b]);if("auto"===f||!parseFloat(f)&& +"inline"===d.css(a,"display",!1,e))f=a["offset"+b[0].toUpperCase()+b.slice(1)],h=!0;f=parseFloat(f)||0;return f+Sa(a,b,c||(g?"border":"content"),h,e,f)+"px"}function B(a,b,c,e,d){return new B.prototype.init(a,b,c,e,d)}function Ta(){Ia&&(!1===u.hidden&&p.requestAnimationFrame?p.requestAnimationFrame(Ta):p.setTimeout(Ta,d.fx.interval),d.fx.tick())}function wb(){p.setTimeout(function(){na=void 0});return na=Date.now()}function Ja(a,b){var c,e=0,d={height:a};for(b=b?1:0;4>e;e+=2-b)c=Z[e],d["margin"+c]= +d["padding"+c]=a;b&&(d.opacity=d.width=a);return d}function xb(a,b,c){for(var e,d=(U.tweeners[b]||[]).concat(U.tweeners["*"]),g=0,h=d.length;gc&&f)return b;f||h.notifyWith(a,[l,1,0]);h.resolveWith(a,[l]);return!1},l=h.promise({elem:a,props:d.extend({},b),opts:d.extend(!0,{specialEasing:{},easing:d.easing._default},c),originalProperties:b,originalOptions:c,startTime:na||wb(),duration:c.duration,tweens:[],createTween:function(b,c){var e=d.Tween(a,l.opts,b, +c,l.opts.specialEasing[b]||l.opts.easing);l.tweens.push(e);return e},stop:function(b){var c=0,d=b?l.tweens.length:0;if(e)return this;for(e=!0;ca?this[a+this.length]:this[a]},pushStack:function(a){a=d.merge(this.constructor(),a);a.prevObject=this;return a},each:function(a){return d.each(this,a)},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(S.apply(this,arguments))},first:function(){return this.eq(0)}, +last:function(){return this.eq(-1)},eq:function(a){var b=this.length;a=+a+(0>a?b:0);return this.pushStack(0<=a&&ax.cacheLength&&delete a[b.shift()];return a[c+" "]=d}var b=[];return a}function d(a){a[D]=!0;return a}function f(a){var b=z.createElement("fieldset");try{return!!a(b)}catch(A){return!1}finally{b.parentNode&&b.parentNode.removeChild(b)}}function g(a,b){for(var c=a.split("|"),d=c.length;d--;)x.attrHandle[c[d]]=b}function h(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)for(;c=c.nextSibling;)if(c===b)return-1;return a?1:-1}function k(a){return function(b){return"input"=== +b.nodeName.toLowerCase()&&b.type===a}}function l(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function n(a){return function(b){return"form"in b?b.parentNode&&!1===b.disabled?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&za(b)===a:b.disabled===a:"label"in b?b.disabled===a:!1}}function q(a){return d(function(b){b=+b;return d(function(c,d){for(var e,f=a([],c.length,b),g=f.length;g--;)c[e= +f[g]]&&(c[e]=!(d[e]=c[e]))})})}function p(a){return a&&"undefined"!==typeof a.getElementsByTagName&&a}function m(){}function Fa(a){for(var b=0,c=a.length,d="";b+~]|[\x20\t\r\n\f])[\x20\t\r\n\f]*/,la=RegExp("=[\\x20\\t\\r\\n\\f]*([^\\]'\"]*?)[\\x20\\t\\r\\n\\f]*\\]","g"),ma=/:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/, +na=/^(?:\\.|[\w-]|[^\x00-\xa0])+$/,aa={ID:/^#((?:\\.|[\w-]|[^\x00-\xa0])+)/,CLASS:/^\.((?:\\.|[\w-]|[^\x00-\xa0])+)/,TAG:/^((?:\\.|[\w-]|[^\x00-\xa0])+|[*])/,ATTR:/^\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\]/,PSEUDO:/^:((?:\\.|[\w-]|[^\x00-\xa0])+)(?:\((('((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)")|((?:\\.|[^\\()[\]]|\[[\x20\t\r\n\f]*((?:\\.|[\w-]|[^\x00-\xa0])+)(?:[\x20\t\r\n\f]*([*^$|!~]?=)[\x20\t\r\n\f]*(?:'((?:\\.|[^\\'])*)'|"((?:\\.|[^\\"])*)"|((?:\\.|[\w-]|[^\x00-\xa0])+))|)[\x20\t\r\n\f]*\])*)|.*)\)|)/, +CHILD:/^:(only|first|last|nth|nth-last)-(child|of-type)(?:\([\x20\t\r\n\f]*(even|odd|(([+-]|)(\d*)n|)[\x20\t\r\n\f]*(?:([+-]|)[\x20\t\r\n\f]*(\d+)|))[\x20\t\r\n\f]*\)|)/i,bool:/^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$/i,needsContext:/^[\x20\t\r\n\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\([\x20\t\r\n\f]*((?:-\d)?\d*)[\x20\t\r\n\f]*\)|)(?=[^-]|$)/i},va=/^(?:input|select|textarea|button)$/i,wa=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/, +ya=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ia=/[+~]/,fa=RegExp("\\\\([\\da-f]{1,6}[\\x20\\t\\r\\n\\f]?|([\\x20\\t\\r\\n\\f])|.)","ig"),ga=function(a,b,c){a="0x"+b-65536;return a!==a||c?b:0>a?String.fromCharCode(a+65536):String.fromCharCode(a>>10|55296,a&1023|56320)},sa=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ta=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},ua=function(){pa()},za=Ga(function(a){return!0===a.disabled&&("form"in +a||"label"in a)},{dir:"parentNode",next:"legend"});try{qa.apply(O=ba.call(V.childNodes),V.childNodes),O[V.childNodes.length].nodeType}catch(t){qa={apply:O.length?function(a,b){da.apply(a,ba.call(b))}:function(a,b){for(var c=a.length,d=0;a[c++]=b[d++];);a.length=c-1}}}w=b.support={};Cb=b.isXML=function(a){return(a=a&&(a.ownerDocument||a).documentElement)?"HTML"!==a.nodeName:!1};pa=b.setDocument=function(a){var b;a=a?a.ownerDocument||a:V;if(a===z||9!==a.nodeType||!a.documentElement)return z;z=a;K=z.documentElement; +G=!Cb(z);V!==z&&(b=z.defaultView)&&b.top!==b&&(b.addEventListener?b.addEventListener("unload",ua,!1):b.attachEvent&&b.attachEvent("onunload",ua));w.attributes=f(function(a){a.className="i";return!a.getAttribute("className")});w.getElementsByTagName=f(function(a){a.appendChild(z.createComment(""));return!a.getElementsByTagName("*").length});w.getElementsByClassName=Y.test(z.getElementsByClassName);w.getById=f(function(a){K.appendChild(a).id=D;return!z.getElementsByName||!z.getElementsByName(D).length}); +w.getById?(x.filter.ID=function(a){var b=a.replace(fa,ga);return function(a){return a.getAttribute("id")===b}},x.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&G){var c=b.getElementById(a);return c?[c]:[]}}):(x.filter.ID=function(a){var b=a.replace(fa,ga);return function(a){return(a="undefined"!==typeof a.getAttributeNode&&a.getAttributeNode("id"))&&a.value===b}},x.find.ID=function(a,b){if("undefined"!==typeof b.getElementById&&G){var c,d,e,f=b.getElementById(a);if(f){if((c=f.getAttributeNode("id"))&& +c.value===a)return[f];e=b.getElementsByName(a);for(d=0;f=e[d++];)if((c=f.getAttributeNode("id"))&&c.value===a)return[f]}return[]}});x.find.TAG=w.getElementsByTagName?function(a,b){if("undefined"!==typeof b.getElementsByTagName)return b.getElementsByTagName(a);if(w.qsa)return b.querySelectorAll(a)}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){for(;c=f[e++];)1===c.nodeType&&d.push(c);return d}return f};x.find.CLASS=w.getElementsByClassName&&function(a,b){if("undefined"!==typeof b.getElementsByClassName&& +G)return b.getElementsByClassName(a)};xa=[];J=[];if(w.qsa=Y.test(z.querySelectorAll))f(function(a){K.appendChild(a).innerHTML="";a.querySelectorAll("[msallowcapture^='']").length&&J.push("[*^$]=[\\x20\\t\\r\\n\\f]*(?:''|\"\")");a.querySelectorAll("[selected]").length||J.push("\\[[\\x20\\t\\r\\n\\f]*(?:value|checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)"); +a.querySelectorAll("[id~="+D+"-]").length||J.push("~=");a.querySelectorAll(":checked").length||J.push(":checked");a.querySelectorAll("a#"+D+"+*").length||J.push(".#.+[+~]")}),f(function(a){a.innerHTML="";var b=z.createElement("input");b.setAttribute("type","hidden");a.appendChild(b).setAttribute("name","D");a.querySelectorAll("[name=d]").length&&J.push("name[\\x20\\t\\r\\n\\f]*[*^$|!~]?=");2!==a.querySelectorAll(":enabled").length&& +J.push(":enabled",":disabled");K.appendChild(a).disabled=!0;2!==a.querySelectorAll(":disabled").length&&J.push(":enabled",":disabled");a.querySelectorAll("*,:x");J.push(",.*:")});(w.matchesSelector=Y.test(B=K.matches||K.webkitMatchesSelector||K.mozMatchesSelector||K.oMatchesSelector||K.msMatchesSelector))&&f(function(a){w.disconnectedMatch=B.call(a,"*");B.call(a,"[s!='']:x");xa.push("!=",":((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|\\[[\\x20\\t\\r\\n\\f]*((?:\\\\.|[\\w-]|[^\x00-\\xa0])+)(?:[\\x20\\t\\r\\n\\f]*([*^$|!~]?=)[\\x20\\t\\r\\n\\f]*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|((?:\\\\.|[\\w-]|[^\x00-\\xa0])+))|)[\\x20\\t\\r\\n\\f]*\\])*)|.*)\\)|)")}); +J=J.length&&new RegExp(J.join("|"));xa=xa.length&&new RegExp(xa.join("|"));L=(b=Y.test(K.compareDocumentPosition))||Y.test(K.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&1===d.nodeType&&(c.contains?c.contains(d):a.compareDocumentPosition&&a.compareDocumentPosition(d)&16))}:function(a,b){if(b)for(;b=b.parentNode;)if(b===a)return!0;return!1};T=b?function(a,b){if(a===b)return Aa=!0,0;var c=!a.compareDocumentPosition-!b.compareDocumentPosition; +if(c)return c;c=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;return c&1||!w.sortDetached&&b.compareDocumentPosition(a)===c?a===z||a.ownerDocument===V&&L(V,a)?-1:b===z||b.ownerDocument===V&&L(V,b)?1:ra?S(ra,a)-S(ra,b):0:c&4?-1:1}:function(a,b){if(a===b)return Aa=!0,0;var c,d=0;c=a.parentNode;var e=b.parentNode,f=[a],g=[b];if(!c||!e)return a===z?-1:b===z?1:c?-1:e?1:ra?S(ra,a)-S(ra,b):0;if(c===e)return h(a,b);for(c=a;c=c.parentNode;)f.unshift(c);for(c=b;c=c.parentNode;)g.unshift(c); +for(;f[d]===g[d];)d++;return d?h(f[d],g[d]):f[d]===V?-1:g[d]===V?1:0};return z};b.matches=function(a,c){return b(a,null,null,c)};b.matchesSelector=function(a,c){(a.ownerDocument||a)!==z&&pa(a);c=c.replace(la,"='$1']");if(!(!w.matchesSelector||!G||Q[c+" "]||xa&&xa.test(c)||J&&J.test(c)))try{var d=B.call(a,c);if(d||w.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(oa){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0}, +"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){a[1]=a[1].replace(fa,ga);a[3]=(a[3]||a[4]||a[5]||"").replace(fa,ga);"~="===a[2]&&(a[3]=" "+a[3]+" ");return a.slice(0,4)},CHILD:function(a){a[1]=a[1].toLowerCase();"nth"===a[1].slice(0,3)?(a[3]||b.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&b.error(a[0]);return a},PSEUDO:function(a){var b,c=!a[6]&&a[2];if(aa.CHILD.test(a[0]))return null;a[3]?a[2]=a[4]||a[5]||"":c&&ma.test(c)&& +(b=H(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b));return a.slice(0,3)}},filter:{TAG:function(a){var b=a.replace(fa,ga).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=R[a+" "];return b||(b=new RegExp("(^|[\\x20\\t\\r\\n\\f])"+a+"([\\x20\\t\\r\\n\\f]|$)"),R(a,function(a){return b.test("string"===typeof a.className&&a.className||"undefined"!==typeof a.getAttribute&&a.getAttribute("class")|| +"")}))},ATTR:function(a,c,d){return function(e){e=b.attr(e,a);if(null==e)return"!="===c;if(!c)return!0;e+="";return"="===c?e===d:"!="===c?e!==d:"^="===c?d&&0===e.indexOf(d):"*="===c?d&&-1a.nodeType)return!1;return!0},parent:function(a){return!x.pseudos.empty(a)},header:function(a){return wa.test(a.nodeName)},input:function(a){return va.test(a.nodeName)},button:function(a){var b= +a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:q(function(){return[0]}),last:q(function(a,b){return[b-1]}),eq:q(function(a,b,c){return[0>c?c+b:c]}),even:q(function(a,b){for(var c=0;cc?c+b:c;0<=--b;)a.push(b); +return a}),gt:q(function(a,b,c){for(c=0>c?c+b:c;++c";a.firstChild.setAttribute("value","");return""===a.firstChild.getAttribute("value")})|| +g("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue});f(function(a){return null==a.getAttribute("disabled")})||g("checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",function(a,b,c){var d;if(!c)return!0===a[b]?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null});return b}(p);d.find=ha;d.expr=ha.selectors;d.expr[":"]=d.expr.pseudos;d.uniqueSort=d.unique=ha.uniqueSort;d.text= +ha.getText;d.isXMLDoc=ha.isXML;d.contains=ha.contains;d.escapeSelector=ha.escape;var aa=function(a,b,c){for(var e=[],f=void 0!==c;(a=a[b])&&9!==a.nodeType;)if(1===a.nodeType){if(f&&d(a).is(c))break;e.push(a)}return e},Db=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},Eb=d.expr.match.needsContext,Fb=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;d.filter=function(a,b,c){var e=b[0];c&&(a=":not("+a+")");return 1===b.length&&1===e.nodeType?d.find.matchesSelector(e, +a)?[e]:[]:d.find.matches(a,d.grep(b,function(a){return 1===a.nodeType}))};d.fn.extend({find:function(a){var b,c,e=this.length,f=this;if("string"!==typeof a)return this.pushStack(d(a).filter(function(){for(b=0;b)[^>]*|#([\w-]+))$/;(d.fn.init=function(a,b,c){var e;if(!a)return this;c=c||Gb;if("string"===typeof a){e="<"===a[0]&&">"===a[a.length-1]&&3<=a.length?[null,a,null]:mc.exec(a);if(!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof d?b[0]:b,d.merge(this,d.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:u,!0)),Fb.test(e[1])&&d.isPlainObject(b))for(e in b)if(r(this[e]))this[e](b[e]);else this.attr(e, +b[e])}else if(a=u.getElementById(e[2]))this[0]=a,this.length=1;return this}return a.nodeType?(this[0]=a,this.length=1,this):r(a)?void 0!==c.ready?c.ready(a):a(d):d.makeArray(a,this)}).prototype=d.fn;Gb=d(u);var nc=/^(?:parents|prev(?:Until|All))/,oc={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({has:function(a){var b=d(a,this),c=b.length;return this.filter(function(){for(var a=0;ac.nodeType&&(h?-1=g&&(c!==za&&(h=void 0,k=[Bb]),b.rejectWith(h,k))}};a?m():(d.Deferred.getStackHook&&(m.stackTrace=d.Deferred.getStackHook()),p.setTimeout(m))}}var g=0;return d.Deferred(function(d){b[0][3].add(f(0,d,r(e)?e:ja,d.notifyWith));b[1][3].add(f(0,d,r(a)?a:ja)); +b[2][3].add(f(0,d,r(c)?c:za))}).promise()},promise:function(a){return null!=a?d.extend(a,e):e}},f={};d.each(b,function(a,d){var g=d[2],h=d[5];e[d[1]]=g.add;h&&g.add(function(){c=h},b[3-a][2].disable,b[3-a][3].disable,b[0][2].lock,b[0][3].lock);g.add(d[3].fire);f[d[0]]=function(){f[d[0]+"With"](this===f?void 0:this,arguments);return this};f[d[0]+"With"]=g.fireWith});e.promise(f);a&&a.call(f,f);return f},when:function(a){var b=arguments.length,c=b,e=Array(c),f=S.call(arguments),g=d.Deferred(),h=function(a){return function(c){e[a]= +this;f[a]=1=b&&(eb(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r(f[c]&&f[c].then)))return g.then();for(;c--;)eb(f[c],h(c),g.reject);return g.promise()}});var pc=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;d.Deferred.exceptionHook=function(a,b){p.console&&p.console.warn&&a&&pc.test(a.name)&&p.console.warn("jQuery.Deferred exception: "+a.message,a.stack,b)};d.readyException=function(a){p.setTimeout(function(){throw a; +})};var Za=d.Deferred();d.fn.ready=function(a){Za.then(a)["catch"](function(a){d.readyException(a)});return this};d.extend({isReady:!1,readyWait:1,ready:function(a){(!0===a?--d.readyWait:d.isReady)||(d.isReady=!0,!0!==a&&0<--d.readyWait||Za.resolveWith(u,[d]))}});d.ready.then=Za.then;"complete"===u.readyState||"loading"!==u.readyState&&!u.documentElement.doScroll?p.setTimeout(d.ready):(u.addEventListener("DOMContentLoaded",Ca),p.addEventListener("load",Ca));var O=function(a,b,c,e,f,g,h){var k=0,l= +a.length,n=null==c;if("object"===H(c))for(k in f=!0,c)O(a,b,k,c[k],!0,g,h);else if(void 0!==e&&(f=!0,r(e)||(h=!0),n&&(h?(b.call(a,e),b=null):(n=b,b=function(a,b,c){return n.call(d(a),c)})),b))for(;k\x20\t\r\n\f]+)/i, +kb=/^$|^module$|\/(?:java|ecma)script/i,R={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};R.optgroup=R.option;R.tbody=R.tfoot=R.colgroup=R.caption=R.thead;R.th=R.td;var bc=/<|&#?\w+;/;(function(){var a=u.createDocumentFragment().appendChild(u.createElement("div")),b=u.createElement("input");b.setAttribute("type", +"radio");b.setAttribute("checked","checked");b.setAttribute("name","t");a.appendChild(b);v.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked;a.innerHTML="";v.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue})();var Na=u.documentElement,qc=/^key/,rc=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Kb=/^([^.]*)(?:\.(.+)|)/;d.event={global:{},add:function(a,b,c,e,f){var g,h,k,l,n,q,p,m,r;if(n=y.get(a))for(c.handler&&(g=c,c=g.handler,f=g.selector),f&&d.find.matchesSelector(Na, +f),c.guid||(c.guid=d.guid++),(l=n.events)||(l=n.events={}),(h=n.handle)||(h=n.handle=function(b){return"undefined"!==typeof d&&d.event.triggered!==b.type?d.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(Q)||[""],n=b.length;n--;)k=Kb.exec(b[n])||[],m=q=k[1],r=(k[2]||"").split(".").sort(),m&&(k=d.event.special[m]||{},m=(f?k.delegateType:k.bindType)||m,k=d.event.special[m]||{},q=d.extend({type:m,origType:q,data:e,handler:c,guid:c.guid,selector:f,needsContext:f&&d.expr.match.needsContext.test(f), +namespace:r.join(".")},g),(p=l[m])||(p=l[m]=[],p.delegateCount=0,k.setup&&!1!==k.setup.call(a,e,r,h)||a.addEventListener&&a.addEventListener(m,h)),k.add&&(k.add.call(a,q),q.handler.guid||(q.handler.guid=c.guid)),f?p.splice(p.delegateCount++,0,q):p.push(q),d.event.global[m]=!0)},remove:function(a,b,c,e,f){var g,h,k,l,n,q,p,m,r,u,v,E=y.hasData(a)&&y.get(a);if(E&&(l=E.events)){b=(b||"").match(Q)||[""];for(n=b.length;n--;)if(k=Kb.exec(b[n])||[],r=v=k[1],u=(k[2]||"").split(".").sort(),r){p=d.event.special[r]|| +{};r=(e?p.delegateType:p.bindType)||r;m=l[r]||[];k=k[2]&&new RegExp("(^|\\.)"+u.join("\\.(?:.*\\.|)")+"(\\.|$)");for(h=g=m.length;g--;)q=m[g],!f&&v!==q.origType||c&&c.guid!==q.guid||k&&!k.test(q.namespace)||e&&e!==q.selector&&("**"!==e||!q.selector)||(m.splice(g,1),q.selector&&m.delegateCount--,p.remove&&p.remove.call(a,q));h&&!m.length&&(p.teardown&&!1!==p.teardown.call(a,u,E.handle)||d.removeEvent(a,r,E.handle),delete l[r])}else for(r in l)d.event.remove(a,r+b[n],c,e,!0);d.isEmptyObject(l)&&y.remove(a, +"handle events")}},dispatch:function(a){var b=d.event.fix(a),c,e,f,g,h,k=Array(arguments.length);e=(y.get(this,"events")||{})[b.type]||[];var l=d.event.special[b.type]||{};k[0]=b;for(c=1;c\x20\t\r\n\f]*)[^>]*)\/>/gi, +tc=/\s*$/g;d.extend({htmlPrefilter:function(a){return a.replace(sc,"<$1>")},clone:function(a,b,c){var e,f,g,h,k=a.cloneNode(!0),l=d.contains(a.ownerDocument,a);if(!(v.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||d.isXMLDoc(a)))for(h=N(k),g=N(a),e=0,f=g.length;ed.inArray(this,a)&&(d.cleanData(N(this)),c&&c.replaceChild(b, +this))},a)}});d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(a){for(var c=[],f=d(a),g=f.length-1,h=0;h<=g;h++)a=h===g?this:this.clone(!0),d(f[h])[b](a),Ya.apply(c,a.get());return this.pushStack(c)}});var Ra=new RegExp("^("+Hb+")(?!px)[a-z%]+$","i"),Ha=function(a){var b=a.ownerDocument.defaultView;b&&b.opener||(b=p);return b.getComputedStyle(a)},gc=new RegExp(Z.join("|"),"i");(function(){function a(){if(k){h.style.cssText= +"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";k.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";Na.appendChild(h).appendChild(k);var a=p.getComputedStyle(k);b="1%"!==a.top;g=12===Math.round(parseFloat(a.marginLeft));k.style.right="60%";f=36===Math.round(parseFloat(a.right));c=36===Math.round(parseFloat(a.width));k.style.position="absolute";e=36===k.offsetWidth||"absolute";Na.removeChild(h); +k=null}}var b,c,e,f,g,h=u.createElement("div"),k=u.createElement("div");k.style&&(k.style.backgroundClip="content-box",k.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===k.style.backgroundClip,d.extend(v,{boxSizingReliable:function(){a();return c},pixelBoxStyles:function(){a();return f},pixelPosition:function(){a();return b},reliableMarginLeft:function(){a();return g},scrollboxSize:function(){a();return e}}))})();var uc=/^(none|table(?!-c[ea]).+)/,Lb=/^--/,vc={position:"absolute", +visibility:"hidden",display:"block"},Mb={letterSpacing:"0",fontWeight:"400"},tb=["Webkit","Moz","ms"],sb=u.createElement("div").style;d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Y(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(a,b,c,e){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var f, +g,h,k=T(b),l=Lb.test(b),n=a.style;l||(b=rb(k));h=d.cssHooks[b]||d.cssHooks[k];if(void 0!==c)g=typeof c,"string"===g&&(f=wa.exec(c))&&f[1]&&(c=gb(a,b,f),g="number"),null!=c&&c===c&&("number"===g&&(c+=f&&f[3]||(d.cssNumber[k]?"":"px")),v.clearCloneStyle||""!==c||0!==b.indexOf("background")||(n[b]="inherit"),h&&"set"in h&&void 0===(c=h.set(a,c,e))||(l?n.setProperty(b,c):n[b]=c));else return h&&"get"in h&&void 0!==(f=h.get(a,!1,e))?f:n[b]}},css:function(a,b,c,e){var f,g;g=T(b);Lb.test(b)||(b=rb(g));(g= +d.cssHooks[b]||d.cssHooks[g])&&"get"in g&&(f=g.get(a,!0,c));void 0===f&&(f=Y(a,b,e));"normal"===f&&b in Mb&&(f=Mb[b]);return""===c||c?(a=parseFloat(f),!0===c||isFinite(a)?a||0:f):f}});d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,e,f){if(e)return!uc.test(d.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?vb(a,b,f):Ib(a,vc,function(){return vb(a,b,f)})},set:function(a,e,f){var c,h=Ha(a),k="border-box"===d.css(a,"boxSizing",!1,h);f=f&&Sa(a,b,f,k, +h);k&&v.scrollboxSize()===h.position&&(f-=Math.ceil(a["offset"+b[0].toUpperCase()+b.slice(1)]-parseFloat(h[b])-Sa(a,b,"border",!1,h)-.5));f&&(c=wa.exec(e))&&"px"!==(c[3]||"px")&&(a.style[b]=e,e=d.css(a,b));return ub(a,e,f)}}});d.cssHooks.marginLeft=qb(v.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Y(a,"marginLeft"))||a.getBoundingClientRect().left-Ib(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"});d.each({margin:"",padding:"",border:"Width"},function(a,b){d.cssHooks[a+ +b]={expand:function(c){var d=0,f={};for(c="string"===typeof c?c.split(" "):[c];4>d;d++)f[a+Z[d]+b]=c[d]||c[d-2]||c[0];return f}};"margin"!==a&&(d.cssHooks[a+b].set=ub)});d.fn.extend({css:function(a,b){return O(this,function(a,b,f){var c,e={},k=0;if(Array.isArray(b)){f=Ha(a);for(c=b.length;ke.indexOf(" "+g+" ")&&(e+=g+" ");e=ca(e);f!==e&&c.setAttribute("class",e)}return this},removeClass:function(a){var b,c,e,f,g,h,k=0;if(r(a))return this.each(function(b){d(this).removeClass(a.call(this,b,da(this)))});if(!arguments.length)return this.attr("class","");b=Ua(a);if(b.length)for(;c=this[k++];)if(f=da(c),e=1===c.nodeType&&" "+ca(f)+" "){for(h=0;g=b[h++];)for(;-1e?h:f?e:0;am.indexOf(":")&&"on"+m,a=a[d.expando]?a:new d.Event(m,"object"=== +typeof a&&a),a.isTrigger=e?2:3,a.namespace=n.join("."),a.rnamespace=a.namespace?new RegExp("(^|\\.)"+n.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,a.result=void 0,a.target||(a.target=c),b=null==b?[a]:d.makeArray(b,[a]),n=d.event.special[m]||{},e||!n.trigger||!1!==n.trigger.apply(c,b))){if(!e&&!n.noBubble&&!W(c)){h=n.delegateType||m;Ob.test(h+m)||(g=g.parentNode);for(;g;g=g.parentNode)v.push(g),f=g;f===(c.ownerDocument||u)&&v.push(f.defaultView||f.parentWindow||p)}for(f=0;(g=v[f++])&&!a.isPropagationStopped();)q= +g,a.type=1a||304===a;if(c){x=m;for(var C=w,B,z,K,G,J=x.contents,F=x.dataTypes;"*"===F[0];)F.shift(),void 0=== +B&&(B=x.mimeType||C.getResponseHeader("Content-Type"));if(B)for(z in J)if(J[z]&&J[z].test(B)){F.unshift(z);break}if(F[0]in c)K=F[0];else{for(z in c){if(!F[0]||x.converters[z+" "+F[0]]){K=z;break}G||(G=z)}K=K||G}K?(K!==F[0]&&F.unshift(K),x=c[K]):x=void 0}a:{c=m;B=x;z=w;K=h;var ea,L,D,C={},J=c.dataTypes.slice();if(J[1])for(L in c.converters)C[L.toLowerCase()]=c.converters[L];for(G=J.shift();G;)if(c.responseFields[G]&&(z[c.responseFields[G]]=B),!D&&K&&c.dataFilter&&(B=c.dataFilter(B,c.dataType)),D=G, +G=J.shift())if("*"===G)G=D;else if("*"!==D&&D!==G){L=C[D+" "+G]||C["* "+G];if(!L)for(ea in C)if(x=ea.split(" "),x[1]===G&&(L=C[D+" "+x[0]]||C["* "+x[0]])){!0===L?L=C[ea]:!0!==C[ea]&&(G=x[0],J.unshift(x[1]));break}if(!0!==L)if(L&&c["throws"])B=L(B);else try{B=L(B)}catch(V){x={state:"parsererror",error:L?V:"No conversion from "+D+" to "+G};break a}}x={state:"success",data:B}}if(h)m.ifModified&&((u=w.getResponseHeader("Last-Modified"))&&(d.lastModified[f]=u),(u=w.getResponseHeader("etag"))&&(d.etag[f]= +u)),204===a||"HEAD"===m.type?u="nocontent":304===a?u="notmodified":(u=x.state,l=x.data,r=x.error,h=!r);else if(r=u,a||!u)u="error",0>a&&(a=0);w.status=a;w.statusText=(b||u)+"";h?E.resolveWith(v,[l,u,w]):E.rejectWith(v,[w,u,r]);w.statusCode(H);H=void 0;q&&y.trigger(h?"ajaxSuccess":"ajaxError",[w,m,h?l:r]);I.fireWith(v,[w,u]);q&&(y.trigger("ajaxComplete",[w,m]),--d.active||d.event.trigger("ajaxStop"))}}"object"===typeof a&&(b=a,a=void 0);b=b||{};var e,f,g,h,k,l,n,q,r,m=d.ajaxSetup({},b),v=m.context|| +m,y=m.context&&(v.nodeType||v.jquery)?d(v):d.event,E=d.Deferred(),I=d.Callbacks("once memory"),H=m.statusCode||{},C={},B={},F="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(n){if(!h)for(h={};b=Gc.exec(g);)h[b[1].toLowerCase()]=b[2];b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return n?g:null},setRequestHeader:function(a,b){null==n&&(a=B[a.toLowerCase()]=B[a.toLowerCase()]||a,C[a]=b);return this},overrideMimeType:function(a){null==n&&(m.mimeType=a); +return this},statusCode:function(a){var b;if(a)if(n)w.always(a[w.status]);else for(b in a)H[b]=[H[b],a[b]];return this},abort:function(a){a=a||F;e&&e.abort(a);c(0,a);return this}};E.promise(w);m.url=((a||m.url||ia.href)+"").replace(Ic,ia.protocol+"//");m.type=b.method||b.type||m.method||m.type;m.dataTypes=(m.dataType||"*").toLowerCase().match(Q)||[""];if(null==m.crossDomain){l=u.createElement("a");try{l.href=m.url,l.href=l.href,m.crossDomain=ab.protocol+"//"+ab.host!==l.protocol+"//"+l.host}catch(x){m.crossDomain= +!0}}m.data&&m.processData&&"string"!==typeof m.data&&(m.data=d.param(m.data,m.traditional));zb(Sb,m,b,w);if(n)return w;(q=d.event&&m.global)&&0===d.active++&&d.event.trigger("ajaxStart");m.type=m.type.toUpperCase();m.hasContent=!Hc.test(m.type);f=m.url.replace(Ec,"");m.hasContent?m.data&&m.processData&&0===(m.contentType||"").indexOf("application/x-www-form-urlencoded")&&(m.data=m.data.replace(Dc,"+")):(l=m.url.slice(f.length),m.data&&(m.processData||"string"===typeof m.data)&&(f+=($a.test(f)?"&": +"?")+m.data,delete m.data),!1===m.cache&&(f=f.replace(Fc,"$1"),l=($a.test(f)?"&":"?")+"_="+Qb++ +l),m.url=f+l);m.ifModified&&(d.lastModified[f]&&w.setRequestHeader("If-Modified-Since",d.lastModified[f]),d.etag[f]&&w.setRequestHeader("If-None-Match",d.etag[f]));(m.data&&m.hasContent&&!1!==m.contentType||b.contentType)&&w.setRequestHeader("Content-Type",m.contentType);w.setRequestHeader("Accept",m.dataTypes[0]&&m.accepts[m.dataTypes[0]]?m.accepts[m.dataTypes[0]]+("*"!==m.dataTypes[0]?", "+Tb+"; q=0.01": +""):m.accepts["*"]);for(r in m.headers)w.setRequestHeader(r,m.headers[r]);if(m.beforeSend&&(!1===m.beforeSend.call(v,w,m)||n))return w.abort();F="abort";I.add(m.complete);w.done(m.success);w.fail(m.error);if(e=zb(Wa,m,b,w)){w.readyState=1;q&&y.trigger("ajaxSend",[w,m]);if(n)return w;m.async&&0").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove();c=null;a&&f("error"===a.type?404:200,a.type)});u.head.appendChild(b[0])},abort:function(){c&&c()}}}}); +var Ub=[],bb=/(=)\?(?=&|$)|\?\?/;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Ub.pop()||d.expando+"_"+Qb++;this[a]=!0;return a}});d.ajaxPrefilter("json jsonp",function(a,b,c){var e,f,g,h=!1!==a.jsonp&&(bb.test(a.url)?"url":"string"===typeof a.data&&0===(a.contentType||"").indexOf("application/x-www-form-urlencoded")&&bb.test(a.data)&&"data");if(h||"jsonp"===a.dataTypes[0])return e=a.jsonpCallback=r(a.jsonpCallback)?a.jsonpCallback():a.jsonpCallback,h?a[h]=a[h].replace(bb,"$1"+e):!1!== +a.jsonp&&(a.url+=($a.test(a.url)?"&":"?")+a.jsonp+"="+e),a.converters["script json"]=function(){g||d.error(e+" was not called");return g[0]},a.dataTypes[0]="json",f=p[e],p[e]=function(){g=arguments},c.always(function(){void 0===f?d(p).removeProp(e):p[e]=f;a[e]&&(a.jsonpCallback=b.jsonpCallback,Ub.push(e));g&&r(f)&&f(g[0]);g=f=void 0}),"script"});v.createHTMLDocument=function(){var a=u.implementation.createHTMLDocument("").body;a.innerHTML="
";return 2===a.childNodes.length}(); +d.parseHTML=function(a,b,c){if("string"!==typeof a)return[];"boolean"===typeof b&&(c=b,b=!1);var e;b||(v.createHTMLDocument?(b=u.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=u.location.href,b.head.appendChild(e)):b=u);e=Fb.exec(a);c=!c&&[];if(e)return[b.createElement(e[1])];e=ib([a],b,c);c&&c.length&&d(c).remove();return d.merge([],e.childNodes)};d.fn.load=function(a,b,c){var e,f,g,h=this,k=a.indexOf(" ");-1").append(d.parseHTML(a)).find(e):a)}).always(c&&function(a,b){h.each(function(){c.apply(this,g||[a.responseText,b,a])})});return this};d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.on(b,a)}});d.expr.pseudos.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length}; +d.offset={setOffset:function(a,b,c){var e,f,g,h=d.css(a,"position"),k=d(a),l={};"static"===h&&(a.style.position="relative");g=k.offset();f=d.css(a,"top");e=d.css(a,"left");("absolute"===h||"fixed"===h)&&-1<(f+e).indexOf("auto")?(e=k.position(),f=e.top,e=e.left):(f=parseFloat(f)||0,e=parseFloat(e)||0);r(b)&&(b=b.call(a,c,d.extend({},g)));null!=b.top&&(l.top=b.top-g.top+f);null!=b.left&&(l.left=b.left-g.left+e);"using"in b?b.using.call(a,l):k.css(l)}};d.fn.extend({offset:function(a){if(arguments.length)return void 0=== +a?this:this.each(function(b){d.offset.setOffset(this,a,b)});var b,c;if(c=this[0]){if(!c.getClientRects().length)return{top:0,left:0};b=c.getBoundingClientRect();c=c.ownerDocument.defaultView;return{top:b.top+c.pageYOffset,left:b.left+c.pageXOffset}}},position:function(){if(this[0]){var a,b,c,e=this[0],f={top:0,left:0};if("fixed"===d.css(e,"position"))b=e.getBoundingClientRect();else{b=this.offset();c=e.ownerDocument;for(a=e.offsetParent||c.documentElement;a&&(a===c.body||a===c.documentElement)&&"static"=== +d.css(a,"position");)a=a.parentNode;a&&a!==e&&1===a.nodeType&&(f=d(a).offset(),f.top+=d.css(a,"borderTopWidth",!0),f.left+=d.css(a,"borderLeftWidth",!0))}return{top:b.top-f.top-d.css(e,"marginTop",!0),left:b.left-f.left-d.css(e,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent;a&&"static"===d.css(a,"position");)a=a.offsetParent;return a||Na})}});d.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;d.fn[a]= +function(d){return O(this,function(a,d,e){var f;W(a)?f=a:9===a.nodeType&&(f=a.defaultView);if(void 0===e)return f?f[b]:a[d];f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e},a,d,arguments.length)}});d.each(["top","left"],function(a,b){d.cssHooks[b]=qb(v.pixelPosition,function(a,e){if(e)return e=Y(a,b),Ra.test(e)?d(a).position()[b]+"px":e})});d.each({Height:"height",Width:"width"},function(a,b){d.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,e){d.fn[e]=function(f,g){var h=arguments.length&& +(c||"boolean"!==typeof f),k=c||(!0===f||!0===g?"margin":"border");return O(this,function(b,c,f){return W(b)?0===e.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(c=b.documentElement,Math.max(b.body["scroll"+a],c["scroll"+a],b.body["offset"+a],c["offset"+a],c["client"+a])):void 0===f?d.css(b,c,k):d.style(b,c,f,k)},b,h?f:void 0,h)}})});d.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), +function(a,b){d.fn[b]=function(a,d){return 0