diff --git a/.deploy/docker/entrypoint.sh b/.deploy/docker/entrypoint.sh index 259c32b02c..a7b661d263 100755 --- a/.deploy/docker/entrypoint.sh +++ b/.deploy/docker/entrypoint.sh @@ -62,8 +62,9 @@ if [[ $DKR_RUN_MIGRATION == "false" ]]; then fi if [[ $DKR_RUN_MIGRATION != "false" ]]; then + echo "Running migration commands..." php artisan firefly-iii:create-database - php artisan migrate --seed + php artisan migrate --seed --no-interaction --force php artisan firefly-iii:decrypt-all fi @@ -73,6 +74,7 @@ if [[ $DKR_RUN_UPGRADE == "false" ]]; then fi if [[ $DKR_RUN_UPGRADE != "false" ]]; then + echo 'Running upgrade commands...' php artisan firefly-iii:transaction-identifiers php artisan firefly-iii:migrate-to-groups php artisan firefly-iii:account-currencies @@ -90,10 +92,11 @@ fi # there are 15 verify commands if [[ $DKR_RUN_VERIFY == "false" ]]; then - echo 'Will NOT run verify commands.' + echo 'Will NOT run verification commands.' fi if [[ $DKR_RUN_VERIFY != "false" ]]; then + echo 'Running verification commands...' php artisan firefly-iii:fix-piggies php artisan firefly-iii:create-link-types php artisan firefly-iii:create-access-tokens @@ -117,6 +120,7 @@ if [[ $DKR_RUN_REPORT == "false" ]]; then fi if [[ $DKR_RUN_REPORT != "false" ]]; then + echo 'Running report commands...' php artisan firefly-iii:report-empty-objects php artisan firefly-iii:report-sum fi @@ -129,6 +133,7 @@ if [[ $DKR_RUN_REPORT == "false" ]]; then fi if [[ $DKR_RUN_PASSPORT_INSTALL != "false" ]]; then + echo 'Generating new OAuth keys...' php artisan passport:install fi diff --git a/.env.example b/.env.example index 8f6ed69a67..85d6221b3c 100644 --- a/.env.example +++ b/.env.example @@ -66,18 +66,6 @@ REDIS_PASSWORD=null REDIS_PORT=6379 REDIS_DB="0" # always use quotes REDIS_CACHE_DB="1" -# You can configure another file storage backend if you cannot use the local storage option. -# To set this up, fill in the following variables. The upload path is used to store uploaded -# files and the export path is to store exported data (before download). -SFTP_HOST= -SFTP_PORT= -SFTP_UPLOAD_PATH= -SFTP_EXPORT_PATH= - -# SFTP uses either the username/password combination or the private key to authenticate. -SFTP_USERNAME= -SFTP_PASSWORD= -SFTP_PRIV_KEY= # Cookie settings. Should not be necessary to change these. COOKIE_PATH="/" diff --git a/.travis.yml b/.travis.yml index 6e872a33d7..b8c80b4947 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,21 +14,21 @@ jobs: include: - dist: xenial arch: amd64 - env: ARCH=amd64 CHANNEL=alpha VERSION=4.8.3-alpha.1 + env: ARCH=amd64 CHANNEL=alpha VERSION=5.0.0-alpha.1 stage: build script: ./.deploy/docker/travis.sh - dist: xenial arch: amd64 - env: ARCH=arm CHANNEL=alpha VERSION=4.8.3-alpha.1 + env: ARCH=arm CHANNEL=alpha VERSION=5.0.0-alpha.1 stage: build script: ./.deploy/docker/travis.sh - dist: xenial arch: arm64 - env: ARCH=arm64 CHANNEL=alpha VERSION=4.8.3-alpha.1 + env: ARCH=arm64 CHANNEL=alpha VERSION=5.0.0-alpha.1 stage: build script: ./.deploy/docker/travis.sh - dist: xenial arch: amd64 - env: CHANNEL=alpha VERSION=4.8.3-alpha.1 + env: CHANNEL=alpha VERSION=5.0.0-alpha.1 stage: manifest script: ./.deploy/docker/manifest.sh \ No newline at end of file diff --git a/app/Console/Commands/Correction/DeleteEmptyGroups.php b/app/Console/Commands/Correction/DeleteEmptyGroups.php index d21b063ade..22f18c6e72 100644 --- a/app/Console/Commands/Correction/DeleteEmptyGroups.php +++ b/app/Console/Commands/Correction/DeleteEmptyGroups.php @@ -27,6 +27,7 @@ use Exception; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use Illuminate\Console\Command; +use Log; /** * Class DeleteEmptyGroups @@ -54,6 +55,7 @@ class DeleteEmptyGroups extends Command */ public function handle(): int { + Log::debug(sprintf('Now in %s', __METHOD__)); $start = microtime(true); $groupIds = TransactionGroup @@ -61,6 +63,7 @@ class DeleteEmptyGroups extends Command ->whereNull('transaction_journals.id')->get(['transaction_groups.id'])->pluck('id')->toArray(); $total = count($groupIds); + Log::debug(sprintf('Count is %d', $total)); if ($total > 0) { $this->info(sprintf('Deleted %d empty transaction group(s).', $total)); diff --git a/app/Http/Controllers/Recurring/IndexController.php b/app/Http/Controllers/Recurring/IndexController.php index a6fb67f286..dd3a6bcfc9 100644 --- a/app/Http/Controllers/Recurring/IndexController.php +++ b/app/Http/Controllers/Recurring/IndexController.php @@ -82,9 +82,6 @@ class IndexController extends Controller $page = 0 === (int)$request->get('page') ? 1 : (int)$request->get('page'); $pageSize = (int)app('preferences')->get('listPageSize', 50)->data; $collection = $this->recurring->get(); - $today = new Carbon; - $year = new Carbon; - $year->addYear(); // split collection $total = $collection->count(); @@ -98,6 +95,14 @@ class IndexController extends Controller $recurring = []; /** @var Recurrence $recurrence */ foreach ($recurrences as $recurrence) { + $today = new Carbon; + $year = new Carbon; + $year->addYear(); + if($recurrence->first_date > $today) { + $today =clone $recurrence->first_date; + $year = clone $today; + $year->addYear(); + } $array = $transformer->transform($recurrence); $array['first_date'] = new Carbon($array['first_date']); $array['repeat_until'] = null === $array['repeat_until'] ? null : new Carbon($array['repeat_until']); diff --git a/app/Models/Account.php b/app/Models/Account.php index 998240fdf7..a9ec862e24 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -150,6 +150,21 @@ class Account extends Model return $this->belongsTo(AccountType::class); } + /** + * Get the account number. + * + * @return string + */ + public function getAccountNumberAttribute(): string + { + /** @var AccountMeta $metaValue */ + $metaValue = $this->accountMeta() + ->where('name', 'account_number') + ->first(); + + return $metaValue ? $metaValue->data : ''; + } + /** * @return string * @codeCoverageIgnore diff --git a/app/Providers/FireflyServiceProvider.php b/app/Providers/FireflyServiceProvider.php index 392e42ce97..ec57adec7b 100644 --- a/app/Providers/FireflyServiceProvider.php +++ b/app/Providers/FireflyServiceProvider.php @@ -66,7 +66,7 @@ use FireflyIII\Support\Twig\Translation; use FireflyIII\Validation\FireflyValidator; use Illuminate\Support\ServiceProvider; use Twig; -use Twig_Extension_Debug; +use Twig\Extension\DebugExtension; use TwigBridge\Extension\Loader\Functions; use Validator; @@ -90,14 +90,14 @@ class FireflyServiceProvider extends ServiceProvider return new FireflyValidator($translator, $data, $rules, $messages); } ); - $config = app('config'); - Twig::addExtension(new Functions($config)); + //$config = app('config'); + //Twig::addExtension(new Functions($config)); Twig::addExtension(new General); Twig::addExtension(new TransactionGroupTwig); Twig::addExtension(new Translation); Twig::addExtension(new Rule); Twig::addExtension(new AmountFormat); - Twig::addExtension(new Twig_Extension_Debug); + //Twig::addExtension(new DebugExtension); } /** diff --git a/app/Repositories/Journal/JournalRepository.php b/app/Repositories/Journal/JournalRepository.php index f51a24ec7f..ebd663f4c4 100644 --- a/app/Repositories/Journal/JournalRepository.php +++ b/app/Repositories/Journal/JournalRepository.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Repositories\Journal; use Carbon\Carbon; +use FireflyIII\Models\Account; use FireflyIII\Models\Note; use FireflyIII\Models\Transaction; use FireflyIII\Models\TransactionGroup; @@ -377,4 +378,26 @@ class JournalRepository implements JournalRepositoryInterface return $value; } + + /** + * @inheritDoc + */ + public function getSourceAccount(TransactionJournal $journal): Account + { + /** @var Transaction $transaction */ + $transaction = $journal->transactions()->with('account')->where('amount', '<', 0)->first(); + + return $transaction->account; + } + + /** + * @inheritDoc + */ + public function getDestinationAccount(TransactionJournal $journal): Account + { + /** @var Transaction $transaction */ + $transaction = $journal->transactions()->with('account')->where('amount', '>', 0)->first(); + + return $transaction->account; + } } diff --git a/app/Repositories/Journal/JournalRepositoryInterface.php b/app/Repositories/Journal/JournalRepositoryInterface.php index af2a752612..b7c4ca61f0 100644 --- a/app/Repositories/Journal/JournalRepositoryInterface.php +++ b/app/Repositories/Journal/JournalRepositoryInterface.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Repositories\Journal; use Carbon\Carbon; +use FireflyIII\Models\Account; use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournalLink; @@ -109,6 +110,22 @@ interface JournalRepositoryInterface */ public function getJournalSourceAccounts(TransactionJournal $journal): Collection; + /** + * Returns the source account of the journal. + * + * @param TransactionJournal $journal + * @return Account + */ + public function getSourceAccount(TransactionJournal $journal): Account; + + /** + * Returns the destination account of the journal. + * + * @param TransactionJournal $journal + * @return Account + */ + public function getDestinationAccount(TransactionJournal $journal): Account; + /** * Return total amount of journal. Is always positive. * diff --git a/app/Repositories/Tag/TagRepository.php b/app/Repositories/Tag/TagRepository.php index 330f22f137..48c77ba72c 100644 --- a/app/Repositories/Tag/TagRepository.php +++ b/app/Repositories/Tag/TagRepository.php @@ -301,9 +301,11 @@ class TagRepository implements TagRepositoryInterface $journals = $collector->getExtractedJournals(); $sums = [ - TransactionType::WITHDRAWAL => '0', - TransactionType::DEPOSIT => '0', - TransactionType::TRANSFER => '0', + TransactionType::WITHDRAWAL => '0', + TransactionType::DEPOSIT => '0', + TransactionType::TRANSFER => '0', + TransactionType::RECONCILIATION => '0', + TransactionType::OPENING_BALANCE => '0', ]; /** @var array $journal */ diff --git a/app/Support/Http/Controllers/UserNavigation.php b/app/Support/Http/Controllers/UserNavigation.php index fdf3e5e896..7f3ecb6583 100644 --- a/app/Support/Http/Controllers/UserNavigation.php +++ b/app/Support/Http/Controllers/UserNavigation.php @@ -177,7 +177,7 @@ trait UserNavigation $return = app('url')->previous(); /** @var ViewErrorBag $errors */ $errors = session()->get('errors'); - $forbidden = ['json']; + $forbidden = ['json', 'debug']; if ((null === $errors || (null !== $errors && 0 === $errors->count())) && !Str::contains($return, $forbidden)) { Log::debug(sprintf('Saving URL %s under key %s', $return, $identifier)); session()->put($identifier, $return); diff --git a/app/Support/Search/TransactionSearch.php b/app/Support/Search/TransactionSearch.php index e8ab4998cd..a82045bb1a 100644 --- a/app/Support/Search/TransactionSearch.php +++ b/app/Support/Search/TransactionSearch.php @@ -21,10 +21,19 @@ namespace FireflyIII\Support\Search; +use Illuminate\Support\Collection; + /** * Class TransactionSearch */ class TransactionSearch implements GenericSearchInterface { + /** + * @inheritDoc + */ + public function search(): Collection + { + // TODO: Implement search() method. + } } \ No newline at end of file diff --git a/app/TransactionRules/Triggers/FromAccountContains.php b/app/TransactionRules/Triggers/FromAccountContains.php index 8f9323d488..ec3ed43b2d 100644 --- a/app/TransactionRules/Triggers/FromAccountContains.php +++ b/app/TransactionRules/Triggers/FromAccountContains.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -72,31 +71,26 @@ final class FromAccountContains extends AbstractTrigger implements TriggerInterf */ public function triggered(TransactionJournal $journal): bool { - $fromAccountName = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalSourceAccounts($journal, false) as $account) { - $fromAccountName .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - $strpos = strpos($fromAccountName, $search); + $source = $repository->getSourceAccount($journal); + $strpos = stripos($source->name, $this->triggerValue); if (!(false === $strpos)) { - Log::debug(sprintf('RuleTrigger FromAccountContains for journal #%d: "%s" contains "%s", return true.', $journal->id, $fromAccountName, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" contains "%s", return true.', + get_class($this), $journal->id, $source->name, $this->triggerValue + ) + ); return true; } Log::debug( sprintf( - 'RuleTrigger FromAccountContains for journal #%d: "%s" does not contain "%s", return false.', - $journal->id, - $fromAccountName, - $search + 'RuleTrigger %s for journal #%d: "%s" does not contain "%s", return false.', + get_class($this), $journal->id, $source->name, $this->triggerValue ) ); diff --git a/app/TransactionRules/Triggers/FromAccountEnds.php b/app/TransactionRules/Triggers/FromAccountEnds.php index 9b9d08ce0c..86a32ade6e 100644 --- a/app/TransactionRules/Triggers/FromAccountEnds.php +++ b/app/TransactionRules/Triggers/FromAccountEnds.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -72,37 +71,44 @@ final class FromAccountEnds extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal): bool { - $name = ''; - /** @var JournalRepositoryInterface $repository */ - $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalSourceAccounts($journal, false) as $account) { - $name .= strtolower($account->name); - } - - $nameLength = strlen($name); - $search = strtolower($this->triggerValue); + $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $nameLength = strlen($source->name); + $search = $this->triggerValue; $searchLength = strlen($search); + $part = substr($source->name, $searchLength * -1); // if the string to search for is longer than the account name, // it will never be in the account name. if ($searchLength > $nameLength) { - Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $name, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.', + get_class($this), $journal->id, $source->name, $search + ) + ); return false; } - $part = substr($name, $searchLength * -1); - - if ($part === $search) { - Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" ends with "%s", return true.', $journal->id, $name, $search)); + if (strtolower($part) === strtolower($search)) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" ends with "%s", return true.', + get_class($this), $journal->id, $source->name, $search + ) + ); return true; } - Log::debug(sprintf('RuleTrigger FromAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $name, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.', + get_class($this), $journal->id, $source->name, $search + ) + ); return false; } diff --git a/app/TransactionRules/Triggers/FromAccountIs.php b/app/TransactionRules/Triggers/FromAccountIs.php index 7dc767f008..ba5972ea0c 100644 --- a/app/TransactionRules/Triggers/FromAccountIs.php +++ b/app/TransactionRules/Triggers/FromAccountIs.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -72,25 +71,20 @@ final class FromAccountIs extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal): bool { - $name = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $search = strtolower($this->triggerValue); - /** @var Account $account */ - foreach ($repository->getJournalSourceAccounts($journal, false) as $account) { - $name .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - - if ($name === $search) { - Log::debug(sprintf('RuleTrigger FromAccountIs for journal #%d: "%s" is "%s", return true.', $journal->id, $name, $search)); + if (strtolower($source->name) === $search) { + Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is "%s", return true.', + get_class($this), $journal->id, $source->name, $search)); return true; } - Log::debug(sprintf('RuleTrigger FromAccountIs for journal #%d: "%s" is NOT "%s", return false.', $journal->id, $name, $search)); + Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is NOT "%s", return false.', + get_class($this), $journal->id, $source->name, $search)); return false; } diff --git a/app/TransactionRules/Triggers/FromAccountNumberContains.php b/app/TransactionRules/Triggers/FromAccountNumberContains.php new file mode 100644 index 0000000000..8c6dcadfdb --- /dev/null +++ b/app/TransactionRules/Triggers/FromAccountNumberContains.php @@ -0,0 +1,100 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class FromAccountContains. + */ +final class FromAccountNumberContains extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account contains X + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $strpos1 = stripos((string)$source->iban, $this->triggerValue); + $strpos2 = stripos($source->account_number, $this->triggerValue); + + if (!(false === $strpos1) || !(false === $strpos2)) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" contains "%s", return true.', + get_class($this), $journal->id, (string)$source->iban, $source->account_number, $this->triggerValue + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" does not contain "%s", return false.', + get_class($this), $journal->id, (string)$source->iban, $source->account_number, $this->triggerValue + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/FromAccountNumberEnds.php b/app/TransactionRules/Triggers/FromAccountNumberEnds.php new file mode 100644 index 0000000000..98104ce315 --- /dev/null +++ b/app/TransactionRules/Triggers/FromAccountNumberEnds.php @@ -0,0 +1,104 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class FromAccountNumberEnds. + */ +final class FromAccountNumberEnds extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from account ends with X + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $search = strtolower($this->triggerValue); + $searchLength = strlen($search); + + $part1 = substr((string)$source->iban, $searchLength * -1); + $part2 = substr($source->account_number, $searchLength * -1); + + if (strtolower($part1) === $search + || strtolower($part2) === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" ends with "%s", return true.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" do not end with "%s", return false.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/FromAccountNumberIs.php b/app/TransactionRules/Triggers/FromAccountNumberIs.php new file mode 100644 index 0000000000..edd2ffb9f4 --- /dev/null +++ b/app/TransactionRules/Triggers/FromAccountNumberIs.php @@ -0,0 +1,99 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class FromAccountNumberIs. + */ +final class FromAccountNumberIs extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account is X. + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $search = strtolower($this->triggerValue); + + if (strtolower((string)$source->iban) === $search || strtolower($source->account_number) === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" is "%s", return true.', $journal->id, + get_class($this), (string)$source->iban, $source->account_number, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" are NOT "%s", return false.', + get_class($this), $journal->id, (string)$source->iban, $source->account_number, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/FromAccountNumberStarts.php b/app/TransactionRules/Triggers/FromAccountNumberStarts.php new file mode 100644 index 0000000000..7a2f16ec2f --- /dev/null +++ b/app/TransactionRules/Triggers/FromAccountNumberStarts.php @@ -0,0 +1,101 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class FromAccountNumberStarts. + */ +final class FromAccountNumberStarts extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account starts with X. + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $source = $repository->getSourceAccount($journal); + $search = strtolower($this->triggerValue); + $part1 = strtolower(substr((string)$source->iban, 0, strlen($search))); + $part2 = strtolower(substr($source->account_number, 0, strlen($search))); + + if ($part1 === $search || $part2 === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" starts with "%s", return true.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" do not start with "%s", return false.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/FromAccountStarts.php b/app/TransactionRules/Triggers/FromAccountStarts.php index 502347cb5a..143c495784 100644 --- a/app/TransactionRules/Triggers/FromAccountStarts.php +++ b/app/TransactionRules/Triggers/FromAccountStarts.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -72,26 +71,29 @@ final class FromAccountStarts extends AbstractTrigger implements TriggerInterfac */ public function triggered(TransactionJournal $journal): bool { - $name = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalSourceAccounts($journal, false) as $account) { - $name .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - $part = substr($name, 0, strlen($search)); + $source = $repository->getSourceAccount($journal); + $search = strtolower($this->triggerValue); + $part = strtolower(substr($source->name, 0, strlen($search))); if ($part === $search) { - Log::debug(sprintf('RuleTrigger FromAccountStarts for journal #%d: "%s" starts with "%s", return true.', $journal->id, $name, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" starts with "%s", return true.', + get_class($this), $journal->id, $source->name, $search + ) + ); return true; } - Log::debug(sprintf('RuleTrigger FromAccountStarts for journal #%d: "%s" does not start with "%s", return false.', $journal->id, $name, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not start with "%s", return false.', + get_class($this), $journal->id, $source->name, $search + ) + ); return false; } diff --git a/app/TransactionRules/Triggers/ToAccountContains.php b/app/TransactionRules/Triggers/ToAccountContains.php index bd88d52e4b..4754ea7c22 100644 --- a/app/TransactionRules/Triggers/ToAccountContains.php +++ b/app/TransactionRules/Triggers/ToAccountContains.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -65,39 +64,32 @@ final class ToAccountContains extends AbstractTrigger implements TriggerInterfac /** * Returns true when to-account contains X - * TODO - * * @param TransactionJournal $journal * * @return bool */ public function triggered(TransactionJournal $journal): bool { - $toAccountName = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) { - $toAccountName .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - $strpos = strpos($toAccountName, $search); + $dest = $repository->getDestinationAccount($journal); + $strpos = stripos($dest->name, $this->triggerValue); if (!(false === $strpos)) { - Log::debug(sprintf('RuleTrigger ToAccountContains for journal #%d: "%s" contains "%s", return true.', $journal->id, $toAccountName, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" contains "%s", return true.', + get_class($this), $journal->id, $dest->name, $this->triggerValue + ) + ); return true; } Log::debug( sprintf( - 'RuleTrigger ToAccountContains for journal #%d: "%s" does not contain "%s", return false.', - $journal->id, - $toAccountName, - $search + 'RuleTrigger %s for journal #%d: "%s" does not contain "%s", return false.', + get_class($this), $journal->id, $dest->name, $this->triggerValue ) ); diff --git a/app/TransactionRules/Triggers/ToAccountEnds.php b/app/TransactionRules/Triggers/ToAccountEnds.php index 44faac5d47..2298730bb8 100644 --- a/app/TransactionRules/Triggers/ToAccountEnds.php +++ b/app/TransactionRules/Triggers/ToAccountEnds.php @@ -22,7 +22,6 @@ declare(strict_types=1); namespace FireflyIII\TransactionRules\Triggers; -use FireflyIII\Models\Account; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use Log; @@ -72,37 +71,44 @@ final class ToAccountEnds extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal): bool { - $toAccountName = ''; - /** @var JournalRepositoryInterface $repository */ - $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) { - $toAccountName .= strtolower($account->name); - } - - $toAccountNameLength = strlen($toAccountName); - $search = strtolower($this->triggerValue); - $searchLength = strlen($search); + $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $nameLength = strlen($dest->name); + $search = $this->triggerValue; + $searchLength = strlen($search); + $part = substr($dest->name, $searchLength * -1); // if the string to search for is longer than the account name, - // return false - if ($searchLength > $toAccountNameLength) { - Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $toAccountName, $search)); + // it will never be in the account name. + if ($searchLength > $nameLength) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.', + get_class($this), $journal->id, $dest->name, $search + ) + ); return false; } - $part = substr($toAccountName, $searchLength * -1); - - if ($part === $search) { - Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" ends with "%s", return true.', $journal->id, $toAccountName, $search)); + if (strtolower($part) === strtolower($search)) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" ends with "%s", return true.', + get_class($this), $journal->id, $dest->name, $search + ) + ); return true; } - Log::debug(sprintf('RuleTrigger ToAccountEnds for journal #%d: "%s" does not end with "%s", return false.', $journal->id, $toAccountName, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not end with "%s", return false.', + get_class($this), $journal->id, $dest->name, $search + ) + ); return false; } diff --git a/app/TransactionRules/Triggers/ToAccountIs.php b/app/TransactionRules/Triggers/ToAccountIs.php index a70adc31b3..3f54470788 100644 --- a/app/TransactionRules/Triggers/ToAccountIs.php +++ b/app/TransactionRules/Triggers/ToAccountIs.php @@ -72,25 +72,20 @@ final class ToAccountIs extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal): bool { - $toAccountName = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $search = strtolower($this->triggerValue); - /** @var Account $account */ - foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) { - $toAccountName .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - - if ($toAccountName === $search) { - Log::debug(sprintf('RuleTrigger ToAccountIs for journal #%d: "%s" is "%s", return true.', $journal->id, $toAccountName, $search)); + if (strtolower($dest->name) === $search) { + Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is "%s", return true.', + get_class($this), $journal->id, $dest->name, $search)); return true; } - Log::debug(sprintf('RuleTrigger ToAccountIs for journal #%d: "%s" is NOT "%s", return false.', $journal->id, $toAccountName, $search)); + Log::debug(sprintf('RuleTrigger %s for journal #%d: "%s" is NOT "%s", return false.', + get_class($this), $journal->id, $dest->name, $search)); return false; } diff --git a/app/TransactionRules/Triggers/ToAccountNumberContains.php b/app/TransactionRules/Triggers/ToAccountNumberContains.php new file mode 100644 index 0000000000..31426d02d2 --- /dev/null +++ b/app/TransactionRules/Triggers/ToAccountNumberContains.php @@ -0,0 +1,100 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class ToAccountNumberContains. + */ +final class ToAccountNumberContains extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account contains X + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $strpos1 = stripos((string)$dest->iban, $this->triggerValue); + $strpos2 = stripos($dest->account_number, $this->triggerValue); + + if (!(false === $strpos1) || !(false === $strpos2)) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" contains "%s", return true.', + get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $this->triggerValue + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" does not contain "%s", return false.', + get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $this->triggerValue + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/ToAccountNumberEnds.php b/app/TransactionRules/Triggers/ToAccountNumberEnds.php new file mode 100644 index 0000000000..3bbb3841d6 --- /dev/null +++ b/app/TransactionRules/Triggers/ToAccountNumberEnds.php @@ -0,0 +1,104 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class ToAccountNumberEnds. + */ +final class ToAccountNumberEnds extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from account ends with X + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $search = strtolower($this->triggerValue); + $searchLength = strlen($search); + + $part1 = substr((string)$dest->iban, $searchLength * -1); + $part2 = substr($dest->account_number, $searchLength * -1); + + if (strtolower($part1) === $search + || strtolower($part2) === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" ends with "%s", return true.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" do not end with "%s", return false.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/ToAccountNumberIs.php b/app/TransactionRules/Triggers/ToAccountNumberIs.php new file mode 100644 index 0000000000..48091d490c --- /dev/null +++ b/app/TransactionRules/Triggers/ToAccountNumberIs.php @@ -0,0 +1,99 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class ToAccountNumberIs. + */ +final class ToAccountNumberIs extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account is X. + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $search = strtolower($this->triggerValue); + + if (strtolower((string)$dest->iban) === $search || strtolower($dest->account_number) === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" is "%s", return true.', $journal->id, + get_class($this), (string)$dest->iban, $dest->account_number, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" are NOT "%s", return false.', + get_class($this), $journal->id, (string)$dest->iban, $dest->account_number, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/ToAccountNumberStarts.php b/app/TransactionRules/Triggers/ToAccountNumberStarts.php new file mode 100644 index 0000000000..3f9d65d075 --- /dev/null +++ b/app/TransactionRules/Triggers/ToAccountNumberStarts.php @@ -0,0 +1,101 @@ +. + */ +declare(strict_types=1); + +namespace FireflyIII\TransactionRules\Triggers; + +use FireflyIII\Models\TransactionJournal; +use FireflyIII\Repositories\Journal\JournalRepositoryInterface; +use Log; + +/** + * Class FromAccountNumberStarts. + */ +final class ToAccountNumberStarts extends AbstractTrigger implements TriggerInterface +{ + /** + * A trigger is said to "match anything", or match any given transaction, + * when the trigger value is very vague or has no restrictions. Easy examples + * are the "AmountMore"-trigger combined with an amount of 0: any given transaction + * has an amount of more than zero! Other examples are all the "Description"-triggers + * which have hard time handling empty trigger values such as "" or "*" (wild cards). + * + * If the user tries to create such a trigger, this method MUST return true so Firefly III + * can stop the storing / updating the trigger. If the trigger is in any way restrictive + * (even if it will still include 99.9% of the users transactions), this method MUST return + * false. + * + * @param mixed $value + * + * @return bool + */ + public static function willMatchEverything($value = null): bool + { + if (null !== $value) { + $res = '' === (string)$value; + if (true === $res) { + Log::error(sprintf('Cannot use %s with "" as a value.', self::class)); + } + + return $res; + } + Log::error(sprintf('Cannot use %s with a null value.', self::class)); + + return true; + } + + /** + * Returns true when from-account starts with X. + * + * @param TransactionJournal $journal + * + * @return bool + */ + public function triggered(TransactionJournal $journal): bool + { + /** @var JournalRepositoryInterface $repository */ + $repository = app(JournalRepositoryInterface::class); + $dest = $repository->getDestinationAccount($journal); + $search = strtolower($this->triggerValue); + $part1 = strtolower(substr((string)$dest->iban, 0, strlen($search))); + $part2 = strtolower(substr($dest->account_number, 0, strlen($search))); + + if ($part1 === $search || $part2 === $search) { + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" or "%s" starts with "%s", return true.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return true; + } + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" and "%s" do not start with "%s", return false.', + get_class($this), $journal->id, $part1, $part2, $search + ) + ); + + return false; + } +} diff --git a/app/TransactionRules/Triggers/ToAccountStarts.php b/app/TransactionRules/Triggers/ToAccountStarts.php index 9d8df60b9d..0a76fde8be 100644 --- a/app/TransactionRules/Triggers/ToAccountStarts.php +++ b/app/TransactionRules/Triggers/ToAccountStarts.php @@ -72,25 +72,29 @@ final class ToAccountStarts extends AbstractTrigger implements TriggerInterface */ public function triggered(TransactionJournal $journal): bool { - $toAccountName = ''; - /** @var JournalRepositoryInterface $repository */ $repository = app(JournalRepositoryInterface::class); - - /** @var Account $account */ - foreach ($repository->getJournalDestinationAccounts($journal, false) as $account) { - $toAccountName .= strtolower($account->name); - } - - $search = strtolower($this->triggerValue); - $part = substr($toAccountName, 0, strlen($search)); + $dest = $repository->getDestinationAccount($journal); + $search = strtolower($this->triggerValue); + $part = strtolower(substr($dest->name, 0, strlen($search))); if ($part === $search) { - Log::debug(sprintf('RuleTrigger ToAccountStarts for journal #%d: "%s" starts with "%s", return true.', $journal->id, $toAccountName, $search)); + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" starts with "%s", return true.', + get_class($this), $journal->id, $dest->name, $search + ) + ); return true; } - Log::debug(sprintf('RuleTrigger ToAccountStarts for journal #%d: "%s" does not start with "%s", return false.', $journal->id, $toAccountName, $search)); + + Log::debug( + sprintf( + 'RuleTrigger %s for journal #%d: "%s" does not start with "%s", return false.', + get_class($this), $journal->id, $dest->name, $search + ) + ); return false; } diff --git a/app/Validation/AccountValidator.php b/app/Validation/AccountValidator.php index b572c5ea30..78a84ead3d 100644 --- a/app/Validation/AccountValidator.php +++ b/app/Validation/AccountValidator.php @@ -162,6 +162,7 @@ class AccountValidator $result = $this->validateOBSource($accountId, $accountName); break; case TransactionType::RECONCILIATION: + Log::debug('Calling validateReconciliationSource'); $result = $this->validateReconciliationSource($accountId); break; } @@ -437,19 +438,41 @@ class AccountValidator */ private function validateReconciliationDestination(?int $accountId): bool { + Log::debug('Now in validateReconciliationDestination'); if (null === $accountId) { + Log::debug('Return FALSE'); + return false; } $result = $this->accountRepository->findNull($accountId); - $types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::RECONCILIATION]; if (null === $result) { + $this->destError = (string)trans('validation.deposit_dest_bad_data', ['id' => $accountId, 'name' => '']); + Log::debug('Return FALSE'); + return false; } + // $types depends on type of source: + $types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]; + // if source is reconciliation, destination can't be. + if (null !== $this->source && AccountType::RECONCILIATION === $this->source->accountType->type) { + $types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]; + } + // if source is not reconciliation, destination MUST be. + if (null !== $this->source + && in_array( + $this->source->accountType->type, [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE], true + )) { + $types = [AccountType::RECONCILIATION]; + } + if (in_array($result->accountType->type, $types, true)) { $this->destination = $result; + Log::debug('Return TRUE'); return true; } + $this->destError = (string)trans('validation.deposit_dest_wrong_type'); + Log::debug('Return FALSE'); return false; } @@ -461,20 +484,23 @@ class AccountValidator */ private function validateReconciliationSource(?int $accountId): bool { + Log::debug('In validateReconciliationSource'); if (null === $accountId) { + Log::debug('Return FALSE'); return false; } $result = $this->accountRepository->findNull($accountId); $types = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE, AccountType::RECONCILIATION]; if (null === $result) { + Log::debug('Return FALSE'); return false; } if (in_array($result->accountType->type, $types, true)) { $this->source = $result; - + Log::debug('Return TRUE'); return true; } - + Log::debug('Return FALSE'); return false; } diff --git a/app/Validation/TransactionValidation.php b/app/Validation/TransactionValidation.php index ff5e432fba..ce6f7a86cf 100644 --- a/app/Validation/TransactionValidation.php +++ b/app/Validation/TransactionValidation.php @@ -100,6 +100,14 @@ trait TransactionValidation $transactionType = $transaction['type'] ?? $originalType; $accountValidator->setTransactionType($transactionType); + // if no account types are given, just skip the check. + if (!isset($transaction['source_id']) + && !isset($transaction['source_name']) + && !isset($transaction['destination_id']) + && !isset($transaction['destination_name'])) { + continue; + } + // validate source account. $sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : $originalData['source_id']; $sourceName = $transaction['source_name'] ?? $originalData['source_name']; diff --git a/changelog.md b/changelog.md index 71af2693bb..7c138306a0 100644 --- a/changelog.md +++ b/changelog.md @@ -2,18 +2,45 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). -## [4.8.3 (API 0.10.5)] - 20xx-xx-xx +## [5.0.0 (API 1.0.0)] - 20xx-xx-xx -### 4.8.3-alpha.1 -- #2874 -- #2878 -- #2876 +*This version has not yet been released.* The latest available version is **5.0.0-alpha.1**. + +This version represents, if anything, a fresh start in the version numbering system so Firefly III will finally follow SemVer, for real this time. + +### Added +- [Issue 2580](https://github.com/firefly-iii/firefly-iii/issues/2580) Users can now edit reconciliations. +- [Issue 2723](https://github.com/firefly-iii/firefly-iii/issues/2723) You can now use rules that trigger on account numbers (and IBAN) +- [Issue 2895](https://github.com/firefly-iii/firefly-iii/issues/2895) Another indicator for negative amounts. - Firefly III now supports redis as cache backend. -- Fine tune Docker container startup times using new environment variables. -- #2895 -- #2881 - Footer will warn you of alpha and beta versions. -- #2901 +- [Issue 2901](https://github.com/firefly-iii/firefly-iii/issues/2901) Can select liability accounts when running rules. + +### Changed +- [Issue 2776](https://github.com/firefly-iii/firefly-iii/issues/2776) Some charts now do relative scaling. Useful for large amounts. +- [Issue 2702](https://github.com/firefly-iii/firefly-iii/issues/2702) More details on tags overview +- Fine tune the Docker container startup times using new environment variables. + +### Deprecated +- Firefly III no longer supports the SFTP storage backend, nor does it support the ability to use both SFTP and local files as storage backends, because the + packages required are no longer maintained and will not work with Laravel 6.0. + +### Removed +- Nothing yet. + +### Fixed +- [Issue 2907](https://github.com/firefly-iii/firefly-iii/issues/2907) Bad date display in recurring transactions. +- [Issue 2912](https://github.com/firefly-iii/firefly-iii/issues/2912) Redirect fix for bills. +- [Issue 2874](https://github.com/firefly-iii/firefly-iii/issues/2874) More redirect issues fixed. +- [Issue 2878](https://github.com/firefly-iii/firefly-iii/issues/2878) Typo in code of budget overview. +- [Issue 2876](https://github.com/firefly-iii/firefly-iii/issues/2876) Trailing zeroes and other issues. +- [Issue 2881](https://github.com/firefly-iii/firefly-iii/issues/2881) An error when only the title of a split transaction was bad. + +### Security +- Nothing yet. + +### API +- Nothing yet. ## [4.8.2 (API 0.10.5)] - 2019-11-29 diff --git a/composer.json b/composer.json index 0f68c36c67..7e009ef0cf 100644 --- a/composer.json +++ b/composer.json @@ -71,14 +71,13 @@ "adldap2/adldap2-laravel": "6.*", "bacon/bacon-qr-code": "1.*", "bunq/sdk_php": "dev-master", - "danhunsaker/laravel-flysystem-others": "1.*", "davejamesmiller/laravel-breadcrumbs": "5.*", "doctrine/dbal": "2.*", "fideloper/proxy": "4.*", "jc5/google2fa-laravel": "2.0.3", - "laravel/framework": "5.8.*", - "laravel/passport": "7.*", - "laravelcollective/html": "5.8.*", + "laravel/framework": "^6.0", + "laravel/passport": "8.*", + "laravelcollective/html": "6.*", "league/commonmark": "1.*", "league/csv": "9.*", "league/flysystem-replicate-adapter": "1.*", @@ -86,16 +85,16 @@ "league/fractal": "0.*", "litipk/flysystem-fallback-adapter": "0.*", "mschindler83/fints-hbci-php": "1.*", - "pragmarx/google2fa": "6.1.3", + "pragmarx/google2fa": "^7.0", "pragmarx/recovery": "^0.1.0", "predis/predis": "^1.1", - "rcrowe/twigbridge": "0.9.*" + "rcrowe/twigbridge": "^0.11.2" }, "require-dev": { "barryvdh/laravel-ide-helper": "2.*", "filp/whoops": "2.*", "fzaninotto/faker": "1.*", - "johnkary/phpunit-speedtrap": "^3.0", + "johnkary/phpunit-speedtrap": "^3.1", "mockery/mockery": "1.*", "phpunit/phpunit": "8.*", "roave/security-advisories": "dev-master" diff --git a/composer.lock b/composer.lock index 1b06c6729e..3817fe6f52 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1e3454ca8ca83a4e72686abb44c79d67", + "content-hash": "e0b59edc736110ad9b968c6c46c1f740", "packages": [ { "name": "adldap2/adldap2", @@ -229,178 +229,6 @@ ], "time": "2019-09-16T07:15:00+00:00" }, - { - "name": "danhunsaker/laravel-flysystem-others", - "version": "v1.3.5", - "source": { - "type": "git", - "url": "https://github.com/danhunsaker/laravel-flysystem-others.git", - "reference": "46f06b924e1030c68c9021af3f802e5ce4807916" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/danhunsaker/laravel-flysystem-others/zipball/46f06b924e1030c68c9021af3f802e5ce4807916", - "reference": "46f06b924e1030c68c9021af3f802e5ce4807916", - "shasum": "" - }, - "require": { - "danhunsaker/laravel-flysystem-service": "^1.1", - "illuminate/filesystem": "^5.0", - "illuminate/support": "^5.0", - "league/flysystem": "^1.0" - }, - "suggest": { - "aliyuncs/aliyun-oss-flysystem": "One of the options to use the 'oss' adapter (^1.2)", - "aobozhang/aliyun-oss-adapter": "One of the options to use the 'oss' adapter (^1.0)", - "apollopy/flysystem-aliyun-oss": "One of the options to use the 'oss' adapter (^1.2)", - "argentcrusade/flysystem-selectel": "Required to use the 'selectel' adapter (^1.2)", - "arhitector/yandex-disk-flysystem": "Required to use the 'yandex' adapter (^1.0)", - "boofw/flysystem-qiniu": "One of the options to use the 'qiniu' adapter (^1.0)", - "carlosocarvalho/flysystem-cloudinary": "One of the options to use the 'cloudinary' adapter (^1.0)", - "cedricziel/flysystem-gcs": "One of the options to use the 'google' adapter (^2.0)", - "danhunsaker/flysystem-redis": "Required to use the 'redis' adapter (^1.0)", - "emgag/flysystem-tempdir": "Required to use the 'temp' adapter (^0.1)", - "engineor/flysystem-runabove": "Required to use the 'runabove' adapter (^1.0)", - "enl/flysystem-cloudinary": "One of the options to use the 'cloudinary' adapter (^1.1)", - "eqingdan/flysystem-qiniu": "One of the options to use the 'qiniu' adapter (^0.1)", - "freyo/flysystem-qcloud-cos-v3": "One of the options to use the 'qcloud' adapter (^)", - "freyo/flysystem-qcloud-cos-v4": "One of the options to use the 'qcloud' adapter (^)", - "freyo/flysystem-qcloud-cos-v5": "One of the options to use the 'qcloud' adapter (^)", - "ignited/flysystem-google-drive": "One of the options to use the 'gdrive' adapter (dev-master)", - "ignited/flysystem-onedrive": "One of the options to use the 'onedrive' adapter (dev-master)", - "integral/flysystem-pdo-adapter": "One of the options to use the 'pdo' adapter (^1.0)", - "jacekbarecki/flysystem-onedrive": "One of the options to use the 'onedrive' adapter (^1.0)", - "jellybool/flysystem-upyun": "Required to use the 'upyun' adapter (^1.0)", - "kapersoft/flysystem-sharefile": "Required to use the 'sharefile' adapter (^1.1)", - "litipk/flysystem-fallback-adapter": "Required to use the 'fallback' adapter, and with league/flysystem-replicate-adapter, the 'mirror' adapter (^0.1)", - "mgriego/flysystem-clamav": "Scans files for viruses before storing them on an actual filesystem (^1.0)", - "mhetreramesh/flysystem-backblaze": "Required to use the 'backblaze' adapter (^1.1)", - "monster/flysystem-aliyun-oss": "One of the options to use the 'oss' adapter, but not recommended, since it uses the League namespace without being a Leage package (^1.0)", - "nao-pon/flysystem-google-drive": "One of the options to use the 'gdrive' adapter (^1.1)", - "nicolasbeauvais/flysystem-onedrive": "One of the options to use the 'onedrive' adapter (^1.0)", - "nimbusoft/flysystem-openstack-swift": "Required to use the 'openstack' adapter (^0.2)", - "orzcc/aliyun-oss": "One of the options to use the 'oss' adapter (dev-master)", - "overtrue/flysystem-qiniu": "One of the options to use the 'qiniu' adapter (^1.0)", - "phlib/flysystem-pdo": "One of the options to use the 'pdo' adapter (^1.1)", - "potherca/flysystem-github": "Required to use the 'github' adapter (^0.2)", - "private-it/flysystem-google-drive": "One of the options to use the 'gdrive' adapter (dev-master)", - "robgridley/flysystem-smb": "Required to use the 'smb' adapter (dev-master)", - "rokde/flysystem-local-database-adapter": "Required to use the 'eloquent' adapter (^0.0)", - "shion/aliyun-oss": "One of the options to use the 'oss' adapter (dev-master)", - "spatie/flysystem-dropbox": "Required to use the 'dropbox' adapter in PHP 7 (^1.0)", - "srmklive/flysystem-dropbox-v2": "Required to use the 'dropbox' adapter in PHP 5 (^1.0)", - "superbalist/flysystem-google-storage": "One of the options to use the 'google' adapter (^7.0)", - "t3chnik/flysystem-cloudinary-adapter": "One of the options to use the 'cloudinary' adapter (dev-master)", - "twistor/flysystem-guzzle": "One of the options to use the (read-only) 'http' adapter (^6.0)", - "twistor/flysystem-http": "One of the options to use the (read-only) 'http' adapter (^0.2)", - "twistor/flysystem-stream-wrapper": "Allows access to Flysystem drives using 'drive://path' streams (^1.0)", - "xxtime/flysystem-aliyun-oss": "One of the options to use the 'oss' adapter (^1.2)", - "zhuxiaoqiao/flysystem-baidu-bos": "Required to use the 'bos' adapter (^1.0)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "laravel": { - "providers": [ - "Danhunsaker\\Laravel\\Flysystem\\FlysystemOtherServiceProvider" - ], - "dont-discover": [ - "danhunsaker/laravel-flysystem-service" - ] - } - }, - "autoload": { - "psr-4": { - "Danhunsaker\\Laravel\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Hunsaker", - "email": "danhunsaker@gmail.com" - } - ], - "description": "Automatically registers every third-party Flysystem adapter it recognizes as a Laravel Filesystem Driver.", - "keywords": [ - "Flysystem", - "laravel" - ], - "time": "2019-12-16T06:57:38+00:00" - }, - { - "name": "danhunsaker/laravel-flysystem-service", - "version": "v1.3", - "source": { - "type": "git", - "url": "https://github.com/danhunsaker/laravel-flysystem-service.git", - "reference": "a604090fbde62a60515d246781aad0c73f10be06" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/danhunsaker/laravel-flysystem-service/zipball/a604090fbde62a60515d246781aad0c73f10be06", - "reference": "a604090fbde62a60515d246781aad0c73f10be06", - "shasum": "" - }, - "require": { - "illuminate/filesystem": "^5.0 || ^6.0", - "illuminate/support": "^5.0 || ^6.0", - "league/flysystem": "^1.0" - }, - "suggest": { - "league/flysystem-aws-s3-v3": "Required to use the 's3' adapter (^1.0)", - "league/flysystem-azure-blob-storage": "Required to use the 'azure' adapter (^1.0)", - "league/flysystem-cached-adapter": "Required to use metadata caching (^1.0)", - "league/flysystem-eventable-filesystem": "Required to hook into filesystem Events (^1.0)", - "league/flysystem-gridfs": "Required to use the 'gridfs' adapter (^1.0)", - "league/flysystem-memory": "Required to use the 'memory' adapter (^1.0)", - "league/flysystem-phpcr": "Required to use the 'phpcr' adapter (^1.0)", - "league/flysystem-rackspace": "Required to use the 'rackspace' adapter (^1.0)", - "league/flysystem-replicate-adapter": "Required to use the 'replicate' adapter (^1.0)", - "league/flysystem-sftp": "Required to use the 'sftp' adapter (^1.0)", - "league/flysystem-vfs": "Required to use the 'vfs' adapter (^1.0)", - "league/flysystem-webdav": "Required to use the 'webdav' adapter (^1.0)", - "league/flysystem-ziparchive": "Required to use the 'zip' adapter (^1.0)", - "madewithlove/illuminate-psr-cache-bridge": "Required to use Laravel's cache implementation for Flysystem caching (^1.0)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "laravel": { - "providers": [ - "Danhunsaker\\Laravel\\Flysystem\\FlysystemServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Danhunsaker\\Laravel\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Hunsaker", - "email": "danhunsaker@gmail.com" - } - ], - "description": "Automatically registers every Flysystem adapter it recognizes as a Laravel Filesystem Driver.", - "keywords": [ - "Flysystem", - "laravel" - ], - "time": "2019-12-16T06:14:57+00:00" - }, { "name": "davejamesmiller/laravel-breadcrumbs", "version": "5.3.1", @@ -958,16 +786,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.11", + "version": "2.1.12", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23" + "reference": "a6255605af39f2db7f5cb62e672bd8a7bad8d208" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/92dd169c32f6f55ba570c309d83f5209cefb5e23", - "reference": "92dd169c32f6f55ba570c309d83f5209cefb5e23", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/a6255605af39f2db7f5cb62e672bd8a7bad8d208", + "reference": "a6255605af39f2db7f5cb62e672bd8a7bad8d208", "shasum": "" }, "require": { @@ -1012,7 +840,7 @@ "validation", "validator" ], - "time": "2019-08-13T17:33:27+00:00" + "time": "2019-12-20T12:49:39+00:00" }, { "name": "erusev/parsedown", @@ -1106,16 +934,16 @@ }, { "name": "fideloper/proxy", - "version": "4.2.1", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a" + "reference": "790194d5d3da89a713478875d2e2d05855a90a81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/03085e58ec7bee24773fa5a8850751a6e61a7e8a", - "reference": "03085e58ec7bee24773fa5a8850751a6e61a7e8a", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/790194d5d3da89a713478875d2e2d05855a90a81", + "reference": "790194d5d3da89a713478875d2e2d05855a90a81", "shasum": "" }, "require": { @@ -1156,7 +984,7 @@ "proxy", "trusted proxy" ], - "time": "2019-09-03T16:45:42+00:00" + "time": "2019-12-20T13:11:11+00:00" }, { "name": "firebase/php-jwt", @@ -1191,13 +1019,13 @@ "authors": [ { "name": "Neuman Vong", - "role": "Developer", - "email": "neuman+pear@twilio.com" + "email": "neuman+pear@twilio.com", + "role": "Developer" }, { "name": "Anant Narayanan", - "role": "Developer", - "email": "anant@php.net" + "email": "anant@php.net", + "role": "Developer" } ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", @@ -1206,16 +1034,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.0", + "version": "6.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "dbc2bc3a293ed6b1ae08a3651e2bfd213d19b6a5" + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/dbc2bc3a293ed6b1ae08a3651e2bfd213d19b6a5", - "reference": "dbc2bc3a293ed6b1ae08a3651e2bfd213d19b6a5", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/43ece0e75098b7ecd8d13918293029e555a50f82", + "reference": "43ece0e75098b7ecd8d13918293029e555a50f82", "shasum": "" }, "require": { @@ -1269,7 +1097,7 @@ "rest", "web service" ], - "time": "2019-12-07T18:20:45+00:00" + "time": "2019-12-23T11:57:10+00:00" }, { "name": "guzzlehttp/promises", @@ -1472,43 +1300,43 @@ }, { "name": "laravel/framework", - "version": "v5.8.36", + "version": "v6.9.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "ccf857af50897eda43ceaf12e318cf214e0e4e95" + "reference": "60610be97ca389fa4b959d4d13fb3690970d9fb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/ccf857af50897eda43ceaf12e318cf214e0e4e95", - "reference": "ccf857af50897eda43ceaf12e318cf214e0e4e95", + "url": "https://api.github.com/repos/laravel/framework/zipball/60610be97ca389fa4b959d4d13fb3690970d9fb7", + "reference": "60610be97ca389fa4b959d4d13fb3690970d9fb7", "shasum": "" }, "require": { "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", - "egulias/email-validator": "^2.0", + "egulias/email-validator": "^2.1.10", "erusev/parsedown": "^1.7", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3 || ^2.0", + "monolog/monolog": "^1.12|^2.0", + "nesbot/carbon": "^2.0", "opis/closure": "^3.1", - "php": "^7.1.3", + "php": "^7.2", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.2", - "symfony/debug": "^4.2", - "symfony/finder": "^4.2", - "symfony/http-foundation": "^4.2", - "symfony/http-kernel": "^4.2", - "symfony/process": "^4.2", - "symfony/routing": "^4.2", - "symfony/var-dumper": "^4.2", + "symfony/console": "^4.3.4", + "symfony/debug": "^4.3.4", + "symfony/finder": "^4.3.4", + "symfony/http-foundation": "^4.3.4", + "symfony/http-kernel": "^4.3.4", + "symfony/process": "^4.3.4", + "symfony/routing": "^4.3.4", + "symfony/var-dumper": "^4.3.4", "tijsverkoyen/css-to-inline-styles": "^2.2.1", "vlucas/phpdotenv": "^3.3" }, @@ -1548,47 +1376,45 @@ "require-dev": { "aws/aws-sdk-php": "^3.0", "doctrine/dbal": "^2.6", - "filp/whoops": "^2.1.4", + "filp/whoops": "^2.4", "guzzlehttp/guzzle": "^6.3", "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.0", + "mockery/mockery": "^1.2.3", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.8.*", + "orchestra/testbench-core": "^4.0", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5|^8.0", + "phpunit/phpunit": "^8.3", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.2", - "symfony/dom-crawler": "^4.2", + "symfony/cache": "^4.3", "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "filp/whoops": "Required for friendly error pages in development (^2.1.4).", + "ext-redis": "Required to use the Redis cache and queue drivers.", + "filp/whoops": "Required for friendly error pages in development (^2.4).", "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", + "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).", "laravel/tinker": "Required to use the tinker console command (^1.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "nexmo/client": "Required to use the Nexmo transport (^1.0).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^4.3.4).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.2).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.8-dev" + "dev-master": "6.x-dev" } }, "autoload": { @@ -1616,49 +1442,49 @@ "framework", "laravel" ], - "time": "2019-12-17T16:00:14+00:00" + "time": "2019-12-19T18:16:22+00:00" }, { "name": "laravel/passport", - "version": "v7.5.1", + "version": "v8.0.2", "source": { "type": "git", "url": "https://github.com/laravel/passport.git", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08" + "reference": "952722f4f1817485bd30190e45fe4dc87ba67441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/passport/zipball/d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", - "reference": "d63cdd672c3d65b3c35b73d0ef13a9dbfcb71c08", + "url": "https://api.github.com/repos/laravel/passport/zipball/952722f4f1817485bd30190e45fe4dc87ba67441", + "reference": "952722f4f1817485bd30190e45fe4dc87ba67441", "shasum": "" }, "require": { "ext-json": "*", - "firebase/php-jwt": "~3.0|~4.0|~5.0", - "guzzlehttp/guzzle": "~6.0", - "illuminate/auth": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/console": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/container": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/contracts": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/cookie": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/database": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/encryption": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/http": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "illuminate/support": "~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0", - "league/oauth2-server": "^7.0", - "php": ">=7.1", + "firebase/php-jwt": "^3.0|^4.0|^5.0", + "guzzlehttp/guzzle": "^6.0", + "illuminate/auth": "^6.0|^7.0", + "illuminate/console": "^6.0|^7.0", + "illuminate/container": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0", + "illuminate/cookie": "^6.0|^7.0", + "illuminate/database": "^6.0|^7.0", + "illuminate/encryption": "^6.0|^7.0", + "illuminate/http": "^6.0|^7.0", + "illuminate/support": "^6.0|^7.0", + "league/oauth2-server": "^8.0", + "php": "^7.2", "phpseclib/phpseclib": "^2.0", - "symfony/psr-http-message-bridge": "~1.0", - "zendframework/zend-diactoros": "~1.0|~2.0" + "symfony/psr-http-message-bridge": "^1.0", + "zendframework/zend-diactoros": "^2.0" }, "require-dev": { "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.4|^8.0" + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.0-dev" + "dev-master": "8.x-dev" }, "laravel": { "providers": [ @@ -1687,39 +1513,39 @@ "oauth", "passport" ], - "time": "2019-10-08T16:45:24+00:00" + "time": "2019-11-26T17:35:30+00:00" }, { "name": "laravelcollective/html", - "version": "v5.8.1", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/LaravelCollective/html.git", - "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29" + "reference": "bcc317d21a7e04eebcc81c4109fa84feaab63590" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/3a1c9974ea629eed96e101a24e3852ced382eb29", - "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/bcc317d21a7e04eebcc81c4109fa84feaab63590", + "reference": "bcc317d21a7e04eebcc81c4109fa84feaab63590", "shasum": "" }, "require": { - "illuminate/http": "5.8.*", - "illuminate/routing": "5.8.*", - "illuminate/session": "5.8.*", - "illuminate/support": "5.8.*", - "illuminate/view": "5.8.*", - "php": ">=7.1.3" + "illuminate/http": "^6.0", + "illuminate/routing": "^6.0", + "illuminate/session": "^6.0", + "illuminate/support": "^6.0", + "illuminate/view": "^6.0", + "php": ">=7.2" }, "require-dev": { - "illuminate/database": "5.8.*", + "illuminate/database": "^6.0", "mockery/mockery": "~1.0", "phpunit/phpunit": "~7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.8-dev" + "dev-master": "6.0-dev" }, "laravel": { "providers": [ @@ -1755,7 +1581,7 @@ ], "description": "HTML and Form Builders for the Laravel Framework", "homepage": "https://laravelcollective.com", - "time": "2019-09-05T12:32:25+00:00" + "time": "2019-10-02T00:37:39+00:00" }, { "name": "lcobucci/jwt", @@ -2240,24 +2066,25 @@ }, { "name": "league/oauth2-server", - "version": "7.4.0", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-server.git", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf" + "reference": "e1dc4d708c56fcfa205be4bb1862b6d525b4baac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", - "reference": "2eb1cf79e59d807d89c256e7ac5e2bf8bdbd4acf", + "url": "https://api.github.com/repos/thephpleague/oauth2-server/zipball/e1dc4d708c56fcfa205be4bb1862b6d525b4baac", + "reference": "e1dc4d708c56fcfa205be4bb1862b6d525b4baac", "shasum": "" }, "require": { - "defuse/php-encryption": "^2.1", + "defuse/php-encryption": "^2.2.1", + "ext-json": "*", "ext-openssl": "*", - "lcobucci/jwt": "^3.2.2", - "league/event": "^2.1", - "php": ">=7.0.0", + "lcobucci/jwt": "^3.3.1", + "league/event": "^2.2", + "php": ">=7.1.0", "psr/http-message": "^1.0.1" }, "replace": { @@ -2265,12 +2092,11 @@ "lncd/oauth2": "*" }, "require-dev": { - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-phpunit": "^0.9.4", - "phpstan/phpstan-strict-rules": "^0.9.0", - "phpunit/phpunit": "^6.3 || ^7.0", + "phpstan/phpstan": "^0.11.8", + "phpstan/phpstan-phpunit": "^0.11.2", + "phpunit/phpunit": "^7.5.13 || ^8.2.3", "roave/security-advisories": "dev-master", - "zendframework/zend-diactoros": "^1.3.2" + "zendframework/zend-diactoros": "^2.1.2" }, "type": "library", "autoload": { @@ -2285,15 +2111,15 @@ "authors": [ { "name": "Alex Bilbie", - "role": "Developer", "email": "hello@alexbilbie.com", - "homepage": "http://www.alexbilbie.com" + "homepage": "http://www.alexbilbie.com", + "role": "Developer" }, { "name": "Andy Millington", - "role": "Developer", "email": "andrew@noexceptions.io", - "homepage": "https://www.noexceptions.io" + "homepage": "https://www.noexceptions.io", + "role": "Developer" } ], "description": "A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.", @@ -2313,7 +2139,7 @@ "secure", "server" ], - "time": "2019-05-05T09:22:01+00:00" + "time": "2019-07-13T18:58:26+00:00" }, { "name": "litipk/flysystem-fallback-adapter", @@ -2358,21 +2184,21 @@ }, { "name": "monolog/monolog", - "version": "1.25.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287" + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d5e2fb341cb44f7e2ab639d12a1e5901091ec287", - "reference": "d5e2fb341cb44f7e2ab639d12a1e5901091ec287", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": "^7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -2380,33 +2206,36 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.3", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -2432,7 +2261,7 @@ "logging", "psr-3" ], - "time": "2019-11-13T10:00:05+00:00" + "time": "2019-12-20T14:22:59+00:00" }, { "name": "mschindler83/fints-hbci-php", @@ -2856,16 +2685,16 @@ }, { "name": "pragmarx/google2fa", - "version": "v6.1.3", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "cce23ec9b276d29ce9afc6830b12c20452993875" + "reference": "0afb47f8a686bd203fe85a05bab85139f3c1971e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/cce23ec9b276d29ce9afc6830b12c20452993875", - "reference": "cce23ec9b276d29ce9afc6830b12c20452993875", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/0afb47f8a686bd203fe85a05bab85139f3c1971e", + "reference": "0afb47f8a686bd203fe85a05bab85139f3c1971e", "shasum": "" }, "require": { @@ -2908,7 +2737,7 @@ "Two Factor Authentication", "google2fa" ], - "time": "2019-10-02T18:46:33+00:00" + "time": "2019-10-21T17:49:22+00:00" }, { "name": "pragmarx/google2fa-qrcode", @@ -2953,8 +2782,8 @@ "authors": [ { "name": "Antonio Carlos Ribeiro", - "role": "Creator & Designer", - "email": "acr@antoniocarlosribeiro.com" + "email": "acr@antoniocarlosribeiro.com", + "role": "Creator & Designer" } ], "description": "QR Code package for Google2FA", @@ -3013,9 +2842,9 @@ "authors": [ { "name": "Antonio Carlos Ribeiro", - "role": "Developer", "email": "acr@antoniocarlosribeiro.com", - "homepage": "https://antoniocarlosribeiro.com" + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" } ], "description": "Create random chars, numbers, strings", @@ -3075,9 +2904,9 @@ "authors": [ { "name": "Antonio Carlos Ribeiro", - "role": "Developer", "email": "acr@antoniocarlosribeiro.com", - "homepage": "https://antoniocarlosribeiro.com" + "homepage": "https://antoniocarlosribeiro.com", + "role": "Developer" } ], "description": "Create recovery codes for two factor auth", @@ -3520,28 +3349,28 @@ }, { "name": "rcrowe/twigbridge", - "version": "v0.9.12", + "version": "v0.11.2", "source": { "type": "git", "url": "https://github.com/rcrowe/TwigBridge.git", - "reference": "5c4e94cb3ff8f3c2f5c331c5a2314de1e7eaf4ad" + "reference": "b8bd5db744d51adb11623547f281dfaf5ac60230" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rcrowe/TwigBridge/zipball/5c4e94cb3ff8f3c2f5c331c5a2314de1e7eaf4ad", - "reference": "5c4e94cb3ff8f3c2f5c331c5a2314de1e7eaf4ad", + "url": "https://api.github.com/repos/rcrowe/TwigBridge/zipball/b8bd5db744d51adb11623547f281dfaf5ac60230", + "reference": "b8bd5db744d51adb11623547f281dfaf5ac60230", "shasum": "" }, "require": { - "illuminate/support": "5.5.*|5.6.*|5.7.*|5.8.*", - "illuminate/view": "5.5.*|5.6.*|5.7.*|5.8.*", - "php": ">=7", - "twig/twig": "~1.30" + "illuminate/support": "^5.5|^6", + "illuminate/view": "^5.5|^6", + "php": ">=7.1", + "twig/twig": "~2.0" }, "require-dev": { - "laravel/framework": "5.0.*", + "laravel/framework": "5.5.*", "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0", + "phpunit/phpunit": "~6.0", "satooshi/php-coveralls": "~0.6", "squizlabs/php_codesniffer": "~1.5" }, @@ -3552,7 +3381,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.10-dev" + "dev-master": "0.11-dev" }, "laravel": { "providers": [ @@ -3574,13 +3403,13 @@ "MIT" ], "authors": [ - { - "name": "Barry vd. Heuvel", - "email": "barryvdh@gmail.com" - }, { "name": "Rob Crowe", "email": "hello@vivalacrowe.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" } ], "description": "Adds the power of Twig to Laravel", @@ -3588,7 +3417,7 @@ "laravel", "twig" ], - "time": "2019-02-27T16:14:57+00:00" + "time": "2019-10-03T08:22:24+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -5195,7 +5024,7 @@ }, { "name": "tightenco/collect", - "version": "v6.7.0", + "version": "v6.9.0", "source": { "type": "git", "url": "https://github.com/tightenco/collect.git", @@ -5294,21 +5123,22 @@ }, { "name": "twig/twig", - "version": "v1.42.4", + "version": "v2.12.2", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152" + "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e587180584c3d2d6cb864a0454e777bb6dcb6152", - "reference": "e587180584c3d2d6cb864a0454e777bb6dcb6152", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed", + "reference": "d761fd1f1c6b867ae09a7d8119a6d95d06dc44ed", "shasum": "" }, "require": { - "php": ">=5.5.0", - "symfony/polyfill-ctype": "^1.8" + "php": "^7.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { "psr/container": "^1.0", @@ -5318,7 +5148,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.42-dev" + "dev-master": "2.12-dev" } }, "autoload": { @@ -5356,7 +5186,7 @@ "keywords": [ "templating" ], - "time": "2019-11-11T16:49:32+00:00" + "time": "2019-11-11T16:52:09+00:00" }, { "name": "vlucas/phpdotenv", @@ -5964,16 +5794,16 @@ }, { "name": "filp/whoops", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96" + "reference": "ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/cde50e6720a39fdacb240159d3eea6865d51fd96", - "reference": "cde50e6720a39fdacb240159d3eea6865d51fd96", + "url": "https://api.github.com/repos/filp/whoops/zipball/ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508", + "reference": "ecbc8f3ed2cafca3cfca3d5febaae5a9d2899508", "shasum": "" }, "require": { @@ -5982,8 +5812,8 @@ }, "require-dev": { "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.7", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -5992,7 +5822,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -6021,7 +5851,7 @@ "throwable", "whoops" ], - "time": "2019-08-07T09:00:00+00:00" + "time": "2019-12-25T10:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -6237,23 +6067,22 @@ }, { "name": "mockery/mockery", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "5571962a4f733fbb57bede39778f71647fae8e66" + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/5571962a4f733fbb57bede39778f71647fae8e66", - "reference": "5571962a4f733fbb57bede39778f71647fae8e66", + "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.6.0", - "sebastian/comparator": "^1.2.4|^3.0" + "php": ">=5.6.0" }, "require-dev": { "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" @@ -6261,7 +6090,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -6299,7 +6128,7 @@ "test double", "testing" ], - "time": "2019-11-24T07:54:50+00:00" + "time": "2019-12-26T09:49:15+00:00" }, { "name": "myclabs/deep-copy", @@ -6505,16 +6334,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.2", + "version": "4.3.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e" + "reference": "2ecaa9fef01634c83bfa8dc1fe35fb5cef223a62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/b83ff7cfcfee7827e1e78b637a5904fe6a96698e", - "reference": "b83ff7cfcfee7827e1e78b637a5904fe6a96698e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2ecaa9fef01634c83bfa8dc1fe35fb5cef223a62", + "reference": "2ecaa9fef01634c83bfa8dc1fe35fb5cef223a62", "shasum": "" }, "require": { @@ -6552,7 +6381,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-09-12T14:27:41+00:00" + "time": "2019-12-20T13:40:23+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -6603,16 +6432,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.10.0", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "d638ebbb58daba25a6a0dc7969e1358a0e3c6682" + "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d638ebbb58daba25a6a0dc7969e1358a0e3c6682", - "reference": "d638ebbb58daba25a6a0dc7969e1358a0e3c6682", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", + "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", "shasum": "" }, "require": { @@ -6662,7 +6491,7 @@ "spy", "stub" ], - "time": "2019-12-17T16:54:23+00:00" + "time": "2019-12-22T21:05:45+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6918,16 +6747,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.0", + "version": "8.5.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3ee1c1fd6fc264480c25b6fb8285edefe1702dab" + "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3ee1c1fd6fc264480c25b6fb8285edefe1702dab", - "reference": "3ee1c1fd6fc264480c25b6fb8285edefe1702dab", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7870c78da3c5e4883eaef36ae47853ebb3cb86f2", + "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2", "shasum": "" }, "require": { @@ -6997,7 +6826,7 @@ "testing", "xunit" ], - "time": "2019-12-06T05:41:38+00:00" + "time": "2019-12-25T14:49:39+00:00" }, { "name": "roave/security-advisories", @@ -7005,12 +6834,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "1b2183eef1fdf7438d26b37dd87beb07dd4808bc" + "reference": "44a677c8e06241a66409ae6e4820dc166fc09ab2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1b2183eef1fdf7438d26b37dd87beb07dd4808bc", - "reference": "1b2183eef1fdf7438d26b37dd87beb07dd4808bc", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/44a677c8e06241a66409ae6e4820dc166fc09ab2", + "reference": "44a677c8e06241a66409ae6e4820dc166fc09ab2", "shasum": "" }, "conflict": { @@ -7045,8 +6874,8 @@ "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", - "drupal/drupal": ">=7,<7.67|>=8,<8.6.16|>=8.7,<8.7.1|>8.7.3,<8.7.5", + "drupal/core": ">=7,<8.7.11|>=8.8,<8.8.1", + "drupal/drupal": ">=7,<8.7.11|>=8.8,<8.8.1", "erusev/parsedown": "<1.7.2", "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.4", "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.13.1|>=6,<6.7.9.1|>=6.8,<6.13.5.1|>=7,<7.2.4.1|>=7.3,<7.3.2.1", @@ -7101,6 +6930,7 @@ "pusher/pusher-php-server": "<2.2.1", "robrichards/xmlseclibs": ">=1,<3.0.4", "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", "shopware/shopware": "<5.3.7", @@ -7215,7 +7045,7 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2019-12-17T15:12:43+00:00" + "time": "2019-12-26T14:16:40+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", diff --git a/config/app.php b/config/app.php index 3071573b6f..8d7e55374d 100644 --- a/config/app.php +++ b/config/app.php @@ -135,7 +135,7 @@ return [ 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, - //'Twig' => TwigBridge\Facade\Twig::class, + 'Twig' => TwigBridge\Facade\Twig::class, 'Form' => Collective\Html\FormFacade::class, 'Html' => Collective\Html\HtmlFacade::class, 'Preferences' => \FireflyIII\Support\Facades\Preferences::class, diff --git a/config/filesystems.php b/config/filesystems.php index 93a605319e..ac67789a77 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -21,22 +21,6 @@ declare(strict_types=1); -$uploadDisk = [ - 'driver' => 'mirror', - 'disks' => ['local-upload'], -]; - -$exportDisk = [ - 'driver' => 'mirror', - 'disks' => ['local-export'], -]; - -// setting the SFTP host is enough to trigger the SFTP option. -if ('' !== env('SFTP_HOST', '')) { - array_push($uploadDisk['disks'], 'sftp-upload'); - array_push($exportDisk['disks'], 'sftp-export'); -} - return [ /* @@ -89,52 +73,15 @@ return [ ], // local storage configuration for upload and export: - 'local-upload' => [ + 'upload' => [ 'driver' => 'local', 'root' => storage_path('upload'), ], - 'local-export' => [ + 'export' => [ 'driver' => 'local', 'root' => storage_path('export'), ], - // SFTP storage configuration for upload and export: - 'sftp-upload' => [ - 'driver' => 'sftp', - 'host' => env('SFTP_HOST', '127.0.0.1'), - 'port' => env('SFTP_PORT', 22), - 'username' => env('SFTP_USERNAME', 'anonymous'), - 'password' => env('SFTP_PASSWORD', ''), - 'root' => env('SFTP_UPLOAD_PATH', ''), - 'privateKey' => env('SFTP_PRIV_KEY'), - - // Optional SFTP Settings - // 'timeout' => 30, - // 'directoryPerm' => 0755, - // 'permPublic' => 0644, - // 'permPrivate' => 0600, - ], - - 'sftp-export' => [ - 'driver' => 'sftp', - 'host' => env('SFTP_HOST', '127.0.0.1'), - 'port' => env('SFTP_PORT', 22), - 'username' => env('SFTP_USERNAME', 'anonymous'), - 'password' => env('SFTP_PASSWORD', ''), - 'root' => env('SFTP_EXPORT_PATH', ''), - 'privateKey' => env('SFTP_PRIV_KEY'), - - // Optional SFTP Settings - // 'timeout' => 30, - // 'directoryPerm' => 0755, - // 'permPublic' => 0644, - // 'permPrivate' => 0600, - ], - - // final configuration of upload disk and export disk. - 'upload' => $uploadDisk, - 'export' => $exportDisk, - // various other paths: 'database' => [ 'driver' => 'local', @@ -156,333 +103,6 @@ return [ 'visibility' => 'public', ], - // unused storage backends. - /* - - 's3' => [ - 'driver' => 's3', - 'key' => env('AWS_KEY'), - 'secret' => env('AWS_SECRET'), - 'region' => env('AWS_REGION'), - 'bucket' => env('AWS_BUCKET'), - ], - - 'sftp' => [ - 'driver' => 'sftp', - 'host' => 'sftp.example.com', - 'username' => 'username', - 'password' => 'password', - // Optional SFTP Settings - // 'privateKey' => 'path/to/or/contents/of/privatekey', - // 'port' => 22, - // 'root' => '/path/to/root', - // 'timeout' => 30, - // 'directoryPerm' => 0755, - // 'permPublic' => 0644, - // 'permPrivate' => 0600, - ], - - 'rackspace' => [ - 'driver' => 'rackspace', - 'endpoint' => 'https://identity.api.rackspacecloud.com/v2.0/', - 'username' => 'your-username', - 'key' => 'your-key', - 'region' => 'IAD', - 'url_type' => 'publicURL', - 'container' => 'your-container', - ], - - 'null' => [ - 'driver' => 'null', - ], - - 'azure' => [ - 'driver' => 'azure', - 'accountName' => 'your-account-name', - 'apiKey' => 'your-api-key', - 'container' => 'your-container', - ], - - 'gridfs' => [ - 'driver' => 'gridfs', - 'server' => 'your-server', - 'context' => 'your-context', - 'dbName' => 'your-db-name', - // You can also provide other MongoDB connection options here - ], - - 'memory' => [ - 'driver' => 'memory', - ], - - 'phpcr-jackrabbit' => [ - 'driver' => 'phpcr', - 'jackrabbit_url' => 'your-jackrabbit-url', - 'workspace' => 'your-workspace', - 'root' => 'your-root', - // Optional PHPCR Settings - // 'userId' => 'your-user-id', - // 'password' => 'your-password', - ], - - 'phpcr-dbal' => [ - 'driver' => 'phpcr', - 'database' => 'mysql', - 'workspace' => 'your-workspace', - 'root' => 'your-root', - // Optional PHPCR Settings - // 'userId' => 'your-user-id', - // 'password' => 'your-password', - ], - - 'phpcr-prismic' => [ - 'driver' => 'phpcr', - 'prismic_uri' => 'your-prismic-uri', - 'workspace' => 'your-workspace', - 'root' => 'your-root', - // Optional PHPCR Settings - // 'userId' => 'your-user-id', - // 'password' => 'your-password', - ], - - 'replicate' => [ - 'driver' => 'replicate', - 'master' => 'local', - 'replica' => 's3', - ], - - 'vfs' => [ - 'driver' => 'vfs', - ], - - 'webdav' => [ - 'driver' => 'webdav', - 'baseUri' => 'http://example.org/dav/', - // Optional WebDAV Settings - // 'userName' => 'user', - // 'password' => 'password', - // 'proxy' => 'locahost:8888', - // 'authType' => 'digest', // alternately 'ntlm' or 'basic' - // 'encoding' => 'all', // same as ['deflate', 'gzip', 'identity'] - ], - - 'zip' => [ - 'driver' => 'zip', - 'path' => 'path/to/file.zip', - // Alternate value if twistor/flysystem-stream-wrapper is available - // 'path' => 'local://path/to/file.zip', - ], - - 'backblaze' => [ - 'driver' => 'backblaze', - 'account_id' => 'your-account-id', - 'application_key' => 'your-app-key', - 'bucket' => 'your-bucket', - ], - - 'bos' => [ - 'driver' => 'bos', - 'credentials' => [ - 'ak' => 'your-access-key-id', - 'sk' => 'your-secret-access-key', - ], - 'bucket' => 'your-bucket', - // Optional BOS Settings - // 'endpoint' => 'http://bj.bcebos.com', - ], - - 'clamav' => [ - 'driver' => 'clamav', - 'server' => 'tcp://127.0.0.1:3310', - 'drive' => 'local', - // Optional ClamAV Settings - // 'copy_scan' => false, - ], - - 'cloudinary' => [ - 'driver' => 'cloudinary', - 'api_key' => env('CLOUDINARY_API_KEY'), - 'api_secret' => env('CLOUDINARY_API_SECRET'), - 'cloud_name' => env('CLOUDINARY_CLOUD_NAME'), - ], - - 'dropbox' => [ - 'driver' => 'dropbox', - 'authToken' => 'your-auth-token', - ], - - 'eloquent' => [ - 'driver' => 'eloquent', - // Optional Eloquent Settings - // 'model' => '\Rokde\Flysystem\Adapter\Model\FileModel', - ], - - 'fallback' => [ - 'driver' => 'fallback', - 'main' => 'local', - 'fallback' => 's3', - ], - - 'gdrive' => [ - 'driver' => 'gdrive', - 'client_id' => 'your-client-id', - 'secret' => 'your-secret', - 'token' => 'your-token', - // Optional GDrive Settings - // 'root' => 'your-root-directory', - // 'paths_sheet' => 'your-paths-sheet', - // 'paths_cache_drive' => 'local', - ], - - 'github' => [ - 'driver' => 'github', - 'project' => 'yourname/project', - 'token' => 'your-github-token', - ], - - 'google' => [ - 'driver' => 'google', - 'project_id' => 'your-project-id', - 'bucket' => 'your-bucket', - // Optional Google Cloud Storage Settings - // 'prefix' => 'prefix/path/for/drive', - // 'url' => 'http://your.custom.cname/', - // 'key_file' => 'path/to/file.json', - // - // Alternate value if twistor/flysystem-stream-wrapper is available - // 'key_file' => 'local://path/to/file.json', - ], - - 'http' => [ - 'driver' => 'http', - 'root' => 'http://example.com', - // Optional HTTP Settings - // 'use_head' => true, - // 'context' => [], - ], - - 'onedrive' => [ - 'driver' => 'onedrive', - 'access_token' => 'your-access-token', - // Options only needed for ignited/flysystem-onedrive - // 'base_url' => 'https://api.onedrive.com/v1.0/', - // 'use_logger' => false, - // Option only used by nicolasbeauvais/flysystem-onedrive - // 'root' => 'root', - ], - - 'openstack' => [ - 'driver' => 'openstack', - 'auth_url' => 'your-auth-url', - 'region' => 'your-region', - 'user_id' => 'your-user-id', - 'password' => 'your-password', - 'project_id' => 'your-project-id', - 'container' => 'your-container', - ], - - 'oss' => [ - 'driver' => 'oss', - 'access_id' => env('OSS_ACCESS_KEY_ID'), - 'access_key' => env('OSS_ACCESS_KEY_SECRET'), - 'endpoint' => env('OSS_ENDPOINT'), - 'bucket' => env('OSS_BUCKET'), - // Optional OSS Settings - // 'prefix' => '', - // 'region' => '', // One of 'hangzhou', 'qingdao', 'beijing', 'hongkong', - // // 'shenzhen', 'shanghai', 'west-1' and 'southeast-1' - ], - - 'pdo' => [ - 'driver' => 'pdo', - 'database' => 'default', - ], - - 'qcloud' => [ - 'driver' => 'qcloud', - 'app_id' => 'your-app-id', - 'secret_id' => 'your-secret-id', - 'secret_key' => 'your-secret-key', - 'bucket' => 'your-bucket-name', - 'protocol' => 'https', - // Optional Tencent/Qcloud COS Settings - // 'domain' => 'your-domain', - // 'timeout' => 60, - // 'region' => 'gz', - ], - - 'qiniu' => [ - 'driver' => 'qiniu', - 'accessKey' => 'your-access-key', - 'secretKey' => 'your-secret-key', - 'bucket' => 'your-bucket', - 'domain' => 'xxxx.qiniudn.com', - ], - - 'redis' => [ - 'driver' => 'redis', - 'connection' => 'default', - ], - - 'runabove' => [ - 'driver' => 'runabove', - 'username' => 'your-username', - 'password' => 'your-password', - 'tenantId' => 'your-tenantId', - // Optional Runabove Settings - // 'container' => 'container', - // 'region' => 'SBG1', // One of 'SBG1', 'BHS1', and 'GRA1' - ], - - 'selectel' => [ - 'driver' => 'selectel', - 'username' => 'your-username', - 'password' => 'your-password', - 'container' => 'your-container', - // Optional Selectel Settings - // 'domain' => '', - ], - - 'sharefile' => [ - 'driver' => 'sharefile', - 'hostname' => 'sharefile.example.com', - 'client_id' => 'your-client-id', - 'secret' => 'your-secret', - 'username' => 'your-username', - 'password' => 'your-password', - ], - - 'smb' => [ - 'driver' => 'smb', - 'host' => 'smb.example.com', - 'username' => 'your-username', - 'password' => 'your-password', - 'path' => 'path/to/shared/directory/for/root', - ], - - 'temp' => [ - 'driver' => 'temp', - // Optional TempDir Settings - // 'prefix' => '', - // 'tempdir' => '/tmp', - ], - - 'upyun' => [ - 'driver' => 'upyun', - 'bucket' => 'your-bucket', - 'operator' => 'operator-name', - 'password' => 'operator-password', - 'protocol' => 'https', - 'domain' => 'example.b0.upaiyun.com', - ], - - 'yandex' => [ - 'driver' => 'yandex', - 'access_token' => 'your-access-token', - // Optional Yandex Settings - // 'prefix' => 'app:/', - ], - */ ], /* diff --git a/config/firefly.php b/config/firefly.php index c1df887329..d85572f79c 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -90,6 +90,10 @@ use FireflyIII\TransactionRules\Triggers\DescriptionStarts; use FireflyIII\TransactionRules\Triggers\FromAccountContains; use FireflyIII\TransactionRules\Triggers\FromAccountEnds; use FireflyIII\TransactionRules\Triggers\FromAccountIs; +use FireflyIII\TransactionRules\Triggers\FromAccountNumberContains; +use FireflyIII\TransactionRules\Triggers\FromAccountNumberEnds; +use FireflyIII\TransactionRules\Triggers\FromAccountNumberIs; +use FireflyIII\TransactionRules\Triggers\FromAccountNumberStarts; use FireflyIII\TransactionRules\Triggers\FromAccountStarts; use FireflyIII\TransactionRules\Triggers\HasAnyBudget; use FireflyIII\TransactionRules\Triggers\HasAnyCategory; @@ -108,6 +112,10 @@ use FireflyIII\TransactionRules\Triggers\TagIs; use FireflyIII\TransactionRules\Triggers\ToAccountContains; use FireflyIII\TransactionRules\Triggers\ToAccountEnds; use FireflyIII\TransactionRules\Triggers\ToAccountIs; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberContains; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberEnds; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberIs; +use FireflyIII\TransactionRules\Triggers\ToAccountNumberStarts; use FireflyIII\TransactionRules\Triggers\ToAccountStarts; use FireflyIII\TransactionRules\Triggers\TransactionType; use FireflyIII\TransactionRules\Triggers\UserAction; @@ -125,8 +133,8 @@ return [ 'is_demo_site' => false, ], 'encryption' => null === env('USE_ENCRYPTION') || env('USE_ENCRYPTION') === true, - 'version' => '4.8.3-alpha.1', - 'api_version' => '0.10.5', + 'version' => '5.0.0-alpha.1', + 'api_version' => '1.0.0', 'db_version' => 11, 'maxUploadSize' => 15242880, 'send_error_message' => env('SEND_ERROR_MESSAGE', true), @@ -404,40 +412,48 @@ return [ ], 'rule-triggers' => [ - 'user_action' => UserAction::class, - 'from_account_starts' => FromAccountStarts::class, - 'from_account_ends' => FromAccountEnds::class, - 'from_account_is' => FromAccountIs::class, - 'from_account_contains' => FromAccountContains::class, - 'to_account_starts' => ToAccountStarts::class, - 'to_account_ends' => ToAccountEnds::class, - 'to_account_is' => ToAccountIs::class, - 'to_account_contains' => ToAccountContains::class, - 'amount_less' => AmountLess::class, - 'amount_exactly' => AmountExactly::class, - 'amount_more' => AmountMore::class, - 'description_starts' => DescriptionStarts::class, - 'description_ends' => DescriptionEnds::class, - 'description_contains' => DescriptionContains::class, - 'description_is' => DescriptionIs::class, - 'transaction_type' => TransactionType::class, - 'category_is' => CategoryIs::class, - 'budget_is' => BudgetIs::class, - 'tag_is' => TagIs::class, - 'currency_is' => CurrencyIs::class, - 'has_attachments' => HasAttachment::class, - 'has_no_category' => HasNoCategory::class, - 'has_any_category' => HasAnyCategory::class, - 'has_no_budget' => HasNoBudget::class, - 'has_any_budget' => HasAnyBudget::class, - 'has_no_tag' => HasNoTag::class, - 'has_any_tag' => HasAnyTag::class, - 'notes_contain' => NotesContain::class, - 'notes_start' => NotesStart::class, - 'notes_end' => NotesEnd::class, - 'notes_are' => NotesAre::class, - 'no_notes' => NotesEmpty::class, - 'any_notes' => NotesAny::class, + 'user_action' => UserAction::class, + 'from_account_starts' => FromAccountStarts::class, + 'from_account_ends' => FromAccountEnds::class, + 'from_account_is' => FromAccountIs::class, + 'from_account_contains' => FromAccountContains::class, + 'from_account_nr_starts' => FromAccountNumberStarts::class, + 'from_account_nr_ends' => FromAccountNumberEnds::class, + 'from_account_nr_is' => FromAccountNumberIs::class, + 'from_account_nr_contains' => FromAccountNumberContains::class, + 'to_account_starts' => ToAccountStarts::class, + 'to_account_ends' => ToAccountEnds::class, + 'to_account_is' => ToAccountIs::class, + 'to_account_contains' => ToAccountContains::class, + 'to_account_nr_starts' => ToAccountNumberStarts::class, + 'to_account_nr_ends' => ToAccountNumberEnds::class, + 'to_account_nr_is' => ToAccountNumberIs::class, + 'to_account_nr_contains' => ToAccountNumberContains::class, + 'amount_less' => AmountLess::class, + 'amount_exactly' => AmountExactly::class, + 'amount_more' => AmountMore::class, + 'description_starts' => DescriptionStarts::class, + 'description_ends' => DescriptionEnds::class, + 'description_contains' => DescriptionContains::class, + 'description_is' => DescriptionIs::class, + 'transaction_type' => TransactionType::class, + 'category_is' => CategoryIs::class, + 'budget_is' => BudgetIs::class, + 'tag_is' => TagIs::class, + 'currency_is' => CurrencyIs::class, + 'has_attachments' => HasAttachment::class, + 'has_no_category' => HasNoCategory::class, + 'has_any_category' => HasAnyCategory::class, + 'has_no_budget' => HasNoBudget::class, + 'has_any_budget' => HasAnyBudget::class, + 'has_no_tag' => HasNoTag::class, + 'has_any_tag' => HasAnyTag::class, + 'notes_contain' => NotesContain::class, + 'notes_start' => NotesStart::class, + 'notes_end' => NotesEnd::class, + 'notes_are' => NotesAre::class, + 'no_notes' => NotesEmpty::class, + 'any_notes' => NotesAny::class, ], 'rule-actions' => [ 'set_category' => SetCategory::class, diff --git a/public/v1/js/app.js b/public/v1/js/app.js index ef6accfb63..f89c6bf762 100644 --- a/public/v1/js/app.js +++ b/public/v1/js/app.js @@ -1 +1 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="/",n(n.s=17)}([function(t,e,n){t.exports=n(18)},function(t,e,n){"use strict";var r=n(11),i=n(29),o=Object.prototype.toString;function a(t){return"[object Array]"===o.call(t)}function s(t){return null!==t&&"object"==typeof t}function c(t){return"[object Function]"===o.call(t)}function u(t,e){if(null!=t)if("object"!=typeof t&&(t=[t]),a(t))for(var n=0,r=t.length;n=0&&f.splice(e,1)}function g(t){var e=document.createElement("style");if(void 0===t.attrs.type&&(t.attrs.type="text/css"),void 0===t.attrs.nonce){var r=function(){0;return n.nc}();r&&(t.attrs.nonce=r)}return y(e,t.attrs),v(t,e),e}function y(t,e){Object.keys(e).forEach((function(n){t.setAttribute(n,e[n])}))}function A(t,e){var n,r,i,o;if(e.transform&&t.css){if(!(o="function"==typeof e.transform?e.transform(t.css):e.transform.default(t.css)))return function(){};t.css=o}if(e.singleton){var a=l++;n=u||(u=g(e)),r=w.bind(null,n,a,!1),i=w.bind(null,n,a,!0)}else t.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(t){var e=document.createElement("link");return void 0===t.attrs.type&&(t.attrs.type="text/css"),t.attrs.rel="stylesheet",y(e,t.attrs),v(t,e),e}(e),r=C.bind(null,n,e),i=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=g(e),r=x.bind(null,n),i=function(){m(n)});return r(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;r(t=e)}else i()}}t.exports=function(t,e){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(e=e||{}).attrs="object"==typeof e.attrs?e.attrs:{},e.singleton||"boolean"==typeof e.singleton||(e.singleton=a()),e.insertInto||(e.insertInto="head"),e.insertAt||(e.insertAt="bottom");var n=h(t,e);return p(n,e),function(t){for(var r=[],i=0;i=200&&t<300}};c.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(t){c.headers[t]={}})),r.forEach(["post","put","patch"],(function(t){c.headers[t]=r.merge(o)})),t.exports=c}).call(this,n(10))},function(t,e,n){t.exports=n(28)},function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function d(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&p())}function p(){if(!l){var t=s(d);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f1)for(var n=1;nn.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(i=0;i div[data-v-61d92e31] {\n cursor: pointer;\n padding: 3px 6px;\n width: 100%;\n}\n.ti-selected-item[data-v-61d92e31] {\n background-color: #5C6BC0;\n color: #fff;\n}\n',"",{version:3,sources:["C:/Users/johan/dev/vue-tags-input/vue-tags-input/C:/Users/johan/dev/vue-tags-input/vue-tags-input/vue-tags-input.scss"],names:[],mappings:"AAAA;EACE,uBAAuB;EACvB,mCAA8C;EAC9C,+JAAuM;EACvM,oBAAoB;EACpB,mBAAmB;CAAE;AAEvB;EACE,kCAAkC;EAClC,YAAY;EACZ,mBAAmB;EACnB,oBAAoB;EACpB,qBAAqB;EACrB,qBAAqB;EACrB,eAAe;EACf,oCAAoC;EACpC,mCAAmC;CAAE;AAEvC;EACE,iBAAiB;CAAE;AAErB;EACE,iBAAiB;CAAE;AAErB;EACE,iBAAiB;CAAE;AAErB;EACE,YAAY;EACZ,aAAa;EACb,sBAAsB;CAAE;AAE1B;EACE,uBAAuB;CAAE;AAE3B;EACE,cAAc;CAAE;AAElB;EACE,8BAA8B;CAAE;AAElC;EACE,iBAAiB;EACjB,mBAAmB;EACnB,uBAAuB;CAAE;AAE3B;EACE,aAAa;CAAE;AACf;IACE,gBAAgB;CAAE;AAEtB;EACE,uBAAuB;EACvB,cAAc;EACd,aAAa;EACb,gBAAgB;CAAE;AAEpB;EACE,cAAc;EACd,gBAAgB;EAChB,YAAY;EACZ,iBAAiB;CAAE;AAErB;EACE,0BAA0B;EAC1B,YAAY;EACZ,mBAAmB;EACnB,cAAc;EACd,iBAAiB;EACjB,YAAY;EACZ,iBAAiB;CAAE;AACnB;IACE,cAAc;CAAE;AAClB;IACE,cAAc;IACd,oBAAoB;CAAE;AACxB;IACE,mBAAmB;CAAE;AACvB;IACE,mBAAmB;CAAE;AACvB;IACE,mBAAmB;IACnB,mBAAmB;IACnB,YAAY;IACZ,iBAAiB;CAAE;AACrB;IACE,iBAAiB;IACjB,cAAc;IACd,oBAAoB;IACpB,kBAAkB;CAAE;AACpB;MACE,gBAAgB;CAAE;AACtB;IACE,kBAAkB;CAAE;AACtB;IACE,0BAA0B;CAAE;AAEhC;EACE,cAAc;EACd,eAAe;EACf,iBAAiB;EACjB,YAAY;EACZ,iBAAiB;CAAE;AACnB;IACE,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,YAAY;CAAE;AAElB;EACE,qBAAqB;CAAE;AAEzB;EACE,uBAAuB;EACvB,iBAAiB;EACjB,mBAAmB;EACnB,YAAY;EACZ,uBAAuB;EACvB,YAAY;CAAE;AAEhB;EACE,gBAAgB;EAChB,iBAAiB;EACjB,YAAY;CAAE;AAEhB;EACE,0BAA0B;EAC1B,YAAY;CAAE",file:"vue-tags-input.scss?vue&type=style&index=0&id=61d92e31&lang=scss&scoped=true&",sourcesContent:['@font-face {\n font-family: \'icomoon\';\n src: url("./assets/fonts/icomoon.eot?7grlse");\n src: url("./assets/fonts/icomoon.eot?7grlse#iefix") format("embedded-opentype"), url("./assets/fonts/icomoon.ttf?7grlse") format("truetype"), url("./assets/fonts/icomoon.woff?7grlse") format("woff");\n font-weight: normal;\n font-style: normal; }\n\n[class^="ti-icon-"], [class*=" ti-icon-"] {\n font-family: \'icomoon\' !important;\n speak: none;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale; }\n\n.ti-icon-check:before {\n content: "\\e902"; }\n\n.ti-icon-close:before {\n content: "\\e901"; }\n\n.ti-icon-undo:before {\n content: "\\e900"; }\n\nul {\n margin: 0px;\n padding: 0px;\n list-style-type: none; }\n\n*, *:before, *:after {\n box-sizing: border-box; }\n\ninput:focus {\n outline: none; }\n\ninput[disabled] {\n background-color: transparent; }\n\n.vue-tags-input {\n max-width: 450px;\n position: relative;\n background-color: #fff; }\n\ndiv.vue-tags-input.disabled {\n opacity: 0.5; }\n div.vue-tags-input.disabled * {\n cursor: default; }\n\n.ti-input {\n border: 1px solid #ccc;\n display: flex;\n padding: 4px;\n flex-wrap: wrap; }\n\n.ti-tags {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n line-height: 1em; }\n\n.ti-tag {\n background-color: #5C6BC0;\n color: #fff;\n border-radius: 2px;\n display: flex;\n padding: 3px 5px;\n margin: 2px;\n font-size: .85em; }\n .ti-tag:focus {\n outline: none; }\n .ti-tag .ti-content {\n display: flex;\n align-items: center; }\n .ti-tag .ti-tag-center {\n position: relative; }\n .ti-tag span {\n line-height: .85em; }\n .ti-tag span.ti-hidden {\n padding-left: 14px;\n visibility: hidden;\n height: 0px;\n white-space: pre; }\n .ti-tag .ti-actions {\n margin-left: 2px;\n display: flex;\n align-items: center;\n font-size: 1.15em; }\n .ti-tag .ti-actions i {\n cursor: pointer; }\n .ti-tag:last-child {\n margin-right: 4px; }\n .ti-tag.ti-invalid, .ti-tag.ti-tag.ti-deletion-mark {\n background-color: #e54d42; }\n\n.ti-new-tag-input-wrapper {\n display: flex;\n flex: 1 0 auto;\n padding: 3px 5px;\n margin: 2px;\n font-size: .85em; }\n .ti-new-tag-input-wrapper input {\n flex: 1 0 auto;\n min-width: 100px;\n border: none;\n padding: 0px;\n margin: 0px; }\n\n.ti-new-tag-input {\n line-height: initial; }\n\n.ti-autocomplete {\n border: 1px solid #ccc;\n border-top: none;\n position: absolute;\n width: 100%;\n background-color: #fff;\n z-index: 20; }\n\n.ti-item > div {\n cursor: pointer;\n padding: 3px 6px;\n width: 100%; }\n\n.ti-selected-item {\n background-color: #5C6BC0;\n color: #fff; }\n'],sourceRoot:""}])},function(t,e,n){"use strict";t.exports=function(t){return"string"!=typeof t?t:(/^['"].*['"]$/.test(t)&&(t=t.slice(1,-1)),/["'() \t\n]/.test(t)?'"'+t.replace(/"/g,'\\"').replace(/\n/g,"\\n")+'"':t)}},function(t,e){t.exports="data:font/ttf;base64,AAEAAAALAIAAAwAwT1MvMg8SBawAAAC8AAAAYGNtYXAXVtKJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZqWfozAAAAF4AAAA/GhlYWQPxZgIAAACdAAAADZoaGVhB4ADyAAAAqwAAAAkaG10eBIAAb4AAALQAAAAHGxvY2EAkgDiAAAC7AAAABBtYXhwAAkAHwAAAvwAAAAgbmFtZZlKCfsAAAMcAAABhnBvc3QAAwAAAAAEpAAAACAAAwOAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6QL//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAFYBAQO+AoEAHAAAATIXHgEXFhcHJicuAScmIyIGBxchERc2Nz4BNzYCFkpDQ28pKRdkECAfVTM0OT9wLZz+gJgdIiJLKSgCVRcYUjg5QiAzKys+ERIrJZoBgJoZFRQcCAgAAQDWAIEDKgLVAAsAAAEHFwcnByc3JzcXNwMq7u487u487u487u4Cme7uPO7uPO7uPO7uAAEAkgCBA4ACvQAFAAAlARcBJzcBgAHEPP4A7jz5AcQ8/gDuPAAAAAABAAAAAAAAH8nTUV8PPPUACwQAAAAAANZ1KhsAAAAA1nUqGwAAAAADvgLVAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAO+AAEAAAAAAAAAAAAAAAAAAAAHBAAAAAAAAAAAAAAAAgAAAAQAAFYEAADWBAAAkgAAAAAACgAUAB4AUABqAH4AAQAAAAcAHQABAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAcAAAABAAAAAAACAAcAYAABAAAAAAADAAcANgABAAAAAAAEAAcAdQABAAAAAAAFAAsAFQABAAAAAAAGAAcASwABAAAAAAAKABoAigADAAEECQABAA4ABwADAAEECQACAA4AZwADAAEECQADAA4APQADAAEECQAEAA4AfAADAAEECQAFABYAIAADAAEECQAGAA4AUgADAAEECQAKADQApGljb21vb24AaQBjAG8AbQBvAG8AblZlcnNpb24gMS4wAFYAZQByAHMAaQBvAG4AIAAxAC4AMGljb21vb24AaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AblJlZ3VsYXIAUgBlAGcAdQBsAGEAcmljb21vb24AaQBjAG8AbQBvAG8AbkZvbnQgZ2VuZXJhdGVkIGJ5IEljb01vb24uAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="},function(t,e){t.exports="data:font/woff;base64,d09GRgABAAAAAAUQAAsAAAAABMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDxIFrGNtYXAAAAFoAAAAVAAAAFQXVtKJZ2FzcAAAAbwAAAAIAAAACAAAABBnbHlmAAABxAAAAPwAAAD8pZ+jMGhlYWQAAALAAAAANgAAADYPxZgIaGhlYQAAAvgAAAAkAAAAJAeAA8hobXR4AAADHAAAABwAAAAcEgABvmxvY2EAAAM4AAAAEAAAABAAkgDibWF4cAAAA0gAAAAgAAAAIAAJAB9uYW1lAAADaAAAAYYAAAGGmUoJ+3Bvc3QAAATwAAAAIAAAACAAAwAAAAMDgAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA6QIDwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADgAAAAKAAgAAgACAAEAIOkC//3//wAAAAAAIOkA//3//wAB/+MXBAADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQBWAQEDvgKBABwAAAEyFx4BFxYXByYnLgEnJiMiBgcXIREXNjc+ATc2AhZKQ0NvKSkXZBAgH1UzNDk/cC2c/oCYHSIiSykoAlUXGFI4OUIgMysrPhESKyWaAYCaGRUUHAgIAAEA1gCBAyoC1QALAAABBxcHJwcnNyc3FzcDKu7uPO7uPO7uPO7uApnu7jzu7jzu7jzu7gABAJIAgQOAAr0ABQAAJQEXASc3AYABxDz+AO48+QHEPP4A7jwAAAAAAQAAAAAAAB/J01FfDzz1AAsEAAAAAADWdSobAAAAANZ1KhsAAAAAA74C1QAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADvgABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABWBAAA1gQAAJIAAAAAAAoAFAAeAFAAagB+AAEAAAAHAB0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAHAAAAAQAAAAAAAgAHAGAAAQAAAAAAAwAHADYAAQAAAAAABAAHAHUAAQAAAAAABQALABUAAQAAAAAABgAHAEsAAQAAAAAACgAaAIoAAwABBAkAAQAOAAcAAwABBAkAAgAOAGcAAwABBAkAAwAOAD0AAwABBAkABAAOAHwAAwABBAkABQAWACAAAwABBAkABgAOAFIAAwABBAkACgA0AKRpY29tb29uAGkAYwBvAG0AbwBvAG5WZXJzaW9uIDEuMABWAGUAcgBzAGkAbwBuACAAMQAuADBpY29tb29uAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG5SZWd1bGFyAFIAZQBnAHUAbABhAHJpY29tb29uAGkAYwBvAG0AbwBvAG5Gb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"},function(t,e,n){"use strict";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"vue-tags-input",class:[{"ti-disabled":t.disabled},{"ti-focus":t.focused}]},[n("div",{staticClass:"ti-input"},[t.tagsCopy?n("ul",{staticClass:"ti-tags"},[t._l(t.tagsCopy,(function(e,r){return n("li",{key:r,staticClass:"ti-tag",class:[{"ti-editing":t.tagsEditStatus[r]},e.tiClasses,e.classes,{"ti-deletion-mark":t.isMarked(r)}],style:e.style,attrs:{tabindex:"0"},on:{click:function(n){return t.$emit("tag-clicked",{tag:e,index:r})}}},[n("div",{staticClass:"ti-content"},[t.$scopedSlots["tag-left"]?n("div",{staticClass:"ti-tag-left"},[t._t("tag-left",null,{tag:e,index:r,edit:t.tagsEditStatus[r],performSaveEdit:t.performSaveTag,performDelete:t.performDeleteTag,performCancelEdit:t.cancelEdit,performOpenEdit:t.performEditTag,deletionMark:t.isMarked(r)})],2):t._e(),t._v(" "),n("div",{ref:"tagCenter",refInFor:!0,staticClass:"ti-tag-center"},[t.$scopedSlots["tag-center"]?t._e():n("span",{class:{"ti-hidden":t.tagsEditStatus[r]},on:{click:function(e){return t.performEditTag(r)}}},[t._v(t._s(e.text))]),t._v(" "),t.$scopedSlots["tag-center"]?t._e():n("tag-input",{attrs:{scope:{edit:t.tagsEditStatus[r],maxlength:t.maxlength,tag:e,index:r,validateTag:t.createChangedTag,performCancelEdit:t.cancelEdit,performSaveEdit:t.performSaveTag}}}),t._v(" "),t._t("tag-center",null,{tag:e,index:r,maxlength:t.maxlength,edit:t.tagsEditStatus[r],performSaveEdit:t.performSaveTag,performDelete:t.performDeleteTag,performCancelEdit:t.cancelEdit,validateTag:t.createChangedTag,performOpenEdit:t.performEditTag,deletionMark:t.isMarked(r)})],2),t._v(" "),t.$scopedSlots["tag-right"]?n("div",{staticClass:"ti-tag-right"},[t._t("tag-right",null,{tag:e,index:r,edit:t.tagsEditStatus[r],performSaveEdit:t.performSaveTag,performDelete:t.performDeleteTag,performCancelEdit:t.cancelEdit,performOpenEdit:t.performEditTag,deletionMark:t.isMarked(r)})],2):t._e()]),t._v(" "),n("div",{staticClass:"ti-actions"},[t.$scopedSlots["tag-actions"]?t._e():n("i",{directives:[{name:"show",rawName:"v-show",value:t.tagsEditStatus[r],expression:"tagsEditStatus[index]"}],staticClass:"ti-icon-undo",on:{click:function(e){return t.cancelEdit(r)}}}),t._v(" "),t.$scopedSlots["tag-actions"]?t._e():n("i",{directives:[{name:"show",rawName:"v-show",value:!t.tagsEditStatus[r],expression:"!tagsEditStatus[index]"}],staticClass:"ti-icon-close",on:{click:function(e){return t.performDeleteTag(r)}}}),t._v(" "),t.$scopedSlots["tag-actions"]?t._t("tag-actions",null,{tag:e,index:r,edit:t.tagsEditStatus[r],performSaveEdit:t.performSaveTag,performDelete:t.performDeleteTag,performCancelEdit:t.cancelEdit,performOpenEdit:t.performEditTag,deletionMark:t.isMarked(r)}):t._e()],2)])})),t._v(" "),n("li",{staticClass:"ti-new-tag-input-wrapper"},[n("input",t._b({ref:"newTagInput",staticClass:"ti-new-tag-input",class:[t.createClasses(t.newTag,t.tags,t.validation,t.isDuplicate)],attrs:{placeholder:t.placeholder,maxlength:t.maxlength,disabled:t.disabled,type:"text",size:"1"},domProps:{value:t.newTag},on:{keydown:[function(e){return t.performAddTags(t.filteredAutocompleteItems[t.selectedItem]||t.newTag,e)},function(e){return e.type.indexOf("key")||8===e.keyCode?t.invokeDelete(e):null},function(e){return e.type.indexOf("key")||9===e.keyCode?t.performBlur(e):null},function(e){return e.type.indexOf("key")||38===e.keyCode?t.selectItem(e,"before"):null},function(e){return e.type.indexOf("key")||40===e.keyCode?t.selectItem(e,"after"):null}],paste:t.addTagsFromPaste,input:t.updateNewTag,blur:function(e){return t.$emit("blur",e)},focus:function(e){t.focused=!0,t.$emit("focus",e)},click:function(e){!t.addOnlyFromAutocomplete&&(t.selectedItem=null)}}},"input",t.$attrs,!1))])],2):t._e()]),t._v(" "),t._t("between-elements"),t._v(" "),t.autocompleteOpen?n("div",{staticClass:"ti-autocomplete",on:{mouseout:function(e){t.selectedItem=null}}},[t._t("autocomplete-header"),t._v(" "),n("ul",t._l(t.filteredAutocompleteItems,(function(e,r){return n("li",{key:r,staticClass:"ti-item",class:[e.tiClasses,e.classes,{"ti-selected-item":t.isSelected(r)}],style:e.style,on:{mouseover:function(e){!t.disabled&&(t.selectedItem=r)}}},[t.$scopedSlots["autocomplete-item"]?t._t("autocomplete-item",null,{item:e,index:r,performAdd:function(e){return t.performAddTags(e,void 0,"autocomplete")},selected:t.isSelected(r)}):n("div",{on:{click:function(n){return t.performAddTags(e,void 0,"autocomplete")}}},[t._v("\n "+t._s(e.text)+"\n ")])],2)})),0),t._v(" "),t._t("autocomplete-footer")],2):t._e()],2)};r._withStripped=!0;var i=n(5),o=n.n(i),a=function(t){return JSON.parse(JSON.stringify(t))},s=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=arguments.length>3?arguments[3]:void 0;void 0===t.text&&(t={text:t});var i=function(t,e){return e.filter((function(e){var n=t.text;return"string"==typeof e.rule?!new RegExp(e.rule).test(n):e.rule instanceof RegExp?!e.rule.test(n):"[object Function]"==={}.toString.call(e.rule)?e.rule(t):void 0})).map((function(t){return t.classes}))}(t,n),o=function(t,e){for(var n=0;n1?n-1:0),i=1;i1?e-1:0),r=1;r=this.autocompleteMinLength&&this.filteredAutocompleteItems.length>0&&this.focused},filteredAutocompleteItems:function(){var t=this,e=this.autocompleteItems.map((function(e){return c(e,t.tags,t.validation,t.isDuplicate)}));return this.autocompleteFilterDuplicates?e.filter(this.duplicateFilter):e}},methods:{createClasses:s,getSelectedIndex:function(t){var e=this.filteredAutocompleteItems,n=this.selectedItem,r=e.length-1;if(0!==e.length)return null===n?0:"before"===t&&0===n?r:"after"===t&&n===r?0:"after"===t?n+1:n-1},selectDefaultItem:function(){this.addOnlyFromAutocomplete&&this.filteredAutocompleteItems.length>0?this.selectedItem=0:this.selectedItem=null},selectItem:function(t,e){t.preventDefault(),this.selectedItem=this.getSelectedIndex(e)},isSelected:function(t){return this.selectedItem===t},isMarked:function(t){return this.deletionMark===t},invokeDelete:function(){var t=this;if(this.deleteOnBackspace&&!(this.newTag.length>0)){var e=this.tagsCopy.length-1;null===this.deletionMark?(this.deletionMarkTime=setTimeout((function(){return t.deletionMark=null}),1e3),this.deletionMark=e):this.performDeleteTag(e)}},addTagsFromPaste:function(){var t=this;this.addFromPaste&&setTimeout((function(){return t.performAddTags(t.newTag)}),10)},performEditTag:function(t){var e=this;this.allowEditTags&&(this._events["before-editing-tag"]||this.editTag(t),this.$emit("before-editing-tag",{index:t,tag:this.tagsCopy[t],editTag:function(){return e.editTag(t)}}))},editTag:function(t){this.allowEditTags&&(this.toggleEditMode(t),this.focus(t))},toggleEditMode:function(t){this.allowEditTags&&!this.disabled&&this.$set(this.tagsEditStatus,t,!this.tagsEditStatus[t])},createChangedTag:function(t,e){var n=this.tagsCopy[t];n.text=e?e.target.value:this.tagsCopy[t].text,this.$set(this.tagsCopy,t,c(n,this.tagsCopy,this.validation,this.isDuplicate))},focus:function(t){var e=this;this.$nextTick((function(){var n=e.$refs.tagCenter[t].querySelector("input.ti-tag-input");n&&n.focus()}))},quote:function(t){return t.replace(/([()[{*+.$^\\|?])/g,"\\$1")},cancelEdit:function(t){this.tags[t]&&(this.tagsCopy[t]=a(c(this.tags[t],this.tags,this.validation,this.isDuplicate)),this.$set(this.tagsEditStatus,t,!1))},hasForbiddingAddRule:function(t){var e=this;return t.some((function(t){var n=e.validation.find((function(e){return t===e.classes}));return!!n&&n.disableAdd}))},createTagTexts:function(t){var e=this,n=new RegExp(this.separators.map((function(t){return e.quote(t)})).join("|"));return t.split(n).map((function(t){return{text:t}}))},performDeleteTag:function(t){var e=this;this._events["before-deleting-tag"]||this.deleteTag(t),this.$emit("before-deleting-tag",{index:t,tag:this.tagsCopy[t],deleteTag:function(){return e.deleteTag(t)}})},deleteTag:function(t){this.disabled||(this.deletionMark=null,clearTimeout(this.deletionMarkTime),this.tagsCopy.splice(t,1),this._events["update:tags"]&&this.$emit("update:tags",this.tagsCopy),this.$emit("tags-changed",this.tagsCopy))},noTriggerKey:function(t,e){var n=-1!==this[e].indexOf(t.keyCode)||-1!==this[e].indexOf(t.key);return n&&t.preventDefault(),!n},performAddTags:function(t,e,n){var r=this;if(!(this.disabled||e&&this.noTriggerKey(e,"addOnKey"))){var i=[];"object"===y(t)&&(i=[t]),"string"==typeof t&&(i=this.createTagTexts(t)),(i=i.filter((function(t){return t.text.trim().length>0}))).forEach((function(t){t=c(t,r.tags,r.validation,r.isDuplicate),r._events["before-adding-tag"]||r.addTag(t,n),r.$emit("before-adding-tag",{tag:t,addTag:function(){return r.addTag(t,n)}})}))}},duplicateFilter:function(t){return this.isDuplicate?!this.isDuplicate(this.tagsCopy,t):!this.tagsCopy.find((function(e){return e.text===t.text}))},addTag:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"new-tag-input",r=this.filteredAutocompleteItems.map((function(t){return t.text}));this.addOnlyFromAutocomplete&&-1===r.indexOf(t.text)||this.$nextTick((function(){return e.maxTags&&e.maxTags<=e.tagsCopy.length?e.$emit("max-tags-reached",t):e.avoidAddingDuplicates&&!e.duplicateFilter(t)?e.$emit("adding-duplicate",t):void(e.hasForbiddingAddRule(t.tiClasses)||(e.$emit("input",""),e.tagsCopy.push(t),e._events["update:tags"]&&e.$emit("update:tags",e.tagsCopy),"autocomplete"===n&&e.$refs.newTagInput.focus(),e.$emit("tags-changed",e.tagsCopy)))}))},performSaveTag:function(t,e){var n=this,r=this.tagsCopy[t];this.disabled||e&&this.noTriggerKey(e,"addOnKey")||0!==r.text.trim().length&&(this._events["before-saving-tag"]||this.saveTag(t,r),this.$emit("before-saving-tag",{index:t,tag:r,saveTag:function(){return n.saveTag(t,r)}}))},saveTag:function(t,e){if(this.avoidAddingDuplicates){var n=a(this.tagsCopy),r=n.splice(t,1)[0];if(this.isDuplicate?this.isDuplicate(n,r):-1!==n.map((function(t){return t.text})).indexOf(r.text))return this.$emit("saving-duplicate",e)}this.hasForbiddingAddRule(e.tiClasses)||(this.$set(this.tagsCopy,t,e),this.toggleEditMode(t),this._events["update:tags"]&&this.$emit("update:tags",this.tagsCopy),this.$emit("tags-changed",this.tagsCopy))},tagsEqual:function(){var t=this;return!this.tagsCopy.some((function(e,n){return!o()(e,t.tags[n])}))},updateNewTag:function(t){var e=t.target.value;this.newTag=e,this.$emit("input",e)},initTags:function(){this.tagsCopy=u(this.tags,this.validation,this.isDuplicate),this.tagsEditStatus=a(this.tags).map((function(){return!1})),this._events["update:tags"]&&!this.tagsEqual()&&this.$emit("update:tags",this.tagsCopy)},blurredOnClick:function(t){this.$el.contains(t.target)||this.$el.contains(document.activeElement)||this.performBlur(t)},performBlur:function(){this.addOnBlur&&this.focused&&this.performAddTags(this.newTag),this.focused=!1}},watch:{value:function(t){this.addOnlyFromAutocomplete||(this.selectedItem=null),this.newTag=t},tags:{handler:function(){this.initTags()},deep:!0},autocompleteOpen:"selectDefaultItem"},created:function(){this.newTag=this.value,this.initTags()},mounted:function(){this.selectDefaultItem(),document.addEventListener("click",this.blurredOnClick)},destroyed:function(){document.removeEventListener("click",this.blurredOnClick)}},_=(n(9),d(A,r,[],!1,null,"61d92e31",null));_.options.__file="vue-tags-input/vue-tags-input.vue";var b=_.exports;n.d(e,"VueTagsInput",(function(){return b})),n.d(e,"createClasses",(function(){return s})),n.d(e,"createTag",(function(){return c})),n.d(e,"createTags",(function(){return u})),n.d(e,"TagInput",(function(){return h})),b.install=function(t){return t.component(b.name,b)},"undefined"!=typeof window&&window.Vue&&window.Vue.use(b),e.default=b}])},function(t,e,n){t.exports=n(68)},function(t,e,n){"use strict";(function(e,n){var r=Object.freeze({});function i(t){return null==t}function o(t){return null!=t}function a(t){return!0===t}function s(t){return"string"==typeof t||"number"==typeof t||"symbol"==typeof t||"boolean"==typeof t}function c(t){return null!==t&&"object"==typeof t}var u=Object.prototype.toString;function l(t){return"[object Object]"===u.call(t)}function f(t){var e=parseFloat(String(t));return e>=0&&Math.floor(e)===e&&isFinite(t)}function d(t){return o(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function p(t){return null==t?"":Array.isArray(t)||l(t)&&t.toString===u?JSON.stringify(t,null,2):String(t)}function h(t){var e=parseFloat(t);return isNaN(e)?t:e}function v(t,e){for(var n=Object.create(null),r=t.split(","),i=0;i-1)return t.splice(n,1)}}var A=Object.prototype.hasOwnProperty;function _(t,e){return A.call(t,e)}function b(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var w=/-(\w)/g,x=b((function(t){return t.replace(w,(function(t,e){return e?e.toUpperCase():""}))})),C=b((function(t){return t.charAt(0).toUpperCase()+t.slice(1)})),k=/\B([A-Z])/g,T=b((function(t){return t.replace(k,"-$1").toLowerCase()})),E=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function $(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function S(t,e){for(var n in e)t[n]=e[n];return t}function D(t){for(var e={},n=0;n0,Z=G&&G.indexOf("edge/")>0,X=(G&&G.indexOf("android"),G&&/iphone|ipad|ipod|ios/.test(G)||"ios"===Y),tt=(G&&/chrome\/\d+/.test(G),G&&/phantomjs/.test(G),G&&G.match(/firefox\/(\d+)/)),et={}.watch,nt=!1;if(V)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){nt=!0}}),window.addEventListener("test-passive",null,rt)}catch(r){}var it=function(){return void 0===U&&(U=!V&&!Q&&void 0!==e&&e.process&&"server"===e.process.env.VUE_ENV),U},ot=V&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var st,ct="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);st="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var ut=B,lt=0,ft=function(){this.id=lt++,this.subs=[]};ft.prototype.addSub=function(t){this.subs.push(t)},ft.prototype.removeSub=function(t){y(this.subs,t)},ft.prototype.depend=function(){ft.target&&ft.target.addDep(this)},ft.prototype.notify=function(){for(var t=this.subs.slice(),e=0,n=t.length;e-1)if(o&&!_(i,"default"))a=!1;else if(""===a||a===T(t)){var c=zt(String,i.type);(c<0||s0&&(le((c=t(c,(n||"")+"_"+r))[0])&&le(l)&&(f[u]=yt(l.text+c[0].text),c.shift()),f.push.apply(f,c)):s(c)?le(l)?f[u]=yt(l.text+c):""!==c&&f.push(yt(c)):le(c)&&le(l)?f[u]=yt(l.text+c.text):(a(e._isVList)&&o(c.tag)&&i(c.key)&&o(n)&&(c.key="__vlist"+n+"_"+r+"__"),f.push(c)));return f}(t):void 0}function le(t){return o(t)&&o(t.text)&&!1===t.isComment}function fe(t,e){if(t){for(var n=Object.create(null),r=ct?Reflect.ownKeys(t):Object.keys(t),i=0;i0,a=t?!!t.$stable:!o,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(a&&n&&n!==r&&s===n.$key&&!o&&!n.$hasNormal)return n;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=ve(e,c,t[c]))}else i={};for(var u in e)u in i||(i[u]=me(e,u));return t&&Object.isExtensible(t)&&(t._normalized=i),H(i,"$stable",a),H(i,"$key",s),H(i,"$hasNormal",o),i}function ve(t,e,n){var r=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:ue(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:r,enumerable:!0,configurable:!0}),r}function me(t,e){return function(){return t[e]}}function ge(t,e){var n,r,i,a,s;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),r=0,i=t.length;rdocument.createEvent("Event").timeStamp&&(ln=function(){return fn.now()})}function dn(){var t,e;for(un=ln(),sn=!0,nn.sort((function(t,e){return t.id-e.id})),cn=0;cncn&&nn[n].id>t.id;)n--;nn.splice(n+1,0,t)}else nn.push(t);an||(an=!0,ee(dn))}}(this)},hn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||c(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},hn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},hn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},hn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var vn={enumerable:!0,configurable:!0,get:B,set:B};function mn(t,e,n){vn.get=function(){return this[e][n]},vn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,vn)}var gn={lazy:!0};function yn(t,e,n){var r=!it();"function"==typeof n?(vn.get=r?An(e):_n(n),vn.set=B):(vn.get=n.get?r&&!1!==n.cache?An(e):_n(n.get):B,vn.set=n.set||B),Object.defineProperty(t,e,vn)}function An(t){return function(){var e=this._computedWatchers&&this._computedWatchers[t];if(e)return e.dirty&&e.evaluate(),ft.target&&e.depend(),e.value}}function _n(t){return function(){return t.call(this,this)}}function bn(t,e,n,r){return l(n)&&(r=n,n=n.handler),"string"==typeof n&&(n=t[n]),t.$watch(e,n,r)}var wn=0;function xn(t){var e=t.options;if(t.super){var n=xn(t.super);if(n!==t.superOptions){t.superOptions=n;var r=function(t){var e,n=t.options,r=t.sealedOptions;for(var i in n)n[i]!==r[i]&&(e||(e={}),e[i]=n[i]);return e}(t);r&&S(t.extendOptions,r),(e=t.options=Ft(n,t.extendOptions)).name&&(e.components[e.name]=t)}}return e}function Cn(t){this._init(t)}function kn(t){return t&&(t.Ctor.options.name||t.tag)}function Tn(t,e){return Array.isArray(t)?t.indexOf(e)>-1:"string"==typeof t?t.split(",").indexOf(e)>-1:(n=t,"[object RegExp]"===u.call(n)&&t.test(e));var n}function En(t,e){var n=t.cache,r=t.keys,i=t._vnode;for(var o in n){var a=n[o];if(a){var s=kn(a.componentOptions);s&&!e(s)&&$n(n,o,r,i)}}}function $n(t,e,n,r){var i=t[e];!i||r&&i.tag===r.tag||i.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=wn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),r=e._parentVnode;n.parent=e.parent,n._parentVnode=r;var i=r.componentOptions;n.propsData=i.propsData,n._parentListeners=i.listeners,n._renderChildren=i.children,n._componentTag=i.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ft(xn(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Ke(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,n=t.$vnode=e._parentVnode,i=n&&n.context;t.$slots=de(e._renderChildren,i),t.$scopedSlots=r,t._c=function(e,n,r,i){return ze(t,e,n,r,i,!1)},t.$createElement=function(e,n,r,i){return ze(t,e,n,r,i,!0)};var o=n&&n.data;Et(t,"$attrs",o&&o.attrs||r,null,!0),Et(t,"$listeners",e._parentListeners||r,null,!0)}(e),en(e,"beforeCreate"),function(t){var e=fe(t.$options.inject,t);e&&(Ct(!1),Object.keys(e).forEach((function(n){Et(t,n,e[n])})),Ct(!0))}(e),function(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},r=t._props={},i=t.$options._propKeys=[];t.$parent&&Ct(!1);var o=function(o){i.push(o);var a=Mt(o,e,n,t);Et(r,o,a),o in t||mn(t,"_props",o)};for(var a in e)o(a);Ct(!0)}(t,e.props),e.methods&&function(t,e){for(var n in t.$options.props,e)t[n]="function"!=typeof e[n]?B:E(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;l(e=t._data="function"==typeof e?function(t,e){pt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{ht()}}(e,t):e||{})||(e={});for(var n,r=Object.keys(e),i=t.$options.props,o=(t.$options.methods,r.length);o--;){var a=r[o];i&&_(i,a)||(void 0,36!==(n=(a+"").charCodeAt(0))&&95!==n&&mn(t,"_data",a))}Tt(e,!0)}(t):Tt(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),r=it();for(var i in e){var o=e[i],a="function"==typeof o?o:o.get;r||(n[i]=new hn(t,a||B,B,gn)),i in t||yn(t,i,o)}}(t,e.computed),e.watch&&e.watch!==et&&function(t,e){for(var n in e){var r=e[n];if(Array.isArray(r))for(var i=0;i1?$(e):e;for(var n=$(arguments,1),r='event handler for "'+t+'"',i=0,o=e.length;iparseInt(this.max)&&$n(a,s[0],s,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return R}};Object.defineProperty(t,"config",e),t.util={warn:ut,extend:S,mergeOptions:Ft,defineReactive:Et},t.set=$t,t.delete=St,t.nextTick=ee,t.observable=function(t){return Tt(t),t},t.options=Object.create(null),M.forEach((function(e){t.options[e+"s"]=Object.create(null)})),t.options._base=t,S(t.options.components,Dn),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=$(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ft(this.options,t),this}}(t),function(t){t.cid=0;var e=1;t.extend=function(t){t=t||{};var n=this,r=n.cid,i=t._Ctor||(t._Ctor={});if(i[r])return i[r];var o=t.name||n.options.name,a=function(t){this._init(t)};return(a.prototype=Object.create(n.prototype)).constructor=a,a.cid=e++,a.options=Ft(n.options,t),a.super=n,a.options.props&&function(t){var e=t.options.props;for(var n in e)mn(t.prototype,"_props",n)}(a),a.options.computed&&function(t){var e=t.options.computed;for(var n in e)yn(t.prototype,n,e[n])}(a),a.extend=n.extend,a.mixin=n.mixin,a.use=n.use,M.forEach((function(t){a[t]=n[t]})),o&&(a.options.components[o]=a),a.superOptions=n.options,a.extendOptions=t,a.sealedOptions=S({},a.options),i[r]=a,a}}(t),function(t){M.forEach((function(e){t[e]=function(t,n){return n?("component"===e&&l(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}}))}(t)}(Cn),Object.defineProperty(Cn.prototype,"$isServer",{get:it}),Object.defineProperty(Cn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Cn,"FunctionalRenderContext",{value:Oe}),Cn.version="2.6.10";var Bn=v("style,class"),On=v("input,textarea,option,select,progress"),In=function(t,e,n){return"value"===n&&On(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Nn=v("contenteditable,draggable,spellcheck"),jn=v("events,caret,typing,plaintext-only"),Fn=function(t,e){return zn(e)||"false"===e?"false":"contenteditable"===t&&jn(e)?e:"true"},Pn=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Mn="http://www.w3.org/1999/xlink",Ln=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Rn=function(t){return Ln(t)?t.slice(6,t.length):""},zn=function(t){return null==t||!1===t};function Hn(t,e){return{staticClass:Un(t.staticClass,e.staticClass),class:o(t.class)?[t.class,e.class]:e.class}}function Un(t,e){return t?e?t+" "+e:t:e||""}function qn(t){return Array.isArray(t)?function(t){for(var e,n="",r=0,i=t.length;r-1?vr(t,e,n):Pn(e)?zn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Nn(e)?t.setAttribute(e,Fn(e,n)):Ln(e)?zn(n)?t.removeAttributeNS(Mn,Rn(e)):t.setAttributeNS(Mn,e,n):vr(t,e,n)}function vr(t,e,n){if(zn(n))t.removeAttribute(e);else{if(K&&!J&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var r=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",r)};t.addEventListener("input",r),t.__ieph=!0}t.setAttribute(e,n)}}var mr={create:pr,update:pr};function gr(t,e){var n=e.elm,r=e.data,a=t.data;if(!(i(r.staticClass)&&i(r.class)&&(i(a)||i(a.staticClass)&&i(a.class)))){var s=function(t){for(var e=t.data,n=t,r=t;o(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(e=Hn(r.data,e));for(;o(n=n.parent);)n&&n.data&&(e=Hn(e,n.data));return function(t,e){return o(t)||o(e)?Un(t,qn(e)):""}(e.staticClass,e.class)}(e),c=n._transitionClasses;o(c)&&(s=Un(s,qn(c))),s!==n._prevClass&&(n.setAttribute("class",s),n._prevClass=s)}}var yr,Ar,_r,br,wr,xr,Cr={create:gr,update:gr},kr=/[\w).+\-_$\]]/;function Tr(t){var e,n,r,i,o,a=!1,s=!1,c=!1,u=!1,l=0,f=0,d=0,p=0;for(r=0;r=0&&" "===(v=t.charAt(h));h--);v&&kr.test(v)||(u=!0)}}else void 0===i?(p=r+1,i=t.slice(0,r).trim()):m();function m(){(o||(o=[])).push(t.slice(p,r).trim()),p=r+1}if(void 0===i?i=t.slice(0,r).trim():0!==p&&m(),o)for(r=0;r-1?{exp:t.slice(0,br),key:'"'+t.slice(br+1)+'"'}:{exp:t,key:null};for(Ar=t,br=wr=xr=0;!Ur();)qr(_r=Hr())?Vr(_r):91===_r&&Wr(_r);return{exp:t.slice(0,wr),key:t.slice(wr+1,xr)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Hr(){return Ar.charCodeAt(++br)}function Ur(){return br>=yr}function qr(t){return 34===t||39===t}function Wr(t){var e=1;for(wr=br;!Ur();)if(qr(t=Hr()))Vr(t);else if(91===t&&e++,93===t&&e--,0===e){xr=br;break}}function Vr(t){for(var e=t;!Ur()&&(t=Hr())!==e;);}var Qr,Yr="__r",Gr="__c";function Kr(t,e,n){var r=Qr;return function i(){null!==e.apply(null,arguments)&&Xr(t,i,n,r)}}var Jr=Qt&&!(tt&&Number(tt[1])<=53);function Zr(t,e,n,r){if(Jr){var i=un,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=i||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}Qr.addEventListener(t,e,nt?{capture:n,passive:r}:n)}function Xr(t,e,n,r){(r||Qr).removeEventListener(t,e._wrapper||e,n)}function ti(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},r=t.data.on||{};Qr=e.elm,function(t){if(o(t[Yr])){var e=K?"change":"input";t[e]=[].concat(t[Yr],t[e]||[]),delete t[Yr]}o(t[Gr])&&(t.change=[].concat(t[Gr],t.change||[]),delete t[Gr])}(n),ae(n,r,Zr,Xr,Kr,e.context),Qr=void 0}}var ei,ni={create:ti,update:ti};function ri(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,r,a=e.elm,s=t.data.domProps||{},c=e.data.domProps||{};for(n in o(c.__ob__)&&(c=e.data.domProps=S({},c)),s)n in c||(a[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),r===s[n])continue;1===a.childNodes.length&&a.removeChild(a.childNodes[0])}if("value"===n&&"PROGRESS"!==a.tagName){a._value=r;var u=i(r)?"":String(r);ii(a,u)&&(a.value=u)}else if("innerHTML"===n&&Qn(a.tagName)&&i(a.innerHTML)){(ei=ei||document.createElement("div")).innerHTML=""+r+"";for(var l=ei.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;l.firstChild;)a.appendChild(l.firstChild)}else if(r!==s[n])try{a[n]=r}catch(t){}}}}function ii(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,r=t._vModifiers;if(o(r)){if(r.number)return h(n)!==h(e);if(r.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var oi={create:ri,update:ri},ai=b((function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach((function(t){if(t){var r=t.split(n);r.length>1&&(e[r[0].trim()]=r[1].trim())}})),e}));function si(t){var e=ci(t.style);return t.staticStyle?S(t.staticStyle,e):e}function ci(t){return Array.isArray(t)?D(t):"string"==typeof t?ai(t):t}var ui,li=/^--/,fi=/\s*!important$/,di=function(t,e,n){if(li.test(e))t.style.setProperty(e,n);else if(fi.test(n))t.style.setProperty(T(e),n.replace(fi,""),"important");else{var r=hi(e);if(Array.isArray(n))for(var i=0,o=n.length;i-1?e.split(gi).forEach((function(e){return t.classList.add(e)})):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Ai(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(gi).forEach((function(e){return t.classList.remove(e)})):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function _i(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&S(e,bi(t.name||"v")),S(e,t),e}return"string"==typeof t?bi(t):void 0}}var bi=b((function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}})),wi=V&&!J,xi="transition",Ci="animation",ki="transition",Ti="transitionend",Ei="animation",$i="animationend";wi&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(ki="WebkitTransition",Ti="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Ei="WebkitAnimation",$i="webkitAnimationEnd"));var Si=V?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Di(t){Si((function(){Si(t)}))}function Bi(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),yi(t,e))}function Oi(t,e){t._transitionClasses&&y(t._transitionClasses,e),Ai(t,e)}function Ii(t,e,n){var r=ji(t,e),i=r.type,o=r.timeout,a=r.propCount;if(!i)return n();var s=i===xi?Ti:$i,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout((function(){c0&&(n=xi,l=a,f=o.length):e===Ci?u>0&&(n=Ci,l=u,f=c.length):f=(n=(l=Math.max(a,u))>0?a>u?xi:Ci:null)?n===xi?o.length:c.length:0,{type:n,timeout:l,propCount:f,hasTransform:n===xi&&Ni.test(r[ki+"Property"])}}function Fi(t,e){for(;t.length1}function Hi(t,e){!0!==e.data.show&&Mi(e)}var Ui=function(t){var e,n,r={},c=t.modules,u=t.nodeOps;for(e=0;eh?A(t,i(n[g+1])?null:n[g+1].elm,n,p,g,r):p>g&&b(0,e,d,h)}(d,v,g,n,l):o(g)?(o(t.text)&&u.setTextContent(d,""),A(d,null,g,0,g.length-1,n)):o(v)?b(0,v,0,v.length-1):o(t.text)&&u.setTextContent(d,""):t.text!==e.text&&u.setTextContent(d,e.text),o(h)&&o(p=h.hook)&&o(p=p.postpatch)&&p(t,e)}}}function k(t,e,n){if(a(n)&&o(t.parent))t.parent.data.pendingInsert=e;else for(var r=0;r-1,a.selected!==o&&(a.selected=o);else if(N(Yi(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));i||(t.selectedIndex=-1)}}function Qi(t,e){return e.every((function(e){return!N(e,t)}))}function Yi(t){return"_value"in t?t._value:t.value}function Gi(t){t.target.composing=!0}function Ki(t){t.target.composing&&(t.target.composing=!1,Ji(t.target,"input"))}function Ji(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function Zi(t){return!t.componentInstance||t.data&&t.data.transition?t:Zi(t.componentInstance._vnode)}var Xi={model:qi,show:{bind:function(t,e,n){var r=e.value,i=(n=Zi(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;r&&i?(n.data.show=!0,Mi(n,(function(){t.style.display=o}))):t.style.display=r?o:"none"},update:function(t,e,n){var r=e.value;!r!=!e.oldValue&&((n=Zi(n)).data&&n.data.transition?(n.data.show=!0,r?Mi(n,(function(){t.style.display=t.__vOriginalDisplay})):Li(n,(function(){t.style.display="none"}))):t.style.display=r?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,r,i){i||(t.style.display=t.__vOriginalDisplay)}}},to={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function eo(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?eo(Ve(e.children)):t}function no(t){var e={},n=t.$options;for(var r in n.propsData)e[r]=t[r];var i=n._parentListeners;for(var o in i)e[x(o)]=i[o];return e}function ro(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var io=function(t){return t.tag||We(t)},oo=function(t){return"show"===t.name},ao={name:"transition",props:to,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(io)).length){var r=this.mode,i=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return i;var o=eo(i);if(!o)return i;if(this._leaving)return ro(t,i);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=no(this),u=this._vnode,l=eo(u);if(o.data.directives&&o.data.directives.some(oo)&&(o.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,l)&&!We(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var f=l.data.transition=S({},c);if("out-in"===r)return this._leaving=!0,se(f,"afterLeave",(function(){e._leaving=!1,e.$forceUpdate()})),ro(t,i);if("in-out"===r){if(We(o))return u;var d,p=function(){d()};se(c,"afterEnter",p),se(c,"enterCancelled",p),se(f,"delayLeave",(function(t){d=t}))}}return i}}},so=S({tag:String,moveClass:String},to);function co(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function uo(t){t.data.newPos=t.elm.getBoundingClientRect()}function lo(t){var e=t.data.pos,n=t.data.newPos,r=e.left-n.left,i=e.top-n.top;if(r||i){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+r+"px,"+i+"px)",o.transitionDuration="0s"}}delete so.mode;var fo={Transition:ao,TransitionGroup:{props:so,beforeMount:function(){var t=this,e=this._update;this._update=function(n,r){var i=Ze(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,i(),e.call(t,n,r)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,i=this.$slots.default||[],o=this.children=[],a=no(this),s=0;s-1?Kn[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Kn[t]=/HTMLUnknownElement/.test(e.toString())},S(Cn.options.directives,Xi),S(Cn.options.components,fo),Cn.prototype.__patch__=V?Ui:B,Cn.prototype.$mount=function(t,e){return function(t,e,n){var r;return t.$el=e,t.$options.render||(t.$options.render=gt),en(t,"beforeMount"),r=function(){t._update(t._render(),n)},new hn(t,r,B,{before:function(){t._isMounted&&!t._isDestroyed&&en(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,en(t,"mounted")),t}(this,t=t&&V?Zn(t):void 0,e)},V&&setTimeout((function(){R.devtools&&ot&&ot.emit("init",Cn)}),0);var po,ho=/\{\{((?:.|\r?\n)+?)\}\}/g,vo=/[-.*+?^${}()|[\]\/\\]/g,mo=b((function(t){var e=t[0].replace(vo,"\\$&"),n=t[1].replace(vo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")})),go={staticKeys:["staticClass"],transformNode:function(t,e){e.warn;var n=Pr(t,"class");n&&(t.staticClass=JSON.stringify(n));var r=Fr(t,"class",!1);r&&(t.classBinding=r)},genData:function(t){var e="";return t.staticClass&&(e+="staticClass:"+t.staticClass+","),t.classBinding&&(e+="class:"+t.classBinding+","),e}},yo={staticKeys:["staticStyle"],transformNode:function(t,e){e.warn;var n=Pr(t,"style");n&&(t.staticStyle=JSON.stringify(ai(n)));var r=Fr(t,"style",!1);r&&(t.styleBinding=r)},genData:function(t){var e="";return t.staticStyle&&(e+="staticStyle:"+t.staticStyle+","),t.styleBinding&&(e+="style:("+t.styleBinding+"),"),e}},Ao=v("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),_o=v("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),bo=v("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),wo=/^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,xo=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Co="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+z.source+"]*",ko="((?:"+Co+"\\:)?"+Co+")",To=new RegExp("^<"+ko),Eo=/^\s*(\/?)>/,$o=new RegExp("^<\\/"+ko+"[^>]*>"),So=/^]+>/i,Do=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},jo=/&(?:lt|gt|quot|amp|#39);/g,Fo=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Po=v("pre,textarea",!0),Mo=function(t,e){return t&&Po(t)&&"\n"===e[0]};function Lo(t,e){var n=e?Fo:jo;return t.replace(n,(function(t){return No[t]}))}var Ro,zo,Ho,Uo,qo,Wo,Vo,Qo,Yo=/^@|^v-on:/,Go=/^v-|^@|^:/,Ko=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,Jo=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Zo=/^\(|\)$/g,Xo=/^\[.*\]$/,ta=/:(.*)$/,ea=/^:|^\.|^v-bind:/,na=/\.[^.\]]+(?=[^\]]*$)/g,ra=/^v-slot(:|$)|^#/,ia=/[\r\n]/,oa=/\s+/g,aa=b((function(t){return(po=po||document.createElement("div")).innerHTML=t,po.textContent})),sa="_empty_";function ca(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:ha(e),rawAttrsMap:{},parent:n,children:[]}}function ua(t,e){var n,r;(r=Fr(n=t,"key"))&&(n.key=r),t.plain=!t.key&&!t.scopedSlots&&!t.attrsList.length,function(t){var e=Fr(t,"ref");e&&(t.ref=e,t.refInFor=function(t){for(var e=t;e;){if(void 0!==e.for)return!0;e=e.parent}return!1}(t))}(t),function(t){var e;"template"===t.tag?(e=Pr(t,"scope"),t.slotScope=e||Pr(t,"slot-scope")):(e=Pr(t,"slot-scope"))&&(t.slotScope=e);var n=Fr(t,"slot");if(n&&(t.slotTarget='""'===n?'"default"':n,t.slotTargetDynamic=!(!t.attrsMap[":slot"]&&!t.attrsMap["v-bind:slot"]),"template"===t.tag||t.slotScope||Br(t,"slot",n,function(t,e){return t.rawAttrsMap[":"+e]||t.rawAttrsMap["v-bind:"+e]||t.rawAttrsMap[e]}(t,"slot"))),"template"===t.tag){var r=Mr(t,ra);if(r){var i=da(r),o=i.name,a=i.dynamic;t.slotTarget=o,t.slotTargetDynamic=a,t.slotScope=r.value||sa}}else{var s=Mr(t,ra);if(s){var c=t.scopedSlots||(t.scopedSlots={}),u=da(s),l=u.name,f=u.dynamic,d=c[l]=ca("template",[],t);d.slotTarget=l,d.slotTargetDynamic=f,d.children=t.children.filter((function(t){if(!t.slotScope)return t.parent=d,!0})),d.slotScope=s.value||sa,t.children=[],t.plain=!1}}}(t),function(t){"slot"===t.tag&&(t.slotName=Fr(t,"name"))}(t),function(t){var e;(e=Fr(t,"is"))&&(t.component=e),null!=Pr(t,"inline-template")&&(t.inlineTemplate=!0)}(t);for(var i=0;i-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),jr(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+a+");if(Array.isArray($$a)){var $$v="+(r?"_n("+i+")":i)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+zr(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+zr(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+zr(e,"$$c")+"}",null,!0)}(t,r,i);else if("input"===o&&"radio"===a)!function(t,e,n){var r=n&&n.number,i=Fr(t,"value")||"null";Dr(t,"checked","_q("+e+","+(i=r?"_n("+i+")":i)+")"),jr(t,"change",zr(e,i),null,!0)}(t,r,i);else if("input"===o||"textarea"===o)!function(t,e,n){var r=t.attrsMap.type,i=n||{},o=i.lazy,a=i.number,s=i.trim,c=!o&&"range"!==r,u=o?"change":"range"===r?Yr:"input",l="$event.target.value";s&&(l="$event.target.value.trim()"),a&&(l="_n("+l+")");var f=zr(e,l);c&&(f="if($event.target.composing)return;"+f),Dr(t,"value","("+e+")"),jr(t,u,f,null,!0),(s||a)&&jr(t,"blur","$forceUpdate()")}(t,r,i);else if(!R.isReservedTag(o))return Rr(t,r,i),!1;return!0},text:function(t,e){e.value&&Dr(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Dr(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:Ao,mustUseProp:In,canBeLeftOpenTag:_o,isReservedTag:Yn,getTagNamespace:Gn,staticKeys:function(t){return t.reduce((function(t,e){return t.concat(e.staticKeys||[])}),[]).join(",")}(_a)},wa=b((function(t){return v("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))}));var xa=/^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/,Ca=/\([^)]*?\);*$/,ka=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ta={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ea={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},$a=function(t){return"if("+t+")return null;"},Sa={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:$a("$event.target !== $event.currentTarget"),ctrl:$a("!$event.ctrlKey"),shift:$a("!$event.shiftKey"),alt:$a("!$event.altKey"),meta:$a("!$event.metaKey"),left:$a("'button' in $event && $event.button !== 0"),middle:$a("'button' in $event && $event.button !== 1"),right:$a("'button' in $event && $event.button !== 2")};function Da(t,e){var n=e?"nativeOn:":"on:",r="",i="";for(var o in t){var a=Ba(t[o]);t[o]&&t[o].dynamic?i+=o+","+a+",":r+='"'+o+'":'+a+","}return r="{"+r.slice(0,-1)+"}",i?n+"_d("+r+",["+i.slice(0,-1)+"])":n+r}function Ba(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map((function(t){return Ba(t)})).join(",")+"]";var e=ka.test(t.value),n=xa.test(t.value),r=ka.test(t.value.replace(Ca,""));if(t.modifiers){var i="",o="",a=[];for(var s in t.modifiers)if(Sa[s])o+=Sa[s],Ta[s]&&a.push(s);else if("exact"===s){var c=t.modifiers;o+=$a(["ctrl","shift","alt","meta"].filter((function(t){return!c[t]})).map((function(t){return"$event."+t+"Key"})).join("||"))}else a.push(s);return a.length&&(i+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Oa).join("&&")+")return null;"}(a)),o&&(i+=o),"function($event){"+i+(e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":r?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(r?"return "+t.value:t.value)+"}"}function Oa(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Ta[t],r=Ea[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(r)+")"}var Ia={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:B},Na=function(t){this.options=t,this.warn=t.warn||$r,this.transforms=Sr(t.modules,"transformCode"),this.dataGenFns=Sr(t.modules,"genData"),this.directives=S(S({},Ia),t.directives);var e=t.isReservedTag||O;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function ja(t,e){var n=new Na(e);return{render:"with(this){return "+(t?Fa(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Fa(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return Pa(t,e);if(t.once&&!t.onceProcessed)return Ma(t,e);if(t.for&&!t.forProcessed)return Ra(t,e);if(t.if&&!t.ifProcessed)return La(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',r=qa(t,e),i="_t("+n+(r?","+r:""),o=t.attrs||t.dynamicAttrs?Qa((t.attrs||[]).concat(t.dynamicAttrs||[]).map((function(t){return{name:x(t.name),value:t.value,dynamic:t.dynamic}}))):null,a=t.attrsMap["v-bind"];return!o&&!a||r||(i+=",null"),o&&(i+=","+o),a&&(i+=(o?"":",null")+","+a),i+")"}(t,e);var n;if(t.component)n=function(t,e,n){var r=e.inlineTemplate?null:qa(e,n,!0);return"_c("+t+","+za(e,n)+(r?","+r:"")+")"}(t.component,t,e);else{var r;(!t.plain||t.pre&&e.maybeComponent(t))&&(r=za(t,e));var i=t.inlineTemplate?null:qa(t,e,!0);n="_c('"+t.tag+"'"+(r?","+r:"")+(i?","+i:"")+")"}for(var o=0;o>>0}(a):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=function(t,e){var n=t.children[0];if(n&&1===n.type){var r=ja(n,e.options);return"inlineTemplate:{render:function(){"+r.render+"},staticRenderFns:["+r.staticRenderFns.map((function(t){return"function(){"+t+"}"})).join(",")+"]}"}}(t,e);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+Qa(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Ha(t){return 1===t.type&&("slot"===t.tag||t.children.some(Ha))}function Ua(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return La(t,e,Ua,"null");if(t.for&&!t.forProcessed)return Ra(t,e,Ua);var r=t.slotScope===sa?"":String(t.slotScope),i="function("+r+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(qa(t,e)||"undefined")+":undefined":qa(t,e)||"undefined":Fa(t,e))+"}",o=r?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+i+o+"}"}function qa(t,e,n,r,i){var o=t.children;if(o.length){var a=o[0];if(1===o.length&&a.for&&"template"!==a.tag&&"slot"!==a.tag){var s=n?e.maybeComponent(a)?",1":",0":"";return""+(r||Fa)(a,e)+s}var c=n?function(t,e){for(var n=0,r=0;r]*>)","i")),d=t.replace(f,(function(t,n,r){return u=r.length,Oo(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),Mo(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""}));c+=t.length-d.length,t=d,T(l,c-u,c)}else{var p=t.indexOf("<");if(0===p){if(Do.test(t)){var h=t.indexOf("--\x3e");if(h>=0){e.shouldKeepComment&&e.comment(t.substring(4,h),c,c+h+3),x(h+3);continue}}if(Bo.test(t)){var v=t.indexOf("]>");if(v>=0){x(v+2);continue}}var m=t.match(So);if(m){x(m[0].length);continue}var g=t.match($o);if(g){var y=c;x(g[0].length),T(g[1],y,c);continue}var A=C();if(A){k(A),Mo(A.tagName,t)&&x(1);continue}}var _=void 0,b=void 0,w=void 0;if(p>=0){for(b=t.slice(p);!($o.test(b)||To.test(b)||Do.test(b)||Bo.test(b)||(w=b.indexOf("<",1))<0);)p+=w,b=t.slice(p);_=t.substring(0,p)}p<0&&(_=t),_&&x(_.length),e.chars&&_&&e.chars(_,c-_.length,c)}if(t===n){e.chars&&e.chars(t);break}}function x(e){c+=e,t=t.substring(e)}function C(){var e=t.match(To);if(e){var n,r,i={tagName:e[1],attrs:[],start:c};for(x(e[0].length);!(n=t.match(Eo))&&(r=t.match(xo)||t.match(wo));)r.start=c,x(r[0].length),r.end=c,i.attrs.push(r);if(n)return i.unarySlash=n[1],x(n[0].length),i.end=c,i}}function k(t){var n=t.tagName,c=t.unarySlash;o&&("p"===r&&bo(n)&&T(r),s(n)&&r===n&&T(n));for(var u=a(n)||!!c,l=t.attrs.length,f=new Array(l),d=0;d=0&&i[a].lowerCasedTag!==s;a--);else a=0;if(a>=0){for(var u=i.length-1;u>=a;u--)e.end&&e.end(i[u].tag,n,o);i.length=a,r=a&&i[a-1].tag}else"br"===s?e.start&&e.start(t,[],!0,n,o):"p"===s&&(e.start&&e.start(t,[],!1,n,o),e.end&&e.end(t,n,o))}T()}(t,{warn:Ro,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,o,a,l,f){var d=r&&r.ns||Qo(t);K&&"svg"===d&&(o=function(t){for(var e=[],n=0;nc&&(s.push(o=t.slice(c,i)),a.push(JSON.stringify(o)));var u=Tr(r[1].trim());a.push("_s("+u+")"),s.push({"@binding":u}),c=i+r[0].length}return c':'
',Za.innerHTML.indexOf(" ")>0}var ns=!!V&&es(!1),rs=!!V&&es(!0),is=b((function(t){var e=Zn(t);return e&&e.innerHTML})),os=Cn.prototype.$mount;Cn.prototype.$mount=function(t,e){if((t=t&&Zn(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var r=n.template;if(r)if("string"==typeof r)"#"===r.charAt(0)&&(r=is(r));else{if(!r.nodeType)return this;r=r.innerHTML}else t&&(r=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(r){var i=ts(r,{outputSourceRange:!1,shouldDecodeNewlines:ns,shouldDecodeNewlinesForHref:rs,delimiters:n.delimiters,comments:n.comments},this),o=i.render,a=i.staticRenderFns;n.render=o,n.staticRenderFns=a}}return os.call(this,t,e)},Cn.compile=ts,t.exports=Cn}).call(this,n(2),n(19).setImmediate)},function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout((function(){t._onTimeout&&t._onTimeout()}),e))},n(20),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(2))},function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i,o,a,s,c=1,u={},l=!1,f=t.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(t);d=d&&d.setTimeout?d:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick((function(){h(t)}))}:!function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?t.MessageChannel?((o=new MessageChannel).port1.onmessage=function(t){h(t.data)},r=function(t){o.port2.postMessage(t)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(t){var e=f.createElement("script");e.onreadystatechange=function(){h(t),e.onreadystatechange=null,i.removeChild(e),e=null},i.appendChild(e)}):r=function(t){setTimeout(h,0,t)}:(a="setImmediate$"+Math.random()+"$",s=function(e){e.source===t&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},t.addEventListener?t.addEventListener("message",s,!1):t.attachEvent("onmessage",s),r=function(e){t.postMessage(a+e,"*")}),d.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n=0)return;a[e]="set-cookie"===e?(a[e]?a[e]:[]).concat([n]):a[e]?a[e]+", "+n:n}})),a):a}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?function(){var t,e=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function i(t){var r=t;return e&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return t=i(window.location.href),function(e){var n=r.isString(e)?i(e):e;return n.protocol===t.protocol&&n.host===t.host}}():function(){return!0}},function(t,e,n){"use strict";var r=n(1);t.exports=r.isStandardBrowserEnv()?{write:function(t,e,n,i,o,a){var s=[];s.push(t+"="+encodeURIComponent(e)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(i)&&s.push("path="+i),r.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(t){var e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove:function(t){this.write(t,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(t,e,n){"use strict";var r=n(1);function i(){this.handlers=[]}i.prototype.use=function(t,e){return this.handlers.push({fulfilled:t,rejected:e}),this.handlers.length-1},i.prototype.eject=function(t){this.handlers[t]&&(this.handlers[t]=null)},i.prototype.forEach=function(t){r.forEach(this.handlers,(function(e){null!==e&&t(e)}))},t.exports=i},function(t,e,n){"use strict";var r=n(1),i=n(40),o=n(14),a=n(8),s=n(41),c=n(42);function u(t){t.cancelToken&&t.cancelToken.throwIfRequested()}t.exports=function(t){return u(t),t.baseURL&&!s(t.url)&&(t.url=c(t.baseURL,t.url)),t.headers=t.headers||{},t.data=i(t.data,t.headers,t.transformRequest),t.headers=r.merge(t.headers.common||{},t.headers[t.method]||{},t.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete t.headers[e]})),(t.adapter||a.adapter)(t).then((function(e){return u(t),e.data=i(e.data,e.headers,t.transformResponse),e}),(function(e){return o(e)||(u(t),e&&e.response&&(e.response.data=i(e.response.data,e.response.headers,t.transformResponse))),Promise.reject(e)}))}},function(t,e,n){"use strict";var r=n(1);t.exports=function(t,e,n){return r.forEach(n,(function(n){t=n(t,e)})),t}},function(t,e,n){"use strict";t.exports=function(t){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(t)}},function(t,e,n){"use strict";t.exports=function(t,e){return e?t.replace(/\/+$/,"")+"/"+e.replace(/^\/+/,""):t}},function(t,e,n){"use strict";var r=n(15);function i(t){if("function"!=typeof t)throw new TypeError("executor must be a function.");var e;this.promise=new Promise((function(t){e=t}));var n=this;t((function(t){n.reason||(n.reason=new r(t),e(n.reason))}))}i.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},i.source=function(){var t;return{token:new i((function(e){t=e})),cancel:t}},t.exports=i},function(t,e,n){"use strict";t.exports=function(t){return function(e){return t.apply(null,e)}}},function(t,e,n){window._=n(46);try{window.$=window.jQuery=n(48),n(49)}catch(t){}window.axios=n(9),window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var r=document.head.querySelector('meta[name="csrf-token"]');r?window.axios.defaults.headers.common["X-CSRF-TOKEN"]=r.content:console.error("CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token")},function(t,e,n){(function(t,r){var i;(function(){var o,a=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",u="__lodash_hash_undefined__",l=500,f="__lodash_placeholder__",d=1,p=2,h=4,v=1,m=2,g=1,y=2,A=4,_=8,b=16,w=32,x=64,C=128,k=256,T=512,E=30,$="...",S=800,D=16,B=1,O=2,I=1/0,N=9007199254740991,j=17976931348623157e292,F=NaN,P=4294967295,M=P-1,L=P>>>1,R=[["ary",C],["bind",g],["bindKey",y],["curry",_],["curryRight",b],["flip",T],["partial",w],["partialRight",x],["rearg",k]],z="[object Arguments]",H="[object Array]",U="[object AsyncFunction]",q="[object Boolean]",W="[object Date]",V="[object DOMException]",Q="[object Error]",Y="[object Function]",G="[object GeneratorFunction]",K="[object Map]",J="[object Number]",Z="[object Null]",X="[object Object]",tt="[object Proxy]",et="[object RegExp]",nt="[object Set]",rt="[object String]",it="[object Symbol]",ot="[object Undefined]",at="[object WeakMap]",st="[object WeakSet]",ct="[object ArrayBuffer]",ut="[object DataView]",lt="[object Float32Array]",ft="[object Float64Array]",dt="[object Int8Array]",pt="[object Int16Array]",ht="[object Int32Array]",vt="[object Uint8Array]",mt="[object Uint8ClampedArray]",gt="[object Uint16Array]",yt="[object Uint32Array]",At=/\b__p \+= '';/g,_t=/\b(__p \+=) '' \+/g,bt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wt=/&(?:amp|lt|gt|quot|#39);/g,xt=/[&<>"']/g,Ct=RegExp(wt.source),kt=RegExp(xt.source),Tt=/<%-([\s\S]+?)%>/g,Et=/<%([\s\S]+?)%>/g,$t=/<%=([\s\S]+?)%>/g,St=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dt=/^\w*$/,Bt=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ot=/[\\^$.*+?()[\]{}|]/g,It=RegExp(Ot.source),Nt=/^\s+|\s+$/g,jt=/^\s+/,Ft=/\s+$/,Pt=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Mt=/\{\n\/\* \[wrapped with (.+)\] \*/,Lt=/,? & /,Rt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,zt=/\\(\\)?/g,Ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Ut=/\w*$/,qt=/^[-+]0x[0-9a-f]+$/i,Wt=/^0b[01]+$/i,Vt=/^\[object .+?Constructor\]$/,Qt=/^0o[0-7]+$/i,Yt=/^(?:0|[1-9]\d*)$/,Gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Kt=/($^)/,Jt=/['\n\r\u2028\u2029\\]/g,Zt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Xt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",te="[\\ud800-\\udfff]",ee="["+Xt+"]",ne="["+Zt+"]",re="\\d+",ie="[\\u2700-\\u27bf]",oe="[a-z\\xdf-\\xf6\\xf8-\\xff]",ae="[^\\ud800-\\udfff"+Xt+re+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",se="\\ud83c[\\udffb-\\udfff]",ce="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",fe="[A-Z\\xc0-\\xd6\\xd8-\\xde]",de="(?:"+oe+"|"+ae+")",pe="(?:"+fe+"|"+ae+")",he="(?:"+ne+"|"+se+")"+"?",ve="[\\ufe0e\\ufe0f]?"+he+("(?:\\u200d(?:"+[ce,ue,le].join("|")+")[\\ufe0e\\ufe0f]?"+he+")*"),me="(?:"+[ie,ue,le].join("|")+")"+ve,ge="(?:"+[ce+ne+"?",ne,ue,le,te].join("|")+")",ye=RegExp("['’]","g"),Ae=RegExp(ne,"g"),_e=RegExp(se+"(?="+se+")|"+ge+ve,"g"),be=RegExp([fe+"?"+oe+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ee,fe,"$"].join("|")+")",pe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ee,fe+de,"$"].join("|")+")",fe+"?"+de+"+(?:['’](?:d|ll|m|re|s|t|ve))?",fe+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",re,me].join("|"),"g"),we=RegExp("[\\u200d\\ud800-\\udfff"+Zt+"\\ufe0e\\ufe0f]"),xe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ce=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],ke=-1,Te={};Te[lt]=Te[ft]=Te[dt]=Te[pt]=Te[ht]=Te[vt]=Te[mt]=Te[gt]=Te[yt]=!0,Te[z]=Te[H]=Te[ct]=Te[q]=Te[ut]=Te[W]=Te[Q]=Te[Y]=Te[K]=Te[J]=Te[X]=Te[et]=Te[nt]=Te[rt]=Te[at]=!1;var Ee={};Ee[z]=Ee[H]=Ee[ct]=Ee[ut]=Ee[q]=Ee[W]=Ee[lt]=Ee[ft]=Ee[dt]=Ee[pt]=Ee[ht]=Ee[K]=Ee[J]=Ee[X]=Ee[et]=Ee[nt]=Ee[rt]=Ee[it]=Ee[vt]=Ee[mt]=Ee[gt]=Ee[yt]=!0,Ee[Q]=Ee[Y]=Ee[at]=!1;var $e={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Se=parseFloat,De=parseInt,Be="object"==typeof t&&t&&t.Object===Object&&t,Oe="object"==typeof self&&self&&self.Object===Object&&self,Ie=Be||Oe||Function("return this")(),Ne=e&&!e.nodeType&&e,je=Ne&&"object"==typeof r&&r&&!r.nodeType&&r,Fe=je&&je.exports===Ne,Pe=Fe&&Be.process,Me=function(){try{var t=je&&je.require&&je.require("util").types;return t||Pe&&Pe.binding&&Pe.binding("util")}catch(t){}}(),Le=Me&&Me.isArrayBuffer,Re=Me&&Me.isDate,ze=Me&&Me.isMap,He=Me&&Me.isRegExp,Ue=Me&&Me.isSet,qe=Me&&Me.isTypedArray;function We(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Ve(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Ze(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function bn(t,e){for(var n=t.length;n--&&cn(e,t[n],0)>-1;);return n}var wn=pn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),xn=pn({"&":"&","<":"<",">":">",'"':""","'":"'"});function Cn(t){return"\\"+$e[t]}function kn(t){return we.test(t)}function Tn(t){var e=-1,n=Array(t.size);return t.forEach((function(t,r){n[++e]=[r,t]})),n}function En(t,e){return function(n){return t(e(n))}}function $n(t,e){for(var n=-1,r=t.length,i=0,o=[];++n",""":'"',"'":"'"});var Nn=function t(e){var n,r=(e=null==e?Ie:Nn.defaults(Ie.Object(),e,Nn.pick(Ie,Ce))).Array,i=e.Date,Zt=e.Error,Xt=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,oe=r.prototype,ae=Xt.prototype,se=ee.prototype,ce=e["__core-js_shared__"],ue=ae.toString,le=se.hasOwnProperty,fe=0,de=(n=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",pe=se.toString,he=ue.call(ee),ve=Ie._,me=ne("^"+ue.call(le).replace(Ot,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ge=Fe?e.Buffer:o,_e=e.Symbol,we=e.Uint8Array,$e=ge?ge.allocUnsafe:o,Be=En(ee.getPrototypeOf,ee),Oe=ee.create,Ne=se.propertyIsEnumerable,je=oe.splice,Pe=_e?_e.isConcatSpreadable:o,Me=_e?_e.iterator:o,on=_e?_e.toStringTag:o,pn=function(){try{var t=Lo(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),jn=e.clearTimeout!==Ie.clearTimeout&&e.clearTimeout,Fn=i&&i.now!==Ie.Date.now&&i.now,Pn=e.setTimeout!==Ie.setTimeout&&e.setTimeout,Mn=te.ceil,Ln=te.floor,Rn=ee.getOwnPropertySymbols,zn=ge?ge.isBuffer:o,Hn=e.isFinite,Un=oe.join,qn=En(ee.keys,ee),Wn=te.max,Vn=te.min,Qn=i.now,Yn=e.parseInt,Gn=te.random,Kn=oe.reverse,Jn=Lo(e,"DataView"),Zn=Lo(e,"Map"),Xn=Lo(e,"Promise"),tr=Lo(e,"Set"),er=Lo(e,"WeakMap"),nr=Lo(ee,"create"),rr=er&&new er,ir={},or=fa(Jn),ar=fa(Zn),sr=fa(Xn),cr=fa(tr),ur=fa(er),lr=_e?_e.prototype:o,fr=lr?lr.valueOf:o,dr=lr?lr.toString:o;function pr(t){if($s(t)&&!gs(t)&&!(t instanceof gr)){if(t instanceof mr)return t;if(le.call(t,"__wrapped__"))return da(t)}return new mr(t)}var hr=function(){function t(){}return function(e){if(!Es(e))return{};if(Oe)return Oe(e);t.prototype=e;var n=new t;return t.prototype=o,n}}();function vr(){}function mr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=o}function gr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=P,this.__views__=[]}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function jr(t,e,n,r,i,a){var s,c=e&d,u=e&p,l=e&h;if(n&&(s=i?n(t,r,i,a):n(t)),s!==o)return s;if(!Es(t))return t;var f=gs(t);if(f){if(s=function(t){var e=t.length,n=new t.constructor(e);e&&"string"==typeof t[0]&&le.call(t,"index")&&(n.index=t.index,n.input=t.input);return n}(t),!c)return no(t,s)}else{var v=Ho(t),m=v==Y||v==G;if(bs(t))return Ki(t,c);if(v==X||v==z||m&&!i){if(s=u||m?{}:qo(t),!c)return u?function(t,e){return ro(t,zo(t),e)}(t,function(t,e){return t&&ro(e,oc(e),t)}(s,t)):function(t,e){return ro(t,Ro(t),e)}(t,Br(s,t))}else{if(!Ee[v])return i?t:{};s=function(t,e,n){var r=t.constructor;switch(e){case ct:return Ji(t);case q:case W:return new r(+t);case ut:return function(t,e){var n=e?Ji(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case lt:case ft:case dt:case pt:case ht:case vt:case mt:case gt:case yt:return Zi(t,n);case K:return new r;case J:case rt:return new r(t);case et:return function(t){var e=new t.constructor(t.source,Ut.exec(t));return e.lastIndex=t.lastIndex,e}(t);case nt:return new r;case it:return i=t,fr?ee(fr.call(i)):{}}var i}(t,v,c)}}a||(a=new wr);var g=a.get(t);if(g)return g;a.set(t,s),Is(t)?t.forEach((function(r){s.add(jr(r,e,n,r,t,a))})):Ss(t)&&t.forEach((function(r,i){s.set(i,jr(r,e,n,i,t,a))}));var y=f?o:(l?u?Oo:Bo:u?oc:ic)(t);return Qe(y||t,(function(r,i){y&&(r=t[i=r]),$r(s,i,jr(r,e,n,i,t,a))})),s}function Fr(t,e,n){var r=n.length;if(null==t)return!r;for(t=ee(t);r--;){var i=n[r],a=e[i],s=t[i];if(s===o&&!(i in t)||!a(s))return!1}return!0}function Pr(t,e,n){if("function"!=typeof t)throw new ie(c);return ia((function(){t.apply(o,n)}),e)}function Mr(t,e,n,r){var i=-1,o=Je,s=!0,c=t.length,u=[],l=e.length;if(!c)return u;n&&(e=Xe(e,gn(n))),r?(o=Ze,s=!1):e.length>=a&&(o=An,s=!1,e=new br(e));t:for(;++i-1},Ar.prototype.set=function(t,e){var n=this.__data__,r=Sr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},_r.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(Zn||Ar),string:new yr}},_r.prototype.delete=function(t){var e=Po(this,t).delete(t);return this.size-=e?1:0,e},_r.prototype.get=function(t){return Po(this,t).get(t)},_r.prototype.has=function(t){return Po(this,t).has(t)},_r.prototype.set=function(t,e){var n=Po(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},br.prototype.add=br.prototype.push=function(t){return this.__data__.set(t,u),this},br.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.clear=function(){this.__data__=new Ar,this.size=0},wr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},wr.prototype.get=function(t){return this.__data__.get(t)},wr.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof Ar){var r=n.__data__;if(!Zn||r.length0&&n(s)?e>1?qr(s,e-1,n,r,i):tn(i,s):r||(i[i.length]=s)}return i}var Wr=so(),Vr=so(!0);function Qr(t,e){return t&&Wr(t,e,ic)}function Yr(t,e){return t&&Vr(t,e,ic)}function Gr(t,e){return Ke(e,(function(e){return Cs(t[e])}))}function Kr(t,e){for(var n=0,r=(e=Vi(e,t)).length;null!=t&&ne}function ti(t,e){return null!=t&&le.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Ze:Je,a=t[0].length,s=t.length,c=s,u=r(s),l=1/0,f=[];c--;){var d=t[c];c&&e&&(d=Xe(d,gn(e))),l=Vn(d.length,l),u[c]=!n&&(e||a>=120&&d.length>=120)?new br(c&&d):o}d=t[0];var p=-1,h=u[0];t:for(;++p=s)return c;var u=n[r];return c*("desc"==u?-1:1)}}return t.index-e.index}(t,e,n)}))}function yi(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)s!==t&&je.call(s,c,1),je.call(t,c,1);return t}function _i(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Vo(i)?je.call(t,i,1):Mi(t,i)}}return t}function bi(t,e){return t+Ln(Gn()*(e-t+1))}function wi(t,e){var n="";if(!t||e<1||e>N)return n;do{e%2&&(n+=t),(e=Ln(e/2))&&(t+=t)}while(e);return n}function xi(t,e){return oa(ta(t,e,Dc),t+"")}function Ci(t){return Cr(pc(t))}function ki(t,e){var n=pc(t);return ca(n,Nr(e,0,n.length))}function Ti(t,e,n,r){if(!Es(t))return t;for(var i=-1,a=(e=Vi(e,t)).length,s=a-1,c=t;null!=c&&++io?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var a=r(o);++i>>1,a=t[o];null!==a&&!js(a)&&(n?a<=e:a=a){var l=e?null:xo(t);if(l)return Sn(l);s=!1,i=An,u=new br}else u=e?[]:c;t:for(;++r=r?t:Di(t,e,n)}var Gi=jn||function(t){return Ie.clearTimeout(t)};function Ki(t,e){if(e)return t.slice();var n=t.length,r=$e?$e(n):new t.constructor(n);return t.copy(r),r}function Ji(t){var e=new t.constructor(t.byteLength);return new we(e).set(new we(t)),e}function Zi(t,e){var n=e?Ji(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function Xi(t,e){if(t!==e){var n=t!==o,r=null===t,i=t==t,a=js(t),s=e!==o,c=null===e,u=e==e,l=js(e);if(!c&&!l&&!a&&t>e||a&&s&&u&&!c&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!a&&!l&&t1?n[i-1]:o,s=i>2?n[2]:o;for(a=t.length>3&&"function"==typeof a?(i--,a):o,s&&Qo(n[0],n[1],s)&&(a=i<3?o:a,i=1),e=ee(e);++r-1?i[a?e[s]:s]:o}}function po(t){return Do((function(e){var n=e.length,r=n,i=mr.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new ie(c);if(i&&!s&&"wrapper"==No(a))var s=new mr([],!0)}for(r=s?r:n;++r1&&_.reverse(),d&&lc))return!1;var l=a.get(t);if(l&&a.get(e))return l==e;var f=-1,d=!0,p=n&m?new br:o;for(a.set(t,e),a.set(e,t);++f-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Pt,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return Qe(R,(function(n){var r="_."+n[0];e&n[1]&&!Je(t,r)&&t.push(r)})),t.sort()}(function(t){var e=t.match(Mt);return e?e[1].split(Lt):[]}(r),n)))}function sa(t){var e=0,n=0;return function(){var r=Qn(),i=D-(r-n);if(n=r,i>0){if(++e>=S)return arguments[0]}else e=0;return t.apply(o,arguments)}}function ca(t,e){var n=-1,r=t.length,i=r-1;for(e=e===o?r:e;++n1?t[e-1]:o;return n="function"==typeof n?(t.pop(),n):o,Oa(t,n)}));function La(t){var e=pr(t);return e.__chain__=!0,e}function Ra(t,e){return e(t)}var za=Do((function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Ir(e,t)};return!(e>1||this.__actions__.length)&&r instanceof gr&&Vo(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:Ra,args:[i],thisArg:o}),new mr(r,this.__chain__).thru((function(t){return e&&!t.length&&t.push(o),t}))):this.thru(i)}));var Ha=io((function(t,e,n){le.call(t,n)?++t[n]:Or(t,n,1)}));var Ua=fo(ma),qa=fo(ga);function Wa(t,e){return(gs(t)?Qe:Lr)(t,Fo(e,3))}function Va(t,e){return(gs(t)?Ye:Rr)(t,Fo(e,3))}var Qa=io((function(t,e,n){le.call(t,n)?t[n].push(e):Or(t,n,[e])}));var Ya=xi((function(t,e,n){var i=-1,o="function"==typeof e,a=As(t)?r(t.length):[];return Lr(t,(function(t){a[++i]=o?We(e,t,n):ri(t,e,n)})),a})),Ga=io((function(t,e,n){Or(t,n,e)}));function Ka(t,e){return(gs(t)?Xe:di)(t,Fo(e,3))}var Ja=io((function(t,e,n){t[n?0:1].push(e)}),(function(){return[[],[]]}));var Za=xi((function(t,e){if(null==t)return[];var n=e.length;return n>1&&Qo(t,e[0],e[1])?e=[]:n>2&&Qo(e[0],e[1],e[2])&&(e=[e[0]]),gi(t,qr(e,1),[])})),Xa=Fn||function(){return Ie.Date.now()};function ts(t,e,n){return e=n?o:e,e=t&&null==e?t.length:e,ko(t,C,o,o,o,o,e)}function es(t,e){var n;if("function"!=typeof e)throw new ie(c);return t=zs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=o),n}}var ns=xi((function(t,e,n){var r=g;if(n.length){var i=$n(n,jo(ns));r|=w}return ko(t,r,e,n,i)})),rs=xi((function(t,e,n){var r=g|y;if(n.length){var i=$n(n,jo(rs));r|=w}return ko(e,r,t,n,i)}));function is(t,e,n){var r,i,a,s,u,l,f=0,d=!1,p=!1,h=!0;if("function"!=typeof t)throw new ie(c);function v(e){var n=r,a=i;return r=i=o,f=e,s=t.apply(a,n)}function m(t){var n=t-l;return l===o||n>=e||n<0||p&&t-f>=a}function g(){var t=Xa();if(m(t))return y(t);u=ia(g,function(t){var n=e-(t-l);return p?Vn(n,a-(t-f)):n}(t))}function y(t){return u=o,h&&r?v(t):(r=i=o,s)}function A(){var t=Xa(),n=m(t);if(r=arguments,i=this,l=t,n){if(u===o)return function(t){return f=t,u=ia(g,e),d?v(t):s}(l);if(p)return Gi(u),u=ia(g,e),v(l)}return u===o&&(u=ia(g,e)),s}return e=Us(e)||0,Es(n)&&(d=!!n.leading,a=(p="maxWait"in n)?Wn(Us(n.maxWait)||0,e):a,h="trailing"in n?!!n.trailing:h),A.cancel=function(){u!==o&&Gi(u),f=0,r=l=i=u=o},A.flush=function(){return u===o?s:y(Xa())},A}var os=xi((function(t,e){return Pr(t,1,e)})),as=xi((function(t,e,n){return Pr(t,Us(e)||0,n)}));function ss(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(c);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(ss.Cache||_r),n}function cs(t){if("function"!=typeof t)throw new ie(c);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}ss.Cache=_r;var us=Qi((function(t,e){var n=(e=1==e.length&&gs(e[0])?Xe(e[0],gn(Fo())):Xe(qr(e,1),gn(Fo()))).length;return xi((function(r){for(var i=-1,o=Vn(r.length,n);++i=e})),ms=ii(function(){return arguments}())?ii:function(t){return $s(t)&&le.call(t,"callee")&&!Ne.call(t,"callee")},gs=r.isArray,ys=Le?gn(Le):function(t){return $s(t)&&Zr(t)==ct};function As(t){return null!=t&&Ts(t.length)&&!Cs(t)}function _s(t){return $s(t)&&As(t)}var bs=zn||Uc,ws=Re?gn(Re):function(t){return $s(t)&&Zr(t)==W};function xs(t){if(!$s(t))return!1;var e=Zr(t);return e==Q||e==V||"string"==typeof t.message&&"string"==typeof t.name&&!Bs(t)}function Cs(t){if(!Es(t))return!1;var e=Zr(t);return e==Y||e==G||e==U||e==tt}function ks(t){return"number"==typeof t&&t==zs(t)}function Ts(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=N}function Es(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function $s(t){return null!=t&&"object"==typeof t}var Ss=ze?gn(ze):function(t){return $s(t)&&Ho(t)==K};function Ds(t){return"number"==typeof t||$s(t)&&Zr(t)==J}function Bs(t){if(!$s(t)||Zr(t)!=X)return!1;var e=Be(t);if(null===e)return!0;var n=le.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ue.call(n)==he}var Os=He?gn(He):function(t){return $s(t)&&Zr(t)==et};var Is=Ue?gn(Ue):function(t){return $s(t)&&Ho(t)==nt};function Ns(t){return"string"==typeof t||!gs(t)&&$s(t)&&Zr(t)==rt}function js(t){return"symbol"==typeof t||$s(t)&&Zr(t)==it}var Fs=qe?gn(qe):function(t){return $s(t)&&Ts(t.length)&&!!Te[Zr(t)]};var Ps=_o(fi),Ms=_o((function(t,e){return t<=e}));function Ls(t){if(!t)return[];if(As(t))return Ns(t)?On(t):no(t);if(Me&&t[Me])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Me]());var e=Ho(t);return(e==K?Tn:e==nt?Sn:pc)(t)}function Rs(t){return t?(t=Us(t))===I||t===-I?(t<0?-1:1)*j:t==t?t:0:0===t?t:0}function zs(t){var e=Rs(t),n=e%1;return e==e?n?e-n:e:0}function Hs(t){return t?Nr(zs(t),0,P):0}function Us(t){if("number"==typeof t)return t;if(js(t))return F;if(Es(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Es(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Nt,"");var n=Wt.test(t);return n||Qt.test(t)?De(t.slice(2),n?2:8):qt.test(t)?F:+t}function qs(t){return ro(t,oc(t))}function Ws(t){return null==t?"":Fi(t)}var Vs=oo((function(t,e){if(Jo(e)||As(e))ro(e,ic(e),t);else for(var n in e)le.call(e,n)&&$r(t,n,e[n])})),Qs=oo((function(t,e){ro(e,oc(e),t)})),Ys=oo((function(t,e,n,r){ro(e,oc(e),t,r)})),Gs=oo((function(t,e,n,r){ro(e,ic(e),t,r)})),Ks=Do(Ir);var Js=xi((function(t,e){t=ee(t);var n=-1,r=e.length,i=r>2?e[2]:o;for(i&&Qo(e[0],e[1],i)&&(r=1);++n1),e})),ro(t,Oo(t),n),r&&(n=jr(n,d|p|h,$o));for(var i=e.length;i--;)Mi(n,e[i]);return n}));var uc=Do((function(t,e){return null==t?{}:function(t,e){return yi(t,e,(function(e,n){return tc(t,n)}))}(t,e)}));function lc(t,e){if(null==t)return{};var n=Xe(Oo(t),(function(t){return[t]}));return e=Fo(e),yi(t,n,(function(t,n){return e(t,n[0])}))}var fc=Co(ic),dc=Co(oc);function pc(t){return null==t?[]:yn(t,ic(t))}var hc=uo((function(t,e,n){return e=e.toLowerCase(),t+(n?vc(e):e)}));function vc(t){return xc(Ws(t).toLowerCase())}function mc(t){return(t=Ws(t))&&t.replace(Gt,wn).replace(Ae,"")}var gc=uo((function(t,e,n){return t+(n?"-":"")+e.toLowerCase()})),yc=uo((function(t,e,n){return t+(n?" ":"")+e.toLowerCase()})),Ac=co("toLowerCase");var _c=uo((function(t,e,n){return t+(n?"_":"")+e.toLowerCase()}));var bc=uo((function(t,e,n){return t+(n?" ":"")+xc(e)}));var wc=uo((function(t,e,n){return t+(n?" ":"")+e.toUpperCase()})),xc=co("toUpperCase");function Cc(t,e,n){return t=Ws(t),(e=n?o:e)===o?function(t){return xe.test(t)}(t)?function(t){return t.match(be)||[]}(t):function(t){return t.match(Rt)||[]}(t):t.match(e)||[]}var kc=xi((function(t,e){try{return We(t,o,e)}catch(t){return xs(t)?t:new Zt(t)}})),Tc=Do((function(t,e){return Qe(e,(function(e){e=la(e),Or(t,e,ns(t[e],t))})),t}));function Ec(t){return function(){return t}}var $c=po(),Sc=po(!0);function Dc(t){return t}function Bc(t){return ci("function"==typeof t?t:jr(t,d))}var Oc=xi((function(t,e){return function(n){return ri(n,t,e)}})),Ic=xi((function(t,e){return function(n){return ri(t,n,e)}}));function Nc(t,e,n){var r=ic(e),i=Gr(e,r);null!=n||Es(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Gr(e,ic(e)));var o=!(Es(n)&&"chain"in n&&!n.chain),a=Cs(t);return Qe(i,(function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__),i=n.__actions__=no(this.__actions__);return i.push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,tn([this.value()],arguments))})})),t}function jc(){}var Fc=go(Xe),Pc=go(Ge),Mc=go(rn);function Lc(t){return Yo(t)?dn(la(t)):function(t){return function(e){return Kr(e,t)}}(t)}var Rc=Ao(),zc=Ao(!0);function Hc(){return[]}function Uc(){return!1}var qc=mo((function(t,e){return t+e}),0),Wc=wo("ceil"),Vc=mo((function(t,e){return t/e}),1),Qc=wo("floor");var Yc,Gc=mo((function(t,e){return t*e}),1),Kc=wo("round"),Jc=mo((function(t,e){return t-e}),0);return pr.after=function(t,e){if("function"!=typeof e)throw new ie(c);return t=zs(t),function(){if(--t<1)return e.apply(this,arguments)}},pr.ary=ts,pr.assign=Vs,pr.assignIn=Qs,pr.assignInWith=Ys,pr.assignWith=Gs,pr.at=Ks,pr.before=es,pr.bind=ns,pr.bindAll=Tc,pr.bindKey=rs,pr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return gs(t)?t:[t]},pr.chain=La,pr.chunk=function(t,e,n){e=(n?Qo(t,e,n):e===o)?1:Wn(zs(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var a=0,s=0,c=r(Mn(i/e));ai?0:i+n),(r=r===o||r>i?i:zs(r))<0&&(r+=i),r=n>r?0:Hs(r);n>>0)?(t=Ws(t))&&("string"==typeof e||null!=e&&!Os(e))&&!(e=Fi(e))&&kn(t)?Yi(On(t),0,n):t.split(e,n):[]},pr.spread=function(t,e){if("function"!=typeof t)throw new ie(c);return e=null==e?0:Wn(zs(e),0),xi((function(n){var r=n[e],i=Yi(n,0,e);return r&&tn(i,r),We(t,this,i)}))},pr.tail=function(t){var e=null==t?0:t.length;return e?Di(t,1,e):[]},pr.take=function(t,e,n){return t&&t.length?Di(t,0,(e=n||e===o?1:zs(e))<0?0:e):[]},pr.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Di(t,(e=r-(e=n||e===o?1:zs(e)))<0?0:e,r):[]},pr.takeRightWhile=function(t,e){return t&&t.length?Ri(t,Fo(e,3),!1,!0):[]},pr.takeWhile=function(t,e){return t&&t.length?Ri(t,Fo(e,3)):[]},pr.tap=function(t,e){return e(t),t},pr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(c);return Es(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(t,e,{leading:r,maxWait:e,trailing:i})},pr.thru=Ra,pr.toArray=Ls,pr.toPairs=fc,pr.toPairsIn=dc,pr.toPath=function(t){return gs(t)?Xe(t,la):js(t)?[t]:no(ua(Ws(t)))},pr.toPlainObject=qs,pr.transform=function(t,e,n){var r=gs(t),i=r||bs(t)||Fs(t);if(e=Fo(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:Es(t)&&Cs(o)?hr(Be(t)):{}}return(i?Qe:Qr)(t,(function(t,r,i){return e(n,t,r,i)})),n},pr.unary=function(t){return ts(t,1)},pr.union=$a,pr.unionBy=Sa,pr.unionWith=Da,pr.uniq=function(t){return t&&t.length?Pi(t):[]},pr.uniqBy=function(t,e){return t&&t.length?Pi(t,Fo(e,2)):[]},pr.uniqWith=function(t,e){return e="function"==typeof e?e:o,t&&t.length?Pi(t,o,e):[]},pr.unset=function(t,e){return null==t||Mi(t,e)},pr.unzip=Ba,pr.unzipWith=Oa,pr.update=function(t,e,n){return null==t?t:Li(t,e,Wi(n))},pr.updateWith=function(t,e,n,r){return r="function"==typeof r?r:o,null==t?t:Li(t,e,Wi(n),r)},pr.values=pc,pr.valuesIn=function(t){return null==t?[]:yn(t,oc(t))},pr.without=Ia,pr.words=Cc,pr.wrap=function(t,e){return ls(Wi(e),t)},pr.xor=Na,pr.xorBy=ja,pr.xorWith=Fa,pr.zip=Pa,pr.zipObject=function(t,e){return Ui(t||[],e||[],$r)},pr.zipObjectDeep=function(t,e){return Ui(t||[],e||[],Ti)},pr.zipWith=Ma,pr.entries=fc,pr.entriesIn=dc,pr.extend=Qs,pr.extendWith=Ys,Nc(pr,pr),pr.add=qc,pr.attempt=kc,pr.camelCase=hc,pr.capitalize=vc,pr.ceil=Wc,pr.clamp=function(t,e,n){return n===o&&(n=e,e=o),n!==o&&(n=(n=Us(n))==n?n:0),e!==o&&(e=(e=Us(e))==e?e:0),Nr(Us(t),e,n)},pr.clone=function(t){return jr(t,h)},pr.cloneDeep=function(t){return jr(t,d|h)},pr.cloneDeepWith=function(t,e){return jr(t,d|h,e="function"==typeof e?e:o)},pr.cloneWith=function(t,e){return jr(t,h,e="function"==typeof e?e:o)},pr.conformsTo=function(t,e){return null==e||Fr(t,e,ic(e))},pr.deburr=mc,pr.defaultTo=function(t,e){return null==t||t!=t?e:t},pr.divide=Vc,pr.endsWith=function(t,e,n){t=Ws(t),e=Fi(e);var r=t.length,i=n=n===o?r:Nr(zs(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},pr.eq=ps,pr.escape=function(t){return(t=Ws(t))&&kt.test(t)?t.replace(xt,xn):t},pr.escapeRegExp=function(t){return(t=Ws(t))&&It.test(t)?t.replace(Ot,"\\$&"):t},pr.every=function(t,e,n){var r=gs(t)?Ge:zr;return n&&Qo(t,e,n)&&(e=o),r(t,Fo(e,3))},pr.find=Ua,pr.findIndex=ma,pr.findKey=function(t,e){return an(t,Fo(e,3),Qr)},pr.findLast=qa,pr.findLastIndex=ga,pr.findLastKey=function(t,e){return an(t,Fo(e,3),Yr)},pr.floor=Qc,pr.forEach=Wa,pr.forEachRight=Va,pr.forIn=function(t,e){return null==t?t:Wr(t,Fo(e,3),oc)},pr.forInRight=function(t,e){return null==t?t:Vr(t,Fo(e,3),oc)},pr.forOwn=function(t,e){return t&&Qr(t,Fo(e,3))},pr.forOwnRight=function(t,e){return t&&Yr(t,Fo(e,3))},pr.get=Xs,pr.gt=hs,pr.gte=vs,pr.has=function(t,e){return null!=t&&Uo(t,e,ti)},pr.hasIn=tc,pr.head=Aa,pr.identity=Dc,pr.includes=function(t,e,n,r){t=As(t)?t:pc(t),n=n&&!r?zs(n):0;var i=t.length;return n<0&&(n=Wn(i+n,0)),Ns(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&cn(t,e,n)>-1},pr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:zs(n);return i<0&&(i=Wn(r+i,0)),cn(t,e,i)},pr.inRange=function(t,e,n){return e=Rs(e),n===o?(n=e,e=0):n=Rs(n),function(t,e,n){return t>=Vn(e,n)&&t=-N&&t<=N},pr.isSet=Is,pr.isString=Ns,pr.isSymbol=js,pr.isTypedArray=Fs,pr.isUndefined=function(t){return t===o},pr.isWeakMap=function(t){return $s(t)&&Ho(t)==at},pr.isWeakSet=function(t){return $s(t)&&Zr(t)==st},pr.join=function(t,e){return null==t?"":Un.call(t,e)},pr.kebabCase=gc,pr.last=xa,pr.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=zs(n))<0?Wn(r+i,0):Vn(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):sn(t,ln,i,!0)},pr.lowerCase=yc,pr.lowerFirst=Ac,pr.lt=Ps,pr.lte=Ms,pr.max=function(t){return t&&t.length?Hr(t,Dc,Xr):o},pr.maxBy=function(t,e){return t&&t.length?Hr(t,Fo(e,2),Xr):o},pr.mean=function(t){return fn(t,Dc)},pr.meanBy=function(t,e){return fn(t,Fo(e,2))},pr.min=function(t){return t&&t.length?Hr(t,Dc,fi):o},pr.minBy=function(t,e){return t&&t.length?Hr(t,Fo(e,2),fi):o},pr.stubArray=Hc,pr.stubFalse=Uc,pr.stubObject=function(){return{}},pr.stubString=function(){return""},pr.stubTrue=function(){return!0},pr.multiply=Gc,pr.nth=function(t,e){return t&&t.length?mi(t,zs(e)):o},pr.noConflict=function(){return Ie._===this&&(Ie._=ve),this},pr.noop=jc,pr.now=Xa,pr.pad=function(t,e,n){t=Ws(t);var r=(e=zs(e))?Bn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return yo(Ln(i),n)+t+yo(Mn(i),n)},pr.padEnd=function(t,e,n){t=Ws(t);var r=(e=zs(e))?Bn(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Gn();return Vn(t+i*(e-t+Se("1e-"+((i+"").length-1))),e)}return bi(t,e)},pr.reduce=function(t,e,n){var r=gs(t)?en:hn,i=arguments.length<3;return r(t,Fo(e,4),n,i,Lr)},pr.reduceRight=function(t,e,n){var r=gs(t)?nn:hn,i=arguments.length<3;return r(t,Fo(e,4),n,i,Rr)},pr.repeat=function(t,e,n){return e=(n?Qo(t,e,n):e===o)?1:zs(e),wi(Ws(t),e)},pr.replace=function(){var t=arguments,e=Ws(t[0]);return t.length<3?e:e.replace(t[1],t[2])},pr.result=function(t,e,n){var r=-1,i=(e=Vi(e,t)).length;for(i||(i=1,t=o);++rN)return[];var n=P,r=Vn(t,P);e=Fo(e),t-=P;for(var i=mn(r,e);++n=a)return t;var c=n-Bn(r);if(c<1)return r;var u=s?Yi(s,0,c).join(""):t.slice(0,c);if(i===o)return u+r;if(s&&(c+=u.length-c),Os(i)){if(t.slice(c).search(i)){var l,f=u;for(i.global||(i=ne(i.source,Ws(Ut.exec(i))+"g")),i.lastIndex=0;l=i.exec(f);)var d=l.index;u=u.slice(0,d===o?c:d)}}else if(t.indexOf(Fi(i),c)!=c){var p=u.lastIndexOf(i);p>-1&&(u=u.slice(0,p))}return u+r},pr.unescape=function(t){return(t=Ws(t))&&Ct.test(t)?t.replace(wt,In):t},pr.uniqueId=function(t){var e=++fe;return Ws(t)+e},pr.upperCase=wc,pr.upperFirst=xc,pr.each=Wa,pr.eachRight=Va,pr.first=Aa,Nc(pr,(Yc={},Qr(pr,(function(t,e){le.call(pr.prototype,e)||(Yc[e]=t)})),Yc),{chain:!1}),pr.VERSION="4.17.15",Qe(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){pr[t].placeholder=pr})),Qe(["drop","take"],(function(t,e){gr.prototype[t]=function(n){n=n===o?1:Wn(zs(n),0);var r=this.__filtered__&&!e?new gr(this):this.clone();return r.__filtered__?r.__takeCount__=Vn(n,r.__takeCount__):r.__views__.push({size:Vn(n,P),type:t+(r.__dir__<0?"Right":"")}),r},gr.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}})),Qe(["filter","map","takeWhile"],(function(t,e){var n=e+1,r=n==B||3==n;gr.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Fo(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}})),Qe(["head","last"],(function(t,e){var n="take"+(e?"Right":"");gr.prototype[t]=function(){return this[n](1).value()[0]}})),Qe(["initial","tail"],(function(t,e){var n="drop"+(e?"":"Right");gr.prototype[t]=function(){return this.__filtered__?new gr(this):this[n](1)}})),gr.prototype.compact=function(){return this.filter(Dc)},gr.prototype.find=function(t){return this.filter(t).head()},gr.prototype.findLast=function(t){return this.reverse().find(t)},gr.prototype.invokeMap=xi((function(t,e){return"function"==typeof t?new gr(this):this.map((function(n){return ri(n,t,e)}))})),gr.prototype.reject=function(t){return this.filter(cs(Fo(t)))},gr.prototype.slice=function(t,e){t=zs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new gr(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==o&&(n=(e=zs(e))<0?n.dropRight(-e):n.take(e-t)),n)},gr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},gr.prototype.toArray=function(){return this.take(P)},Qr(gr.prototype,(function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=pr[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);i&&(pr.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,c=e instanceof gr,u=s[0],l=c||gs(e),f=function(t){var e=i.apply(pr,tn([t],s));return r&&d?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(c=l=!1);var d=this.__chain__,p=!!this.__actions__.length,h=a&&!d,v=c&&!p;if(!a&&l){e=v?e:new gr(this);var m=t.apply(e,s);return m.__actions__.push({func:Ra,args:[f],thisArg:o}),new mr(m,d)}return h&&v?t.apply(this,s):(m=this.thru(f),h?r?m.value()[0]:m.value():m)})})),Qe(["pop","push","shift","sort","splice","unshift"],(function(t){var e=oe[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);pr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(gs(i)?i:[],t)}return this[n]((function(n){return e.apply(gs(n)?n:[],t)}))}})),Qr(gr.prototype,(function(t,e){var n=pr[e];if(n){var r=n.name+"";le.call(ir,r)||(ir[r]=[]),ir[r].push({name:e,func:n})}})),ir[ho(o,y).name]=[{name:"wrapper",func:o}],gr.prototype.clone=function(){var t=new gr(this.__wrapped__);return t.__actions__=no(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=no(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=no(this.__views__),t},gr.prototype.reverse=function(){if(this.__filtered__){var t=new gr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},gr.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=gs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:t,value:t?o:this.__values__[this.__index__++]}},pr.prototype.plant=function(t){for(var e,n=this;n instanceof vr;){var r=da(n);r.__index__=0,r.__values__=o,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},pr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof gr){var e=t;return this.__actions__.length&&(e=new gr(this)),(e=e.reverse()).__actions__.push({func:Ra,args:[Ea],thisArg:o}),new mr(e,this.__chain__)}return this.thru(Ea)},pr.prototype.toJSON=pr.prototype.valueOf=pr.prototype.value=function(){return zi(this.__wrapped__,this.__actions__)},pr.prototype.first=pr.prototype.head,Me&&(pr.prototype[Me]=function(){return this}),pr}();Ie._=Nn,(i=function(){return Nn}.call(e,n,e,r))===o||(r.exports=i)}).call(this)}).call(this,n(2),n(47)(t))},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,n){var r;!function(e,n){"use strict";"object"==typeof t.exports?t.exports=e.document?n(e,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return n(t)}:n(e)}("undefined"!=typeof window?window:this,(function(n,i){"use strict";var o=[],a=n.document,s=Object.getPrototypeOf,c=o.slice,u=o.concat,l=o.push,f=o.indexOf,d={},p=d.toString,h=d.hasOwnProperty,v=h.toString,m=v.call(Object),g={},y=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType},A=function(t){return null!=t&&t===t.window},_={type:!0,src:!0,nonce:!0,noModule:!0};function b(t,e,n){var r,i,o=(n=n||a).createElement("script");if(o.text=t,e)for(r in _)(i=e[r]||e.getAttribute&&e.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?d[p.call(t)]||"object":typeof t}var x=function(t,e){return new x.fn.init(t,e)},C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function k(t){var e=!!t&&"length"in t&&t.length,n=w(t);return!y(t)&&!A(t)&&("array"===n||0===e||"number"==typeof e&&e>0&&e-1 in t)}x.fn=x.prototype={jquery:"3.4.1",constructor:x,length:0,toArray:function(){return c.call(this)},get:function(t){return null==t?c.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=x.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return x.each(this,t)},map:function(t){return this.pushStack(x.map(this,(function(e,n){return t.call(e,n,e)})))},slice:function(){return this.pushStack(c.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(t){var e=this.length,n=+t+(t<0?e:0);return this.pushStack(n>=0&&n+~]|"+P+")"+P+"*"),W=new RegExp(P+"|>"),V=new RegExp(R),Q=new RegExp("^"+M+"$"),Y={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+L),PSEUDO:new RegExp("^"+R),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:new RegExp("^(?:"+F+")$","i"),needsContext:new RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},G=/HTML$/i,K=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,X=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),nt=function(t,e,n){var r="0x"+e-65536;return r!=r||n?e:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},rt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,it=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},ot=function(){d()},at=_t((function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{I.apply(D=N.call(b.childNodes),b.childNodes),D[b.childNodes.length].nodeType}catch(t){I={apply:D.length?function(t,e){O.apply(t,N.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function st(t,e,r,i){var o,s,u,l,f,h,g,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(r=r||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return r;if(!i&&((e?e.ownerDocument||e:b)!==p&&d(e),e=e||p,v)){if(11!==w&&(f=X.exec(t)))if(o=f[1]){if(9===w){if(!(u=e.getElementById(o)))return r;if(u.id===o)return r.push(u),r}else if(y&&(u=y.getElementById(o))&&A(e,u)&&u.id===o)return r.push(u),r}else{if(f[2])return I.apply(r,e.getElementsByTagName(t)),r;if((o=f[3])&&n.getElementsByClassName&&e.getElementsByClassName)return I.apply(r,e.getElementsByClassName(o)),r}if(n.qsa&&!E[t+" "]&&(!m||!m.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(g=t,y=e,1===w&&W.test(t)){for((l=e.getAttribute("id"))?l=l.replace(rt,it):e.setAttribute("id",l=_),s=(h=a(t)).length;s--;)h[s]="#"+l+" "+At(h[s]);g=h.join(","),y=tt.test(t)&>(e.parentNode)||e}try{return I.apply(r,y.querySelectorAll(g)),r}catch(e){E(t,!0)}finally{l===_&&e.removeAttribute("id")}}}return c(t.replace(H,"$1"),e,r,i)}function ct(){var t=[];return function e(n,i){return t.push(n+" ")>r.cacheLength&&delete e[t.shift()],e[n+" "]=i}}function ut(t){return t[_]=!0,t}function lt(t){var e=p.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ft(t,e){for(var n=t.split("|"),i=n.length;i--;)r.attrHandle[n[i]]=e}function dt(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function pt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ht(t){return function(e){var n=e.nodeName.toLowerCase();return("input"===n||"button"===n)&&e.type===t}}function vt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&at(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function mt(t){return ut((function(e){return e=+e,ut((function(n,r){for(var i,o=t([],n.length,e),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function gt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in n=st.support={},o=st.isXML=function(t){var e=t.namespaceURI,n=(t.ownerDocument||t).documentElement;return!G.test(e||n&&n.nodeName||"HTML")},d=st.setDocument=function(t){var e,i,a=t?t.ownerDocument||t:b;return a!==p&&9===a.nodeType&&a.documentElement?(h=(p=a).documentElement,v=!o(p),b!==p&&(i=p.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",ot,!1):i.attachEvent&&i.attachEvent("onunload",ot)),n.attributes=lt((function(t){return t.className="i",!t.getAttribute("className")})),n.getElementsByTagName=lt((function(t){return t.appendChild(p.createComment("")),!t.getElementsByTagName("*").length})),n.getElementsByClassName=Z.test(p.getElementsByClassName),n.getById=lt((function(t){return h.appendChild(t).id=_,!p.getElementsByName||!p.getElementsByName(_).length})),n.getById?(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){return t.getAttribute("id")===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n=e.getElementById(t);return n?[n]:[]}}):(r.filter.ID=function(t){var e=t.replace(et,nt);return function(t){var n=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return n&&n.value===e}},r.find.ID=function(t,e){if(void 0!==e.getElementById&&v){var n,r,i,o=e.getElementById(t);if(o){if((n=o.getAttributeNode("id"))&&n.value===t)return[o];for(i=e.getElementsByName(t),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===t)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):n.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"===t){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&v)return e.getElementsByClassName(t)},g=[],m=[],(n.qsa=Z.test(p.querySelectorAll))&&(lt((function(t){h.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+P+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||m.push("\\["+P+"*(?:value|"+F+")"),t.querySelectorAll("[id~="+_+"-]").length||m.push("~="),t.querySelectorAll(":checked").length||m.push(":checked"),t.querySelectorAll("a#"+_+"+*").length||m.push(".#.+[+~]")})),lt((function(t){t.innerHTML="";var e=p.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&m.push("name"+P+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),h.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),m.push(",.*:")}))),(n.matchesSelector=Z.test(y=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&<((function(t){n.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),g.push("!=",R)})),m=m.length&&new RegExp(m.join("|")),g=g.length&&new RegExp(g.join("|")),e=Z.test(h.compareDocumentPosition),A=e||Z.test(h.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,r=e&&e.parentNode;return t===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):t.compareDocumentPosition&&16&t.compareDocumentPosition(r)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},$=e?function(t,e){if(t===e)return f=!0,0;var r=!t.compareDocumentPosition-!e.compareDocumentPosition;return r||(1&(r=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!n.sortDetached&&e.compareDocumentPosition(t)===r?t===p||t.ownerDocument===b&&A(b,t)?-1:e===p||e.ownerDocument===b&&A(b,e)?1:l?j(l,t)-j(l,e):0:4&r?-1:1)}:function(t,e){if(t===e)return f=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,a=[t],s=[e];if(!i||!o)return t===p?-1:e===p?1:i?-1:o?1:l?j(l,t)-j(l,e):0;if(i===o)return dt(t,e);for(n=t;n=n.parentNode;)a.unshift(n);for(n=e;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?dt(a[r],s[r]):a[r]===b?-1:s[r]===b?1:0},p):p},st.matches=function(t,e){return st(t,null,null,e)},st.matchesSelector=function(t,e){if((t.ownerDocument||t)!==p&&d(t),n.matchesSelector&&v&&!E[e+" "]&&(!g||!g.test(e))&&(!m||!m.test(e)))try{var r=y.call(t,e);if(r||n.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(t){E(e,!0)}return st(e,p,null,[t]).length>0},st.contains=function(t,e){return(t.ownerDocument||t)!==p&&d(t),A(t,e)},st.attr=function(t,e){(t.ownerDocument||t)!==p&&d(t);var i=r.attrHandle[e.toLowerCase()],o=i&&S.call(r.attrHandle,e.toLowerCase())?i(t,e,!v):void 0;return void 0!==o?o:n.attributes||!v?t.getAttribute(e):(o=t.getAttributeNode(e))&&o.specified?o.value:null},st.escape=function(t){return(t+"").replace(rt,it)},st.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},st.uniqueSort=function(t){var e,r=[],i=0,o=0;if(f=!n.detectDuplicates,l=!n.sortStable&&t.slice(0),t.sort($),f){for(;e=t[o++];)e===t[o]&&(i=r.push(o));for(;i--;)t.splice(r[i],1)}return l=null,t},i=st.getText=function(t){var e,n="",r=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)n+=i(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[r++];)n+=i(e);return n},(r=st.selectors={cacheLength:50,createPseudo:ut,match:Y,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,nt),t[3]=(t[3]||t[4]||t[5]||"").replace(et,nt),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||st.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&st.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return Y.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&V.test(n)&&(e=a(n,!0))&&(e=n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,nt).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=C[t+" "];return e||(e=new RegExp("(^|"+P+")"+t+"("+P+"|$)"))&&C(t,(function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")}))},ATTR:function(t,e,n){return function(r){var i=st.attr(r,t);return null==i?"!="===e:!e||(i+="","="===e?i===n:"!="===e?i!==n:"^="===e?n&&0===i.indexOf(n):"*="===e?n&&i.indexOf(n)>-1:"$="===e?n&&i.slice(-n.length)===n:"~="===e?(" "+i.replace(z," ")+" ").indexOf(n)>-1:"|="===e&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(t,e,n,r,i){var o="nth"!==t.slice(0,3),a="last"!==t.slice(-4),s="of-type"===e;return 1===r&&0===i?function(t){return!!t.parentNode}:function(e,n,c){var u,l,f,d,p,h,v=o!==a?"nextSibling":"previousSibling",m=e.parentNode,g=s&&e.nodeName.toLowerCase(),y=!c&&!s,A=!1;if(m){if(o){for(;v;){for(d=e;d=d[v];)if(s?d.nodeName.toLowerCase()===g:1===d.nodeType)return!1;h=v="only"===t&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&y){for(A=(p=(u=(l=(f=(d=m)[_]||(d[_]={}))[d.uniqueID]||(f[d.uniqueID]={}))[t]||[])[0]===w&&u[1])&&u[2],d=p&&m.childNodes[p];d=++p&&d&&d[v]||(A=p=0)||h.pop();)if(1===d.nodeType&&++A&&d===e){l[t]=[w,p,A];break}}else if(y&&(A=p=(u=(l=(f=(d=e)[_]||(d[_]={}))[d.uniqueID]||(f[d.uniqueID]={}))[t]||[])[0]===w&&u[1]),!1===A)for(;(d=++p&&d&&d[v]||(A=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==g:1!==d.nodeType)||!++A||(y&&((l=(f=d[_]||(d[_]={}))[d.uniqueID]||(f[d.uniqueID]={}))[t]=[w,A]),d!==e)););return(A-=i)===r||A%r==0&&A/r>=0}}},PSEUDO:function(t,e){var n,i=r.pseudos[t]||r.setFilters[t.toLowerCase()]||st.error("unsupported pseudo: "+t);return i[_]?i(e):i.length>1?(n=[t,t,"",e],r.setFilters.hasOwnProperty(t.toLowerCase())?ut((function(t,n){for(var r,o=i(t,e),a=o.length;a--;)t[r=j(t,o[a])]=!(n[r]=o[a])})):function(t){return i(t,0,n)}):i}},pseudos:{not:ut((function(t){var e=[],n=[],r=s(t.replace(H,"$1"));return r[_]?ut((function(t,e,n,i){for(var o,a=r(t,null,i,[]),s=t.length;s--;)(o=a[s])&&(t[s]=!(e[s]=o))})):function(t,i,o){return e[0]=t,r(e,null,o,n),e[0]=null,!n.pop()}})),has:ut((function(t){return function(e){return st(t,e).length>0}})),contains:ut((function(t){return t=t.replace(et,nt),function(e){return(e.textContent||i(e)).indexOf(t)>-1}})),lang:ut((function(t){return Q.test(t||"")||st.error("unsupported lang: "+t),t=t.replace(et,nt).toLowerCase(),function(e){var n;do{if(n=v?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(n=n.toLowerCase())===t||0===n.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}})),target:function(e){var n=t.location&&t.location.hash;return n&&n.slice(1)===e.id},root:function(t){return t===h},focus:function(t){return t===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:vt(!1),disabled:vt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!r.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return K.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:mt((function(){return[0]})),last:mt((function(t,e){return[e-1]})),eq:mt((function(t,e,n){return[n<0?n+e:n]})),even:mt((function(t,e){for(var n=0;ne?e:n;--r>=0;)t.push(r);return t})),gt:mt((function(t,e,n){for(var r=n<0?n+e:n;++r1?function(e,n,r){for(var i=t.length;i--;)if(!t[i](e,n,r))return!1;return!0}:t[0]}function wt(t,e,n,r,i){for(var o,a=[],s=0,c=t.length,u=null!=e;s-1&&(o[u]=!(a[u]=f))}}else g=wt(g===a?g.splice(h,g.length):g),i?i(null,a,g,c):I.apply(a,g)}))}function Ct(t){for(var e,n,i,o=t.length,a=r.relative[t[0].type],s=a||r.relative[" "],c=a?1:0,l=_t((function(t){return t===e}),s,!0),f=_t((function(t){return j(e,t)>-1}),s,!0),d=[function(t,n,r){var i=!a&&(r||n!==u)||((e=n).nodeType?l(t,n,r):f(t,n,r));return e=null,i}];c1&&bt(d),c>1&&At(t.slice(0,c-1).concat({value:" "===t[c-2].type?"*":""})).replace(H,"$1"),n,c0,i=t.length>0,o=function(o,a,s,c,l){var f,h,m,g=0,y="0",A=o&&[],_=[],b=u,x=o||i&&r.find.TAG("*",l),C=w+=null==b?1:Math.random()||.1,k=x.length;for(l&&(u=a===p||a||l);y!==k&&null!=(f=x[y]);y++){if(i&&f){for(h=0,a||f.ownerDocument===p||(d(f),s=!v);m=t[h++];)if(m(f,a||p,s)){c.push(f);break}l&&(w=C)}n&&((f=!m&&f)&&g--,o&&A.push(f))}if(g+=y,n&&y!==g){for(h=0;m=e[h++];)m(A,_,a,s);if(o){if(g>0)for(;y--;)A[y]||_[y]||(_[y]=B.call(c));_=wt(_)}I.apply(c,_),l&&!o&&_.length>0&&g+e.length>1&&st.uniqueSort(c)}return l&&(w=C,u=b),A};return n?ut(o):o}(o,i))).selector=t}return s},c=st.select=function(t,e,n,i){var o,c,u,l,f,d="function"==typeof t&&t,p=!i&&a(t=d.selector||t);if(n=n||[],1===p.length){if((c=p[0]=p[0].slice(0)).length>2&&"ID"===(u=c[0]).type&&9===e.nodeType&&v&&r.relative[c[1].type]){if(!(e=(r.find.ID(u.matches[0].replace(et,nt),e)||[])[0]))return n;d&&(e=e.parentNode),t=t.slice(c.shift().value.length)}for(o=Y.needsContext.test(t)?0:c.length;o--&&(u=c[o],!r.relative[l=u.type]);)if((f=r.find[l])&&(i=f(u.matches[0].replace(et,nt),tt.test(c[0].type)&>(e.parentNode)||e))){if(c.splice(o,1),!(t=i.length&&At(c)))return I.apply(n,i),n;break}}return(d||s(t,p))(i,e,!v,n,!e||tt.test(t)&>(e.parentNode)||e),n},n.sortStable=_.split("").sort($).join("")===_,n.detectDuplicates=!!f,d(),n.sortDetached=lt((function(t){return 1&t.compareDocumentPosition(p.createElement("fieldset"))})),lt((function(t){return t.innerHTML="","#"===t.firstChild.getAttribute("href")}))||ft("type|href|height|width",(function(t,e,n){if(!n)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)})),n.attributes&<((function(t){return t.innerHTML="",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")}))||ft("value",(function(t,e,n){if(!n&&"input"===t.nodeName.toLowerCase())return t.defaultValue})),lt((function(t){return null==t.getAttribute("disabled")}))||ft(F,(function(t,e,n){var r;if(!n)return!0===t[e]?e.toLowerCase():(r=t.getAttributeNode(e))&&r.specified?r.value:null})),st}(n);x.find=T,x.expr=T.selectors,x.expr[":"]=x.expr.pseudos,x.uniqueSort=x.unique=T.uniqueSort,x.text=T.getText,x.isXMLDoc=T.isXML,x.contains=T.contains,x.escapeSelector=T.escape;var E=function(t,e,n){for(var r=[],i=void 0!==n;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(i&&x(t).is(n))break;r.push(t)}return r},$=function(t,e){for(var n=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&n.push(t);return n},S=x.expr.match.needsContext;function D(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function O(t,e,n){return y(e)?x.grep(t,(function(t,r){return!!e.call(t,r,t)!==n})):e.nodeType?x.grep(t,(function(t){return t===e!==n})):"string"!=typeof e?x.grep(t,(function(t){return f.call(e,t)>-1!==n})):x.filter(e,t,n)}x.filter=function(t,e,n){var r=e[0];return n&&(t=":not("+t+")"),1===e.length&&1===r.nodeType?x.find.matchesSelector(r,t)?[r]:[]:x.find.matches(t,x.grep(e,(function(t){return 1===t.nodeType})))},x.fn.extend({find:function(t){var e,n,r=this.length,i=this;if("string"!=typeof t)return this.pushStack(x(t).filter((function(){for(e=0;e1?x.uniqueSort(n):n},filter:function(t){return this.pushStack(O(this,t||[],!1))},not:function(t){return this.pushStack(O(this,t||[],!0))},is:function(t){return!!O(this,"string"==typeof t&&S.test(t)?x(t):t||[],!1).length}});var I,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(x.fn.init=function(t,e,n){var r,i;if(!t)return this;if(n=n||I,"string"==typeof t){if(!(r="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:N.exec(t))||!r[1]&&e)return!e||e.jquery?(e||n).find(t):this.constructor(e).find(t);if(r[1]){if(e=e instanceof x?e[0]:e,x.merge(this,x.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:a,!0)),B.test(r[1])&&x.isPlainObject(e))for(r in e)y(this[r])?this[r](e[r]):this.attr(r,e[r]);return this}return(i=a.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):y(t)?void 0!==n.ready?n.ready(t):t(x):x.makeArray(t,this)}).prototype=x.fn,I=x(a);var j=/^(?:parents|prev(?:Until|All))/,F={children:!0,contents:!0,next:!0,prev:!0};function P(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}x.fn.extend({has:function(t){var e=x(t,this),n=e.length;return this.filter((function(){for(var t=0;t-1:1===n.nodeType&&x.find.matchesSelector(n,t))){o.push(n);break}return this.pushStack(o.length>1?x.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?f.call(x(t),this[0]):f.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(x.uniqueSort(x.merge(this.get(),x(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),x.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return E(t,"parentNode")},parentsUntil:function(t,e,n){return E(t,"parentNode",n)},next:function(t){return P(t,"nextSibling")},prev:function(t){return P(t,"previousSibling")},nextAll:function(t){return E(t,"nextSibling")},prevAll:function(t){return E(t,"previousSibling")},nextUntil:function(t,e,n){return E(t,"nextSibling",n)},prevUntil:function(t,e,n){return E(t,"previousSibling",n)},siblings:function(t){return $((t.parentNode||{}).firstChild,t)},children:function(t){return $(t.firstChild)},contents:function(t){return void 0!==t.contentDocument?t.contentDocument:(D(t,"template")&&(t=t.content||t),x.merge([],t.childNodes))}},(function(t,e){x.fn[t]=function(n,r){var i=x.map(this,e,n);return"Until"!==t.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(F[t]||x.uniqueSort(i),j.test(t)&&i.reverse()),this.pushStack(i)}}));var M=/[^\x20\t\r\n\f]+/g;function L(t){return t}function R(t){throw t}function z(t,e,n,r){var i;try{t&&y(i=t.promise)?i.call(t).done(e).fail(n):t&&y(i=t.then)?i.call(t,e,n):e.apply(void 0,[t].slice(r))}catch(t){n.apply(void 0,[t])}}x.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return x.each(t.match(M)||[],(function(t,n){e[n]=!0})),e}(t):x.extend({},t);var e,n,r,i,o=[],a=[],s=-1,c=function(){for(i=i||t.once,r=e=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(t){return t?x.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||e||(o=n=""),this},locked:function(){return!!i},fireWith:function(t,n){return i||(n=[t,(n=n||[]).slice?n.slice():n],a.push(n),e||c()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!r}};return u},x.extend({Deferred:function(t){var e=[["notify","progress",x.Callbacks("memory"),x.Callbacks("memory"),2],["resolve","done",x.Callbacks("once memory"),x.Callbacks("once memory"),0,"resolved"],["reject","fail",x.Callbacks("once memory"),x.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return i.then(null,t)},pipe:function(){var t=arguments;return x.Deferred((function(n){x.each(e,(function(e,r){var i=y(t[r[4]])&&t[r[4]];o[r[1]]((function(){var t=i&&i.apply(this,arguments);t&&y(t.promise)?t.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[r[0]+"With"](this,i?[t]:arguments)}))})),t=null})).promise()},then:function(t,r,i){var o=0;function a(t,e,r,i){return function(){var s=this,c=arguments,u=function(){var n,u;if(!(t=o&&(r!==R&&(s=void 0,c=[n]),e.rejectWith(s,c))}};t?l():(x.Deferred.getStackHook&&(l.stackTrace=x.Deferred.getStackHook()),n.setTimeout(l))}}return x.Deferred((function(n){e[0][3].add(a(0,n,y(i)?i:L,n.notifyWith)),e[1][3].add(a(0,n,y(t)?t:L)),e[2][3].add(a(0,n,y(r)?r:R))})).promise()},promise:function(t){return null!=t?x.extend(t,i):i}},o={};return x.each(e,(function(t,n){var a=n[2],s=n[5];i[n[1]]=a.add,s&&a.add((function(){r=s}),e[3-t][2].disable,e[3-t][3].disable,e[0][2].lock,e[0][3].lock),a.add(n[3].fire),o[n[0]]=function(){return o[n[0]+"With"](this===o?void 0:this,arguments),this},o[n[0]+"With"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(t){var e=arguments.length,n=e,r=Array(n),i=c.call(arguments),o=x.Deferred(),a=function(t){return function(n){r[t]=this,i[t]=arguments.length>1?c.call(arguments):n,--e||o.resolveWith(r,i)}};if(e<=1&&(z(t,o.done(a(n)).resolve,o.reject,!e),"pending"===o.state()||y(i[n]&&i[n].then)))return o.then();for(;n--;)z(i[n],a(n),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;x.Deferred.exceptionHook=function(t,e){n.console&&n.console.warn&&t&&H.test(t.name)&&n.console.warn("jQuery.Deferred exception: "+t.message,t.stack,e)},x.readyException=function(t){n.setTimeout((function(){throw t}))};var U=x.Deferred();function q(){a.removeEventListener("DOMContentLoaded",q),n.removeEventListener("load",q),x.ready()}x.fn.ready=function(t){return U.then(t).catch((function(t){x.readyException(t)})),this},x.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--x.readyWait:x.isReady)||(x.isReady=!0,!0!==t&&--x.readyWait>0||U.resolveWith(a,[x]))}}),x.ready.then=U.then,"complete"===a.readyState||"loading"!==a.readyState&&!a.documentElement.doScroll?n.setTimeout(x.ready):(a.addEventListener("DOMContentLoaded",q),n.addEventListener("load",q));var W=function(t,e,n,r,i,o,a){var s=0,c=t.length,u=null==n;if("object"===w(n))for(s in i=!0,n)W(t,e,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,y(r)||(a=!0),u&&(a?(e.call(t,r),e=null):(u=e,e=function(t,e,n){return u.call(x(t),n)})),e))for(;s1,null,!0)},removeData:function(t){return this.each((function(){X.remove(this,t)}))}}),x.extend({queue:function(t,e,n){var r;if(t)return e=(e||"fx")+"queue",r=Z.get(t,e),n&&(!r||Array.isArray(n)?r=Z.access(t,e,x.makeArray(n)):r.push(n)),r||[]},dequeue:function(t,e){e=e||"fx";var n=x.queue(t,e),r=n.length,i=n.shift(),o=x._queueHooks(t,e);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===e&&n.unshift("inprogress"),delete o.stop,i.call(t,(function(){x.dequeue(t,e)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(t,e){var n=e+"queueHooks";return Z.get(t,n)||Z.access(t,n,{empty:x.Callbacks("once memory").add((function(){Z.remove(t,[e+"queue",n])}))})}}),x.fn.extend({queue:function(t,e){var n=2;return"string"!=typeof t&&(e=t,t="fx",n--),arguments.length\x20\t\r\n\f]*)/i,gt=/^$|^module$|\/(?:java|ecma)script/i,yt={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function At(t,e){var n;return n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&D(t,e)?x.merge([t],n):n}function _t(t,e){for(var n=0,r=t.length;n-1)i&&i.push(o);else if(u=st(o),a=At(f.appendChild(o),"script"),u&&_t(a),n)for(l=0;o=a[l++];)gt.test(o.type||"")&&n.push(o);return f}bt=a.createDocumentFragment().appendChild(a.createElement("div")),(wt=a.createElement("input")).setAttribute("type","radio"),wt.setAttribute("checked","checked"),wt.setAttribute("name","t"),bt.appendChild(wt),g.checkClone=bt.cloneNode(!0).cloneNode(!0).lastChild.checked,bt.innerHTML="",g.noCloneChecked=!!bt.cloneNode(!0).lastChild.defaultValue;var kt=/^key/,Tt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Et=/^([^.]*)(?:\.(.+)|)/;function $t(){return!0}function St(){return!1}function Dt(t,e){return t===function(){try{return a.activeElement}catch(t){}}()==("focus"===e)}function Bt(t,e,n,r,i,o){var a,s;if("object"==typeof e){for(s in"string"!=typeof n&&(r=r||n,n=void 0),e)Bt(t,s,n,r,e[s],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=St;else if(!i)return t;return 1===o&&(a=i,(i=function(t){return x().off(t),a.apply(this,arguments)}).guid=a.guid||(a.guid=x.guid++)),t.each((function(){x.event.add(this,e,i,r,n)}))}function Ot(t,e,n){n?(Z.set(t,e,!1),x.event.add(t,e,{namespace:!1,handler:function(t){var r,i,o=Z.get(this,e);if(1&t.isTrigger&&this[e]){if(o.length)(x.event.special[e]||{}).delegateType&&t.stopPropagation();else if(o=c.call(arguments),Z.set(this,e,o),r=n(this,e),this[e](),o!==(i=Z.get(this,e))||r?Z.set(this,e,!1):i={},o!==i)return t.stopImmediatePropagation(),t.preventDefault(),i.value}else o.length&&(Z.set(this,e,{value:x.event.trigger(x.extend(o[0],x.Event.prototype),o.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===Z.get(t,e)&&x.event.add(t,e,$t)}x.event={global:{},add:function(t,e,n,r,i){var o,a,s,c,u,l,f,d,p,h,v,m=Z.get(t);if(m)for(n.handler&&(n=(o=n).handler,i=o.selector),i&&x.find.matchesSelector(at,i),n.guid||(n.guid=x.guid++),(c=m.events)||(c=m.events={}),(a=m.handle)||(a=m.handle=function(e){return void 0!==x&&x.event.triggered!==e.type?x.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(M)||[""]).length;u--;)p=v=(s=Et.exec(e[u])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=x.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=x.event.special[p]||{},l=x.extend({type:p,origType:v,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&x.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=c[p])||((d=c[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,l),l.handler.guid||(l.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,l):d.push(l),x.event.global[p]=!0)},remove:function(t,e,n,r,i){var o,a,s,c,u,l,f,d,p,h,v,m=Z.hasData(t)&&Z.get(t);if(m&&(c=m.events)){for(u=(e=(e||"").match(M)||[""]).length;u--;)if(p=v=(s=Et.exec(e[u])||[])[1],h=(s[2]||"").split(".").sort(),p){for(f=x.event.special[p]||{},d=c[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;o--;)l=d[o],!i&&v!==l.origType||n&&n.guid!==l.guid||s&&!s.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(d.splice(o,1),l.selector&&d.delegateCount--,f.remove&&f.remove.call(t,l));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(t,h,m.handle)||x.removeEvent(t,p,m.handle),delete c[p])}else for(p in c)x.event.remove(t,p+e[u],n,r,!0);x.isEmptyObject(c)&&Z.remove(t,"handle events")}},dispatch:function(t){var e,n,r,i,o,a,s=x.event.fix(t),c=new Array(arguments.length),u=(Z.get(this,"events")||{})[s.type]||[],l=x.event.special[s.type]||{};for(c[0]=s,e=1;e=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],a={},n=0;n-1:x.find(i,this,null,[u]).length),a[i]&&o.push(r);o.length&&s.push({elem:u,handlers:o})}return u=this,c\x20\t\r\n\f]*)[^>]*)\/>/gi,Nt=/\s*$/g;function Pt(t,e){return D(t,"table")&&D(11!==e.nodeType?e:e.firstChild,"tr")&&x(t).children("tbody")[0]||t}function Mt(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Lt(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Rt(t,e){var n,r,i,o,a,s,c,u;if(1===e.nodeType){if(Z.hasData(t)&&(o=Z.access(t),a=Z.set(e,o),u=o.events))for(i in delete a.handle,a.events={},u)for(n=0,r=u[i].length;n1&&"string"==typeof h&&!g.checkClone&&jt.test(h))return t.each((function(i){var o=t.eq(i);v&&(e[0]=h.call(this,i,o.html())),Ht(o,e,n,r)}));if(d&&(o=(i=Ct(e,t[0].ownerDocument,!1,t,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=x.map(At(i,"script"),Mt)).length;f")},clone:function(t,e,n){var r,i,o,a,s=t.cloneNode(!0),c=st(t);if(!(g.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||x.isXMLDoc(t)))for(a=At(s),r=0,i=(o=At(t)).length;r0&&_t(a,!c&&At(t,"script")),s},cleanData:function(t){for(var e,n,r,i=x.event.special,o=0;void 0!==(n=t[o]);o++)if(K(n)){if(e=n[Z.expando]){if(e.events)for(r in e.events)i[r]?x.event.remove(n,r):x.removeEvent(n,r,e.handle);n[Z.expando]=void 0}n[X.expando]&&(n[X.expando]=void 0)}}}),x.fn.extend({detach:function(t){return Ut(this,t,!0)},remove:function(t){return Ut(this,t)},text:function(t){return W(this,(function(t){return void 0===t?x.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)}))}),null,t,arguments.length)},append:function(){return Ht(this,arguments,(function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Pt(this,t).appendChild(t)}))},prepend:function(){return Ht(this,arguments,(function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=Pt(this,t);e.insertBefore(t,e.firstChild)}}))},before:function(){return Ht(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this)}))},after:function(){return Ht(this,arguments,(function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)}))},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(x.cleanData(At(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map((function(){return x.clone(this,t,e)}))},html:function(t){return W(this,(function(t){var e=this[0]||{},n=0,r=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Nt.test(t)&&!yt[(mt.exec(t)||["",""])[1].toLowerCase()]){t=x.htmlPrefilter(t);try{for(;n=0&&(c+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-c-s-.5))||0),c}function oe(t,e,n){var r=Wt(t),i=(!g.boxSizingReliable()||n)&&"border-box"===x.css(t,"boxSizing",!1,r),o=i,a=Qt(t,e,r),s="offset"+e[0].toUpperCase()+e.slice(1);if(qt.test(a)){if(!n)return a;a="auto"}return(!g.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===x.css(t,"display",!1,r))&&t.getClientRects().length&&(i="border-box"===x.css(t,"boxSizing",!1,r),(o=s in t)&&(a=t[s])),(a=parseFloat(a)||0)+ie(t,e,n||(i?"border":"content"),o,r,a)+"px"}function ae(t,e,n,r,i){return new ae.prototype.init(t,e,n,r,i)}x.extend({cssHooks:{opacity:{get:function(t,e){if(e){var n=Qt(t,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,n,r){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var i,o,a,s=G(e),c=te.test(e),u=t.style;if(c||(e=Zt(s)),a=x.cssHooks[e]||x.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(t,!1,r))?i:u[e];"string"===(o=typeof n)&&(i=it.exec(n))&&i[1]&&(n=ft(t,e,i),o="number"),null!=n&&n==n&&("number"!==o||c||(n+=i&&i[3]||(x.cssNumber[s]?"":"px")),g.clearCloneStyle||""!==n||0!==e.indexOf("background")||(u[e]="inherit"),a&&"set"in a&&void 0===(n=a.set(t,n,r))||(c?u.setProperty(e,n):u[e]=n))}},css:function(t,e,n,r){var i,o,a,s=G(e);return te.test(e)||(e=Zt(s)),(a=x.cssHooks[e]||x.cssHooks[s])&&"get"in a&&(i=a.get(t,!0,n)),void 0===i&&(i=Qt(t,e,r)),"normal"===i&&e in ne&&(i=ne[e]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),x.each(["height","width"],(function(t,e){x.cssHooks[e]={get:function(t,n,r){if(n)return!Xt.test(x.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?oe(t,e,r):lt(t,ee,(function(){return oe(t,e,r)}))},set:function(t,n,r){var i,o=Wt(t),a=!g.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===x.css(t,"boxSizing",!1,o),c=r?ie(t,e,r,s,o):0;return s&&a&&(c-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-ie(t,e,"border",!1,o)-.5)),c&&(i=it.exec(n))&&"px"!==(i[3]||"px")&&(t.style[e]=n,n=x.css(t,e)),re(0,n,c)}}})),x.cssHooks.marginLeft=Yt(g.reliableMarginLeft,(function(t,e){if(e)return(parseFloat(Qt(t,"marginLeft"))||t.getBoundingClientRect().left-lt(t,{marginLeft:0},(function(){return t.getBoundingClientRect().left})))+"px"})),x.each({margin:"",padding:"",border:"Width"},(function(t,e){x.cssHooks[t+e]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[t+ot[r]+e]=o[r]||o[r-2]||o[0];return i}},"margin"!==t&&(x.cssHooks[t+e].set=re)})),x.fn.extend({css:function(t,e){return W(this,(function(t,e,n){var r,i,o={},a=0;if(Array.isArray(e)){for(r=Wt(t),i=e.length;a1)}}),x.Tween=ae,ae.prototype={constructor:ae,init:function(t,e,n,r,i,o){this.elem=t,this.prop=n,this.easing=i||x.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var t=ae.propHooks[this.prop];return t&&t.get?t.get(this):ae.propHooks._default.get(this)},run:function(t){var e,n=ae.propHooks[this.prop];return this.options.duration?this.pos=e=x.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):ae.propHooks._default.set(this),this}},ae.prototype.init.prototype=ae.prototype,ae.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=x.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){x.fx.step[t.prop]?x.fx.step[t.prop](t):1!==t.elem.nodeType||!x.cssHooks[t.prop]&&null==t.elem.style[Zt(t.prop)]?t.elem[t.prop]=t.now:x.style(t.elem,t.prop,t.now+t.unit)}}},ae.propHooks.scrollTop=ae.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},x.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},x.fx=ae.prototype.init,x.fx.step={};var se,ce,ue=/^(?:toggle|show|hide)$/,le=/queueHooks$/;function fe(){ce&&(!1===a.hidden&&n.requestAnimationFrame?n.requestAnimationFrame(fe):n.setTimeout(fe,x.fx.interval),x.fx.tick())}function de(){return n.setTimeout((function(){se=void 0})),se=Date.now()}function pe(t,e){var n,r=0,i={height:t};for(e=e?1:0;r<4;r+=2-e)i["margin"+(n=ot[r])]=i["padding"+n]=t;return e&&(i.opacity=i.width=t),i}function he(t,e,n){for(var r,i=(ve.tweeners[e]||[]).concat(ve.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(t){return this.each((function(){x.removeAttr(this,t)}))}}),x.extend({attr:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?x.prop(t,e,n):(1===o&&x.isXMLDoc(t)||(i=x.attrHooks[e.toLowerCase()]||(x.expr.match.bool.test(e)?me:void 0)),void 0!==n?null===n?void x.removeAttr(t,e):i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:(t.setAttribute(e,n+""),n):i&&"get"in i&&null!==(r=i.get(t,e))?r:null==(r=x.find.attr(t,e))?void 0:r)},attrHooks:{type:{set:function(t,e){if(!g.radioValue&&"radio"===e&&D(t,"input")){var n=t.value;return t.setAttribute("type",e),n&&(t.value=n),e}}}},removeAttr:function(t,e){var n,r=0,i=e&&e.match(M);if(i&&1===t.nodeType)for(;n=i[r++];)t.removeAttribute(n)}}),me={set:function(t,e,n){return!1===e?x.removeAttr(t,n):t.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),(function(t,e){var n=ge[e]||x.find.attr;ge[e]=function(t,e,r){var i,o,a=e.toLowerCase();return r||(o=ge[a],ge[a]=i,i=null!=n(t,e,r)?a:null,ge[a]=o),i}}));var ye=/^(?:input|select|textarea|button)$/i,Ae=/^(?:a|area)$/i;function _e(t){return(t.match(M)||[]).join(" ")}function be(t){return t.getAttribute&&t.getAttribute("class")||""}function we(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(M)||[]}x.fn.extend({prop:function(t,e){return W(this,x.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each((function(){delete this[x.propFix[t]||t]}))}}),x.extend({prop:function(t,e,n){var r,i,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&x.isXMLDoc(t)||(e=x.propFix[e]||e,i=x.propHooks[e]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(t,n,e))?r:t[e]=n:i&&"get"in i&&null!==(r=i.get(t,e))?r:t[e]},propHooks:{tabIndex:{get:function(t){var e=x.find.attr(t,"tabindex");return e?parseInt(e,10):ye.test(t.nodeName)||Ae.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),g.optSelected||(x.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){x.propFix[this.toLowerCase()]=this})),x.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,c=0;if(y(t))return this.each((function(e){x(this).addClass(t.call(this,e,be(this)))}));if((e=we(t)).length)for(;n=this[c++];)if(i=be(n),r=1===n.nodeType&&" "+_e(i)+" "){for(a=0;o=e[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=_e(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,c=0;if(y(t))return this.each((function(e){x(this).removeClass(t.call(this,e,be(this)))}));if(!arguments.length)return this.attr("class","");if((e=we(t)).length)for(;n=this[c++];)if(i=be(n),r=1===n.nodeType&&" "+_e(i)+" "){for(a=0;o=e[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=_e(r))&&n.setAttribute("class",s)}return this},toggleClass:function(t,e){var n=typeof t,r="string"===n||Array.isArray(t);return"boolean"==typeof e&&r?e?this.addClass(t):this.removeClass(t):y(t)?this.each((function(n){x(this).toggleClass(t.call(this,n,be(this),e),e)})):this.each((function(){var e,i,o,a;if(r)for(i=0,o=x(this),a=we(t);e=a[i++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else void 0!==t&&"boolean"!==n||((e=be(this))&&Z.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":Z.get(this,"__className__")||""))}))},hasClass:function(t){var e,n,r=0;for(e=" "+t+" ";n=this[r++];)if(1===n.nodeType&&(" "+_e(be(n))+" ").indexOf(e)>-1)return!0;return!1}});var xe=/\r/g;x.fn.extend({val:function(t){var e,n,r,i=this[0];return arguments.length?(r=y(t),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?t.call(this,n,x(this).val()):t)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=x.map(i,(function(t){return null==t?"":t+""}))),(e=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,i,"value")||(this.value=i))}))):i?(e=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()])&&"get"in e&&void 0!==(n=e.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(xe,""):null==n?"":n:void 0}}),x.extend({valHooks:{option:{get:function(t){var e=x.find.attr(t,"value");return null!=e?e:_e(x.text(t))}},select:{get:function(t){var e,n,r,i=t.options,o=t.selectedIndex,a="select-one"===t.type,s=a?null:[],c=a?o+1:i.length;for(r=o<0?c:a?o:0;r-1)&&(n=!0);return n||(t.selectedIndex=-1),o}}}}),x.each(["radio","checkbox"],(function(){x.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=x.inArray(x(t).val(),e)>-1}},g.checkOn||(x.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})})),g.focusin="onfocusin"in n;var Ce=/^(?:focusinfocus|focusoutblur)$/,ke=function(t){t.stopPropagation()};x.extend(x.event,{trigger:function(t,e,r,i){var o,s,c,u,l,f,d,p,v=[r||a],m=h.call(t,"type")?t.type:t,g=h.call(t,"namespace")?t.namespace.split("."):[];if(s=p=c=r=r||a,3!==r.nodeType&&8!==r.nodeType&&!Ce.test(m+x.event.triggered)&&(m.indexOf(".")>-1&&(g=m.split("."),m=g.shift(),g.sort()),l=m.indexOf(":")<0&&"on"+m,(t=t[x.expando]?t:new x.Event(m,"object"==typeof t&&t)).isTrigger=i?2:3,t.namespace=g.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),e=null==e?[t]:x.makeArray(e,[t]),d=x.event.special[m]||{},i||!d.trigger||!1!==d.trigger.apply(r,e))){if(!i&&!d.noBubble&&!A(r)){for(u=d.delegateType||m,Ce.test(u+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),c=s;c===(r.ownerDocument||a)&&v.push(c.defaultView||c.parentWindow||n)}for(o=0;(s=v[o++])&&!t.isPropagationStopped();)p=s,t.type=o>1?u:d.bindType||m,(f=(Z.get(s,"events")||{})[t.type]&&Z.get(s,"handle"))&&f.apply(s,e),(f=l&&s[l])&&f.apply&&K(s)&&(t.result=f.apply(s,e),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),e)||!K(r)||l&&y(r[m])&&!A(r)&&((c=r[l])&&(r[l]=null),x.event.triggered=m,t.isPropagationStopped()&&p.addEventListener(m,ke),r[m](),t.isPropagationStopped()&&p.removeEventListener(m,ke),x.event.triggered=void 0,c&&(r[l]=c)),t.result}},simulate:function(t,e,n){var r=x.extend(new x.Event,n,{type:t,isSimulated:!0});x.event.trigger(r,null,e)}}),x.fn.extend({trigger:function(t,e){return this.each((function(){x.event.trigger(t,e,this)}))},triggerHandler:function(t,e){var n=this[0];if(n)return x.event.trigger(t,e,n,!0)}}),g.focusin||x.each({focus:"focusin",blur:"focusout"},(function(t,e){var n=function(t){x.event.simulate(e,t.target,x.event.fix(t))};x.event.special[e]={setup:function(){var r=this.ownerDocument||this,i=Z.access(r,e);i||r.addEventListener(t,n,!0),Z.access(r,e,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=Z.access(r,e)-1;i?Z.access(r,e,i):(r.removeEventListener(t,n,!0),Z.remove(r,e))}}}));var Te=n.location,Ee=Date.now(),$e=/\?/;x.parseXML=function(t){var e;if(!t||"string"!=typeof t)return null;try{e=(new n.DOMParser).parseFromString(t,"text/xml")}catch(t){e=void 0}return e&&!e.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+t),e};var Se=/\[\]$/,De=/\r?\n/g,Be=/^(?:submit|button|image|reset|file)$/i,Oe=/^(?:input|select|textarea|keygen)/i;function Ie(t,e,n,r){var i;if(Array.isArray(e))x.each(e,(function(e,i){n||Se.test(t)?r(t,i):Ie(t+"["+("object"==typeof i&&null!=i?e:"")+"]",i,n,r)}));else if(n||"object"!==w(e))r(t,e);else for(i in e)Ie(t+"["+i+"]",e[i],n,r)}x.param=function(t,e){var n,r=[],i=function(t,e){var n=y(e)?e():e;r[r.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==n?"":n)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!x.isPlainObject(t))x.each(t,(function(){i(this.name,this.value)}));else for(n in t)Ie(n,t[n],e,i);return r.join("&")},x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var t=x.prop(this,"elements");return t?x.makeArray(t):this})).filter((function(){var t=this.type;return this.name&&!x(this).is(":disabled")&&Oe.test(this.nodeName)&&!Be.test(t)&&(this.checked||!vt.test(t))})).map((function(t,e){var n=x(this).val();return null==n?null:Array.isArray(n)?x.map(n,(function(t){return{name:e.name,value:t.replace(De,"\r\n")}})):{name:e.name,value:n.replace(De,"\r\n")}})).get()}});var Ne=/%20/g,je=/#.*$/,Fe=/([?&])_=[^&]*/,Pe=/^(.*?):[ \t]*([^\r\n]*)$/gm,Me=/^(?:GET|HEAD)$/,Le=/^\/\//,Re={},ze={},He="*/".concat("*"),Ue=a.createElement("a");function qe(t){return function(e,n){"string"!=typeof e&&(n=e,e="*");var r,i=0,o=e.toLowerCase().match(M)||[];if(y(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(t[r]=t[r]||[]).unshift(n)):(t[r]=t[r]||[]).push(n)}}function We(t,e,n,r){var i={},o=t===ze;function a(s){var c;return i[s]=!0,x.each(t[s]||[],(function(t,s){var u=s(e,n,r);return"string"!=typeof u||o||i[u]?o?!(c=u):void 0:(e.dataTypes.unshift(u),a(u),!1)})),c}return a(e.dataTypes[0])||!i["*"]&&a("*")}function Ve(t,e){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in e)void 0!==e[n]&&((i[n]?t:r||(r={}))[n]=e[n]);return r&&x.extend(!0,t,r),t}Ue.href=Te.href,x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Te.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Te.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":He,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Ve(Ve(t,x.ajaxSettings),e):Ve(x.ajaxSettings,t)},ajaxPrefilter:qe(Re),ajaxTransport:qe(ze),ajax:function(t,e){"object"==typeof t&&(e=t,t=void 0),e=e||{};var r,i,o,s,c,u,l,f,d,p,h=x.ajaxSetup({},e),v=h.context||h,m=h.context&&(v.nodeType||v.jquery)?x(v):x.event,g=x.Deferred(),y=x.Callbacks("once memory"),A=h.statusCode||{},_={},b={},w="canceled",C={readyState:0,getResponseHeader:function(t){var e;if(l){if(!s)for(s={};e=Pe.exec(o);)s[e[1].toLowerCase()+" "]=(s[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=s[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(t,e){return null==l&&(t=b[t.toLowerCase()]=b[t.toLowerCase()]||t,_[t]=e),this},overrideMimeType:function(t){return null==l&&(h.mimeType=t),this},statusCode:function(t){var e;if(t)if(l)C.always(t[C.status]);else for(e in t)A[e]=[A[e],t[e]];return this},abort:function(t){var e=t||w;return r&&r.abort(e),k(0,e),this}};if(g.promise(C),h.url=((t||h.url||Te.href)+"").replace(Le,Te.protocol+"//"),h.type=e.method||e.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){u=a.createElement("a");try{u.href=h.url,u.href=u.href,h.crossDomain=Ue.protocol+"//"+Ue.host!=u.protocol+"//"+u.host}catch(t){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=x.param(h.data,h.traditional)),We(Re,h,e,C),l)return C;for(d in(f=x.event&&h.global)&&0==x.active++&&x.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Me.test(h.type),i=h.url.replace(je,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(Ne,"+")):(p=h.url.slice(i.length),h.data&&(h.processData||"string"==typeof h.data)&&(i+=($e.test(i)?"&":"?")+h.data,delete h.data),!1===h.cache&&(i=i.replace(Fe,"$1"),p=($e.test(i)?"&":"?")+"_="+Ee+++p),h.url=i+p),h.ifModified&&(x.lastModified[i]&&C.setRequestHeader("If-Modified-Since",x.lastModified[i]),x.etag[i]&&C.setRequestHeader("If-None-Match",x.etag[i])),(h.data&&h.hasContent&&!1!==h.contentType||e.contentType)&&C.setRequestHeader("Content-Type",h.contentType),C.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+He+"; q=0.01":""):h.accepts["*"]),h.headers)C.setRequestHeader(d,h.headers[d]);if(h.beforeSend&&(!1===h.beforeSend.call(v,C,h)||l))return C.abort();if(w="abort",y.add(h.complete),C.done(h.success),C.fail(h.error),r=We(ze,h,e,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,h]),l)return C;h.async&&h.timeout>0&&(c=n.setTimeout((function(){C.abort("timeout")}),h.timeout));try{l=!1,r.send(_,k)}catch(t){if(l)throw t;k(-1,t)}}else k(-1,"No Transport");function k(t,e,a,s){var u,d,p,_,b,w=e;l||(l=!0,c&&n.clearTimeout(c),r=void 0,o=s||"",C.readyState=t>0?4:0,u=t>=200&&t<300||304===t,a&&(_=function(t,e,n){for(var r,i,o,a,s=t.contents,c=t.dataTypes;"*"===c[0];)c.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){c.unshift(i);break}if(c[0]in n)o=c[0];else{for(i in n){if(!c[0]||t.converters[i+" "+c[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==c[0]&&c.unshift(o),n[o]}(h,C,a)),_=function(t,e,n,r){var i,o,a,s,c,u={},l=t.dataTypes.slice();if(l[1])for(a in t.converters)u[a.toLowerCase()]=t.converters[a];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!c&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),c=o,o=l.shift())if("*"===o)o=c;else if("*"!==c&&c!==o){if(!(a=u[c+" "+o]||u["* "+o]))for(i in u)if((s=i.split(" "))[1]===o&&(a=u[c+" "+s[0]]||u["* "+s[0]])){!0===a?a=u[i]:!0!==u[i]&&(o=s[0],l.unshift(s[1]));break}if(!0!==a)if(a&&t.throws)e=a(e);else try{e=a(e)}catch(t){return{state:"parsererror",error:a?t:"No conversion from "+c+" to "+o}}}return{state:"success",data:e}}(h,_,C,u),u?(h.ifModified&&((b=C.getResponseHeader("Last-Modified"))&&(x.lastModified[i]=b),(b=C.getResponseHeader("etag"))&&(x.etag[i]=b)),204===t||"HEAD"===h.type?w="nocontent":304===t?w="notmodified":(w=_.state,d=_.data,u=!(p=_.error))):(p=w,!t&&w||(w="error",t<0&&(t=0))),C.status=t,C.statusText=(e||w)+"",u?g.resolveWith(v,[d,w,C]):g.rejectWith(v,[C,w,p]),C.statusCode(A),A=void 0,f&&m.trigger(u?"ajaxSuccess":"ajaxError",[C,h,u?d:p]),y.fireWith(v,[C,w]),f&&(m.trigger("ajaxComplete",[C,h]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(t,e,n){return x.get(t,e,n,"json")},getScript:function(t,e){return x.get(t,void 0,e,"script")}}),x.each(["get","post"],(function(t,e){x[e]=function(t,n,r,i){return y(n)&&(i=i||r,r=n,n=void 0),x.ajax(x.extend({url:t,type:e,dataType:i,data:n,success:r},x.isPlainObject(t)&&t))}})),x._evalUrl=function(t,e){return x.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){x.globalEval(t,e)}})},x.fn.extend({wrapAll:function(t){var e;return this[0]&&(y(t)&&(t=t.call(this[0])),e=x(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map((function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t})).append(this)),this},wrapInner:function(t){return y(t)?this.each((function(e){x(this).wrapInner(t.call(this,e))})):this.each((function(){var e=x(this),n=e.contents();n.length?n.wrapAll(t):e.append(t)}))},wrap:function(t){var e=y(t);return this.each((function(n){x(this).wrapAll(e?t.call(this,n):t)}))},unwrap:function(t){return this.parent(t).not("body").each((function(){x(this).replaceWith(this.childNodes)})),this}}),x.expr.pseudos.hidden=function(t){return!x.expr.pseudos.visible(t)},x.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},x.ajaxSettings.xhr=function(){try{return new n.XMLHttpRequest}catch(t){}};var Qe={0:200,1223:204},Ye=x.ajaxSettings.xhr();g.cors=!!Ye&&"withCredentials"in Ye,g.ajax=Ye=!!Ye,x.ajaxTransport((function(t){var e,r;if(g.cors||Ye&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);e=function(t){return function(){e&&(e=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===t?s.abort():"error"===t?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Qe[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=e(),r=s.onerror=s.ontimeout=e("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&n.setTimeout((function(){e&&r()}))},e=e("abort");try{s.send(t.hasContent&&t.data||null)}catch(t){if(e)throw t}},abort:function(){e&&e()}}})),x.ajaxPrefilter((function(t){t.crossDomain&&(t.contents.script=!1)})),x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return x.globalEval(t),t}}}),x.ajaxPrefilter("script",(function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")})),x.ajaxTransport("script",(function(t){var e,n;if(t.crossDomain||t.scriptAttrs)return{send:function(r,i){e=x("