Version Description
- Current Release = Released: 21st February, 2018 - Release Notes
Download this release
Release Info
Developer | paultgoodchild |
Plugin | Shield Security for WordPress |
Version | 7.1.0 |
Comparing to | |
See all releases |
Code changes from version 7.0.4 to 7.1.0
- icwp-plugin-controller.php +25 -4
- icwp-wpsf.php +1 -1
- plugin-spec.php +5 -4
- readme.txt +17 -7
- resources/css/bootstrap4.css +378 -227
- resources/css/bootstrap4.min.css +4 -4
- resources/css/plugin.css +25 -1
- resources/js/bootstrap4.bundle.js +302 -107
- resources/js/bootstrap4.bundle.min.js +3 -3
- resources/js/bootstrap4.js +287 -101
- resources/js/bootstrap4.min.js +3 -3
- resources/js/shield-import.js +48 -0
- src/common/icwp-data.php +1 -2
- src/common/icwp-optionsvo.php +21 -4
- src/common/icwp-serviceproviders.php +46 -7
- src/common/wp-admin-notices.php +5 -2
- src/config/feature-admin_access_restriction.php +3 -3
- src/config/feature-autoupdates.php +6 -4
- src/config/feature-comments_filter.php +2 -1
- src/config/feature-firewall.php +4 -4
- src/config/feature-hack_protect.php +80 -18
- src/config/feature-ips.php +39 -6
- src/config/feature-license.php +36 -24
- src/config/feature-lockdown.php +4 -2
- src/config/feature-login_protect.php +48 -41
- src/config/feature-plugin.php +33 -37
- src/config/feature-sessions.php +3 -1
- src/config/feature-traffic.php +3 -1
- src/config/feature-user_management.php +7 -3
- src/features/admin_access_restriction.php +1 -1
- src/features/audit_trail.php +22 -5
- src/features/base.php +3 -3
- src/features/base_wpsf.php +8 -4
- src/features/hack_protect.php +47 -11
- src/features/insights.php +89 -65
- src/features/ips.php +61 -4
- src/features/lockdown.php +3 -3
- src/features/plugin.php +107 -2
- src/lib/src/Crons/StandardCron.php +29 -11
- src/lib/src/Scans/Apc/ConvertResultsToVos.php +23 -0
- src/lib/src/Scans/Apc/ConvertVosToResults.php +32 -0
- src/lib/src/Scans/Apc/ResultItem.php +16 -0
- src/lib/src/Scans/Apc/ResultsSet.php +122 -0
- src/lib/src/Scans/Apc/Scanner.php +134 -0
- src/lib/src/Scans/Wcf/Scanner.php +2 -2
- src/lib/src/Tables/Build/Ip.php +0 -1
- src/lib/src/Tables/Build/ScanApc.php +47 -0
- src/lib/src/Tables/Render/ScanApc.php +40 -0
- src/lib/src/Tables/Render/ScanBase.php +2 -2
- src/lib/src/Tests/VerifyConfig.php +56 -0
- src/lib/vendor/composer/autoload_classmap.php +11 -20
- src/lib/vendor/composer/autoload_static.php +11 -20
- src/lib/vendor/composer/installed.json +4 -4
- src/lib/vendor/fernleafsystems/wordpress-services/src/Core/Comments.php +16 -5
- src/lib/vendor/fernleafsystems/wordpress-services/src/Core/General.php +7 -0
- src/lib/vendor/fernleafsystems/wordpress-services/src/Services.php +1 -1
- src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/DataManipulation.php +34 -12
- src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/Email.php +10 -8
- src/processors/audit_trail.php +10 -192
- src/processors/audit_trail_auditor.php +175 -0
- src/processors/basedb.php +0 -32
- src/processors/commentsfilter_antibotspam.php +0 -21
- src/processors/hack_protect.php +32 -0
- src/processors/hackprotect_scan_apc.php +181 -0
- src/processors/hackprotect_scan_base.php +16 -5
- src/processors/hackprotect_scan_ptg.php +9 -9
- src/processors/hackprotect_scan_ufc.php +9 -9
- src/processors/hackprotect_scan_wcf.php +9 -9
- src/processors/hackprotect_scan_wpv.php +9 -9
- src/processors/hackprotect_scanner.php +11 -32
- src/processors/ips.php +84 -37
- src/processors/loginprotect_intentprovider_base.php +7 -7
- src/processors/loginprotect_intentprovider_ga.php +1 -0
- src/processors/plugin.php +12 -19
- src/processors/plugin_crondaily.php +30 -0
- src/processors/plugin_importexport.php +275 -75
- src/processors/plugin_notes.php +0 -24
- src/processors/plugin_tracking.php +34 -54
- src/processors/sessions.php +0 -29
- src/processors/statistics_tally.php +0 -24
- src/processors/traffic_logger.php +1 -16
- src/processors/user_management.php +8 -5
- src/query/VOs/ICWP_WPSF_BaseEntryVO.php +0 -89
- src/query/VOs/ICWP_WPSF_IpsEntryVO.php +0 -65
- src/query/audittrail/delete.php +0 -13
- src/query/audittrail/insert.php +0 -6
- src/query/audittrail/select.php +0 -29
- src/query/base/base.php +0 -263
- src/query/base/delete.php +0 -53
- src/query/base/insert.php +0 -43
- src/query/base/query.php +0 -355
- src/query/base/select.php +0 -204
- src/query/base/update.php +0 -60
- src/query/ips/select.php +0 -49
- src/query/sessions/delete.php +0 -37
- src/query/sessions/insert.php +0 -15
- src/query/sessions/select.php +0 -62
- src/query/sessions/update.php +0 -75
- src/query/traffic/common.php +0 -71
- src/query/traffic/delete.php +0 -15
- src/query/traffic/insert.php +0 -6
- src/query/traffic/select.php +0 -15
- src/wizards/plugin.php +5 -2
- templates/twig/snippets/blacklist_die.twig +22 -1
- templates/twig/wpadmin_pages/base.twig +1 -1
- templates/twig/wpadmin_pages/insights_new/base.twig +12 -3
- templates/twig/wpadmin_pages/insights_new/{traffic/traffic_unavailable.twig → common/feature_unavailable.twig} +2 -2
- templates/twig/wpadmin_pages/insights_new/importexport/from_file.twig +69 -0
- templates/twig/wpadmin_pages/insights_new/importexport/from_site.twig +95 -0
- templates/twig/wpadmin_pages/insights_new/importexport/index.twig +18 -0
- templates/twig/wpadmin_pages/insights_new/notes/admin_notes.twig +2 -2
- templates/twig/wpadmin_pages/insights_new/notes/index.twig +8 -2
- templates/twig/wpadmin_pages/insights_new/scans/results/apc.twig +72 -0
- templates/twig/wpadmin_pages/insights_new/scans/results/ptg.twig +1 -1
- templates/twig/wpadmin_pages/insights_new/scans/results/ufc.twig +1 -1
- templates/twig/wpadmin_pages/insights_new/scans/results/wcf.twig +1 -1
- templates/twig/wpadmin_pages/insights_new/scans/results/wpv.twig +1 -1
- templates/twig/wpadmin_pages/insights_new/scans/results/wpv_unavailable.twig +0 -11
- templates/twig/wpadmin_pages/insights_new/scans/scan_areas.twig +12 -6
- templates/twig/wpadmin_pages/insights_new/scans/scan_results.twig +55 -19
- templates/twig/wpadmin_pages/insights_new/traffic/index.twig +1 -1
icwp-plugin-controller.php
CHANGED
@@ -358,6 +358,8 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
358 |
}
|
359 |
add_action( 'admin_enqueue_scripts', array( $this, 'onWpEnqueueAdminCss' ), 100 );
|
360 |
add_action( 'admin_enqueue_scripts', array( $this, 'onWpEnqueueAdminJs' ), 5 );
|
|
|
|
|
361 |
}
|
362 |
|
363 |
/**
|
@@ -1818,18 +1820,26 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
1818 |
}
|
1819 |
|
1820 |
/**
|
1821 |
-
* @return
|
1822 |
*/
|
1823 |
public function getCurrentUserMeta() {
|
1824 |
-
return $this->
|
1825 |
}
|
1826 |
|
1827 |
/**
|
1828 |
* @param $oUser WP_User
|
1829 |
-
* @return
|
1830 |
*/
|
1831 |
public function getUserMeta( $oUser ) {
|
1832 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1833 |
}
|
1834 |
|
1835 |
/**
|
@@ -1922,4 +1932,15 @@ class ICWP_WPSF_Plugin_Controller extends ICWP_WPSF_Foundation {
|
|
1922 |
}
|
1923 |
return ( $this->isPluginAdmin() && apply_filters( $this->prefix( 'is_plugin_admin' ), true ) );
|
1924 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1925 |
}
|
358 |
}
|
359 |
add_action( 'admin_enqueue_scripts', array( $this, 'onWpEnqueueAdminCss' ), 100 );
|
360 |
add_action( 'admin_enqueue_scripts', array( $this, 'onWpEnqueueAdminJs' ), 5 );
|
361 |
+
|
362 |
+
$this->runTests();
|
363 |
}
|
364 |
|
365 |
/**
|
1820 |
}
|
1821 |
|
1822 |
/**
|
1823 |
+
* @return \FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta
|
1824 |
*/
|
1825 |
public function getCurrentUserMeta() {
|
1826 |
+
return $this->getUserMeta( Services::WpUsers()->getCurrentWpUser() );
|
1827 |
}
|
1828 |
|
1829 |
/**
|
1830 |
* @param $oUser WP_User
|
1831 |
+
* @return \FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta|mixed
|
1832 |
*/
|
1833 |
public function getUserMeta( $oUser ) {
|
1834 |
+
$oMeta = null;
|
1835 |
+
try {
|
1836 |
+
if ( $oUser instanceof \WP_User ) {
|
1837 |
+
$oMeta = \FernleafSystems\Wordpress\Plugin\Shield\Users\ShieldUserMeta::Load( $this->prefix(), $oUser->ID );
|
1838 |
+
}
|
1839 |
+
}
|
1840 |
+
catch ( \Exception $oE ) {
|
1841 |
+
}
|
1842 |
+
return $oMeta;
|
1843 |
}
|
1844 |
|
1845 |
/**
|
1932 |
}
|
1933 |
return ( $this->isPluginAdmin() && apply_filters( $this->prefix( 'is_plugin_admin' ), true ) );
|
1934 |
}
|
1935 |
+
|
1936 |
+
private function runTests() {
|
1937 |
+
if ( $this->isPluginAdmin() && $this->isModulePage() && Services::Request()->query( 'runtests' ) ) {
|
1938 |
+
foreach ( $this->getModules() as $oModule ) {
|
1939 |
+
( new \FernleafSystems\Wordpress\Plugin\Shield\Tests\VerifyConfig() )
|
1940 |
+
->setOpts( $oModule->getOptionsVo() )
|
1941 |
+
->run();
|
1942 |
+
}
|
1943 |
+
die();
|
1944 |
+
}
|
1945 |
+
}
|
1946 |
}
|
icwp-wpsf.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: https://icwp.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
-
* Version: 7.0
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages/
|
9 |
* Author: One Dollar Plugin
|
3 |
* Plugin Name: Shield Security
|
4 |
* Plugin URI: https://icwp.io/2f
|
5 |
* Description: Powerful, Easy-To-Use #1 Rated WordPress Security System
|
6 |
+
* Version: 7.1.0
|
7 |
* Text Domain: wp-simple-firewall
|
8 |
* Domain Path: /languages/
|
9 |
* Author: One Dollar Plugin
|
plugin-spec.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
{
|
2 |
"properties": {
|
3 |
-
"version": "7.0
|
4 |
-
"release_timestamp":
|
5 |
"slug_parent": "icwp",
|
6 |
"slug_plugin": "wpsf",
|
7 |
"human_name": "Shield",
|
@@ -78,8 +78,9 @@
|
|
78 |
"icon_url_32x32": "pluginlogo_32x32.png",
|
79 |
"icon_url_128x128": "pluginlogo_128x128.png"
|
80 |
},
|
81 |
-
"
|
82 |
-
"
|
|
|
83 |
},
|
84 |
"plugin_meta": [
|
85 |
{
|
1 |
{
|
2 |
"properties": {
|
3 |
+
"version": "7.1.0",
|
4 |
+
"release_timestamp": 1550737690,
|
5 |
"slug_parent": "icwp",
|
6 |
"slug_plugin": "wpsf",
|
7 |
"human_name": "Shield",
|
78 |
"icon_url_32x32": "pluginlogo_32x32.png",
|
79 |
"icon_url_128x128": "pluginlogo_128x128.png"
|
80 |
},
|
81 |
+
"meta": {
|
82 |
+
"url_repo_home": "https://icwp.io/eh",
|
83 |
+
"headway_changelog_id": "xaoEZJ"
|
84 |
},
|
85 |
"plugin_meta": [
|
86 |
{
|
readme.txt
CHANGED
@@ -8,7 +8,7 @@ Requires at least: 3.5.0
|
|
8 |
Requires PHP: 5.4.0
|
9 |
Recommended PHP: 7.0
|
10 |
Tested up to: 5.1
|
11 |
-
Stable tag: 7.0
|
12 |
|
13 |
Complete All-In-One Protection for your WordPress sites, that makes Security Easy for Everyone - it doesn't have to be hard anymore.
|
14 |
|
@@ -352,8 +352,22 @@ You will always be able to use Shield Security and its free features in-full.
|
|
352 |
|
353 |
[Go Pro for just $1/month](https://icwp.io/aa).
|
354 |
|
355 |
-
= 7.0
|
356 |
-
*Released:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
357 |
|
358 |
* **(v.4)** IMPROVED: Refactored IP address blocking with improved audit trail messages.
|
359 |
* **(v.4)** CHANGED: Expanded anonymous REST API whitelist to include 'wpstatistics' namespace.
|
@@ -363,10 +377,6 @@ You will always be able to use Shield Security and its free features in-full.
|
|
363 |
* **(v.4)** IMPROVED: Options form submission is adjusted to work around poorly restrictive webhosts.
|
364 |
* **(v.4)** FIX: Various tweaks and fixes across the plugin.
|
365 |
* **(v.4)** FIX: Error with ClassicPress.
|
366 |
-
|
367 |
-
= 7.0 - Series =
|
368 |
-
*Released: 28th January, 2018* - [Release Notes](https://icwp.io/ef)
|
369 |
-
|
370 |
* **(v.3)** NEW: Automatically whitelist anonymous REST API Access for 3 plugins: Contact Form 7, WooCommerce, JetPack.
|
371 |
* **(v.3)** IMPROVED: Security admin login failure messages are clearer.
|
372 |
* **(v.3)** IMPROVED: Admin notification for email sending 2FA verification easily lets you resend email.
|
8 |
Requires PHP: 5.4.0
|
9 |
Recommended PHP: 7.0
|
10 |
Tested up to: 5.1
|
11 |
+
Stable tag: 7.1.0
|
12 |
|
13 |
Complete All-In-One Protection for your WordPress sites, that makes Security Easy for Everyone - it doesn't have to be hard anymore.
|
14 |
|
352 |
|
353 |
[Go Pro for just $1/month](https://icwp.io/aa).
|
354 |
|
355 |
+
= 7.1.0 - Current Release =
|
356 |
+
*Released: 21st February, 2018* - [Release Notes](https://icwp.io/ek)
|
357 |
+
|
358 |
+
= 7.1 - Series =
|
359 |
+
*Released: 21st February, 2018* - [Release Notes](https://icwp.io/ek)
|
360 |
+
|
361 |
+
* **(v.0)** NEW: Moved Import/Export UI from Wizard to main Shield Dashboard.
|
362 |
+
* **(v.0)** NEW: [**PRO**] Option to import/export settings using file downloads/uploads
|
363 |
+
* **(v.0)** NEW: [**PRO**] Option to allow visitors to automatically unblock themselves (once in 24hrs)
|
364 |
+
* **(v.0)** NEW: Integrated changelog directly into plugin admin for easy updates (between releases)
|
365 |
+
* **(v.0)** FIXED: WP Core files scanner now correctly ignores certain files as it used to do, pre-v7. e.g. wp-config-sample.php
|
366 |
+
* **(v.0)** FIXED: Shield was indicating plugin/theme file editing was possible, when it in-fact was disabled.
|
367 |
+
* **(v.0)** IMPROVED: Consolidate crons into fewer crons. e.g. all scans run under the same cron.
|
368 |
+
|
369 |
+
= 7.0 - Series =
|
370 |
+
*Released: 28th January, 2018* - [Release Notes](https://icwp.io/ef)
|
371 |
|
372 |
* **(v.4)** IMPROVED: Refactored IP address blocking with improved audit trail messages.
|
373 |
* **(v.4)** CHANGED: Expanded anonymous REST API whitelist to include 'wpstatistics' namespace.
|
377 |
* **(v.4)** IMPROVED: Options form submission is adjusted to work around poorly restrictive webhosts.
|
378 |
* **(v.4)** FIX: Various tweaks and fixes across the plugin.
|
379 |
* **(v.4)** FIX: Error with ClassicPress.
|
|
|
|
|
|
|
|
|
380 |
* **(v.3)** NEW: Automatically whitelist anonymous REST API Access for 3 plugins: Contact Form 7, WooCommerce, JetPack.
|
381 |
* **(v.3)** IMPROVED: Security admin login failure messages are clearer.
|
382 |
* **(v.3)** IMPROVED: Admin notification for email sending 2FA verification easily lets you resend email.
|
resources/css/bootstrap4.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
-
* Copyright 2011-
|
5 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6 |
*/
|
7 |
:root {
|
@@ -90,6 +90,7 @@ abbr[data-original-title] {
|
|
90 |
text-decoration: underline dotted;
|
91 |
cursor: help;
|
92 |
border-bottom: 0;
|
|
|
93 |
text-decoration-skip-ink: none;
|
94 |
}
|
95 |
|
@@ -255,6 +256,10 @@ select {
|
|
255 |
text-transform: none;
|
256 |
}
|
257 |
|
|
|
|
|
|
|
|
|
258 |
button,
|
259 |
[type="button"],
|
260 |
[type="reset"],
|
@@ -262,6 +267,13 @@ button,
|
|
262 |
-webkit-appearance: button;
|
263 |
}
|
264 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
button::-moz-focus-inner,
|
266 |
[type="button"]::-moz-focus-inner,
|
267 |
[type="reset"]::-moz-focus-inner,
|
@@ -350,10 +362,8 @@ template {
|
|
350 |
h1, h2, h3, h4, h5, h6,
|
351 |
.h1, .h2, .h3, .h4, .h5, .h6 {
|
352 |
margin-bottom: 0.5rem;
|
353 |
-
font-family: inherit;
|
354 |
font-weight: 500;
|
355 |
line-height: 1.2;
|
356 |
-
color: inherit;
|
357 |
}
|
358 |
|
359 |
h1, .h1 {
|
@@ -1504,7 +1514,7 @@ pre code {
|
|
1504 |
.table {
|
1505 |
width: 100%;
|
1506 |
margin-bottom: 1rem;
|
1507 |
-
|
1508 |
}
|
1509 |
|
1510 |
.table th,
|
@@ -1523,10 +1533,6 @@ pre code {
|
|
1523 |
border-top: 2px solid #dee2e6;
|
1524 |
}
|
1525 |
|
1526 |
-
.table .table {
|
1527 |
-
background-color: #fff;
|
1528 |
-
}
|
1529 |
-
|
1530 |
.table-sm th,
|
1531 |
.table-sm td {
|
1532 |
padding: 0.3rem;
|
@@ -1558,6 +1564,7 @@ pre code {
|
|
1558 |
}
|
1559 |
|
1560 |
.table-hover tbody tr:hover {
|
|
|
1561 |
background-color: rgba(0, 0, 0, 0.075);
|
1562 |
}
|
1563 |
|
@@ -1754,8 +1761,8 @@ pre code {
|
|
1754 |
|
1755 |
.table .thead-dark th {
|
1756 |
color: #fff;
|
1757 |
-
background-color: #
|
1758 |
-
border-color: #
|
1759 |
}
|
1760 |
|
1761 |
.table .thead-light th {
|
@@ -1766,13 +1773,13 @@ pre code {
|
|
1766 |
|
1767 |
.table-dark {
|
1768 |
color: #fff;
|
1769 |
-
background-color: #
|
1770 |
}
|
1771 |
|
1772 |
.table-dark th,
|
1773 |
.table-dark td,
|
1774 |
.table-dark thead th {
|
1775 |
-
border-color: #
|
1776 |
}
|
1777 |
|
1778 |
.table-dark.table-bordered {
|
@@ -1784,6 +1791,7 @@ pre code {
|
|
1784 |
}
|
1785 |
|
1786 |
.table-dark.table-hover tbody tr:hover {
|
|
|
1787 |
background-color: rgba(255, 255, 255, 0.075);
|
1788 |
}
|
1789 |
|
@@ -1793,7 +1801,6 @@ pre code {
|
|
1793 |
width: 100%;
|
1794 |
overflow-x: auto;
|
1795 |
-webkit-overflow-scrolling: touch;
|
1796 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1797 |
}
|
1798 |
.table-responsive-sm > .table-bordered {
|
1799 |
border: 0;
|
@@ -1806,7 +1813,6 @@ pre code {
|
|
1806 |
width: 100%;
|
1807 |
overflow-x: auto;
|
1808 |
-webkit-overflow-scrolling: touch;
|
1809 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1810 |
}
|
1811 |
.table-responsive-md > .table-bordered {
|
1812 |
border: 0;
|
@@ -1819,7 +1825,6 @@ pre code {
|
|
1819 |
width: 100%;
|
1820 |
overflow-x: auto;
|
1821 |
-webkit-overflow-scrolling: touch;
|
1822 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1823 |
}
|
1824 |
.table-responsive-lg > .table-bordered {
|
1825 |
border: 0;
|
@@ -1832,7 +1837,6 @@ pre code {
|
|
1832 |
width: 100%;
|
1833 |
overflow-x: auto;
|
1834 |
-webkit-overflow-scrolling: touch;
|
1835 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1836 |
}
|
1837 |
.table-responsive-xl > .table-bordered {
|
1838 |
border: 0;
|
@@ -1844,7 +1848,6 @@ pre code {
|
|
1844 |
width: 100%;
|
1845 |
overflow-x: auto;
|
1846 |
-webkit-overflow-scrolling: touch;
|
1847 |
-
-ms-overflow-style: -ms-autohiding-scrollbar;
|
1848 |
}
|
1849 |
|
1850 |
.table-responsive > .table-bordered {
|
@@ -1854,7 +1857,7 @@ pre code {
|
|
1854 |
.form-control {
|
1855 |
display: block;
|
1856 |
width: 100%;
|
1857 |
-
height: calc(
|
1858 |
padding: 0.375rem 0.75rem;
|
1859 |
font-size: 1rem;
|
1860 |
font-weight: 400;
|
@@ -1867,7 +1870,7 @@ pre code {
|
|
1867 |
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
1868 |
}
|
1869 |
|
1870 |
-
@media
|
1871 |
.form-control {
|
1872 |
transition: none;
|
1873 |
}
|
@@ -1968,7 +1971,7 @@ select.form-control:focus::-ms-value {
|
|
1968 |
}
|
1969 |
|
1970 |
.form-control-sm {
|
1971 |
-
height: calc(1.
|
1972 |
padding: 0.25rem 0.5rem;
|
1973 |
font-size: 0.875rem;
|
1974 |
line-height: 1.5;
|
@@ -1976,7 +1979,7 @@ select.form-control:focus::-ms-value {
|
|
1976 |
}
|
1977 |
|
1978 |
.form-control-lg {
|
1979 |
-
height: calc(
|
1980 |
padding: 0.5rem 1rem;
|
1981 |
font-size: 1.25rem;
|
1982 |
line-height: 1.5;
|
@@ -2076,11 +2079,11 @@ textarea.form-control {
|
|
2076 |
|
2077 |
.was-validated .form-control:valid, .form-control.is-valid {
|
2078 |
border-color: #28a745;
|
2079 |
-
padding-right:
|
2080 |
-
background-repeat: no-repeat;
|
2081 |
-
background-position: center right calc(2.25rem / 4);
|
2082 |
-
background-size: calc(2.25rem / 2) calc(2.25rem / 2);
|
2083 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
|
|
|
|
|
|
|
2084 |
}
|
2085 |
|
2086 |
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
|
@@ -2095,14 +2098,14 @@ textarea.form-control {
|
|
2095 |
}
|
2096 |
|
2097 |
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
|
2098 |
-
padding-right:
|
2099 |
-
background-position: top calc(
|
2100 |
}
|
2101 |
|
2102 |
.was-validated .custom-select:valid, .custom-select.is-valid {
|
2103 |
border-color: #28a745;
|
2104 |
-
padding-right: 3.
|
2105 |
-
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/
|
2106 |
}
|
2107 |
|
2108 |
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
|
@@ -2199,11 +2202,11 @@ textarea.form-control {
|
|
2199 |
|
2200 |
.was-validated .form-control:invalid, .form-control.is-invalid {
|
2201 |
border-color: #dc3545;
|
2202 |
-
padding-right:
|
|
|
2203 |
background-repeat: no-repeat;
|
2204 |
-
background-position: center right calc(
|
2205 |
-
background-size: calc(
|
2206 |
-
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
|
2207 |
}
|
2208 |
|
2209 |
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
|
@@ -2218,14 +2221,14 @@ textarea.form-control {
|
|
2218 |
}
|
2219 |
|
2220 |
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
|
2221 |
-
padding-right:
|
2222 |
-
background-position: top calc(
|
2223 |
}
|
2224 |
|
2225 |
.was-validated .custom-select:invalid, .custom-select.is-invalid {
|
2226 |
border-color: #dc3545;
|
2227 |
-
padding-right: 3.
|
2228 |
-
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%
|
2229 |
}
|
2230 |
|
2231 |
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
|
@@ -2355,6 +2358,8 @@ textarea.form-control {
|
|
2355 |
}
|
2356 |
.form-inline .form-check-input {
|
2357 |
position: relative;
|
|
|
|
|
2358 |
margin-top: 0;
|
2359 |
margin-right: 0.25rem;
|
2360 |
margin-left: 0;
|
@@ -2389,7 +2394,7 @@ textarea.form-control {
|
|
2389 |
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
2390 |
}
|
2391 |
|
2392 |
-
@media
|
2393 |
.btn {
|
2394 |
transition: none;
|
2395 |
}
|
@@ -2409,10 +2414,6 @@ textarea.form-control {
|
|
2409 |
opacity: 0.65;
|
2410 |
}
|
2411 |
|
2412 |
-
.btn:not(:disabled):not(.disabled) {
|
2413 |
-
cursor: pointer;
|
2414 |
-
}
|
2415 |
-
|
2416 |
a.btn.disabled,
|
2417 |
fieldset:disabled a.btn {
|
2418 |
pointer-events: none;
|
@@ -2949,6 +2950,7 @@ fieldset:disabled a.btn {
|
|
2949 |
.btn-link {
|
2950 |
font-weight: 400;
|
2951 |
color: #007bff;
|
|
|
2952 |
}
|
2953 |
|
2954 |
.btn-link:hover {
|
@@ -2999,7 +3001,7 @@ input[type="button"].btn-block {
|
|
2999 |
transition: opacity 0.15s linear;
|
3000 |
}
|
3001 |
|
3002 |
-
@media
|
3003 |
.fade {
|
3004 |
transition: none;
|
3005 |
}
|
@@ -3020,7 +3022,7 @@ input[type="button"].btn-block {
|
|
3020 |
transition: height 0.35s ease;
|
3021 |
}
|
3022 |
|
3023 |
-
@media
|
3024 |
.collapsing {
|
3025 |
transition: none;
|
3026 |
}
|
@@ -3033,6 +3035,10 @@ input[type="button"].btn-block {
|
|
3033 |
position: relative;
|
3034 |
}
|
3035 |
|
|
|
|
|
|
|
|
|
3036 |
.dropdown-toggle::after {
|
3037 |
display: inline-block;
|
3038 |
margin-left: 0.255em;
|
@@ -3068,49 +3074,25 @@ input[type="button"].btn-block {
|
|
3068 |
border-radius: 0.25rem;
|
3069 |
}
|
3070 |
|
3071 |
-
.dropdown-menu-right {
|
3072 |
-
right: 0;
|
3073 |
-
left: auto;
|
3074 |
-
}
|
3075 |
-
|
3076 |
-
@media (min-width: 576px) {
|
3077 |
-
.dropdown-menu-sm-right {
|
3078 |
-
right: 0;
|
3079 |
-
left: auto;
|
3080 |
-
}
|
3081 |
-
}
|
3082 |
-
|
3083 |
-
@media (min-width: 768px) {
|
3084 |
-
.dropdown-menu-md-right {
|
3085 |
-
right: 0;
|
3086 |
-
left: auto;
|
3087 |
-
}
|
3088 |
-
}
|
3089 |
-
|
3090 |
-
@media (min-width: 992px) {
|
3091 |
-
.dropdown-menu-lg-right {
|
3092 |
-
right: 0;
|
3093 |
-
left: auto;
|
3094 |
-
}
|
3095 |
-
}
|
3096 |
-
|
3097 |
-
@media (min-width: 1200px) {
|
3098 |
-
.dropdown-menu-xl-right {
|
3099 |
-
right: 0;
|
3100 |
-
left: auto;
|
3101 |
-
}
|
3102 |
-
}
|
3103 |
-
|
3104 |
.dropdown-menu-left {
|
3105 |
right: auto;
|
3106 |
left: 0;
|
3107 |
}
|
3108 |
|
|
|
|
|
|
|
|
|
|
|
3109 |
@media (min-width: 576px) {
|
3110 |
.dropdown-menu-sm-left {
|
3111 |
right: auto;
|
3112 |
left: 0;
|
3113 |
}
|
|
|
|
|
|
|
|
|
3114 |
}
|
3115 |
|
3116 |
@media (min-width: 768px) {
|
@@ -3118,6 +3100,10 @@ input[type="button"].btn-block {
|
|
3118 |
right: auto;
|
3119 |
left: 0;
|
3120 |
}
|
|
|
|
|
|
|
|
|
3121 |
}
|
3122 |
|
3123 |
@media (min-width: 992px) {
|
@@ -3125,6 +3111,10 @@ input[type="button"].btn-block {
|
|
3125 |
right: auto;
|
3126 |
left: 0;
|
3127 |
}
|
|
|
|
|
|
|
|
|
3128 |
}
|
3129 |
|
3130 |
@media (min-width: 1200px) {
|
@@ -3132,6 +3122,10 @@ input[type="button"].btn-block {
|
|
3132 |
right: auto;
|
3133 |
left: 0;
|
3134 |
}
|
|
|
|
|
|
|
|
|
3135 |
}
|
3136 |
|
3137 |
.dropup .dropdown-menu {
|
@@ -3245,16 +3239,6 @@ input[type="button"].btn-block {
|
|
3245 |
border: 0;
|
3246 |
}
|
3247 |
|
3248 |
-
.dropdown-item:first-child {
|
3249 |
-
border-top-left-radius: calc(0.25rem - 1px);
|
3250 |
-
border-top-right-radius: calc(0.25rem - 1px);
|
3251 |
-
}
|
3252 |
-
|
3253 |
-
.dropdown-item:last-child {
|
3254 |
-
border-bottom-right-radius: calc(0.25rem - 1px);
|
3255 |
-
border-bottom-left-radius: calc(0.25rem - 1px);
|
3256 |
-
}
|
3257 |
-
|
3258 |
.dropdown-item:hover, .dropdown-item:focus {
|
3259 |
color: #16181b;
|
3260 |
text-decoration: none;
|
@@ -3557,7 +3541,7 @@ input[type="button"].btn-block {
|
|
3557 |
|
3558 |
.input-group-lg > .form-control:not(textarea),
|
3559 |
.input-group-lg > .custom-select {
|
3560 |
-
height: calc(
|
3561 |
}
|
3562 |
|
3563 |
.input-group-lg > .form-control,
|
@@ -3574,7 +3558,7 @@ input[type="button"].btn-block {
|
|
3574 |
|
3575 |
.input-group-sm > .form-control:not(textarea),
|
3576 |
.input-group-sm > .custom-select {
|
3577 |
-
height: calc(1.
|
3578 |
}
|
3579 |
|
3580 |
.input-group-sm > .form-control,
|
@@ -3688,9 +3672,7 @@ input[type="button"].btn-block {
|
|
3688 |
width: 1rem;
|
3689 |
height: 1rem;
|
3690 |
content: "";
|
3691 |
-
background
|
3692 |
-
background-position: center center;
|
3693 |
-
background-size: 50% 50%;
|
3694 |
}
|
3695 |
|
3696 |
.custom-checkbox .custom-control-label::before {
|
@@ -3753,7 +3735,7 @@ input[type="button"].btn-block {
|
|
3753 |
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
|
3754 |
}
|
3755 |
|
3756 |
-
@media
|
3757 |
.custom-switch .custom-control-label::after {
|
3758 |
transition: none;
|
3759 |
}
|
@@ -3772,8 +3754,9 @@ input[type="button"].btn-block {
|
|
3772 |
.custom-select {
|
3773 |
display: inline-block;
|
3774 |
width: 100%;
|
3775 |
-
height: calc(
|
3776 |
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
|
|
|
3777 |
font-weight: 400;
|
3778 |
line-height: 1.5;
|
3779 |
color: #495057;
|
@@ -3790,7 +3773,7 @@ input[type="button"].btn-block {
|
|
3790 |
.custom-select:focus {
|
3791 |
border-color: #80bdff;
|
3792 |
outline: 0;
|
3793 |
-
box-shadow: 0 0 0 0.2rem rgba(
|
3794 |
}
|
3795 |
|
3796 |
.custom-select:focus::-ms-value {
|
@@ -3810,11 +3793,11 @@ input[type="button"].btn-block {
|
|
3810 |
}
|
3811 |
|
3812 |
.custom-select::-ms-expand {
|
3813 |
-
|
3814 |
}
|
3815 |
|
3816 |
.custom-select-sm {
|
3817 |
-
height: calc(1.
|
3818 |
padding-top: 0.25rem;
|
3819 |
padding-bottom: 0.25rem;
|
3820 |
padding-left: 0.5rem;
|
@@ -3822,7 +3805,7 @@ input[type="button"].btn-block {
|
|
3822 |
}
|
3823 |
|
3824 |
.custom-select-lg {
|
3825 |
-
height: calc(
|
3826 |
padding-top: 0.5rem;
|
3827 |
padding-bottom: 0.5rem;
|
3828 |
padding-left: 1rem;
|
@@ -3833,7 +3816,7 @@ input[type="button"].btn-block {
|
|
3833 |
position: relative;
|
3834 |
display: inline-block;
|
3835 |
width: 100%;
|
3836 |
-
height: calc(
|
3837 |
margin-bottom: 0;
|
3838 |
}
|
3839 |
|
@@ -3841,7 +3824,7 @@ input[type="button"].btn-block {
|
|
3841 |
position: relative;
|
3842 |
z-index: 2;
|
3843 |
width: 100%;
|
3844 |
-
height: calc(
|
3845 |
margin: 0;
|
3846 |
opacity: 0;
|
3847 |
}
|
@@ -3869,7 +3852,7 @@ input[type="button"].btn-block {
|
|
3869 |
right: 0;
|
3870 |
left: 0;
|
3871 |
z-index: 1;
|
3872 |
-
height: calc(
|
3873 |
padding: 0.375rem 0.75rem;
|
3874 |
font-weight: 400;
|
3875 |
line-height: 1.5;
|
@@ -3886,7 +3869,7 @@ input[type="button"].btn-block {
|
|
3886 |
bottom: 0;
|
3887 |
z-index: 3;
|
3888 |
display: block;
|
3889 |
-
height:
|
3890 |
padding: 0.375rem 0.75rem;
|
3891 |
line-height: 1.5;
|
3892 |
color: #495057;
|
@@ -3938,7 +3921,7 @@ input[type="button"].btn-block {
|
|
3938 |
appearance: none;
|
3939 |
}
|
3940 |
|
3941 |
-
@media
|
3942 |
.custom-range::-webkit-slider-thumb {
|
3943 |
transition: none;
|
3944 |
}
|
@@ -3969,7 +3952,7 @@ input[type="button"].btn-block {
|
|
3969 |
appearance: none;
|
3970 |
}
|
3971 |
|
3972 |
-
@media
|
3973 |
.custom-range::-moz-range-thumb {
|
3974 |
transition: none;
|
3975 |
}
|
@@ -4002,7 +3985,7 @@ input[type="button"].btn-block {
|
|
4002 |
appearance: none;
|
4003 |
}
|
4004 |
|
4005 |
-
@media
|
4006 |
.custom-range::-ms-thumb {
|
4007 |
transition: none;
|
4008 |
}
|
@@ -4059,7 +4042,7 @@ input[type="button"].btn-block {
|
|
4059 |
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
4060 |
}
|
4061 |
|
4062 |
-
@media
|
4063 |
.custom-control-label::before,
|
4064 |
.custom-file-label,
|
4065 |
.custom-select {
|
@@ -4248,10 +4231,6 @@ input[type="button"].btn-block {
|
|
4248 |
text-decoration: none;
|
4249 |
}
|
4250 |
|
4251 |
-
.navbar-toggler:not(:disabled):not(.disabled) {
|
4252 |
-
cursor: pointer;
|
4253 |
-
}
|
4254 |
-
|
4255 |
.navbar-toggler-icon {
|
4256 |
display: inline-block;
|
4257 |
width: 1.5em;
|
@@ -4629,7 +4608,6 @@ input[type="button"].btn-block {
|
|
4629 |
.card-header {
|
4630 |
padding: 0.75rem 1.25rem;
|
4631 |
margin-bottom: 0;
|
4632 |
-
color: inherit;
|
4633 |
background-color: rgba(0, 0, 0, 0.03);
|
4634 |
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
4635 |
}
|
@@ -4746,52 +4724,30 @@ input[type="button"].btn-block {
|
|
4746 |
margin-left: 0;
|
4747 |
border-left: 0;
|
4748 |
}
|
4749 |
-
.card-group > .card:
|
4750 |
border-top-right-radius: 0;
|
4751 |
border-bottom-right-radius: 0;
|
4752 |
}
|
4753 |
-
.card-group > .card:
|
4754 |
-
.card-group > .card:
|
4755 |
border-top-right-radius: 0;
|
4756 |
}
|
4757 |
-
.card-group > .card:
|
4758 |
-
.card-group > .card:
|
4759 |
border-bottom-right-radius: 0;
|
4760 |
}
|
4761 |
-
.card-group > .card:
|
4762 |
border-top-left-radius: 0;
|
4763 |
border-bottom-left-radius: 0;
|
4764 |
}
|
4765 |
-
.card-group > .card:
|
4766 |
-
.card-group > .card:
|
4767 |
border-top-left-radius: 0;
|
4768 |
}
|
4769 |
-
.card-group > .card:
|
4770 |
-
.card-group > .card:
|
4771 |
border-bottom-left-radius: 0;
|
4772 |
}
|
4773 |
-
.card-group > .card:only-child {
|
4774 |
-
border-radius: 0.25rem;
|
4775 |
-
}
|
4776 |
-
.card-group > .card:only-child .card-img-top,
|
4777 |
-
.card-group > .card:only-child .card-header {
|
4778 |
-
border-top-left-radius: 0.25rem;
|
4779 |
-
border-top-right-radius: 0.25rem;
|
4780 |
-
}
|
4781 |
-
.card-group > .card:only-child .card-img-bottom,
|
4782 |
-
.card-group > .card:only-child .card-footer {
|
4783 |
-
border-bottom-right-radius: 0.25rem;
|
4784 |
-
border-bottom-left-radius: 0.25rem;
|
4785 |
-
}
|
4786 |
-
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) {
|
4787 |
-
border-radius: 0;
|
4788 |
-
}
|
4789 |
-
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
|
4790 |
-
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,
|
4791 |
-
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,
|
4792 |
-
.card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {
|
4793 |
-
border-radius: 0;
|
4794 |
-
}
|
4795 |
}
|
4796 |
|
4797 |
.card-columns .card {
|
@@ -4815,31 +4771,31 @@ input[type="button"].btn-block {
|
|
4815 |
}
|
4816 |
}
|
4817 |
|
4818 |
-
.accordion .card {
|
4819 |
overflow: hidden;
|
4820 |
}
|
4821 |
|
4822 |
-
.accordion .card:not(:first-of-type) .card-header:first-child {
|
4823 |
border-radius: 0;
|
4824 |
}
|
4825 |
|
4826 |
-
.accordion .card:not(:first-of-type):not(:last-of-type) {
|
4827 |
border-bottom: 0;
|
4828 |
border-radius: 0;
|
4829 |
}
|
4830 |
|
4831 |
-
.accordion .card:first-of-type {
|
4832 |
border-bottom: 0;
|
4833 |
border-bottom-right-radius: 0;
|
4834 |
border-bottom-left-radius: 0;
|
4835 |
}
|
4836 |
|
4837 |
-
.accordion .card:last-of-type {
|
4838 |
border-top-left-radius: 0;
|
4839 |
border-top-right-radius: 0;
|
4840 |
}
|
4841 |
|
4842 |
-
.accordion .card .card-header {
|
4843 |
margin-bottom: -1px;
|
4844 |
}
|
4845 |
|
@@ -4911,10 +4867,6 @@ input[type="button"].btn-block {
|
|
4911 |
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
4912 |
}
|
4913 |
|
4914 |
-
.page-link:not(:disabled):not(.disabled) {
|
4915 |
-
cursor: pointer;
|
4916 |
-
}
|
4917 |
-
|
4918 |
.page-item:first-child .page-link {
|
4919 |
margin-left: 0;
|
4920 |
border-top-left-radius: 0.25rem;
|
@@ -4983,6 +4935,13 @@ input[type="button"].btn-block {
|
|
4983 |
white-space: nowrap;
|
4984 |
vertical-align: baseline;
|
4985 |
border-radius: 0.25rem;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4986 |
}
|
4987 |
|
4988 |
a.badge:hover, a.badge:focus {
|
@@ -5014,6 +4973,11 @@ a.badge-primary:hover, a.badge-primary:focus {
|
|
5014 |
background-color: #0062cc;
|
5015 |
}
|
5016 |
|
|
|
|
|
|
|
|
|
|
|
5017 |
.badge-secondary {
|
5018 |
color: #fff;
|
5019 |
background-color: #6c757d;
|
@@ -5024,6 +4988,11 @@ a.badge-secondary:hover, a.badge-secondary:focus {
|
|
5024 |
background-color: #545b62;
|
5025 |
}
|
5026 |
|
|
|
|
|
|
|
|
|
|
|
5027 |
.badge-success {
|
5028 |
color: #fff;
|
5029 |
background-color: #28a745;
|
@@ -5034,6 +5003,11 @@ a.badge-success:hover, a.badge-success:focus {
|
|
5034 |
background-color: #1e7e34;
|
5035 |
}
|
5036 |
|
|
|
|
|
|
|
|
|
|
|
5037 |
.badge-info {
|
5038 |
color: #fff;
|
5039 |
background-color: #17a2b8;
|
@@ -5044,6 +5018,11 @@ a.badge-info:hover, a.badge-info:focus {
|
|
5044 |
background-color: #117a8b;
|
5045 |
}
|
5046 |
|
|
|
|
|
|
|
|
|
|
|
5047 |
.badge-warning {
|
5048 |
color: #212529;
|
5049 |
background-color: #ffc107;
|
@@ -5054,6 +5033,11 @@ a.badge-warning:hover, a.badge-warning:focus {
|
|
5054 |
background-color: #d39e00;
|
5055 |
}
|
5056 |
|
|
|
|
|
|
|
|
|
|
|
5057 |
.badge-danger {
|
5058 |
color: #fff;
|
5059 |
background-color: #dc3545;
|
@@ -5064,6 +5048,11 @@ a.badge-danger:hover, a.badge-danger:focus {
|
|
5064 |
background-color: #bd2130;
|
5065 |
}
|
5066 |
|
|
|
|
|
|
|
|
|
|
|
5067 |
.badge-light {
|
5068 |
color: #212529;
|
5069 |
background-color: #f8f9fa;
|
@@ -5074,6 +5063,11 @@ a.badge-light:hover, a.badge-light:focus {
|
|
5074 |
background-color: #dae0e5;
|
5075 |
}
|
5076 |
|
|
|
|
|
|
|
|
|
|
|
5077 |
.badge-dark {
|
5078 |
color: #fff;
|
5079 |
background-color: #343a40;
|
@@ -5084,6 +5078,11 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5084 |
background-color: #1d2124;
|
5085 |
}
|
5086 |
|
|
|
|
|
|
|
|
|
|
|
5087 |
.jumbotron {
|
5088 |
padding: 2rem 1rem;
|
5089 |
margin-bottom: 2rem;
|
@@ -5285,7 +5284,7 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5285 |
transition: width 0.6s ease;
|
5286 |
}
|
5287 |
|
5288 |
-
@media
|
5289 |
.progress-bar {
|
5290 |
transition: none;
|
5291 |
}
|
@@ -5301,6 +5300,13 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5301 |
animation: progress-bar-stripes 1s linear infinite;
|
5302 |
}
|
5303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5304 |
.media {
|
5305 |
display: -ms-flexbox;
|
5306 |
display: flex;
|
@@ -5329,6 +5335,7 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5329 |
}
|
5330 |
|
5331 |
.list-group-item-action:hover, .list-group-item-action:focus {
|
|
|
5332 |
color: #495057;
|
5333 |
text-decoration: none;
|
5334 |
background-color: #f8f9fa;
|
@@ -5359,11 +5366,6 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5359 |
border-bottom-left-radius: 0.25rem;
|
5360 |
}
|
5361 |
|
5362 |
-
.list-group-item:hover, .list-group-item:focus {
|
5363 |
-
z-index: 1;
|
5364 |
-
text-decoration: none;
|
5365 |
-
}
|
5366 |
-
|
5367 |
.list-group-item.disabled, .list-group-item:disabled {
|
5368 |
color: #6c757d;
|
5369 |
pointer-events: none;
|
@@ -5377,6 +5379,117 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5377 |
border-color: #007bff;
|
5378 |
}
|
5379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5380 |
.list-group-flush .list-group-item {
|
5381 |
border-right: 0;
|
5382 |
border-left: 0;
|
@@ -5539,10 +5652,6 @@ a.badge-dark:hover, a.badge-dark:focus {
|
|
5539 |
text-decoration: none;
|
5540 |
}
|
5541 |
|
5542 |
-
.close:not(:disabled):not(.disabled) {
|
5543 |
-
cursor: pointer;
|
5544 |
-
}
|
5545 |
-
|
5546 |
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
|
5547 |
opacity: .75;
|
5548 |
}
|
@@ -5567,11 +5676,11 @@ a.close.disabled {
|
|
5567 |
background-color: rgba(255, 255, 255, 0.85);
|
5568 |
background-clip: padding-box;
|
5569 |
border: 1px solid rgba(0, 0, 0, 0.1);
|
5570 |
-
border-radius: 0.25rem;
|
5571 |
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
|
5572 |
-webkit-backdrop-filter: blur(10px);
|
5573 |
backdrop-filter: blur(10px);
|
5574 |
opacity: 0;
|
|
|
5575 |
}
|
5576 |
|
5577 |
.toast:not(:last-child) {
|
@@ -5643,7 +5752,7 @@ a.close.disabled {
|
|
5643 |
transform: translate(0, -50px);
|
5644 |
}
|
5645 |
|
5646 |
-
@media
|
5647 |
.modal.fade .modal-dialog {
|
5648 |
transition: none;
|
5649 |
}
|
@@ -5654,20 +5763,57 @@ a.close.disabled {
|
|
5654 |
transform: none;
|
5655 |
}
|
5656 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5657 |
.modal-dialog-centered {
|
5658 |
display: -ms-flexbox;
|
5659 |
display: flex;
|
5660 |
-ms-flex-align: center;
|
5661 |
align-items: center;
|
5662 |
-
min-height: calc(100% -
|
5663 |
}
|
5664 |
|
5665 |
.modal-dialog-centered::before {
|
5666 |
display: block;
|
5667 |
-
height: calc(100vh -
|
5668 |
content: "";
|
5669 |
}
|
5670 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5671 |
.modal-content {
|
5672 |
position: relative;
|
5673 |
display: -ms-flexbox;
|
@@ -5709,7 +5855,7 @@ a.close.disabled {
|
|
5709 |
-ms-flex-pack: justify;
|
5710 |
justify-content: space-between;
|
5711 |
padding: 1rem 1rem;
|
5712 |
-
border-bottom: 1px solid #
|
5713 |
border-top-left-radius: 0.3rem;
|
5714 |
border-top-right-radius: 0.3rem;
|
5715 |
}
|
@@ -5739,7 +5885,7 @@ a.close.disabled {
|
|
5739 |
-ms-flex-pack: end;
|
5740 |
justify-content: flex-end;
|
5741 |
padding: 1rem;
|
5742 |
-
border-top: 1px solid #
|
5743 |
border-bottom-right-radius: 0.3rem;
|
5744 |
border-bottom-left-radius: 0.3rem;
|
5745 |
}
|
@@ -5765,11 +5911,17 @@ a.close.disabled {
|
|
5765 |
max-width: 500px;
|
5766 |
margin: 1.75rem auto;
|
5767 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
5768 |
.modal-dialog-centered {
|
5769 |
-
min-height: calc(100% -
|
5770 |
}
|
5771 |
.modal-dialog-centered::before {
|
5772 |
-
height: calc(100vh -
|
5773 |
}
|
5774 |
.modal-sm {
|
5775 |
max-width: 300px;
|
@@ -5949,25 +6101,19 @@ a.close.disabled {
|
|
5949 |
margin-bottom: 0.5rem;
|
5950 |
}
|
5951 |
|
5952 |
-
.bs-popover-top .arrow, .bs-popover-auto[x-placement^="top"] .arrow {
|
5953 |
bottom: calc((0.5rem + 1px) * -1);
|
5954 |
}
|
5955 |
|
5956 |
-
.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before
|
5957 |
-
.bs-popover-top .arrow::after,
|
5958 |
-
.bs-popover-auto[x-placement^="top"] .arrow::after {
|
5959 |
-
border-width: 0.5rem 0.5rem 0;
|
5960 |
-
}
|
5961 |
-
|
5962 |
-
.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^="top"] .arrow::before {
|
5963 |
bottom: 0;
|
|
|
5964 |
border-top-color: rgba(0, 0, 0, 0.25);
|
5965 |
}
|
5966 |
|
5967 |
-
|
5968 |
-
.bs-popover-top .arrow::after,
|
5969 |
-
.bs-popover-auto[x-placement^="top"] .arrow::after {
|
5970 |
bottom: 1px;
|
|
|
5971 |
border-top-color: #fff;
|
5972 |
}
|
5973 |
|
@@ -5975,28 +6121,22 @@ a.close.disabled {
|
|
5975 |
margin-left: 0.5rem;
|
5976 |
}
|
5977 |
|
5978 |
-
.bs-popover-right .arrow, .bs-popover-auto[x-placement^="right"] .arrow {
|
5979 |
left: calc((0.5rem + 1px) * -1);
|
5980 |
width: 0.5rem;
|
5981 |
height: 1rem;
|
5982 |
margin: 0.3rem 0;
|
5983 |
}
|
5984 |
|
5985 |
-
.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before
|
5986 |
-
.bs-popover-right .arrow::after,
|
5987 |
-
.bs-popover-auto[x-placement^="right"] .arrow::after {
|
5988 |
-
border-width: 0.5rem 0.5rem 0.5rem 0;
|
5989 |
-
}
|
5990 |
-
|
5991 |
-
.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^="right"] .arrow::before {
|
5992 |
left: 0;
|
|
|
5993 |
border-right-color: rgba(0, 0, 0, 0.25);
|
5994 |
}
|
5995 |
|
5996 |
-
|
5997 |
-
.bs-popover-right .arrow::after,
|
5998 |
-
.bs-popover-auto[x-placement^="right"] .arrow::after {
|
5999 |
left: 1px;
|
|
|
6000 |
border-right-color: #fff;
|
6001 |
}
|
6002 |
|
@@ -6004,25 +6144,19 @@ a.close.disabled {
|
|
6004 |
margin-top: 0.5rem;
|
6005 |
}
|
6006 |
|
6007 |
-
.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^="bottom"] .arrow {
|
6008 |
top: calc((0.5rem + 1px) * -1);
|
6009 |
}
|
6010 |
|
6011 |
-
.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before
|
6012 |
-
.bs-popover-bottom .arrow::after,
|
6013 |
-
.bs-popover-auto[x-placement^="bottom"] .arrow::after {
|
6014 |
-
border-width: 0 0.5rem 0.5rem 0.5rem;
|
6015 |
-
}
|
6016 |
-
|
6017 |
-
.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^="bottom"] .arrow::before {
|
6018 |
top: 0;
|
|
|
6019 |
border-bottom-color: rgba(0, 0, 0, 0.25);
|
6020 |
}
|
6021 |
|
6022 |
-
|
6023 |
-
.bs-popover-bottom .arrow::after,
|
6024 |
-
.bs-popover-auto[x-placement^="bottom"] .arrow::after {
|
6025 |
top: 1px;
|
|
|
6026 |
border-bottom-color: #fff;
|
6027 |
}
|
6028 |
|
@@ -6041,28 +6175,22 @@ a.close.disabled {
|
|
6041 |
margin-right: 0.5rem;
|
6042 |
}
|
6043 |
|
6044 |
-
.bs-popover-left .arrow, .bs-popover-auto[x-placement^="left"] .arrow {
|
6045 |
right: calc((0.5rem + 1px) * -1);
|
6046 |
width: 0.5rem;
|
6047 |
height: 1rem;
|
6048 |
margin: 0.3rem 0;
|
6049 |
}
|
6050 |
|
6051 |
-
.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before
|
6052 |
-
.bs-popover-left .arrow::after,
|
6053 |
-
.bs-popover-auto[x-placement^="left"] .arrow::after {
|
6054 |
-
border-width: 0.5rem 0 0.5rem 0.5rem;
|
6055 |
-
}
|
6056 |
-
|
6057 |
-
.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^="left"] .arrow::before {
|
6058 |
right: 0;
|
|
|
6059 |
border-left-color: rgba(0, 0, 0, 0.25);
|
6060 |
}
|
6061 |
|
6062 |
-
|
6063 |
-
.bs-popover-left .arrow::after,
|
6064 |
-
.bs-popover-auto[x-placement^="left"] .arrow::after {
|
6065 |
right: 1px;
|
|
|
6066 |
border-left-color: #fff;
|
6067 |
}
|
6068 |
|
@@ -6070,7 +6198,6 @@ a.close.disabled {
|
|
6070 |
padding: 0.5rem 0.75rem;
|
6071 |
margin-bottom: 0;
|
6072 |
font-size: 1rem;
|
6073 |
-
color: inherit;
|
6074 |
background-color: #f7f7f7;
|
6075 |
border-bottom: 1px solid #ebebeb;
|
6076 |
border-top-left-radius: calc(0.3rem - 1px);
|
@@ -6120,7 +6247,7 @@ a.close.disabled {
|
|
6120 |
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
|
6121 |
}
|
6122 |
|
6123 |
-
@media
|
6124 |
.carousel-item {
|
6125 |
transition: none;
|
6126 |
}
|
@@ -6165,7 +6292,7 @@ a.close.disabled {
|
|
6165 |
transition: 0s 0.6s opacity;
|
6166 |
}
|
6167 |
|
6168 |
-
@media
|
6169 |
.carousel-fade .active.carousel-item-left,
|
6170 |
.carousel-fade .active.carousel-item-right {
|
6171 |
transition: none;
|
@@ -6191,7 +6318,7 @@ a.close.disabled {
|
|
6191 |
transition: opacity 0.15s ease;
|
6192 |
}
|
6193 |
|
6194 |
-
@media
|
6195 |
.carousel-control-prev,
|
6196 |
.carousel-control-next {
|
6197 |
transition: none;
|
@@ -6220,8 +6347,7 @@ a.close.disabled {
|
|
6220 |
display: inline-block;
|
6221 |
width: 20px;
|
6222 |
height: 20px;
|
6223 |
-
background:
|
6224 |
-
background-size: 100% 100%;
|
6225 |
}
|
6226 |
|
6227 |
.carousel-control-prev-icon {
|
@@ -6266,7 +6392,7 @@ a.close.disabled {
|
|
6266 |
transition: opacity 0.6s ease;
|
6267 |
}
|
6268 |
|
6269 |
-
@media
|
6270 |
.carousel-indicators li {
|
6271 |
transition: none;
|
6272 |
}
|
@@ -6545,6 +6671,10 @@ button.bg-dark:focus {
|
|
6545 |
border-color: #fff !important;
|
6546 |
}
|
6547 |
|
|
|
|
|
|
|
|
|
6548 |
.rounded {
|
6549 |
border-radius: 0.25rem !important;
|
6550 |
}
|
@@ -6569,6 +6699,10 @@ button.bg-dark:focus {
|
|
6569 |
border-bottom-left-radius: 0.25rem !important;
|
6570 |
}
|
6571 |
|
|
|
|
|
|
|
|
|
6572 |
.rounded-circle {
|
6573 |
border-radius: 50% !important;
|
6574 |
}
|
@@ -6820,8 +6954,8 @@ button.bg-dark:focus {
|
|
6820 |
padding-top: 56.25%;
|
6821 |
}
|
6822 |
|
6823 |
-
.embed-responsive-
|
6824 |
-
padding-top:
|
6825 |
}
|
6826 |
|
6827 |
.embed-responsive-1by1::before {
|
@@ -7768,6 +7902,18 @@ button.bg-dark:focus {
|
|
7768 |
height: 100vh !important;
|
7769 |
}
|
7770 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7771 |
.m-0 {
|
7772 |
margin: 0 !important;
|
7773 |
}
|
@@ -9581,7 +9727,7 @@ button.bg-dark:focus {
|
|
9581 |
}
|
9582 |
|
9583 |
.text-monospace {
|
9584 |
-
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
9585 |
}
|
9586 |
|
9587 |
.text-justify {
|
@@ -9794,6 +9940,11 @@ a.text-dark:hover, a.text-dark:focus {
|
|
9794 |
text-decoration: none !important;
|
9795 |
}
|
9796 |
|
|
|
|
|
|
|
|
|
|
|
9797 |
.text-reset {
|
9798 |
color: inherit !important;
|
9799 |
}
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors
|
4 |
+
* Copyright 2011-2019 Twitter, Inc.
|
5 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6 |
*/
|
7 |
:root {
|
90 |
text-decoration: underline dotted;
|
91 |
cursor: help;
|
92 |
border-bottom: 0;
|
93 |
+
-webkit-text-decoration-skip-ink: none;
|
94 |
text-decoration-skip-ink: none;
|
95 |
}
|
96 |
|
256 |
text-transform: none;
|
257 |
}
|
258 |
|
259 |
+
select {
|
260 |
+
word-wrap: normal;
|
261 |
+
}
|
262 |
+
|
263 |
button,
|
264 |
[type="button"],
|
265 |
[type="reset"],
|
267 |
-webkit-appearance: button;
|
268 |
}
|
269 |
|
270 |
+
button:not(:disabled),
|
271 |
+
[type="button"]:not(:disabled),
|
272 |
+
[type="reset"]:not(:disabled),
|
273 |
+
[type="submit"]:not(:disabled) {
|
274 |
+
cursor: pointer;
|
275 |
+
}
|
276 |
+
|
277 |
button::-moz-focus-inner,
|
278 |
[type="button"]::-moz-focus-inner,
|
279 |
[type="reset"]::-moz-focus-inner,
|
362 |
h1, h2, h3, h4, h5, h6,
|
363 |
.h1, .h2, .h3, .h4, .h5, .h6 {
|
364 |
margin-bottom: 0.5rem;
|
|
|
365 |
font-weight: 500;
|
366 |
line-height: 1.2;
|
|
|
367 |
}
|
368 |
|
369 |
h1, .h1 {
|
1514 |
.table {
|
1515 |
width: 100%;
|
1516 |
margin-bottom: 1rem;
|
1517 |
+
color: #212529;
|
1518 |
}
|
1519 |
|
1520 |
.table th,
|
1533 |
border-top: 2px solid #dee2e6;
|
1534 |
}
|
1535 |
|
|
|
|
|
|
|
|
|
1536 |
.table-sm th,
|
1537 |
.table-sm td {
|
1538 |
padding: 0.3rem;
|
1564 |
}
|
1565 |
|
1566 |
.table-hover tbody tr:hover {
|
1567 |
+
color: #212529;
|
1568 |
background-color: rgba(0, 0, 0, 0.075);
|
1569 |
}
|
1570 |
|
1761 |
|
1762 |
.table .thead-dark th {
|
1763 |
color: #fff;
|
1764 |
+
background-color: #343a40;
|
1765 |
+
border-color: #454d55;
|
1766 |
}
|
1767 |
|
1768 |
.table .thead-light th {
|
1773 |
|
1774 |
.table-dark {
|
1775 |
color: #fff;
|
1776 |
+
background-color: #343a40;
|
1777 |
}
|
1778 |
|
1779 |
.table-dark th,
|
1780 |
.table-dark td,
|
1781 |
.table-dark thead th {
|
1782 |
+
border-color: #454d55;
|
1783 |
}
|
1784 |
|
1785 |
.table-dark.table-bordered {
|
1791 |
}
|
1792 |
|
1793 |
.table-dark.table-hover tbody tr:hover {
|
1794 |
+
color: #fff;
|
1795 |
background-color: rgba(255, 255, 255, 0.075);
|
1796 |
}
|
1797 |
|
1801 |
width: 100%;
|
1802 |
overflow-x: auto;
|
1803 |
-webkit-overflow-scrolling: touch;
|
|
|
1804 |
}
|
1805 |
.table-responsive-sm > .table-bordered {
|
1806 |
border: 0;
|
1813 |
width: 100%;
|
1814 |
overflow-x: auto;
|
1815 |
-webkit-overflow-scrolling: touch;
|
|
|
1816 |
}
|
1817 |
.table-responsive-md > .table-bordered {
|
1818 |
border: 0;
|
1825 |
width: 100%;
|
1826 |
overflow-x: auto;
|
1827 |
-webkit-overflow-scrolling: touch;
|
|
|
1828 |
}
|
1829 |
.table-responsive-lg > .table-bordered {
|
1830 |
border: 0;
|
1837 |
width: 100%;
|
1838 |
overflow-x: auto;
|
1839 |
-webkit-overflow-scrolling: touch;
|
|
|
1840 |
}
|
1841 |
.table-responsive-xl > .table-bordered {
|
1842 |
border: 0;
|
1848 |
width: 100%;
|
1849 |
overflow-x: auto;
|
1850 |
-webkit-overflow-scrolling: touch;
|
|
|
1851 |
}
|
1852 |
|
1853 |
.table-responsive > .table-bordered {
|
1857 |
.form-control {
|
1858 |
display: block;
|
1859 |
width: 100%;
|
1860 |
+
height: calc(1.5em + 0.75rem + 2px);
|
1861 |
padding: 0.375rem 0.75rem;
|
1862 |
font-size: 1rem;
|
1863 |
font-weight: 400;
|
1870 |
transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
1871 |
}
|
1872 |
|
1873 |
+
@media (prefers-reduced-motion: reduce) {
|
1874 |
.form-control {
|
1875 |
transition: none;
|
1876 |
}
|
1971 |
}
|
1972 |
|
1973 |
.form-control-sm {
|
1974 |
+
height: calc(1.5em + 0.5rem + 2px);
|
1975 |
padding: 0.25rem 0.5rem;
|
1976 |
font-size: 0.875rem;
|
1977 |
line-height: 1.5;
|
1979 |
}
|
1980 |
|
1981 |
.form-control-lg {
|
1982 |
+
height: calc(1.5em + 1rem + 2px);
|
1983 |
padding: 0.5rem 1rem;
|
1984 |
font-size: 1.25rem;
|
1985 |
line-height: 1.5;
|
2079 |
|
2080 |
.was-validated .form-control:valid, .form-control.is-valid {
|
2081 |
border-color: #28a745;
|
2082 |
+
padding-right: calc(1.5em + 0.75rem);
|
|
|
|
|
|
|
2083 |
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");
|
2084 |
+
background-repeat: no-repeat;
|
2085 |
+
background-position: center right calc(0.375em + 0.1875rem);
|
2086 |
+
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
2087 |
}
|
2088 |
|
2089 |
.was-validated .form-control:valid:focus, .form-control.is-valid:focus {
|
2098 |
}
|
2099 |
|
2100 |
.was-validated textarea.form-control:valid, textarea.form-control.is-valid {
|
2101 |
+
padding-right: calc(1.5em + 0.75rem);
|
2102 |
+
background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
|
2103 |
}
|
2104 |
|
2105 |
.was-validated .custom-select:valid, .custom-select.is-valid {
|
2106 |
border-color: #28a745;
|
2107 |
+
padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
|
2108 |
+
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
2109 |
}
|
2110 |
|
2111 |
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
|
2202 |
|
2203 |
.was-validated .form-control:invalid, .form-control.is-invalid {
|
2204 |
border-color: #dc3545;
|
2205 |
+
padding-right: calc(1.5em + 0.75rem);
|
2206 |
+
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");
|
2207 |
background-repeat: no-repeat;
|
2208 |
+
background-position: center right calc(0.375em + 0.1875rem);
|
2209 |
+
background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
|
|
2210 |
}
|
2211 |
|
2212 |
.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {
|
2221 |
}
|
2222 |
|
2223 |
.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {
|
2224 |
+
padding-right: calc(1.5em + 0.75rem);
|
2225 |
+
background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);
|
2226 |
}
|
2227 |
|
2228 |
.was-validated .custom-select:invalid, .custom-select.is-invalid {
|
2229 |
border-color: #dc3545;
|
2230 |
+
padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem);
|
2231 |
+
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
|
2232 |
}
|
2233 |
|
2234 |
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
|
2358 |
}
|
2359 |
.form-inline .form-check-input {
|
2360 |
position: relative;
|
2361 |
+
-ms-flex-negative: 0;
|
2362 |
+
flex-shrink: 0;
|
2363 |
margin-top: 0;
|
2364 |
margin-right: 0.25rem;
|
2365 |
margin-left: 0;
|
2394 |
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
2395 |
}
|
2396 |
|
2397 |
+
@media (prefers-reduced-motion: reduce) {
|
2398 |
.btn {
|
2399 |
transition: none;
|
2400 |
}
|
2414 |
opacity: 0.65;
|
2415 |
}
|
2416 |
|
|
|
|
|
|
|
|
|
2417 |
a.btn.disabled,
|
2418 |
fieldset:disabled a.btn {
|
2419 |
pointer-events: none;
|
2950 |
.btn-link {
|
2951 |
font-weight: 400;
|
2952 |
color: #007bff;
|
2953 |
+
text-decoration: none;
|
2954 |
}
|
2955 |
|
2956 |
.btn-link:hover {
|
3001 |
transition: opacity 0.15s linear;
|
3002 |
}
|
3003 |
|
3004 |
+
@media (prefers-reduced-motion: reduce) {
|
3005 |
.fade {
|
3006 |
transition: none;
|
3007 |
}
|
3022 |
transition: height 0.35s ease;
|
3023 |
}
|
3024 |
|
3025 |
+
@media (prefers-reduced-motion: reduce) {
|
3026 |
.collapsing {
|
3027 |
transition: none;
|
3028 |
}
|
3035 |
position: relative;
|
3036 |
}
|
3037 |
|
3038 |
+
.dropdown-toggle {
|
3039 |
+
white-space: nowrap;
|
3040 |
+
}
|
3041 |
+
|
3042 |
.dropdown-toggle::after {
|
3043 |
display: inline-block;
|
3044 |
margin-left: 0.255em;
|
3074 |
border-radius: 0.25rem;
|
3075 |
}
|
3076 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3077 |
.dropdown-menu-left {
|
3078 |
right: auto;
|
3079 |
left: 0;
|
3080 |
}
|
3081 |
|
3082 |
+
.dropdown-menu-right {
|
3083 |
+
right: 0;
|
3084 |
+
left: auto;
|
3085 |
+
}
|
3086 |
+
|
3087 |
@media (min-width: 576px) {
|
3088 |
.dropdown-menu-sm-left {
|
3089 |
right: auto;
|
3090 |
left: 0;
|
3091 |
}
|
3092 |
+
.dropdown-menu-sm-right {
|
3093 |
+
right: 0;
|
3094 |
+
left: auto;
|
3095 |
+
}
|
3096 |
}
|
3097 |
|
3098 |
@media (min-width: 768px) {
|
3100 |
right: auto;
|
3101 |
left: 0;
|
3102 |
}
|
3103 |
+
.dropdown-menu-md-right {
|
3104 |
+
right: 0;
|
3105 |
+
left: auto;
|
3106 |
+
}
|
3107 |
}
|
3108 |
|
3109 |
@media (min-width: 992px) {
|
3111 |
right: auto;
|
3112 |
left: 0;
|
3113 |
}
|
3114 |
+
.dropdown-menu-lg-right {
|
3115 |
+
right: 0;
|
3116 |
+
left: auto;
|
3117 |
+
}
|
3118 |
}
|
3119 |
|
3120 |
@media (min-width: 1200px) {
|
3122 |
right: auto;
|
3123 |
left: 0;
|
3124 |
}
|
3125 |
+
.dropdown-menu-xl-right {
|
3126 |
+
right: 0;
|
3127 |
+
left: auto;
|
3128 |
+
}
|
3129 |
}
|
3130 |
|
3131 |
.dropup .dropdown-menu {
|
3239 |
border: 0;
|
3240 |
}
|
3241 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3242 |
.dropdown-item:hover, .dropdown-item:focus {
|
3243 |
color: #16181b;
|
3244 |
text-decoration: none;
|
3541 |
|
3542 |
.input-group-lg > .form-control:not(textarea),
|
3543 |
.input-group-lg > .custom-select {
|
3544 |
+
height: calc(1.5em + 1rem + 2px);
|
3545 |
}
|
3546 |
|
3547 |
.input-group-lg > .form-control,
|
3558 |
|
3559 |
.input-group-sm > .form-control:not(textarea),
|
3560 |
.input-group-sm > .custom-select {
|
3561 |
+
height: calc(1.5em + 0.5rem + 2px);
|
3562 |
}
|
3563 |
|
3564 |
.input-group-sm > .form-control,
|
3672 |
width: 1rem;
|
3673 |
height: 1rem;
|
3674 |
content: "";
|
3675 |
+
background: no-repeat 50% / 50% 50%;
|
|
|
|
|
3676 |
}
|
3677 |
|
3678 |
.custom-checkbox .custom-control-label::before {
|
3735 |
transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, -webkit-transform 0.15s ease-in-out;
|
3736 |
}
|
3737 |
|
3738 |
+
@media (prefers-reduced-motion: reduce) {
|
3739 |
.custom-switch .custom-control-label::after {
|
3740 |
transition: none;
|
3741 |
}
|
3754 |
.custom-select {
|
3755 |
display: inline-block;
|
3756 |
width: 100%;
|
3757 |
+
height: calc(1.5em + 0.75rem + 2px);
|
3758 |
padding: 0.375rem 1.75rem 0.375rem 0.75rem;
|
3759 |
+
font-size: 1rem;
|
3760 |
font-weight: 400;
|
3761 |
line-height: 1.5;
|
3762 |
color: #495057;
|
3773 |
.custom-select:focus {
|
3774 |
border-color: #80bdff;
|
3775 |
outline: 0;
|
3776 |
+
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
3777 |
}
|
3778 |
|
3779 |
.custom-select:focus::-ms-value {
|
3793 |
}
|
3794 |
|
3795 |
.custom-select::-ms-expand {
|
3796 |
+
display: none;
|
3797 |
}
|
3798 |
|
3799 |
.custom-select-sm {
|
3800 |
+
height: calc(1.5em + 0.5rem + 2px);
|
3801 |
padding-top: 0.25rem;
|
3802 |
padding-bottom: 0.25rem;
|
3803 |
padding-left: 0.5rem;
|
3805 |
}
|
3806 |
|
3807 |
.custom-select-lg {
|
3808 |
+
height: calc(1.5em + 1rem + 2px);
|
3809 |
padding-top: 0.5rem;
|
3810 |
padding-bottom: 0.5rem;
|
3811 |
padding-left: 1rem;
|
3816 |
position: relative;
|
3817 |
display: inline-block;
|
3818 |
width: 100%;
|
3819 |
+
height: calc(1.5em + 0.75rem + 2px);
|
3820 |
margin-bottom: 0;
|
3821 |
}
|
3822 |
|
3824 |
position: relative;
|
3825 |
z-index: 2;
|
3826 |
width: 100%;
|
3827 |
+
height: calc(1.5em + 0.75rem + 2px);
|
3828 |
margin: 0;
|
3829 |
opacity: 0;
|
3830 |
}
|
3852 |
right: 0;
|
3853 |
left: 0;
|
3854 |
z-index: 1;
|
3855 |
+
height: calc(1.5em + 0.75rem + 2px);
|
3856 |
padding: 0.375rem 0.75rem;
|
3857 |
font-weight: 400;
|
3858 |
line-height: 1.5;
|
3869 |
bottom: 0;
|
3870 |
z-index: 3;
|
3871 |
display: block;
|
3872 |
+
height: calc(1.5em + 0.75rem);
|
3873 |
padding: 0.375rem 0.75rem;
|
3874 |
line-height: 1.5;
|
3875 |
color: #495057;
|
3921 |
appearance: none;
|
3922 |
}
|
3923 |
|
3924 |
+
@media (prefers-reduced-motion: reduce) {
|
3925 |
.custom-range::-webkit-slider-thumb {
|
3926 |
transition: none;
|
3927 |
}
|
3952 |
appearance: none;
|
3953 |
}
|
3954 |
|
3955 |
+
@media (prefers-reduced-motion: reduce) {
|
3956 |
.custom-range::-moz-range-thumb {
|
3957 |
transition: none;
|
3958 |
}
|
3985 |
appearance: none;
|
3986 |
}
|
3987 |
|
3988 |
+
@media (prefers-reduced-motion: reduce) {
|
3989 |
.custom-range::-ms-thumb {
|
3990 |
transition: none;
|
3991 |
}
|
4042 |
transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
4043 |
}
|
4044 |
|
4045 |
+
@media (prefers-reduced-motion: reduce) {
|
4046 |
.custom-control-label::before,
|
4047 |
.custom-file-label,
|
4048 |
.custom-select {
|
4231 |
text-decoration: none;
|
4232 |
}
|
4233 |
|
|
|
|
|
|
|
|
|
4234 |
.navbar-toggler-icon {
|
4235 |
display: inline-block;
|
4236 |
width: 1.5em;
|
4608 |
.card-header {
|
4609 |
padding: 0.75rem 1.25rem;
|
4610 |
margin-bottom: 0;
|
|
|
4611 |
background-color: rgba(0, 0, 0, 0.03);
|
4612 |
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
|
4613 |
}
|
4724 |
margin-left: 0;
|
4725 |
border-left: 0;
|
4726 |
}
|
4727 |
+
.card-group > .card:not(:last-child) {
|
4728 |
border-top-right-radius: 0;
|
4729 |
border-bottom-right-radius: 0;
|
4730 |
}
|
4731 |
+
.card-group > .card:not(:last-child) .card-img-top,
|
4732 |
+
.card-group > .card:not(:last-child) .card-header {
|
4733 |
border-top-right-radius: 0;
|
4734 |
}
|
4735 |
+
.card-group > .card:not(:last-child) .card-img-bottom,
|
4736 |
+
.card-group > .card:not(:last-child) .card-footer {
|
4737 |
border-bottom-right-radius: 0;
|
4738 |
}
|
4739 |
+
.card-group > .card:not(:first-child) {
|
4740 |
border-top-left-radius: 0;
|
4741 |
border-bottom-left-radius: 0;
|
4742 |
}
|
4743 |
+
.card-group > .card:not(:first-child) .card-img-top,
|
4744 |
+
.card-group > .card:not(:first-child) .card-header {
|
4745 |
border-top-left-radius: 0;
|
4746 |
}
|
4747 |
+
.card-group > .card:not(:first-child) .card-img-bottom,
|
4748 |
+
.card-group > .card:not(:first-child) .card-footer {
|
4749 |
border-bottom-left-radius: 0;
|
4750 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4751 |
}
|
4752 |
|
4753 |
.card-columns .card {
|
4771 |
}
|
4772 |
}
|
4773 |
|
4774 |
+
.accordion > .card {
|
4775 |
overflow: hidden;
|
4776 |
}
|
4777 |
|
4778 |
+
.accordion > .card:not(:first-of-type) .card-header:first-child {
|
4779 |
border-radius: 0;
|
4780 |
}
|
4781 |
|
4782 |
+
.accordion > .card:not(:first-of-type):not(:last-of-type) {
|
4783 |
border-bottom: 0;
|
4784 |
border-radius: 0;
|
4785 |
}
|
4786 |
|
4787 |
+
.accordion > .card:first-of-type {
|
4788 |
border-bottom: 0;
|
4789 |
border-bottom-right-radius: 0;
|
4790 |
border-bottom-left-radius: 0;
|
4791 |
}
|
4792 |
|
4793 |
+
.accordion > .card:last-of-type {
|
4794 |
border-top-left-radius: 0;
|
4795 |
border-top-right-radius: 0;
|
4796 |
}
|
4797 |
|
4798 |
+
.accordion > .card .card-header {
|
4799 |
margin-bottom: -1px;
|
4800 |
}
|
4801 |
|
4867 |
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
|
4868 |
}
|
4869 |
|
|
|
|
|
|
|
|
|
4870 |
.page-item:first-child .page-link {
|
4871 |
margin-left: 0;
|
4872 |
border-top-left-radius: 0.25rem;
|
4935 |
white-space: nowrap;
|
4936 |
vertical-align: baseline;
|
4937 |
border-radius: 0.25rem;
|
4938 |
+
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
4939 |
+
}
|
4940 |
+
|
4941 |
+
@media (prefers-reduced-motion: reduce) {
|
4942 |
+
.badge {
|
4943 |
+
transition: none;
|
4944 |
+
}
|
4945 |
}
|
4946 |
|
4947 |
a.badge:hover, a.badge:focus {
|
4973 |
background-color: #0062cc;
|
4974 |
}
|
4975 |
|
4976 |
+
a.badge-primary:focus, a.badge-primary.focus {
|
4977 |
+
outline: 0;
|
4978 |
+
box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);
|
4979 |
+
}
|
4980 |
+
|
4981 |
.badge-secondary {
|
4982 |
color: #fff;
|
4983 |
background-color: #6c757d;
|
4988 |
background-color: #545b62;
|
4989 |
}
|
4990 |
|
4991 |
+
a.badge-secondary:focus, a.badge-secondary.focus {
|
4992 |
+
outline: 0;
|
4993 |
+
box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);
|
4994 |
+
}
|
4995 |
+
|
4996 |
.badge-success {
|
4997 |
color: #fff;
|
4998 |
background-color: #28a745;
|
5003 |
background-color: #1e7e34;
|
5004 |
}
|
5005 |
|
5006 |
+
a.badge-success:focus, a.badge-success.focus {
|
5007 |
+
outline: 0;
|
5008 |
+
box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);
|
5009 |
+
}
|
5010 |
+
|
5011 |
.badge-info {
|
5012 |
color: #fff;
|
5013 |
background-color: #17a2b8;
|
5018 |
background-color: #117a8b;
|
5019 |
}
|
5020 |
|
5021 |
+
a.badge-info:focus, a.badge-info.focus {
|
5022 |
+
outline: 0;
|
5023 |
+
box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);
|
5024 |
+
}
|
5025 |
+
|
5026 |
.badge-warning {
|
5027 |
color: #212529;
|
5028 |
background-color: #ffc107;
|
5033 |
background-color: #d39e00;
|
5034 |
}
|
5035 |
|
5036 |
+
a.badge-warning:focus, a.badge-warning.focus {
|
5037 |
+
outline: 0;
|
5038 |
+
box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);
|
5039 |
+
}
|
5040 |
+
|
5041 |
.badge-danger {
|
5042 |
color: #fff;
|
5043 |
background-color: #dc3545;
|
5048 |
background-color: #bd2130;
|
5049 |
}
|
5050 |
|
5051 |
+
a.badge-danger:focus, a.badge-danger.focus {
|
5052 |
+
outline: 0;
|
5053 |
+
box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);
|
5054 |
+
}
|
5055 |
+
|
5056 |
.badge-light {
|
5057 |
color: #212529;
|
5058 |
background-color: #f8f9fa;
|
5063 |
background-color: #dae0e5;
|
5064 |
}
|
5065 |
|
5066 |
+
a.badge-light:focus, a.badge-light.focus {
|
5067 |
+
outline: 0;
|
5068 |
+
box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);
|
5069 |
+
}
|
5070 |
+
|
5071 |
.badge-dark {
|
5072 |
color: #fff;
|
5073 |
background-color: #343a40;
|
5078 |
background-color: #1d2124;
|
5079 |
}
|
5080 |
|
5081 |
+
a.badge-dark:focus, a.badge-dark.focus {
|
5082 |
+
outline: 0;
|
5083 |
+
box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);
|
5084 |
+
}
|
5085 |
+
|
5086 |
.jumbotron {
|
5087 |
padding: 2rem 1rem;
|
5088 |
margin-bottom: 2rem;
|
5284 |
transition: width 0.6s ease;
|
5285 |
}
|
5286 |
|
5287 |
+
@media (prefers-reduced-motion: reduce) {
|
5288 |
.progress-bar {
|
5289 |
transition: none;
|
5290 |
}
|
5300 |
animation: progress-bar-stripes 1s linear infinite;
|
5301 |
}
|
5302 |
|
5303 |
+
@media (prefers-reduced-motion: reduce) {
|
5304 |
+
.progress-bar-animated {
|
5305 |
+
-webkit-animation: none;
|
5306 |
+
animation: none;
|
5307 |
+
}
|
5308 |
+
}
|
5309 |
+
|
5310 |
.media {
|
5311 |
display: -ms-flexbox;
|
5312 |
display: flex;
|
5335 |
}
|
5336 |
|
5337 |
.list-group-item-action:hover, .list-group-item-action:focus {
|
5338 |
+
z-index: 1;
|
5339 |
color: #495057;
|
5340 |
text-decoration: none;
|
5341 |
background-color: #f8f9fa;
|
5366 |
border-bottom-left-radius: 0.25rem;
|
5367 |
}
|
5368 |
|
|
|
|
|
|
|
|
|
|
|
5369 |
.list-group-item.disabled, .list-group-item:disabled {
|
5370 |
color: #6c757d;
|
5371 |
pointer-events: none;
|
5379 |
border-color: #007bff;
|
5380 |
}
|
5381 |
|
5382 |
+
.list-group-horizontal {
|
5383 |
+
-ms-flex-direction: row;
|
5384 |
+
flex-direction: row;
|
5385 |
+
}
|
5386 |
+
|
5387 |
+
.list-group-horizontal .list-group-item {
|
5388 |
+
margin-right: -1px;
|
5389 |
+
margin-bottom: 0;
|
5390 |
+
}
|
5391 |
+
|
5392 |
+
.list-group-horizontal .list-group-item:first-child {
|
5393 |
+
border-top-left-radius: 0.25rem;
|
5394 |
+
border-bottom-left-radius: 0.25rem;
|
5395 |
+
border-top-right-radius: 0;
|
5396 |
+
}
|
5397 |
+
|
5398 |
+
.list-group-horizontal .list-group-item:last-child {
|
5399 |
+
margin-right: 0;
|
5400 |
+
border-top-right-radius: 0.25rem;
|
5401 |
+
border-bottom-right-radius: 0.25rem;
|
5402 |
+
border-bottom-left-radius: 0;
|
5403 |
+
}
|
5404 |
+
|
5405 |
+
@media (min-width: 576px) {
|
5406 |
+
.list-group-horizontal-sm {
|
5407 |
+
-ms-flex-direction: row;
|
5408 |
+
flex-direction: row;
|
5409 |
+
}
|
5410 |
+
.list-group-horizontal-sm .list-group-item {
|
5411 |
+
margin-right: -1px;
|
5412 |
+
margin-bottom: 0;
|
5413 |
+
}
|
5414 |
+
.list-group-horizontal-sm .list-group-item:first-child {
|
5415 |
+
border-top-left-radius: 0.25rem;
|
5416 |
+
border-bottom-left-radius: 0.25rem;
|
5417 |
+
border-top-right-radius: 0;
|
5418 |
+
}
|
5419 |
+
.list-group-horizontal-sm .list-group-item:last-child {
|
5420 |
+
margin-right: 0;
|
5421 |
+
border-top-right-radius: 0.25rem;
|
5422 |
+
border-bottom-right-radius: 0.25rem;
|
5423 |
+
border-bottom-left-radius: 0;
|
5424 |
+
}
|
5425 |
+
}
|
5426 |
+
|
5427 |
+
@media (min-width: 768px) {
|
5428 |
+
.list-group-horizontal-md {
|
5429 |
+
-ms-flex-direction: row;
|
5430 |
+
flex-direction: row;
|
5431 |
+
}
|
5432 |
+
.list-group-horizontal-md .list-group-item {
|
5433 |
+
margin-right: -1px;
|
5434 |
+
margin-bottom: 0;
|
5435 |
+
}
|
5436 |
+
.list-group-horizontal-md .list-group-item:first-child {
|
5437 |
+
border-top-left-radius: 0.25rem;
|
5438 |
+
border-bottom-left-radius: 0.25rem;
|
5439 |
+
border-top-right-radius: 0;
|
5440 |
+
}
|
5441 |
+
.list-group-horizontal-md .list-group-item:last-child {
|
5442 |
+
margin-right: 0;
|
5443 |
+
border-top-right-radius: 0.25rem;
|
5444 |
+
border-bottom-right-radius: 0.25rem;
|
5445 |
+
border-bottom-left-radius: 0;
|
5446 |
+
}
|
5447 |
+
}
|
5448 |
+
|
5449 |
+
@media (min-width: 992px) {
|
5450 |
+
.list-group-horizontal-lg {
|
5451 |
+
-ms-flex-direction: row;
|
5452 |
+
flex-direction: row;
|
5453 |
+
}
|
5454 |
+
.list-group-horizontal-lg .list-group-item {
|
5455 |
+
margin-right: -1px;
|
5456 |
+
margin-bottom: 0;
|
5457 |
+
}
|
5458 |
+
.list-group-horizontal-lg .list-group-item:first-child {
|
5459 |
+
border-top-left-radius: 0.25rem;
|
5460 |
+
border-bottom-left-radius: 0.25rem;
|
5461 |
+
border-top-right-radius: 0;
|
5462 |
+
}
|
5463 |
+
.list-group-horizontal-lg .list-group-item:last-child {
|
5464 |
+
margin-right: 0;
|
5465 |
+
border-top-right-radius: 0.25rem;
|
5466 |
+
border-bottom-right-radius: 0.25rem;
|
5467 |
+
border-bottom-left-radius: 0;
|
5468 |
+
}
|
5469 |
+
}
|
5470 |
+
|
5471 |
+
@media (min-width: 1200px) {
|
5472 |
+
.list-group-horizontal-xl {
|
5473 |
+
-ms-flex-direction: row;
|
5474 |
+
flex-direction: row;
|
5475 |
+
}
|
5476 |
+
.list-group-horizontal-xl .list-group-item {
|
5477 |
+
margin-right: -1px;
|
5478 |
+
margin-bottom: 0;
|
5479 |
+
}
|
5480 |
+
.list-group-horizontal-xl .list-group-item:first-child {
|
5481 |
+
border-top-left-radius: 0.25rem;
|
5482 |
+
border-bottom-left-radius: 0.25rem;
|
5483 |
+
border-top-right-radius: 0;
|
5484 |
+
}
|
5485 |
+
.list-group-horizontal-xl .list-group-item:last-child {
|
5486 |
+
margin-right: 0;
|
5487 |
+
border-top-right-radius: 0.25rem;
|
5488 |
+
border-bottom-right-radius: 0.25rem;
|
5489 |
+
border-bottom-left-radius: 0;
|
5490 |
+
}
|
5491 |
+
}
|
5492 |
+
|
5493 |
.list-group-flush .list-group-item {
|
5494 |
border-right: 0;
|
5495 |
border-left: 0;
|
5652 |
text-decoration: none;
|
5653 |
}
|
5654 |
|
|
|
|
|
|
|
|
|
5655 |
.close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
|
5656 |
opacity: .75;
|
5657 |
}
|
5676 |
background-color: rgba(255, 255, 255, 0.85);
|
5677 |
background-clip: padding-box;
|
5678 |
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
|
5679 |
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
|
5680 |
-webkit-backdrop-filter: blur(10px);
|
5681 |
backdrop-filter: blur(10px);
|
5682 |
opacity: 0;
|
5683 |
+
border-radius: 0.25rem;
|
5684 |
}
|
5685 |
|
5686 |
.toast:not(:last-child) {
|
5752 |
transform: translate(0, -50px);
|
5753 |
}
|
5754 |
|
5755 |
+
@media (prefers-reduced-motion: reduce) {
|
5756 |
.modal.fade .modal-dialog {
|
5757 |
transition: none;
|
5758 |
}
|
5763 |
transform: none;
|
5764 |
}
|
5765 |
|
5766 |
+
.modal-dialog-scrollable {
|
5767 |
+
display: -ms-flexbox;
|
5768 |
+
display: flex;
|
5769 |
+
max-height: calc(100% - 1rem);
|
5770 |
+
}
|
5771 |
+
|
5772 |
+
.modal-dialog-scrollable .modal-content {
|
5773 |
+
max-height: calc(100vh - 1rem);
|
5774 |
+
overflow: hidden;
|
5775 |
+
}
|
5776 |
+
|
5777 |
+
.modal-dialog-scrollable .modal-header,
|
5778 |
+
.modal-dialog-scrollable .modal-footer {
|
5779 |
+
-ms-flex-negative: 0;
|
5780 |
+
flex-shrink: 0;
|
5781 |
+
}
|
5782 |
+
|
5783 |
+
.modal-dialog-scrollable .modal-body {
|
5784 |
+
overflow-y: auto;
|
5785 |
+
}
|
5786 |
+
|
5787 |
.modal-dialog-centered {
|
5788 |
display: -ms-flexbox;
|
5789 |
display: flex;
|
5790 |
-ms-flex-align: center;
|
5791 |
align-items: center;
|
5792 |
+
min-height: calc(100% - 1rem);
|
5793 |
}
|
5794 |
|
5795 |
.modal-dialog-centered::before {
|
5796 |
display: block;
|
5797 |
+
height: calc(100vh - 1rem);
|
5798 |
content: "";
|
5799 |
}
|
5800 |
|
5801 |
+
.modal-dialog-centered.modal-dialog-scrollable {
|
5802 |
+
-ms-flex-direction: column;
|
5803 |
+
flex-direction: column;
|
5804 |
+
-ms-flex-pack: center;
|
5805 |
+
justify-content: center;
|
5806 |
+
height: 100%;
|
5807 |
+
}
|
5808 |
+
|
5809 |
+
.modal-dialog-centered.modal-dialog-scrollable .modal-content {
|
5810 |
+
max-height: none;
|
5811 |
+
}
|
5812 |
+
|
5813 |
+
.modal-dialog-centered.modal-dialog-scrollable::before {
|
5814 |
+
content: none;
|
5815 |
+
}
|
5816 |
+
|
5817 |
.modal-content {
|
5818 |
position: relative;
|
5819 |
display: -ms-flexbox;
|
5855 |
-ms-flex-pack: justify;
|
5856 |
justify-content: space-between;
|
5857 |
padding: 1rem 1rem;
|
5858 |
+
border-bottom: 1px solid #dee2e6;
|
5859 |
border-top-left-radius: 0.3rem;
|
5860 |
border-top-right-radius: 0.3rem;
|
5861 |
}
|
5885 |
-ms-flex-pack: end;
|
5886 |
justify-content: flex-end;
|
5887 |
padding: 1rem;
|
5888 |
+
border-top: 1px solid #dee2e6;
|
5889 |
border-bottom-right-radius: 0.3rem;
|
5890 |
border-bottom-left-radius: 0.3rem;
|
5891 |
}
|
5911 |
max-width: 500px;
|
5912 |
margin: 1.75rem auto;
|
5913 |
}
|
5914 |
+
.modal-dialog-scrollable {
|
5915 |
+
max-height: calc(100% - 3.5rem);
|
5916 |
+
}
|
5917 |
+
.modal-dialog-scrollable .modal-content {
|
5918 |
+
max-height: calc(100vh - 3.5rem);
|
5919 |
+
}
|
5920 |
.modal-dialog-centered {
|
5921 |
+
min-height: calc(100% - 3.5rem);
|
5922 |
}
|
5923 |
.modal-dialog-centered::before {
|
5924 |
+
height: calc(100vh - 3.5rem);
|
5925 |
}
|
5926 |
.modal-sm {
|
5927 |
max-width: 300px;
|
6101 |
margin-bottom: 0.5rem;
|
6102 |
}
|
6103 |
|
6104 |
+
.bs-popover-top > .arrow, .bs-popover-auto[x-placement^="top"] > .arrow {
|
6105 |
bottom: calc((0.5rem + 1px) * -1);
|
6106 |
}
|
6107 |
|
6108 |
+
.bs-popover-top > .arrow::before, .bs-popover-auto[x-placement^="top"] > .arrow::before {
|
|
|
|
|
|
|
|
|
|
|
|
|
6109 |
bottom: 0;
|
6110 |
+
border-width: 0.5rem 0.5rem 0;
|
6111 |
border-top-color: rgba(0, 0, 0, 0.25);
|
6112 |
}
|
6113 |
|
6114 |
+
.bs-popover-top > .arrow::after, .bs-popover-auto[x-placement^="top"] > .arrow::after {
|
|
|
|
|
6115 |
bottom: 1px;
|
6116 |
+
border-width: 0.5rem 0.5rem 0;
|
6117 |
border-top-color: #fff;
|
6118 |
}
|
6119 |
|
6121 |
margin-left: 0.5rem;
|
6122 |
}
|
6123 |
|
6124 |
+
.bs-popover-right > .arrow, .bs-popover-auto[x-placement^="right"] > .arrow {
|
6125 |
left: calc((0.5rem + 1px) * -1);
|
6126 |
width: 0.5rem;
|
6127 |
height: 1rem;
|
6128 |
margin: 0.3rem 0;
|
6129 |
}
|
6130 |
|
6131 |
+
.bs-popover-right > .arrow::before, .bs-popover-auto[x-placement^="right"] > .arrow::before {
|
|
|
|
|
|
|
|
|
|
|
|
|
6132 |
left: 0;
|
6133 |
+
border-width: 0.5rem 0.5rem 0.5rem 0;
|
6134 |
border-right-color: rgba(0, 0, 0, 0.25);
|
6135 |
}
|
6136 |
|
6137 |
+
.bs-popover-right > .arrow::after, .bs-popover-auto[x-placement^="right"] > .arrow::after {
|
|
|
|
|
6138 |
left: 1px;
|
6139 |
+
border-width: 0.5rem 0.5rem 0.5rem 0;
|
6140 |
border-right-color: #fff;
|
6141 |
}
|
6142 |
|
6144 |
margin-top: 0.5rem;
|
6145 |
}
|
6146 |
|
6147 |
+
.bs-popover-bottom > .arrow, .bs-popover-auto[x-placement^="bottom"] > .arrow {
|
6148 |
top: calc((0.5rem + 1px) * -1);
|
6149 |
}
|
6150 |
|
6151 |
+
.bs-popover-bottom > .arrow::before, .bs-popover-auto[x-placement^="bottom"] > .arrow::before {
|
|
|
|
|
|
|
|
|
|
|
|
|
6152 |
top: 0;
|
6153 |
+
border-width: 0 0.5rem 0.5rem 0.5rem;
|
6154 |
border-bottom-color: rgba(0, 0, 0, 0.25);
|
6155 |
}
|
6156 |
|
6157 |
+
.bs-popover-bottom > .arrow::after, .bs-popover-auto[x-placement^="bottom"] > .arrow::after {
|
|
|
|
|
6158 |
top: 1px;
|
6159 |
+
border-width: 0 0.5rem 0.5rem 0.5rem;
|
6160 |
border-bottom-color: #fff;
|
6161 |
}
|
6162 |
|
6175 |
margin-right: 0.5rem;
|
6176 |
}
|
6177 |
|
6178 |
+
.bs-popover-left > .arrow, .bs-popover-auto[x-placement^="left"] > .arrow {
|
6179 |
right: calc((0.5rem + 1px) * -1);
|
6180 |
width: 0.5rem;
|
6181 |
height: 1rem;
|
6182 |
margin: 0.3rem 0;
|
6183 |
}
|
6184 |
|
6185 |
+
.bs-popover-left > .arrow::before, .bs-popover-auto[x-placement^="left"] > .arrow::before {
|
|
|
|
|
|
|
|
|
|
|
|
|
6186 |
right: 0;
|
6187 |
+
border-width: 0.5rem 0 0.5rem 0.5rem;
|
6188 |
border-left-color: rgba(0, 0, 0, 0.25);
|
6189 |
}
|
6190 |
|
6191 |
+
.bs-popover-left > .arrow::after, .bs-popover-auto[x-placement^="left"] > .arrow::after {
|
|
|
|
|
6192 |
right: 1px;
|
6193 |
+
border-width: 0.5rem 0 0.5rem 0.5rem;
|
6194 |
border-left-color: #fff;
|
6195 |
}
|
6196 |
|
6198 |
padding: 0.5rem 0.75rem;
|
6199 |
margin-bottom: 0;
|
6200 |
font-size: 1rem;
|
|
|
6201 |
background-color: #f7f7f7;
|
6202 |
border-bottom: 1px solid #ebebeb;
|
6203 |
border-top-left-radius: calc(0.3rem - 1px);
|
6247 |
transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out;
|
6248 |
}
|
6249 |
|
6250 |
+
@media (prefers-reduced-motion: reduce) {
|
6251 |
.carousel-item {
|
6252 |
transition: none;
|
6253 |
}
|
6292 |
transition: 0s 0.6s opacity;
|
6293 |
}
|
6294 |
|
6295 |
+
@media (prefers-reduced-motion: reduce) {
|
6296 |
.carousel-fade .active.carousel-item-left,
|
6297 |
.carousel-fade .active.carousel-item-right {
|
6298 |
transition: none;
|
6318 |
transition: opacity 0.15s ease;
|
6319 |
}
|
6320 |
|
6321 |
+
@media (prefers-reduced-motion: reduce) {
|
6322 |
.carousel-control-prev,
|
6323 |
.carousel-control-next {
|
6324 |
transition: none;
|
6347 |
display: inline-block;
|
6348 |
width: 20px;
|
6349 |
height: 20px;
|
6350 |
+
background: no-repeat 50% / 100% 100%;
|
|
|
6351 |
}
|
6352 |
|
6353 |
.carousel-control-prev-icon {
|
6392 |
transition: opacity 0.6s ease;
|
6393 |
}
|
6394 |
|
6395 |
+
@media (prefers-reduced-motion: reduce) {
|
6396 |
.carousel-indicators li {
|
6397 |
transition: none;
|
6398 |
}
|
6671 |
border-color: #fff !important;
|
6672 |
}
|
6673 |
|
6674 |
+
.rounded-sm {
|
6675 |
+
border-radius: 0.2rem !important;
|
6676 |
+
}
|
6677 |
+
|
6678 |
.rounded {
|
6679 |
border-radius: 0.25rem !important;
|
6680 |
}
|
6699 |
border-bottom-left-radius: 0.25rem !important;
|
6700 |
}
|
6701 |
|
6702 |
+
.rounded-lg {
|
6703 |
+
border-radius: 0.3rem !important;
|
6704 |
+
}
|
6705 |
+
|
6706 |
.rounded-circle {
|
6707 |
border-radius: 50% !important;
|
6708 |
}
|
6954 |
padding-top: 56.25%;
|
6955 |
}
|
6956 |
|
6957 |
+
.embed-responsive-4by3::before {
|
6958 |
+
padding-top: 75%;
|
6959 |
}
|
6960 |
|
6961 |
.embed-responsive-1by1::before {
|
7902 |
height: 100vh !important;
|
7903 |
}
|
7904 |
|
7905 |
+
.stretched-link::after {
|
7906 |
+
position: absolute;
|
7907 |
+
top: 0;
|
7908 |
+
right: 0;
|
7909 |
+
bottom: 0;
|
7910 |
+
left: 0;
|
7911 |
+
z-index: 1;
|
7912 |
+
pointer-events: auto;
|
7913 |
+
content: "";
|
7914 |
+
background-color: rgba(0, 0, 0, 0);
|
7915 |
+
}
|
7916 |
+
|
7917 |
.m-0 {
|
7918 |
margin: 0 !important;
|
7919 |
}
|
9727 |
}
|
9728 |
|
9729 |
.text-monospace {
|
9730 |
+
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
|
9731 |
}
|
9732 |
|
9733 |
.text-justify {
|
9940 |
text-decoration: none !important;
|
9941 |
}
|
9942 |
|
9943 |
+
.text-break {
|
9944 |
+
word-break: break-word !important;
|
9945 |
+
overflow-wrap: break-word !important;
|
9946 |
+
}
|
9947 |
+
|
9948 |
.text-reset {
|
9949 |
color: inherit !important;
|
9950 |
}
|
resources/css/bootstrap4.min.css
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
-
* Copyright 2011-
|
5 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6 |
-
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(2.25rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.8125rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(2.875rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:2.25rem;background-repeat:no-repeat;background-position:center right calc(2.25rem / 4);background-size:calc(2.25rem / 2) calc(2.25rem / 2);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e")}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:2.25rem;background-position:top calc(2.25rem / 4) right calc(2.25rem / 4)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:3.4375rem;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") no-repeat center right 1.75rem/1.125rem 1.125rem}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:2.25rem;background-repeat:no-repeat;background-position:center right calc(2.25rem / 4);background-size:calc(2.25rem / 2) calc(2.25rem / 2);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E")}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:2.25rem;background-position:top calc(2.25rem / 4) right calc(2.25rem / 4)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:3.4375rem;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") no-repeat center right 1.75rem/1.125rem 1.125rem}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-right{right:0;left:auto}}.dropdown-menu-left{right:auto;left:0}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:first-child{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.dropdown-item:last-child{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(2.875rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.8125rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media screen and (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;color:inherit;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card{overflow:hidden}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion .card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled){cursor:pointer}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);border-radius:.25rem;box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-dialog-centered::before{display:block;height:calc(100vh - (.5rem * 2));content:""}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-dialog-centered::before{height:calc(100vh - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media screen and (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media screen and (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-3by4::before{padding-top:133.333333%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
|
7 |
/*# sourceMappingURL=bootstrap.min.css.map */
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors
|
4 |
+
* Copyright 2011-2019 Twitter, Inc.
|
5 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6 |
+
*/:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E");background-repeat:no-repeat;background-position:center right calc(.375em + .1875rem);background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc((1em + .75rem) * 3 / 4 + 1.75rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;-ms-flex-negative:0;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3;text-decoration:underline}.btn-link.focus,.btn-link:focus{text-decoration:underline;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-transform .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;-webkit-transform:translateX(.75rem);transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:calc(1rem + .4rem);padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion>.card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion>.card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.accordion>.card .card-header{margin-bottom:-1px}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-horizontal{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}@media (min-width:576px){.list-group-horizontal-sm{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-sm .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:768px){.list-group-horizontal-md{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-md .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:992px){.list-group-horizontal-lg{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-lg .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}@media (min-width:1200px){.list-group-horizontal-xl{-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl .list-group-item{margin-right:-1px;margin-bottom:0}.list-group-horizontal-xl .list-group-item:first-child{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl .list-group-item:last-child{margin-right:0;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;border-bottom-left-radius:0}}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush .list-group-item:last-child{margin-bottom:-1px}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{margin-bottom:0;border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal-dialog-scrollable{display:-ms-flexbox;display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{-ms-flex-negative:0;flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}.modal-dialog-centered.modal-dialog-scrollable{-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #dee2e6;border-bottom-right-radius:.3rem;border-bottom-left-radius:.3rem}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top]>.arrow::before,.bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow::after,.bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow::before,.bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow::after,.bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom]>.arrow::before,.bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow::after,.bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow::before,.bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow::after,.bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:0s .6s opacity}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50%/100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;-webkit-animation:spinner-border .75s linear infinite;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;-webkit-animation:spinner-grow .75s linear infinite;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;overflow-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
|
7 |
/*# sourceMappingURL=bootstrap.min.css.map */
|
resources/css/plugin.css
CHANGED
@@ -948,7 +948,7 @@ th.column-request_info {
|
|
948 |
background-color: rgba(0, 0, 0, 0.04);
|
949 |
color: green;
|
950 |
}
|
951 |
-
#NavItem-license {
|
952 |
color: #09b740;
|
953 |
text-shadow: 0 0 0 rgba(0, 0, 0, 0.2);
|
954 |
font-weight: bolder;
|
@@ -1098,6 +1098,24 @@ table.scan-table.wp-list-table button.toggle-row {
|
|
1098 |
display: none;
|
1099 |
}
|
1100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1101 |
/**
|
1102 |
PTG SCAN TABLES
|
1103 |
*/
|
@@ -1174,4 +1192,10 @@ table.odp-table.scan-table td.column-path code {
|
|
1174 |
padding-left: 5px;
|
1175 |
letter-spacing: 0;
|
1176 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
1177 |
}
|
948 |
background-color: rgba(0, 0, 0, 0.04);
|
949 |
color: green;
|
950 |
}
|
951 |
+
.is-not-pro #NavItem-license {
|
952 |
color: #09b740;
|
953 |
text-shadow: 0 0 0 rgba(0, 0, 0, 0.2);
|
954 |
font-weight: bolder;
|
1098 |
display: none;
|
1099 |
}
|
1100 |
|
1101 |
+
#ScanResultsPills {
|
1102 |
+
margin-top: 25px;
|
1103 |
+
}
|
1104 |
+
#ScanResultsPills nav > a.nav-link {
|
1105 |
+
color: #0c7905;
|
1106 |
+
height: 72px;
|
1107 |
+
}
|
1108 |
+
#ScanResultsPills nav > a.nav-link.active {
|
1109 |
+
color: #ffffff;
|
1110 |
+
background-color: #0c7905;
|
1111 |
+
}
|
1112 |
+
#ScanResultsPills .card.card-scan_results {
|
1113 |
+
margin-top: 0;
|
1114 |
+
}
|
1115 |
+
#ScanResultsPills nav > a.nav-link .badge {
|
1116 |
+
font-size: 12px;
|
1117 |
+
}
|
1118 |
+
|
1119 |
/**
|
1120 |
PTG SCAN TABLES
|
1121 |
*/
|
1192 |
padding-left: 5px;
|
1193 |
letter-spacing: 0;
|
1194 |
}
|
1195 |
+
}
|
1196 |
+
.form-check input[type=radio] {
|
1197 |
+
margin-top: 4px;
|
1198 |
+
}
|
1199 |
+
.form-check-label {
|
1200 |
+
margin-left: 26px;
|
1201 |
}
|
resources/js/bootstrap4.bundle.js
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
(function (global, factory) {
|
7 |
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :
|
8 |
typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :
|
9 |
-
(factory(
|
10 |
-
}(this,
|
11 |
|
12 |
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
13 |
|
@@ -69,7 +69,7 @@
|
|
69 |
|
70 |
/**
|
71 |
* --------------------------------------------------------------------------
|
72 |
-
* Bootstrap (v4.
|
73 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
74 |
* --------------------------------------------------------------------------
|
75 |
*/
|
@@ -145,7 +145,11 @@
|
|
145 |
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
|
146 |
}
|
147 |
|
148 |
-
|
|
|
|
|
|
|
|
|
149 |
},
|
150 |
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
|
151 |
if (!element) {
|
@@ -225,7 +229,7 @@
|
|
225 |
*/
|
226 |
|
227 |
var NAME = 'alert';
|
228 |
-
var VERSION = '4.
|
229 |
var DATA_KEY = 'bs.alert';
|
230 |
var EVENT_KEY = "." + DATA_KEY;
|
231 |
var DATA_API_KEY = '.data-api';
|
@@ -280,8 +284,8 @@
|
|
280 |
_proto.dispose = function dispose() {
|
281 |
$.removeData(this._element, DATA_KEY);
|
282 |
this._element = null;
|
283 |
-
}
|
284 |
-
|
285 |
|
286 |
_proto._getRootElement = function _getRootElement(element) {
|
287 |
var selector = Util.getSelectorFromElement(element);
|
@@ -323,8 +327,8 @@
|
|
323 |
|
324 |
_proto._destroyElement = function _destroyElement(element) {
|
325 |
$(element).detach().trigger(Event.CLOSED).remove();
|
326 |
-
}
|
327 |
-
|
328 |
|
329 |
Alert._jQueryInterface = function _jQueryInterface(config) {
|
330 |
return this.each(function () {
|
@@ -390,7 +394,7 @@
|
|
390 |
*/
|
391 |
|
392 |
var NAME$1 = 'button';
|
393 |
-
var VERSION$1 = '4.
|
394 |
var DATA_KEY$1 = 'bs.button';
|
395 |
var EVENT_KEY$1 = "." + DATA_KEY$1;
|
396 |
var DATA_API_KEY$1 = '.data-api';
|
@@ -476,8 +480,8 @@
|
|
476 |
_proto.dispose = function dispose() {
|
477 |
$.removeData(this._element, DATA_KEY$1);
|
478 |
this._element = null;
|
479 |
-
}
|
480 |
-
|
481 |
|
482 |
Button._jQueryInterface = function _jQueryInterface(config) {
|
483 |
return this.each(function () {
|
@@ -544,7 +548,7 @@
|
|
544 |
*/
|
545 |
|
546 |
var NAME$2 = 'carousel';
|
547 |
-
var VERSION$2 = '4.
|
548 |
var DATA_KEY$2 = 'bs.carousel';
|
549 |
var EVENT_KEY$2 = "." + DATA_KEY$2;
|
550 |
var DATA_API_KEY$2 = '.data-api';
|
@@ -739,8 +743,8 @@
|
|
739 |
this._isSliding = null;
|
740 |
this._activeElement = null;
|
741 |
this._indicatorsElement = null;
|
742 |
-
}
|
743 |
-
|
744 |
|
745 |
_proto._getConfig = function _getConfig(config) {
|
746 |
config = _objectSpread({}, Default, config);
|
@@ -784,7 +788,9 @@
|
|
784 |
});
|
785 |
}
|
786 |
|
787 |
-
this.
|
|
|
|
|
788 |
};
|
789 |
|
790 |
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
@@ -1025,8 +1031,8 @@
|
|
1025 |
if (isCycling) {
|
1026 |
this.cycle();
|
1027 |
}
|
1028 |
-
}
|
1029 |
-
|
1030 |
|
1031 |
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
1032 |
return this.each(function () {
|
@@ -1053,7 +1059,7 @@
|
|
1053 |
}
|
1054 |
|
1055 |
data[action]();
|
1056 |
-
} else if (_config.interval) {
|
1057 |
data.pause();
|
1058 |
data.cycle();
|
1059 |
}
|
@@ -1142,7 +1148,7 @@
|
|
1142 |
*/
|
1143 |
|
1144 |
var NAME$3 = 'collapse';
|
1145 |
-
var VERSION$3 = '4.
|
1146 |
var DATA_KEY$3 = 'bs.collapse';
|
1147 |
var EVENT_KEY$3 = "." + DATA_KEY$3;
|
1148 |
var DATA_API_KEY$3 = '.data-api';
|
@@ -1364,8 +1370,8 @@
|
|
1364 |
this._element = null;
|
1365 |
this._triggerArray = null;
|
1366 |
this._isTransitioning = null;
|
1367 |
-
}
|
1368 |
-
|
1369 |
|
1370 |
_proto._getConfig = function _getConfig(config) {
|
1371 |
config = _objectSpread({}, Default$1, config);
|
@@ -1409,8 +1415,8 @@
|
|
1409 |
if (triggerArray.length) {
|
1410 |
$(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
1411 |
}
|
1412 |
-
}
|
1413 |
-
|
1414 |
|
1415 |
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
|
1416 |
var selector = Util.getSelectorFromElement(element);
|
@@ -1497,7 +1503,7 @@
|
|
1497 |
|
1498 |
/**!
|
1499 |
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
1500 |
-
* @version 1.14.
|
1501 |
* @license
|
1502 |
* Copyright (c) 2016 Federico Zivolo and contributors
|
1503 |
*
|
@@ -2065,7 +2071,11 @@
|
|
2065 |
if (getStyleComputedProperty(element, 'position') === 'fixed') {
|
2066 |
return true;
|
2067 |
}
|
2068 |
-
|
|
|
|
|
|
|
|
|
2069 |
}
|
2070 |
|
2071 |
/**
|
@@ -2721,18 +2731,23 @@
|
|
2721 |
var _data$offsets = data.offsets,
|
2722 |
popper = _data$offsets.popper,
|
2723 |
reference = _data$offsets.reference;
|
|
|
|
|
2724 |
|
2725 |
-
|
2726 |
-
var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
|
2727 |
-
var isVariation = data.placement.indexOf('-') !== -1;
|
2728 |
-
var sameWidthOddness = reference.width % 2 === popper.width % 2;
|
2729 |
-
var bothOddWidth = reference.width % 2 === 1 && popper.width % 2 === 1;
|
2730 |
var noRound = function noRound(v) {
|
2731 |
return v;
|
2732 |
};
|
2733 |
|
2734 |
-
var
|
2735 |
-
var
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2736 |
|
2737 |
return {
|
2738 |
left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
|
@@ -4072,7 +4087,7 @@
|
|
4072 |
*/
|
4073 |
|
4074 |
var NAME$4 = 'dropdown';
|
4075 |
-
var VERSION$4 = '4.
|
4076 |
var DATA_KEY$4 = 'bs.dropdown';
|
4077 |
var EVENT_KEY$4 = "." + DATA_KEY$4;
|
4078 |
var DATA_API_KEY$4 = '.data-api';
|
@@ -4301,8 +4316,8 @@
|
|
4301 |
if (this._popper !== null) {
|
4302 |
this._popper.scheduleUpdate();
|
4303 |
}
|
4304 |
-
}
|
4305 |
-
|
4306 |
|
4307 |
_proto._addEventListeners = function _addEventListeners() {
|
4308 |
var _this = this;
|
@@ -4358,24 +4373,28 @@
|
|
4358 |
return $(this._element).closest('.navbar').length > 0;
|
4359 |
};
|
4360 |
|
4361 |
-
_proto.
|
4362 |
var _this2 = this;
|
4363 |
|
4364 |
-
var
|
4365 |
|
4366 |
if (typeof this._config.offset === 'function') {
|
4367 |
-
|
4368 |
-
data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});
|
4369 |
return data;
|
4370 |
};
|
4371 |
} else {
|
4372 |
-
|
4373 |
}
|
4374 |
|
|
|
|
|
|
|
|
|
4375 |
var popperConfig = {
|
4376 |
placement: this._getPlacement(),
|
4377 |
modifiers: {
|
4378 |
-
offset:
|
4379 |
flip: {
|
4380 |
enabled: this._config.flip
|
4381 |
},
|
@@ -4393,8 +4412,8 @@
|
|
4393 |
}
|
4394 |
|
4395 |
return popperConfig;
|
4396 |
-
}
|
4397 |
-
|
4398 |
|
4399 |
Dropdown._jQueryInterface = function _jQueryInterface(config) {
|
4400 |
return this.each(function () {
|
@@ -4478,8 +4497,8 @@
|
|
4478 |
}
|
4479 |
|
4480 |
return parent || element.parentNode;
|
4481 |
-
}
|
4482 |
-
|
4483 |
|
4484 |
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
4485 |
// If not input/textarea:
|
@@ -4594,7 +4613,7 @@
|
|
4594 |
*/
|
4595 |
|
4596 |
var NAME$5 = 'modal';
|
4597 |
-
var VERSION$5 = '4.
|
4598 |
var DATA_KEY$5 = 'bs.modal';
|
4599 |
var EVENT_KEY$5 = "." + DATA_KEY$5;
|
4600 |
var DATA_API_KEY$5 = '.data-api';
|
@@ -4627,6 +4646,7 @@
|
|
4627 |
CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
|
4628 |
};
|
4629 |
var ClassName$5 = {
|
|
|
4630 |
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
4631 |
BACKDROP: 'modal-backdrop',
|
4632 |
OPEN: 'modal-open',
|
@@ -4635,6 +4655,7 @@
|
|
4635 |
};
|
4636 |
var Selector$5 = {
|
4637 |
DIALOG: '.modal-dialog',
|
|
|
4638 |
DATA_TOGGLE: '[data-toggle="modal"]',
|
4639 |
DATA_DISMISS: '[data-dismiss="modal"]',
|
4640 |
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
@@ -4787,8 +4808,8 @@
|
|
4787 |
|
4788 |
_proto.handleUpdate = function handleUpdate() {
|
4789 |
this._adjustDialog();
|
4790 |
-
}
|
4791 |
-
|
4792 |
|
4793 |
_proto._getConfig = function _getConfig(config) {
|
4794 |
config = _objectSpread({}, Default$3, config);
|
@@ -4812,7 +4833,11 @@
|
|
4812 |
|
4813 |
this._element.setAttribute('aria-modal', true);
|
4814 |
|
4815 |
-
this.
|
|
|
|
|
|
|
|
|
4816 |
|
4817 |
if (transition) {
|
4818 |
Util.reflow(this._element);
|
@@ -4982,11 +5007,11 @@
|
|
4982 |
} else if (callback) {
|
4983 |
callback();
|
4984 |
}
|
4985 |
-
}
|
4986 |
// the following methods are used to handle overflowing modals
|
4987 |
// todo (fat): these should probably be refactored out of modal.js
|
4988 |
// ----------------------------------------------------------------------
|
4989 |
-
|
4990 |
|
4991 |
_proto._adjustDialog = function _adjustDialog() {
|
4992 |
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
@@ -5071,8 +5096,8 @@
|
|
5071 |
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
5072 |
document.body.removeChild(scrollDiv);
|
5073 |
return scrollbarWidth;
|
5074 |
-
}
|
5075 |
-
|
5076 |
|
5077 |
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
5078 |
return this.each(function () {
|
@@ -5163,6 +5188,127 @@
|
|
5163 |
return Modal._jQueryInterface;
|
5164 |
};
|
5165 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5166 |
/**
|
5167 |
* ------------------------------------------------------------------------
|
5168 |
* Constants
|
@@ -5170,12 +5316,13 @@
|
|
5170 |
*/
|
5171 |
|
5172 |
var NAME$6 = 'tooltip';
|
5173 |
-
var VERSION$6 = '4.
|
5174 |
var DATA_KEY$6 = 'bs.tooltip';
|
5175 |
var EVENT_KEY$6 = "." + DATA_KEY$6;
|
5176 |
var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
|
5177 |
var CLASS_PREFIX = 'bs-tooltip';
|
5178 |
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
|
|
5179 |
var DefaultType$4 = {
|
5180 |
animation: 'boolean',
|
5181 |
template: 'string',
|
@@ -5185,10 +5332,13 @@
|
|
5185 |
html: 'boolean',
|
5186 |
selector: '(string|boolean)',
|
5187 |
placement: '(string|function)',
|
5188 |
-
offset: '(number|string)',
|
5189 |
container: '(string|element|boolean)',
|
5190 |
fallbackPlacement: '(string|array)',
|
5191 |
-
boundary: '(string|element)'
|
|
|
|
|
|
|
5192 |
};
|
5193 |
var AttachmentMap$1 = {
|
5194 |
AUTO: 'auto',
|
@@ -5209,7 +5359,10 @@
|
|
5209 |
offset: 0,
|
5210 |
container: false,
|
5211 |
fallbackPlacement: 'flip',
|
5212 |
-
boundary: 'scrollParent'
|
|
|
|
|
|
|
5213 |
};
|
5214 |
var HoverState = {
|
5215 |
SHOW: 'show',
|
@@ -5394,9 +5547,7 @@
|
|
5394 |
this._popper = new Popper(this.element, tip, {
|
5395 |
placement: attachment,
|
5396 |
modifiers: {
|
5397 |
-
offset:
|
5398 |
-
offset: this.config.offset
|
5399 |
-
},
|
5400 |
flip: {
|
5401 |
behavior: this.config.fallbackPlacement
|
5402 |
},
|
@@ -5505,8 +5656,8 @@
|
|
5505 |
if (this._popper !== null) {
|
5506 |
this._popper.scheduleUpdate();
|
5507 |
}
|
5508 |
-
}
|
5509 |
-
|
5510 |
|
5511 |
_proto.isWithContent = function isWithContent() {
|
5512 |
return Boolean(this.getTitle());
|
@@ -5528,19 +5679,27 @@
|
|
5528 |
};
|
5529 |
|
5530 |
_proto.setElementContent = function setElementContent($element, content) {
|
5531 |
-
var html = this.config.html;
|
5532 |
-
|
5533 |
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
|
5534 |
// Content is a DOM node or a jQuery
|
5535 |
-
if (html) {
|
5536 |
if (!$(content).parent().is($element)) {
|
5537 |
$element.empty().append(content);
|
5538 |
}
|
5539 |
} else {
|
5540 |
$element.text($(content).text());
|
5541 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5542 |
} else {
|
5543 |
-
$element
|
5544 |
}
|
5545 |
};
|
5546 |
|
@@ -5552,8 +5711,25 @@
|
|
5552 |
}
|
5553 |
|
5554 |
return title;
|
5555 |
-
}
|
|
|
|
|
|
|
|
|
5556 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5557 |
|
5558 |
_proto._getContainer = function _getContainer() {
|
5559 |
if (this.config.container === false) {
|
@@ -5572,27 +5748,27 @@
|
|
5572 |
};
|
5573 |
|
5574 |
_proto._setListeners = function _setListeners() {
|
5575 |
-
var
|
5576 |
|
5577 |
var triggers = this.config.trigger.split(' ');
|
5578 |
triggers.forEach(function (trigger) {
|
5579 |
if (trigger === 'click') {
|
5580 |
-
$(
|
5581 |
-
return
|
5582 |
});
|
5583 |
} else if (trigger !== Trigger.MANUAL) {
|
5584 |
-
var eventIn = trigger === Trigger.HOVER ?
|
5585 |
-
var eventOut = trigger === Trigger.HOVER ?
|
5586 |
-
$(
|
5587 |
-
return
|
5588 |
-
}).on(eventOut,
|
5589 |
-
return
|
5590 |
});
|
5591 |
}
|
5592 |
});
|
5593 |
$(this.element).closest('.modal').on('hide.bs.modal', function () {
|
5594 |
-
if (
|
5595 |
-
|
5596 |
}
|
5597 |
});
|
5598 |
|
@@ -5691,7 +5867,13 @@
|
|
5691 |
};
|
5692 |
|
5693 |
_proto._getConfig = function _getConfig(config) {
|
5694 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
5695 |
|
5696 |
if (typeof config.delay === 'number') {
|
5697 |
config.delay = {
|
@@ -5709,6 +5891,11 @@
|
|
5709 |
}
|
5710 |
|
5711 |
Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
|
|
|
|
|
|
|
|
|
|
|
5712 |
return config;
|
5713 |
};
|
5714 |
|
@@ -5757,8 +5944,8 @@
|
|
5757 |
this.hide();
|
5758 |
this.show();
|
5759 |
this.config.animation = initConfigAnimation;
|
5760 |
-
}
|
5761 |
-
|
5762 |
|
5763 |
Tooltip._jQueryInterface = function _jQueryInterface(config) {
|
5764 |
return this.each(function () {
|
@@ -5846,7 +6033,7 @@
|
|
5846 |
*/
|
5847 |
|
5848 |
var NAME$7 = 'popover';
|
5849 |
-
var VERSION$7 = '4.
|
5850 |
var DATA_KEY$7 = 'bs.popover';
|
5851 |
var EVENT_KEY$7 = "." + DATA_KEY$7;
|
5852 |
var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
|
@@ -5929,8 +6116,8 @@
|
|
5929 |
|
5930 |
this.setElementContent($tip.find(Selector$7.CONTENT), content);
|
5931 |
$tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
|
5932 |
-
}
|
5933 |
-
|
5934 |
|
5935 |
_proto._getContent = function _getContent() {
|
5936 |
return this.element.getAttribute('data-content') || this.config.content;
|
@@ -5943,8 +6130,8 @@
|
|
5943 |
if (tabClass !== null && tabClass.length > 0) {
|
5944 |
$tip.removeClass(tabClass.join(''));
|
5945 |
}
|
5946 |
-
}
|
5947 |
-
|
5948 |
|
5949 |
Popover._jQueryInterface = function _jQueryInterface(config) {
|
5950 |
return this.each(function () {
|
@@ -6033,7 +6220,7 @@
|
|
6033 |
*/
|
6034 |
|
6035 |
var NAME$8 = 'scrollspy';
|
6036 |
-
var VERSION$8 = '4.
|
6037 |
var DATA_KEY$8 = 'bs.scrollspy';
|
6038 |
var EVENT_KEY$8 = "." + DATA_KEY$8;
|
6039 |
var DATA_API_KEY$6 = '.data-api';
|
@@ -6156,8 +6343,8 @@
|
|
6156 |
this._targets = null;
|
6157 |
this._activeTarget = null;
|
6158 |
this._scrollHeight = null;
|
6159 |
-
}
|
6160 |
-
|
6161 |
|
6162 |
_proto._getConfig = function _getConfig(config) {
|
6163 |
config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
|
@@ -6264,8 +6451,8 @@
|
|
6264 |
}).forEach(function (node) {
|
6265 |
return node.classList.remove(ClassName$8.ACTIVE);
|
6266 |
});
|
6267 |
-
}
|
6268 |
-
|
6269 |
|
6270 |
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
6271 |
return this.each(function () {
|
@@ -6340,7 +6527,7 @@
|
|
6340 |
*/
|
6341 |
|
6342 |
var NAME$9 = 'tab';
|
6343 |
-
var VERSION$9 = '4.
|
6344 |
var DATA_KEY$9 = 'bs.tab';
|
6345 |
var EVENT_KEY$9 = "." + DATA_KEY$9;
|
6346 |
var DATA_API_KEY$7 = '.data-api';
|
@@ -6448,8 +6635,8 @@
|
|
6448 |
_proto.dispose = function dispose() {
|
6449 |
$.removeData(this._element, DATA_KEY$9);
|
6450 |
this._element = null;
|
6451 |
-
}
|
6452 |
-
|
6453 |
|
6454 |
_proto._activate = function _activate(element, container, callback) {
|
6455 |
var _this2 = this;
|
@@ -6491,7 +6678,10 @@
|
|
6491 |
}
|
6492 |
|
6493 |
Util.reflow(element);
|
6494 |
-
|
|
|
|
|
|
|
6495 |
|
6496 |
if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
|
6497 |
var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
|
@@ -6507,8 +6697,8 @@
|
|
6507 |
if (callback) {
|
6508 |
callback();
|
6509 |
}
|
6510 |
-
}
|
6511 |
-
|
6512 |
|
6513 |
Tab._jQueryInterface = function _jQueryInterface(config) {
|
6514 |
return this.each(function () {
|
@@ -6572,7 +6762,7 @@
|
|
6572 |
*/
|
6573 |
|
6574 |
var NAME$a = 'toast';
|
6575 |
-
var VERSION$a = '4.
|
6576 |
var DATA_KEY$a = 'bs.toast';
|
6577 |
var EVENT_KEY$a = "." + DATA_KEY$a;
|
6578 |
var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
|
@@ -6687,8 +6877,8 @@
|
|
6687 |
$.removeData(this._element, DATA_KEY$a);
|
6688 |
this._element = null;
|
6689 |
this._config = null;
|
6690 |
-
}
|
6691 |
-
|
6692 |
|
6693 |
_proto._getConfig = function _getConfig(config) {
|
6694 |
config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
|
@@ -6721,8 +6911,8 @@
|
|
6721 |
} else {
|
6722 |
complete();
|
6723 |
}
|
6724 |
-
}
|
6725 |
-
|
6726 |
|
6727 |
Toast._jQueryInterface = function _jQueryInterface(config) {
|
6728 |
return this.each(function () {
|
@@ -6756,6 +6946,11 @@
|
|
6756 |
get: function get() {
|
6757 |
return DefaultType$7;
|
6758 |
}
|
|
|
|
|
|
|
|
|
|
|
6759 |
}]);
|
6760 |
|
6761 |
return Toast;
|
@@ -6777,7 +6972,7 @@
|
|
6777 |
|
6778 |
/**
|
6779 |
* --------------------------------------------------------------------------
|
6780 |
-
* Bootstrap (v4.
|
6781 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6782 |
* --------------------------------------------------------------------------
|
6783 |
*/
|
@@ -6814,5 +7009,5 @@
|
|
6814 |
|
6815 |
Object.defineProperty(exports, '__esModule', { value: true });
|
6816 |
|
6817 |
-
}))
|
6818 |
//# sourceMappingURL=bootstrap.bundle.js.map
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
(function (global, factory) {
|
7 |
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery')) :
|
8 |
typeof define === 'function' && define.amd ? define(['exports', 'jquery'], factory) :
|
9 |
+
(global = global || self, factory(global.bootstrap = {}, global.jQuery));
|
10 |
+
}(this, function (exports, $) { 'use strict';
|
11 |
|
12 |
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
13 |
|
69 |
|
70 |
/**
|
71 |
* --------------------------------------------------------------------------
|
72 |
+
* Bootstrap (v4.3.1): util.js
|
73 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
74 |
* --------------------------------------------------------------------------
|
75 |
*/
|
145 |
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
|
146 |
}
|
147 |
|
148 |
+
try {
|
149 |
+
return document.querySelector(selector) ? selector : null;
|
150 |
+
} catch (err) {
|
151 |
+
return null;
|
152 |
+
}
|
153 |
},
|
154 |
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
|
155 |
if (!element) {
|
229 |
*/
|
230 |
|
231 |
var NAME = 'alert';
|
232 |
+
var VERSION = '4.3.1';
|
233 |
var DATA_KEY = 'bs.alert';
|
234 |
var EVENT_KEY = "." + DATA_KEY;
|
235 |
var DATA_API_KEY = '.data-api';
|
284 |
_proto.dispose = function dispose() {
|
285 |
$.removeData(this._element, DATA_KEY);
|
286 |
this._element = null;
|
287 |
+
} // Private
|
288 |
+
;
|
289 |
|
290 |
_proto._getRootElement = function _getRootElement(element) {
|
291 |
var selector = Util.getSelectorFromElement(element);
|
327 |
|
328 |
_proto._destroyElement = function _destroyElement(element) {
|
329 |
$(element).detach().trigger(Event.CLOSED).remove();
|
330 |
+
} // Static
|
331 |
+
;
|
332 |
|
333 |
Alert._jQueryInterface = function _jQueryInterface(config) {
|
334 |
return this.each(function () {
|
394 |
*/
|
395 |
|
396 |
var NAME$1 = 'button';
|
397 |
+
var VERSION$1 = '4.3.1';
|
398 |
var DATA_KEY$1 = 'bs.button';
|
399 |
var EVENT_KEY$1 = "." + DATA_KEY$1;
|
400 |
var DATA_API_KEY$1 = '.data-api';
|
480 |
_proto.dispose = function dispose() {
|
481 |
$.removeData(this._element, DATA_KEY$1);
|
482 |
this._element = null;
|
483 |
+
} // Static
|
484 |
+
;
|
485 |
|
486 |
Button._jQueryInterface = function _jQueryInterface(config) {
|
487 |
return this.each(function () {
|
548 |
*/
|
549 |
|
550 |
var NAME$2 = 'carousel';
|
551 |
+
var VERSION$2 = '4.3.1';
|
552 |
var DATA_KEY$2 = 'bs.carousel';
|
553 |
var EVENT_KEY$2 = "." + DATA_KEY$2;
|
554 |
var DATA_API_KEY$2 = '.data-api';
|
743 |
this._isSliding = null;
|
744 |
this._activeElement = null;
|
745 |
this._indicatorsElement = null;
|
746 |
+
} // Private
|
747 |
+
;
|
748 |
|
749 |
_proto._getConfig = function _getConfig(config) {
|
750 |
config = _objectSpread({}, Default, config);
|
788 |
});
|
789 |
}
|
790 |
|
791 |
+
if (this._config.touch) {
|
792 |
+
this._addTouchEventListeners();
|
793 |
+
}
|
794 |
};
|
795 |
|
796 |
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
1031 |
if (isCycling) {
|
1032 |
this.cycle();
|
1033 |
}
|
1034 |
+
} // Static
|
1035 |
+
;
|
1036 |
|
1037 |
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
1038 |
return this.each(function () {
|
1059 |
}
|
1060 |
|
1061 |
data[action]();
|
1062 |
+
} else if (_config.interval && _config.ride) {
|
1063 |
data.pause();
|
1064 |
data.cycle();
|
1065 |
}
|
1148 |
*/
|
1149 |
|
1150 |
var NAME$3 = 'collapse';
|
1151 |
+
var VERSION$3 = '4.3.1';
|
1152 |
var DATA_KEY$3 = 'bs.collapse';
|
1153 |
var EVENT_KEY$3 = "." + DATA_KEY$3;
|
1154 |
var DATA_API_KEY$3 = '.data-api';
|
1370 |
this._element = null;
|
1371 |
this._triggerArray = null;
|
1372 |
this._isTransitioning = null;
|
1373 |
+
} // Private
|
1374 |
+
;
|
1375 |
|
1376 |
_proto._getConfig = function _getConfig(config) {
|
1377 |
config = _objectSpread({}, Default$1, config);
|
1415 |
if (triggerArray.length) {
|
1416 |
$(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
1417 |
}
|
1418 |
+
} // Static
|
1419 |
+
;
|
1420 |
|
1421 |
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
|
1422 |
var selector = Util.getSelectorFromElement(element);
|
1503 |
|
1504 |
/**!
|
1505 |
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
1506 |
+
* @version 1.14.7
|
1507 |
* @license
|
1508 |
* Copyright (c) 2016 Federico Zivolo and contributors
|
1509 |
*
|
2071 |
if (getStyleComputedProperty(element, 'position') === 'fixed') {
|
2072 |
return true;
|
2073 |
}
|
2074 |
+
var parentNode = getParentNode(element);
|
2075 |
+
if (!parentNode) {
|
2076 |
+
return false;
|
2077 |
+
}
|
2078 |
+
return isFixed(parentNode);
|
2079 |
}
|
2080 |
|
2081 |
/**
|
2731 |
var _data$offsets = data.offsets,
|
2732 |
popper = _data$offsets.popper,
|
2733 |
reference = _data$offsets.reference;
|
2734 |
+
var round = Math.round,
|
2735 |
+
floor = Math.floor;
|
2736 |
|
|
|
|
|
|
|
|
|
|
|
2737 |
var noRound = function noRound(v) {
|
2738 |
return v;
|
2739 |
};
|
2740 |
|
2741 |
+
var referenceWidth = round(reference.width);
|
2742 |
+
var popperWidth = round(popper.width);
|
2743 |
+
|
2744 |
+
var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
|
2745 |
+
var isVariation = data.placement.indexOf('-') !== -1;
|
2746 |
+
var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
|
2747 |
+
var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
|
2748 |
+
|
2749 |
+
var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
|
2750 |
+
var verticalToInteger = !shouldRound ? noRound : round;
|
2751 |
|
2752 |
return {
|
2753 |
left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
|
4087 |
*/
|
4088 |
|
4089 |
var NAME$4 = 'dropdown';
|
4090 |
+
var VERSION$4 = '4.3.1';
|
4091 |
var DATA_KEY$4 = 'bs.dropdown';
|
4092 |
var EVENT_KEY$4 = "." + DATA_KEY$4;
|
4093 |
var DATA_API_KEY$4 = '.data-api';
|
4316 |
if (this._popper !== null) {
|
4317 |
this._popper.scheduleUpdate();
|
4318 |
}
|
4319 |
+
} // Private
|
4320 |
+
;
|
4321 |
|
4322 |
_proto._addEventListeners = function _addEventListeners() {
|
4323 |
var _this = this;
|
4373 |
return $(this._element).closest('.navbar').length > 0;
|
4374 |
};
|
4375 |
|
4376 |
+
_proto._getOffset = function _getOffset() {
|
4377 |
var _this2 = this;
|
4378 |
|
4379 |
+
var offset = {};
|
4380 |
|
4381 |
if (typeof this._config.offset === 'function') {
|
4382 |
+
offset.fn = function (data) {
|
4383 |
+
data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
|
4384 |
return data;
|
4385 |
};
|
4386 |
} else {
|
4387 |
+
offset.offset = this._config.offset;
|
4388 |
}
|
4389 |
|
4390 |
+
return offset;
|
4391 |
+
};
|
4392 |
+
|
4393 |
+
_proto._getPopperConfig = function _getPopperConfig() {
|
4394 |
var popperConfig = {
|
4395 |
placement: this._getPlacement(),
|
4396 |
modifiers: {
|
4397 |
+
offset: this._getOffset(),
|
4398 |
flip: {
|
4399 |
enabled: this._config.flip
|
4400 |
},
|
4412 |
}
|
4413 |
|
4414 |
return popperConfig;
|
4415 |
+
} // Static
|
4416 |
+
;
|
4417 |
|
4418 |
Dropdown._jQueryInterface = function _jQueryInterface(config) {
|
4419 |
return this.each(function () {
|
4497 |
}
|
4498 |
|
4499 |
return parent || element.parentNode;
|
4500 |
+
} // eslint-disable-next-line complexity
|
4501 |
+
;
|
4502 |
|
4503 |
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
4504 |
// If not input/textarea:
|
4613 |
*/
|
4614 |
|
4615 |
var NAME$5 = 'modal';
|
4616 |
+
var VERSION$5 = '4.3.1';
|
4617 |
var DATA_KEY$5 = 'bs.modal';
|
4618 |
var EVENT_KEY$5 = "." + DATA_KEY$5;
|
4619 |
var DATA_API_KEY$5 = '.data-api';
|
4646 |
CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
|
4647 |
};
|
4648 |
var ClassName$5 = {
|
4649 |
+
SCROLLABLE: 'modal-dialog-scrollable',
|
4650 |
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
4651 |
BACKDROP: 'modal-backdrop',
|
4652 |
OPEN: 'modal-open',
|
4655 |
};
|
4656 |
var Selector$5 = {
|
4657 |
DIALOG: '.modal-dialog',
|
4658 |
+
MODAL_BODY: '.modal-body',
|
4659 |
DATA_TOGGLE: '[data-toggle="modal"]',
|
4660 |
DATA_DISMISS: '[data-dismiss="modal"]',
|
4661 |
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
4808 |
|
4809 |
_proto.handleUpdate = function handleUpdate() {
|
4810 |
this._adjustDialog();
|
4811 |
+
} // Private
|
4812 |
+
;
|
4813 |
|
4814 |
_proto._getConfig = function _getConfig(config) {
|
4815 |
config = _objectSpread({}, Default$3, config);
|
4833 |
|
4834 |
this._element.setAttribute('aria-modal', true);
|
4835 |
|
4836 |
+
if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
|
4837 |
+
this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
|
4838 |
+
} else {
|
4839 |
+
this._element.scrollTop = 0;
|
4840 |
+
}
|
4841 |
|
4842 |
if (transition) {
|
4843 |
Util.reflow(this._element);
|
5007 |
} else if (callback) {
|
5008 |
callback();
|
5009 |
}
|
5010 |
+
} // ----------------------------------------------------------------------
|
5011 |
// the following methods are used to handle overflowing modals
|
5012 |
// todo (fat): these should probably be refactored out of modal.js
|
5013 |
// ----------------------------------------------------------------------
|
5014 |
+
;
|
5015 |
|
5016 |
_proto._adjustDialog = function _adjustDialog() {
|
5017 |
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
5096 |
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
5097 |
document.body.removeChild(scrollDiv);
|
5098 |
return scrollbarWidth;
|
5099 |
+
} // Static
|
5100 |
+
;
|
5101 |
|
5102 |
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
5103 |
return this.each(function () {
|
5188 |
return Modal._jQueryInterface;
|
5189 |
};
|
5190 |
|
5191 |
+
/**
|
5192 |
+
* --------------------------------------------------------------------------
|
5193 |
+
* Bootstrap (v4.3.1): tools/sanitizer.js
|
5194 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5195 |
+
* --------------------------------------------------------------------------
|
5196 |
+
*/
|
5197 |
+
var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
|
5198 |
+
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
|
5199 |
+
var DefaultWhitelist = {
|
5200 |
+
// Global attributes allowed on any supplied element below.
|
5201 |
+
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
|
5202 |
+
a: ['target', 'href', 'title', 'rel'],
|
5203 |
+
area: [],
|
5204 |
+
b: [],
|
5205 |
+
br: [],
|
5206 |
+
col: [],
|
5207 |
+
code: [],
|
5208 |
+
div: [],
|
5209 |
+
em: [],
|
5210 |
+
hr: [],
|
5211 |
+
h1: [],
|
5212 |
+
h2: [],
|
5213 |
+
h3: [],
|
5214 |
+
h4: [],
|
5215 |
+
h5: [],
|
5216 |
+
h6: [],
|
5217 |
+
i: [],
|
5218 |
+
img: ['src', 'alt', 'title', 'width', 'height'],
|
5219 |
+
li: [],
|
5220 |
+
ol: [],
|
5221 |
+
p: [],
|
5222 |
+
pre: [],
|
5223 |
+
s: [],
|
5224 |
+
small: [],
|
5225 |
+
span: [],
|
5226 |
+
sub: [],
|
5227 |
+
sup: [],
|
5228 |
+
strong: [],
|
5229 |
+
u: [],
|
5230 |
+
ul: []
|
5231 |
+
/**
|
5232 |
+
* A pattern that recognizes a commonly useful subset of URLs that are safe.
|
5233 |
+
*
|
5234 |
+
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
5235 |
+
*/
|
5236 |
+
|
5237 |
+
};
|
5238 |
+
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
|
5239 |
+
/**
|
5240 |
+
* A pattern that matches safe data URLs. Only matches image, video and audio types.
|
5241 |
+
*
|
5242 |
+
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
5243 |
+
*/
|
5244 |
+
|
5245 |
+
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
|
5246 |
+
|
5247 |
+
function allowedAttribute(attr, allowedAttributeList) {
|
5248 |
+
var attrName = attr.nodeName.toLowerCase();
|
5249 |
+
|
5250 |
+
if (allowedAttributeList.indexOf(attrName) !== -1) {
|
5251 |
+
if (uriAttrs.indexOf(attrName) !== -1) {
|
5252 |
+
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
|
5253 |
+
}
|
5254 |
+
|
5255 |
+
return true;
|
5256 |
+
}
|
5257 |
+
|
5258 |
+
var regExp = allowedAttributeList.filter(function (attrRegex) {
|
5259 |
+
return attrRegex instanceof RegExp;
|
5260 |
+
}); // Check if a regular expression validates the attribute.
|
5261 |
+
|
5262 |
+
for (var i = 0, l = regExp.length; i < l; i++) {
|
5263 |
+
if (attrName.match(regExp[i])) {
|
5264 |
+
return true;
|
5265 |
+
}
|
5266 |
+
}
|
5267 |
+
|
5268 |
+
return false;
|
5269 |
+
}
|
5270 |
+
|
5271 |
+
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
|
5272 |
+
if (unsafeHtml.length === 0) {
|
5273 |
+
return unsafeHtml;
|
5274 |
+
}
|
5275 |
+
|
5276 |
+
if (sanitizeFn && typeof sanitizeFn === 'function') {
|
5277 |
+
return sanitizeFn(unsafeHtml);
|
5278 |
+
}
|
5279 |
+
|
5280 |
+
var domParser = new window.DOMParser();
|
5281 |
+
var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
|
5282 |
+
var whitelistKeys = Object.keys(whiteList);
|
5283 |
+
var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
|
5284 |
+
|
5285 |
+
var _loop = function _loop(i, len) {
|
5286 |
+
var el = elements[i];
|
5287 |
+
var elName = el.nodeName.toLowerCase();
|
5288 |
+
|
5289 |
+
if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
|
5290 |
+
el.parentNode.removeChild(el);
|
5291 |
+
return "continue";
|
5292 |
+
}
|
5293 |
+
|
5294 |
+
var attributeList = [].slice.call(el.attributes);
|
5295 |
+
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
|
5296 |
+
attributeList.forEach(function (attr) {
|
5297 |
+
if (!allowedAttribute(attr, whitelistedAttributes)) {
|
5298 |
+
el.removeAttribute(attr.nodeName);
|
5299 |
+
}
|
5300 |
+
});
|
5301 |
+
};
|
5302 |
+
|
5303 |
+
for (var i = 0, len = elements.length; i < len; i++) {
|
5304 |
+
var _ret = _loop(i, len);
|
5305 |
+
|
5306 |
+
if (_ret === "continue") continue;
|
5307 |
+
}
|
5308 |
+
|
5309 |
+
return createdDocument.body.innerHTML;
|
5310 |
+
}
|
5311 |
+
|
5312 |
/**
|
5313 |
* ------------------------------------------------------------------------
|
5314 |
* Constants
|
5316 |
*/
|
5317 |
|
5318 |
var NAME$6 = 'tooltip';
|
5319 |
+
var VERSION$6 = '4.3.1';
|
5320 |
var DATA_KEY$6 = 'bs.tooltip';
|
5321 |
var EVENT_KEY$6 = "." + DATA_KEY$6;
|
5322 |
var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
|
5323 |
var CLASS_PREFIX = 'bs-tooltip';
|
5324 |
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
5325 |
+
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
|
5326 |
var DefaultType$4 = {
|
5327 |
animation: 'boolean',
|
5328 |
template: 'string',
|
5332 |
html: 'boolean',
|
5333 |
selector: '(string|boolean)',
|
5334 |
placement: '(string|function)',
|
5335 |
+
offset: '(number|string|function)',
|
5336 |
container: '(string|element|boolean)',
|
5337 |
fallbackPlacement: '(string|array)',
|
5338 |
+
boundary: '(string|element)',
|
5339 |
+
sanitize: 'boolean',
|
5340 |
+
sanitizeFn: '(null|function)',
|
5341 |
+
whiteList: 'object'
|
5342 |
};
|
5343 |
var AttachmentMap$1 = {
|
5344 |
AUTO: 'auto',
|
5359 |
offset: 0,
|
5360 |
container: false,
|
5361 |
fallbackPlacement: 'flip',
|
5362 |
+
boundary: 'scrollParent',
|
5363 |
+
sanitize: true,
|
5364 |
+
sanitizeFn: null,
|
5365 |
+
whiteList: DefaultWhitelist
|
5366 |
};
|
5367 |
var HoverState = {
|
5368 |
SHOW: 'show',
|
5547 |
this._popper = new Popper(this.element, tip, {
|
5548 |
placement: attachment,
|
5549 |
modifiers: {
|
5550 |
+
offset: this._getOffset(),
|
|
|
|
|
5551 |
flip: {
|
5552 |
behavior: this.config.fallbackPlacement
|
5553 |
},
|
5656 |
if (this._popper !== null) {
|
5657 |
this._popper.scheduleUpdate();
|
5658 |
}
|
5659 |
+
} // Protected
|
5660 |
+
;
|
5661 |
|
5662 |
_proto.isWithContent = function isWithContent() {
|
5663 |
return Boolean(this.getTitle());
|
5679 |
};
|
5680 |
|
5681 |
_proto.setElementContent = function setElementContent($element, content) {
|
|
|
|
|
5682 |
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
|
5683 |
// Content is a DOM node or a jQuery
|
5684 |
+
if (this.config.html) {
|
5685 |
if (!$(content).parent().is($element)) {
|
5686 |
$element.empty().append(content);
|
5687 |
}
|
5688 |
} else {
|
5689 |
$element.text($(content).text());
|
5690 |
}
|
5691 |
+
|
5692 |
+
return;
|
5693 |
+
}
|
5694 |
+
|
5695 |
+
if (this.config.html) {
|
5696 |
+
if (this.config.sanitize) {
|
5697 |
+
content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
|
5698 |
+
}
|
5699 |
+
|
5700 |
+
$element.html(content);
|
5701 |
} else {
|
5702 |
+
$element.text(content);
|
5703 |
}
|
5704 |
};
|
5705 |
|
5711 |
}
|
5712 |
|
5713 |
return title;
|
5714 |
+
} // Private
|
5715 |
+
;
|
5716 |
+
|
5717 |
+
_proto._getOffset = function _getOffset() {
|
5718 |
+
var _this3 = this;
|
5719 |
|
5720 |
+
var offset = {};
|
5721 |
+
|
5722 |
+
if (typeof this.config.offset === 'function') {
|
5723 |
+
offset.fn = function (data) {
|
5724 |
+
data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
|
5725 |
+
return data;
|
5726 |
+
};
|
5727 |
+
} else {
|
5728 |
+
offset.offset = this.config.offset;
|
5729 |
+
}
|
5730 |
+
|
5731 |
+
return offset;
|
5732 |
+
};
|
5733 |
|
5734 |
_proto._getContainer = function _getContainer() {
|
5735 |
if (this.config.container === false) {
|
5748 |
};
|
5749 |
|
5750 |
_proto._setListeners = function _setListeners() {
|
5751 |
+
var _this4 = this;
|
5752 |
|
5753 |
var triggers = this.config.trigger.split(' ');
|
5754 |
triggers.forEach(function (trigger) {
|
5755 |
if (trigger === 'click') {
|
5756 |
+
$(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
|
5757 |
+
return _this4.toggle(event);
|
5758 |
});
|
5759 |
} else if (trigger !== Trigger.MANUAL) {
|
5760 |
+
var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
|
5761 |
+
var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
|
5762 |
+
$(_this4.element).on(eventIn, _this4.config.selector, function (event) {
|
5763 |
+
return _this4._enter(event);
|
5764 |
+
}).on(eventOut, _this4.config.selector, function (event) {
|
5765 |
+
return _this4._leave(event);
|
5766 |
});
|
5767 |
}
|
5768 |
});
|
5769 |
$(this.element).closest('.modal').on('hide.bs.modal', function () {
|
5770 |
+
if (_this4.element) {
|
5771 |
+
_this4.hide();
|
5772 |
}
|
5773 |
});
|
5774 |
|
5867 |
};
|
5868 |
|
5869 |
_proto._getConfig = function _getConfig(config) {
|
5870 |
+
var dataAttributes = $(this.element).data();
|
5871 |
+
Object.keys(dataAttributes).forEach(function (dataAttr) {
|
5872 |
+
if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
|
5873 |
+
delete dataAttributes[dataAttr];
|
5874 |
+
}
|
5875 |
+
});
|
5876 |
+
config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
|
5877 |
|
5878 |
if (typeof config.delay === 'number') {
|
5879 |
config.delay = {
|
5891 |
}
|
5892 |
|
5893 |
Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
|
5894 |
+
|
5895 |
+
if (config.sanitize) {
|
5896 |
+
config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
|
5897 |
+
}
|
5898 |
+
|
5899 |
return config;
|
5900 |
};
|
5901 |
|
5944 |
this.hide();
|
5945 |
this.show();
|
5946 |
this.config.animation = initConfigAnimation;
|
5947 |
+
} // Static
|
5948 |
+
;
|
5949 |
|
5950 |
Tooltip._jQueryInterface = function _jQueryInterface(config) {
|
5951 |
return this.each(function () {
|
6033 |
*/
|
6034 |
|
6035 |
var NAME$7 = 'popover';
|
6036 |
+
var VERSION$7 = '4.3.1';
|
6037 |
var DATA_KEY$7 = 'bs.popover';
|
6038 |
var EVENT_KEY$7 = "." + DATA_KEY$7;
|
6039 |
var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
|
6116 |
|
6117 |
this.setElementContent($tip.find(Selector$7.CONTENT), content);
|
6118 |
$tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
|
6119 |
+
} // Private
|
6120 |
+
;
|
6121 |
|
6122 |
_proto._getContent = function _getContent() {
|
6123 |
return this.element.getAttribute('data-content') || this.config.content;
|
6130 |
if (tabClass !== null && tabClass.length > 0) {
|
6131 |
$tip.removeClass(tabClass.join(''));
|
6132 |
}
|
6133 |
+
} // Static
|
6134 |
+
;
|
6135 |
|
6136 |
Popover._jQueryInterface = function _jQueryInterface(config) {
|
6137 |
return this.each(function () {
|
6220 |
*/
|
6221 |
|
6222 |
var NAME$8 = 'scrollspy';
|
6223 |
+
var VERSION$8 = '4.3.1';
|
6224 |
var DATA_KEY$8 = 'bs.scrollspy';
|
6225 |
var EVENT_KEY$8 = "." + DATA_KEY$8;
|
6226 |
var DATA_API_KEY$6 = '.data-api';
|
6343 |
this._targets = null;
|
6344 |
this._activeTarget = null;
|
6345 |
this._scrollHeight = null;
|
6346 |
+
} // Private
|
6347 |
+
;
|
6348 |
|
6349 |
_proto._getConfig = function _getConfig(config) {
|
6350 |
config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
|
6451 |
}).forEach(function (node) {
|
6452 |
return node.classList.remove(ClassName$8.ACTIVE);
|
6453 |
});
|
6454 |
+
} // Static
|
6455 |
+
;
|
6456 |
|
6457 |
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
6458 |
return this.each(function () {
|
6527 |
*/
|
6528 |
|
6529 |
var NAME$9 = 'tab';
|
6530 |
+
var VERSION$9 = '4.3.1';
|
6531 |
var DATA_KEY$9 = 'bs.tab';
|
6532 |
var EVENT_KEY$9 = "." + DATA_KEY$9;
|
6533 |
var DATA_API_KEY$7 = '.data-api';
|
6635 |
_proto.dispose = function dispose() {
|
6636 |
$.removeData(this._element, DATA_KEY$9);
|
6637 |
this._element = null;
|
6638 |
+
} // Private
|
6639 |
+
;
|
6640 |
|
6641 |
_proto._activate = function _activate(element, container, callback) {
|
6642 |
var _this2 = this;
|
6678 |
}
|
6679 |
|
6680 |
Util.reflow(element);
|
6681 |
+
|
6682 |
+
if (element.classList.contains(ClassName$9.FADE)) {
|
6683 |
+
element.classList.add(ClassName$9.SHOW);
|
6684 |
+
}
|
6685 |
|
6686 |
if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
|
6687 |
var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
|
6697 |
if (callback) {
|
6698 |
callback();
|
6699 |
}
|
6700 |
+
} // Static
|
6701 |
+
;
|
6702 |
|
6703 |
Tab._jQueryInterface = function _jQueryInterface(config) {
|
6704 |
return this.each(function () {
|
6762 |
*/
|
6763 |
|
6764 |
var NAME$a = 'toast';
|
6765 |
+
var VERSION$a = '4.3.1';
|
6766 |
var DATA_KEY$a = 'bs.toast';
|
6767 |
var EVENT_KEY$a = "." + DATA_KEY$a;
|
6768 |
var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
|
6877 |
$.removeData(this._element, DATA_KEY$a);
|
6878 |
this._element = null;
|
6879 |
this._config = null;
|
6880 |
+
} // Private
|
6881 |
+
;
|
6882 |
|
6883 |
_proto._getConfig = function _getConfig(config) {
|
6884 |
config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
|
6911 |
} else {
|
6912 |
complete();
|
6913 |
}
|
6914 |
+
} // Static
|
6915 |
+
;
|
6916 |
|
6917 |
Toast._jQueryInterface = function _jQueryInterface(config) {
|
6918 |
return this.each(function () {
|
6946 |
get: function get() {
|
6947 |
return DefaultType$7;
|
6948 |
}
|
6949 |
+
}, {
|
6950 |
+
key: "Default",
|
6951 |
+
get: function get() {
|
6952 |
+
return Default$7;
|
6953 |
+
}
|
6954 |
}]);
|
6955 |
|
6956 |
return Toast;
|
6972 |
|
6973 |
/**
|
6974 |
* --------------------------------------------------------------------------
|
6975 |
+
* Bootstrap (v4.3.1): index.js
|
6976 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
6977 |
* --------------------------------------------------------------------------
|
6978 |
*/
|
7009 |
|
7010 |
Object.defineProperty(exports, '__esModule', { value: true });
|
7011 |
|
7012 |
+
}));
|
7013 |
//# sourceMappingURL=bootstrap.bundle.js.map
|
resources/js/bootstrap4.bundle.min.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e(t.bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var e="transitionend";function n(t){var e=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}return e&&document.querySelector(e)?e:null},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p(t).css("transition-duration"),n=p(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};p.fn.emulateTransitionEnd=n,p.event.special[m.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(p(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=p.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},u="alert",f="fade",d="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=p(t).closest("."+u)[0]),n},t._triggerCloseEvent=function(t){var e=p.Event(h.CLOSE);return p(t).trigger(e),e},t._removeElement=function(e){var n=this;if(p(e).removeClass(d),p(e).hasClass(f)){var t=m.getTransitionDurationFromElement(e);p(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){p(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();p(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),p.fn[o]=g._jQueryInterface,p.fn[o].Constructor=g,p.fn[o].noConflict=function(){return p.fn[o]=c,g._jQueryInterface};var _="button",v="bs.button",y="."+v,E=".data-api",b=p.fn[_],w="active",T="btn",C="focus",S='[data-toggle^="button"]',D='[data-toggle="buttons"]',I='input:not([type="hidden"])',A=".active",O=".btn",N={CLICK_DATA_API:"click"+y+E,FOCUS_BLUR_DATA_API:"focus"+y+E+" blur"+y+E},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=this._element.querySelector(I);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(w))t=!1;else{var o=n.querySelector(A);o&&p(o).removeClass(w)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(w),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(w)),t&&p(this._element).toggleClass(w)},t.dispose=function(){p.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(v);t||(t=new n(this),p(this).data(v,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),n}();p(document).on(N.CLICK_DATA_API,S,function(t){t.preventDefault();var e=t.target;p(e).hasClass(T)||(e=p(e).closest(O)),k._jQueryInterface.call(p(e),"toggle")}).on(N.FOCUS_BLUR_DATA_API,S,function(t){var e=p(t.target).closest(O)[0];p(e).toggleClass(C,/^focus(in)?$/.test(t.type))}),p.fn[_]=k._jQueryInterface,p.fn[_].Constructor=k,p.fn[_].noConflict=function(){return p.fn[_]=b,k._jQueryInterface};var L="carousel",P="bs.carousel",x="."+P,H=".data-api",j=p.fn[L],R={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},F={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},M="next",W="prev",U="left",B="right",q={SLIDE:"slide"+x,SLID:"slid"+x,KEYDOWN:"keydown"+x,MOUSEENTER:"mouseenter"+x,MOUSELEAVE:"mouseleave"+x,TOUCHSTART:"touchstart"+x,TOUCHMOVE:"touchmove"+x,TOUCHEND:"touchend"+x,POINTERDOWN:"pointerdown"+x,POINTERUP:"pointerup"+x,DRAG_START:"dragstart"+x,LOAD_DATA_API:"load"+x+H,CLICK_DATA_API:"click"+x+H},K="carousel",Q="active",Y="slide",V="carousel-item-right",X="carousel-item-left",z="carousel-item-next",G="carousel-item-prev",J="pointer-event",Z=".active",$=".active.carousel-item",tt=".carousel-item",et=".carousel-item img",nt=".carousel-item-next, .carousel-item-prev",it=".carousel-indicators",ot="[data-slide], [data-slide-to]",rt='[data-ride="carousel"]',st={TOUCH:"touch",PEN:"pen"},at=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(it),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(M)},t.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(W)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(nt)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector($);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?M:W;this._slide(i,this._items[t])}},t.dispose=function(){p(this._element).off(x),p.removeData(this._element,P),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},R,t),m.typeCheckConfig(L,t,F),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&p(this._element).on(q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p(this._element).on(q.MOUSEENTER,function(t){return e.pause(t)}).on(q.MOUSELEAVE,function(t){return e.cycle(t)}),this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};p(this._element.querySelectorAll(et)).on(q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p(this._element).on(q.POINTERDOWN,function(t){return e(t)}),p(this._element).on(q.POINTERUP,function(t){return i(t)}),this._element.classList.add(J)):(p(this._element).on(q.TOUCHSTART,function(t){return e(t)}),p(this._element).on(q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p(this._element).on(q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(tt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===M,i=t===W,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===W?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector($)),o=p.Event(q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Z));p(e).removeClass(Q);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&p(n).addClass(Q)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector($),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===M?(n=X,i=z,U):(n=V,i=G,B),l&&p(l).hasClass(Q))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(Y)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(Q),p(s).removeClass(Q+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(Q),p(l).addClass(Q),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=p(this).data(P),e=l({},R,p(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p(this).data(P,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=m.getSelectorFromElement(this);if(e){var n=p(e)[0];if(n&&p(n).hasClass(K)){var i=l({},p(n).data(),p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(P).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return R}}]),r}();p(document).on(q.CLICK_DATA_API,ot,at._dataApiClickHandler),p(window).on(q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(rt)),e=0,n=t.length;e<n;e++){var i=p(t[e]);at._jQueryInterface.call(i,i.data())}}),p.fn[L]=at._jQueryInterface,p.fn[L].Constructor=at,p.fn[L].noConflict=function(){return p.fn[L]=j,at._jQueryInterface};var lt="collapse",ct="bs.collapse",ht="."+ct,ut=p.fn[lt],ft={toggle:!0,parent:""},dt={toggle:"boolean",parent:"(string|element)"},pt={SHOW:"show"+ht,SHOWN:"shown"+ht,HIDE:"hide"+ht,HIDDEN:"hidden"+ht,CLICK_DATA_API:"click"+ht+".data-api"},mt="show",gt="collapse",_t="collapsing",vt="collapsed",yt="width",Et="height",bt=".show, .collapsing",wt='[data-toggle="collapse"]',Tt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(wt)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){p(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(bt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(gt)})).length&&(t=null),!(t&&(e=p(t).not(this._selector).data(ct))&&e._isTransitioning))){var i=p.Event(pt.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(p(t).not(this._selector),"hide"),e||p(t).data(ct,null));var o=this._getDimension();p(this._element).removeClass(gt).addClass(_t),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(vt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(_t).addClass(gt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(pt.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&p(this._element).hasClass(mt)){var e=p.Event(pt.HIDE);if(p(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(_t).removeClass(gt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(mt)||p(r).addClass(vt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p(t._element).removeClass(_t).addClass(gt).trigger(pt.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.removeData(this._element,ct),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},ft,t)).toggle=Boolean(t.toggle),m.typeCheckConfig(lt,t,dt),t},t._getDimension=function(){return p(this._element).hasClass(yt)?yt:Et},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p(t).hasClass(mt);e.length&&p(e).toggleClass(vt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=p(this),e=t.data(ct),n=l({},ft,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ct,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return ft}}]),a}();p(document).on(pt.CLICK_DATA_API,wt,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p(i).each(function(){var t=p(this),e=t.data(ct)?"toggle":n.data();Tt._jQueryInterface.call(t,e)})}),p.fn[lt]=Tt._jQueryInterface,p.fn[lt].Constructor=Tt,p.fn[lt].noConflict=function(){return p.fn[lt]=ut,Tt._jQueryInterface};for(var Ct="undefined"!=typeof window&&"undefined"!=typeof document,St=["Edge","Trident","Firefox"],Dt=0,It=0;It<St.length;It+=1)if(Ct&&0<=navigator.userAgent.indexOf(St[It])){Dt=1;break}var At=Ct&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Dt))}};function Ot(t){return t&&"[object Function]"==={}.toString.call(t)}function Nt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function kt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function Lt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Nt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:Lt(kt(t))}var Pt=Ct&&!(!window.MSInputMethodContext||!document.documentMode),xt=Ct&&/MSIE 10/.test(navigator.userAgent);function Ht(t){return 11===t?Pt:10===t?xt:Pt||xt}function jt(t){if(!t)return document.documentElement;for(var e=Ht(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Nt(n,"position")?jt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Rt(t){return null!==t.parentNode?Rt(t.parentNode):t}function Ft(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&jt(s.firstElementChild)!==s?jt(l):l;var c=Rt(t);return c.host?Ft(c.host,e):Ft(t,Rt(e).host)}function Mt(t){var e="top"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"!==n&&"HTML"!==n)return t[e];var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}function Wt(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function Ut(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Ht(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Bt(t){var e=t.body,n=t.documentElement,i=Ht(10)&&getComputedStyle(n);return{height:Ut("Height",e,n,i),width:Ut("Width",e,n,i)}}var qt=function(){function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}}(),Kt=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},Qt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Yt(t){return Qt({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Vt(t){var e={};try{if(Ht(10)){e=t.getBoundingClientRect();var n=Mt(t,"top"),i=Mt(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r="HTML"===t.nodeName?Bt(t.ownerDocument):{},s=r.width||t.clientWidth||o.right-o.left,a=r.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-s,c=t.offsetHeight-a;if(l||c){var h=Nt(t);l-=Wt(h,"x"),c-=Wt(h,"y"),o.width-=l,o.height-=c}return Yt(o)}function Xt(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Ht(10),o="HTML"===e.nodeName,r=Vt(t),s=Vt(e),a=Lt(t),l=Nt(e),c=parseFloat(l.borderTopWidth,10),h=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=Yt({top:r.top-s.top-c,left:r.left-s.left-h,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var f=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-f,u.bottom-=c-f,u.left-=h-d,u.right-=h-d,u.marginTop=f,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Mt(e,"top"),o=Mt(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function zt(t){if(!t||!t.parentElement||Ht())return document.documentElement;for(var e=t.parentElement;e&&"none"===Nt(e,"transform");)e=e.parentElement;return e||document.documentElement}function Gt(t,e,n,i){var o=4<arguments.length&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?zt(t):Ft(t,e);if("viewport"===i)r=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=Xt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:Mt(n),a=e?0:Mt(n,"left");return Yt({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=Lt(kt(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=Xt(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;return"BODY"!==n&&"HTML"!==n&&("fixed"===Nt(e,"position")||t(kt(e)))}(s))r=l;else{var c=Bt(t.ownerDocument),h=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var f="number"==typeof(n=n||0);return r.left+=f?n:n.left||0,r.top+=f?n:n.top||0,r.right-=f?n:n.right||0,r.bottom-=f?n:n.bottom||0,r}function Jt(t,e,i,n,o){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=Gt(i,n,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return Qt({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),h=0<c.length?c[0].key:l[0].key,u=t.split("-")[1];return h+(u?"-"+u:"")}function Zt(t,e,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return Xt(n,i?zt(e):Ft(e,n),i)}function $t(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function te(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ee(t,e,n){n=n.split("-")[0];var i=$t(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[te(a)],o}function ne(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ie(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=ne(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Ot(e)&&(n.offsets.popper=Yt(n.offsets.popper),n.offsets.reference=Yt(n.offsets.reference),n=e(n,t))}),n}function oe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function re(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function se(t){var e=t.ownerDocument;return e?e.defaultView:window}function ae(t,e,n,i){n.updateBound=i,se(t).addEventListener("resize",n.updateBound,{passive:!0});var o=Lt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,s=r?e.ownerDocument.defaultView:e;s.addEventListener(n,i,{passive:!0}),r||t(Lt(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function le(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,se(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function ce(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function he(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&ce(i[t])&&(e="px"),n.style[t]=i[t]+e})}var ue=Ct&&/Firefox/i.test(navigator.userAgent);function fe(t,e,n){var i=ne(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var r="`"+e+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var de=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],pe=de.slice(3);function me(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=pe.indexOf(t),i=pe.slice(n+1).concat(pe.slice(0,n));return e?i.reverse():i}var ge="flip",_e="clockwise",ve="counterclockwise";function ye(t,o,r,e){var s=[0,0],a=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(ne(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(t,e){var n=(1===e?!a:a)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Yt(a)[e]/100*r}(t,n,o,r)})})).forEach(function(n,i){n.forEach(function(t,e){ce(t)&&(s[i]+=t*("-"===n[e-1]?-1:1))})}),s}var Ee={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Kt({},l,r[l]),end:Kt({},l,r[l]+r[c]-s[c])};t.offsets.popper=Qt({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ce(+n)?[+n,0]:ye(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||jt(t.instance.popper);t.instance.reference===e&&(e=jt(e));var n=re("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Gt(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=t.offsets.popper,u={primary:function(t){var e=h[t];return h[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(h[t],l[t])),Kt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=h[e];return h[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=$t(i)[c];a[d]-p<s[u]&&(t.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Yt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)<r(o.right)||"top"===_&&r(i.bottom)>r(o.top)||"bottom"===_&&r(i.top)<r(o.bottom),a=r(i.left)<r(g.left),l=r(i.right)>r(g.right),c=r(i.top)<r(g.top),h=r(i.bottom)>r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Yt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=ne(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s,a,l,c,h,u,f,d,p,m,g,_,v=void 0!==r?r:e.gpuAcceleration,y=jt(t.instance.popper),E=Vt(y),b={position:o.position},w=(s=t,a=window.devicePixelRatio<2||!ue,l=s.offsets,c=l.popper,h=l.reference,u=-1!==["left","right"].indexOf(s.placement),f=-1!==s.placement.indexOf("-"),d=h.width%2==c.width%2,p=h.width%2==1&&c.width%2==1,m=function(t){return t},g=a?u||f||d?Math.round:Math.floor:m,_=a?Math.round:m,{left:g(p&&!f&&a?c.left-1:c.left),top:_(c.top),bottom:_(c.bottom),right:g(c.right)}),T="bottom"===n?"top":"bottom",C="right"===i?"left":"right",S=re("transform"),D=void 0,I=void 0;if(I="bottom"===T?"HTML"===y.nodeName?-y.clientHeight+w.bottom:-E.height+w.bottom:w.top,D="right"===C?"HTML"===y.nodeName?-y.clientWidth+w.right:-E.width+w.right:w.left,v&&S)b[S]="translate3d("+D+"px, "+I+"px, 0)",b[T]=0,b[C]=0,b.willChange="transform";else{var A="bottom"===T?-1:1,O="right"===C?-1:1;b[T]=I*A,b[C]=D*O,b.willChange=T+", "+C}var N={"x-placement":t.placement};return t.attributes=Qt({},N,t.attributes),t.styles=Qt({},b,t.styles),t.arrowStyles=Qt({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return he(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&he(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=Zt(o,e,t,n.positionFixed),s=Jt(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",s),he(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},be=function(){function r(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=At(this.update.bind(this)),this.options=Qt({},r.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys(Qt({},r.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=Qt({},r.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Qt({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Ot(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return qt(r,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Zt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=Jt(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ee(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ie(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,oe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[re("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ae(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return le.call(this)}}]),r}();be.Utils=("undefined"!=typeof window?window:global).PopperUtils,be.placements=de,be.Defaults=Ee;var we="dropdown",Te="bs.dropdown",Ce="."+Te,Se=".data-api",De=p.fn[we],Ie=new RegExp("38|40|27"),Ae={HIDE:"hide"+Ce,HIDDEN:"hidden"+Ce,SHOW:"show"+Ce,SHOWN:"shown"+Ce,CLICK:"click"+Ce,CLICK_DATA_API:"click"+Ce+Se,KEYDOWN_DATA_API:"keydown"+Ce+Se,KEYUP_DATA_API:"keyup"+Ce+Se},Oe="disabled",Ne="show",ke="dropup",Le="dropright",Pe="dropleft",xe="dropdown-menu-right",He="position-static",je='[data-toggle="dropdown"]',Re=".dropdown form",Fe=".dropdown-menu",Me=".navbar-nav",We=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ue="top-start",Be="top-end",qe="bottom-start",Ke="bottom-end",Qe="right-start",Ye="left-start",Ve={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Xe={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},ze=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)){var t=c._getParentFromElement(this._element),e=p(this._menu).hasClass(Ne);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=p.Event(Ae.SHOW,n);if(p(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof be)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(t).addClass(He),this._popper=new be(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(t).closest(Me).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(Ne),p(t).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||p(this._element).hasClass(Oe)||p(this._menu).hasClass(Ne))){var t={relatedTarget:this._element},e=p.Event(Ae.SHOW,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)&&p(this._menu).hasClass(Ne)){var t={relatedTarget:this._element},e=p.Event(Ae.HIDE,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.HIDDEN,t)))}},t.dispose=function(){p.removeData(this._element,Te),p(this._element).off(Ce),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p(this._element).on(Ae.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,p(this._element).data(),t),m.typeCheckConfig(we,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(Fe))}return this._menu},t._getPlacement=function(){var t=p(this._element.parentNode),e=qe;return t.hasClass(ke)?(e=Ue,p(this._menu).hasClass(xe)&&(e=Be)):t.hasClass(Le)?e=Qe:t.hasClass(Pe)?e=Ye:p(this._menu).hasClass(xe)&&(e=Ke),e},t._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},t._getPopperConfig=function(){var e=this,t={};"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},c._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(Te);if(t||(t=new c(this,"object"==typeof e?e:null),p(this).data(Te,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(je)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=p(e[n]).data(Te),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(p(o).hasClass(Ne)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.contains(o,t.target))){var l=p.Event(Ae.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),e[n].setAttribute("aria-expanded","false"),p(a).removeClass(Ne),p(o).removeClass(Ne).trigger(p.Event(Ae.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p(t.target).closest(Fe).length)):Ie.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p(this).hasClass(Oe))){var e=c._getParentFromElement(this),n=p(e).hasClass(Ne);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(We));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(je);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Ve}},{key:"DefaultType",get:function(){return Xe}}]),c}();p(document).on(Ae.KEYDOWN_DATA_API,je,ze._dataApiKeydownHandler).on(Ae.KEYDOWN_DATA_API,Fe,ze._dataApiKeydownHandler).on(Ae.CLICK_DATA_API+" "+Ae.KEYUP_DATA_API,ze._clearMenus).on(Ae.CLICK_DATA_API,je,function(t){t.preventDefault(),t.stopPropagation(),ze._jQueryInterface.call(p(this),"toggle")}).on(Ae.CLICK_DATA_API,Re,function(t){t.stopPropagation()}),p.fn[we]=ze._jQueryInterface,p.fn[we].Constructor=ze,p.fn[we].noConflict=function(){return p.fn[we]=De,ze._jQueryInterface};var Ge="modal",Je="bs.modal",Ze="."+Je,$e=p.fn[Ge],tn={backdrop:!0,keyboard:!0,focus:!0,show:!0},en={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},nn={HIDE:"hide"+Ze,HIDDEN:"hidden"+Ze,SHOW:"show"+Ze,SHOWN:"shown"+Ze,FOCUSIN:"focusin"+Ze,RESIZE:"resize"+Ze,CLICK_DISMISS:"click.dismiss"+Ze,KEYDOWN_DISMISS:"keydown.dismiss"+Ze,MOUSEUP_DISMISS:"mouseup.dismiss"+Ze,MOUSEDOWN_DISMISS:"mousedown.dismiss"+Ze,CLICK_DATA_API:"click"+Ze+".data-api"},on="modal-scrollbar-measure",rn="modal-backdrop",sn="modal-open",an="fade",ln="show",cn=".modal-dialog",hn='[data-toggle="modal"]',un='[data-dismiss="modal"]',fn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",dn=".sticky-top",pn=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(cn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(an)&&(this._isTransitioning=!0);var n=p.Event(nn.SHOW,{relatedTarget:t});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(nn.CLICK_DISMISS,un,function(t){return e.hide(t)}),p(this._dialog).on(nn.MOUSEDOWN_DISMISS,function(){p(e._element).one(nn.MOUSEUP_DISMISS,function(t){p(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(nn.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(an);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(nn.FOCUSIN),p(this._element).removeClass(ln),p(this._element).off(nn.CLICK_DISMISS),p(this._dialog).off(nn.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p(t).off(Ze)}),p(document).off(nn.FOCUSIN),p.removeData(this._element,Je),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},tn,t),m.typeCheckConfig(Ge,t,en),t},t._showElement=function(t){var e=this,n=p(this._element).hasClass(an);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(ln),this._config.focus&&this._enforceFocus();var i=p.Event(nn.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p(e._element).trigger(i)};if(n){var r=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;p(document).off(nn.FOCUSIN).on(nn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p(this._element).on(nn.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||p(this._element).off(nn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p(window).on(nn.RESIZE,function(t){return e.handleUpdate(t)}):p(window).off(nn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(sn),t._resetAdjustments(),t._resetScrollbar(),p(t._element).trigger(nn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=p(this._element).hasClass(an)?an:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=rn,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(nn.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(ln),!t)return;if(!n)return void t();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(ln);var o=function(){e._removeBackdrop(),t&&t()};if(p(this._element).hasClass(an)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(fn)),e=[].slice.call(document.querySelectorAll(dn));p(t).each(function(t,e){var n=e.style.paddingRight,i=p(e).css("padding-right");p(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(e).each(function(t,e){var n=e.style.marginRight,i=p(e).css("margin-right");p(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(sn)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(fn));p(t).each(function(t,e){var n=p(e).data("padding-right");p(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+dn));p(e).each(function(t,e){var n=p(e).data("margin-right");"undefined"!=typeof n&&p(e).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=on,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p(this).data(Je),e=l({},tn,p(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p(this).data(Je,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return tn}}]),o}();p(document).on(nn.CLICK_DATA_API,hn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p(e).data(Je)?"toggle":l({},p(e).data(),p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p(e).one(nn.SHOW,function(t){t.isDefaultPrevented()||r.one(nn.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});pn._jQueryInterface.call(p(e),o,this)}),p.fn[Ge]=pn._jQueryInterface,p.fn[Ge].Constructor=pn,p.fn[Ge].noConflict=function(){return p.fn[Ge]=$e,pn._jQueryInterface};var mn="tooltip",gn="bs.tooltip",_n="."+gn,vn=p.fn[mn],yn="bs-tooltip",En=new RegExp("(^|\\s)"+yn+"\\S+","g"),bn={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},wn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Tn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},Cn="show",Sn="out",Dn={HIDE:"hide"+_n,HIDDEN:"hidden"+_n,SHOW:"show"+_n,SHOWN:"shown"+_n,INSERTED:"inserted"+_n,CLICK:"click"+_n,FOCUSIN:"focusin"+_n,FOCUSOUT:"focusout"+_n,MOUSEENTER:"mouseenter"+_n,MOUSELEAVE:"mouseleave"+_n},In="fade",An="show",On=".tooltip-inner",Nn=".arrow",kn="hover",Ln="focus",Pn="click",xn="manual",Hn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(An))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(In);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Nn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(An),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===Sn&&e._leave(null,e)};if(p(this.tip).hasClass(In)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Cn&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(An),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Pn]=!1,this._activeTrigger[Ln]=!1,this._activeTrigger[kn]=!1,p(this.tip).hasClass(In)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(yn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(On)),this.getTitle()),p(t).removeClass(In+" "+An)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return wn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==xn){var e=t===kn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===kn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ln:kn]=!0),p(e.getTipElement()).hasClass(An)||e._hoverState===Cn?e._hoverState=Cn:(clearTimeout(e._timeout),e._hoverState=Cn,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Cn&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ln:kn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Sn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Sn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=l({},this.constructor.Default,p(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(mn,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(En);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(In),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(gn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(gn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Tn}},{key:"NAME",get:function(){return mn}},{key:"DATA_KEY",get:function(){return gn}},{key:"Event",get:function(){return Dn}},{key:"EVENT_KEY",get:function(){return _n}},{key:"DefaultType",get:function(){return bn}}]),i}();p.fn[mn]=Hn._jQueryInterface,p.fn[mn].Constructor=Hn,p.fn[mn].noConflict=function(){return p.fn[mn]=vn,Hn._jQueryInterface};var jn="popover",Rn="bs.popover",Fn="."+Rn,Mn=p.fn[jn],Wn="bs-popover",Un=new RegExp("(^|\\s)"+Wn+"\\S+","g"),Bn=l({},Hn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),qn=l({},Hn.DefaultType,{content:"(string|element|function)"}),Kn="fade",Qn="show",Yn=".popover-header",Vn=".popover-body",Xn={HIDE:"hide"+Fn,HIDDEN:"hidden"+Fn,SHOW:"show"+Fn,SHOWN:"shown"+Fn,INSERTED:"inserted"+Fn,CLICK:"click"+Fn,FOCUSIN:"focusin"+Fn,FOCUSOUT:"focusout"+Fn,MOUSEENTER:"mouseenter"+Fn,MOUSELEAVE:"mouseleave"+Fn},zn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Wn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(Yn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Vn),e),t.removeClass(Kn+" "+Qn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Un);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Rn),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Rn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Bn}},{key:"NAME",get:function(){return jn}},{key:"DATA_KEY",get:function(){return Rn}},{key:"Event",get:function(){return Xn}},{key:"EVENT_KEY",get:function(){return Fn}},{key:"DefaultType",get:function(){return qn}}]),i}(Hn);p.fn[jn]=zn._jQueryInterface,p.fn[jn].Constructor=zn,p.fn[jn].noConflict=function(){return p.fn[jn]=Mn,zn._jQueryInterface};var Gn="scrollspy",Jn="bs.scrollspy",Zn="."+Jn,$n=p.fn[Gn],ti={offset:10,method:"auto",target:""},ei={offset:"number",method:"string",target:"(string|element)"},ni={ACTIVATE:"activate"+Zn,SCROLL:"scroll"+Zn,LOAD_DATA_API:"load"+Zn+".data-api"},ii="dropdown-item",oi="active",ri='[data-spy="scroll"]',si=".nav, .list-group",ai=".nav-link",li=".nav-item",ci=".list-group-item",hi=".dropdown",ui=".dropdown-item",fi=".dropdown-toggle",di="offset",pi="position",mi=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+ai+","+this._config.target+" "+ci+","+this._config.target+" "+ui,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(ni.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?di:pi,o="auto"===this._config.method?t:this._config.method,r=o===pi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.removeData(this._element,Jn),p(this._scrollElement).off(Zn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},ti,"object"==typeof t&&t?t:{})).target){var e=p(t.target).attr("id");e||(e=m.getUID(Gn),p(t.target).attr("id",e)),t.target="#"+e}return m.typeCheckConfig(Gn,t,ei),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(ii)?(n.closest(hi).find(fi).addClass(oi),n.addClass(oi)):(n.addClass(oi),n.parents(si).prev(ai+", "+ci).addClass(oi),n.parents(si).prev(li).children(ai).addClass(oi)),p(this._scrollElement).trigger(ni.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(oi)}).forEach(function(t){return t.classList.remove(oi)})},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(Jn);if(t||(t=new n(this,"object"==typeof e&&e),p(this).data(Jn,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return ti}}]),n}();p(window).on(ni.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(ri)),e=t.length;e--;){var n=p(t[e]);mi._jQueryInterface.call(n,n.data())}}),p.fn[Gn]=mi._jQueryInterface,p.fn[Gn].Constructor=mi,p.fn[Gn].noConflict=function(){return p.fn[Gn]=$n,mi._jQueryInterface};var gi="bs.tab",_i="."+gi,vi=p.fn.tab,yi={HIDE:"hide"+_i,HIDDEN:"hidden"+_i,SHOW:"show"+_i,SHOWN:"shown"+_i,CLICK_DATA_API:"click"+_i+".data-api"},Ei="dropdown-menu",bi="active",wi="disabled",Ti="fade",Ci="show",Si=".dropdown",Di=".nav, .list-group",Ii=".active",Ai="> li > .active",Oi='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Ni=".dropdown-toggle",ki="> .dropdown-menu .active",Li=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(bi)||p(this._element).hasClass(wi))){var t,i,e=p(this._element).closest(Di)[0],o=m.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?Ai:Ii;i=(i=p.makeArray(p(e).find(r)))[i.length-1]}var s=p.Event(yi.HIDE,{relatedTarget:this._element}),a=p.Event(yi.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=p.Event(yi.HIDDEN,{relatedTarget:n._element}),e=p.Event(yi.SHOWN,{relatedTarget:i});p(i).trigger(t),p(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){p.removeData(this._element,gi),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p(e).children(Ii):p(e).find(Ai))[0],r=n&&o&&p(o).hasClass(Ti),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=m.getTransitionDurationFromElement(o);p(o).removeClass(Ci).one(m.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){p(e).removeClass(bi);var i=p(e.parentNode).find(ki)[0];i&&p(i).removeClass(bi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(p(t).addClass(bi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),p(t).addClass(Ci),t.parentNode&&p(t.parentNode).hasClass(Ei)){var o=p(t).closest(Si)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ni));p(r).addClass(bi)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(gi);if(e||(e=new i(this),t.data(gi,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();p(document).on(yi.CLICK_DATA_API,Oi,function(t){t.preventDefault(),Li._jQueryInterface.call(p(this),"show")}),p.fn.tab=Li._jQueryInterface,p.fn.tab.Constructor=Li,p.fn.tab.noConflict=function(){return p.fn.tab=vi,Li._jQueryInterface};var Pi="toast",xi="bs.toast",Hi="."+xi,ji=p.fn[Pi],Ri={CLICK_DISMISS:"click.dismiss"+Hi,HIDE:"hide"+Hi,HIDDEN:"hidden"+Hi,SHOW:"show"+Hi,SHOWN:"shown"+Hi},Fi="fade",Mi="hide",Wi="show",Ui="showing",Bi={animation:"boolean",autohide:"boolean",delay:"number"},qi={animation:!0,autohide:!0,delay:500},Ki='[data-dismiss="toast"]',Qi=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;p(this._element).trigger(Ri.SHOW),this._config.animation&&this._element.classList.add(Fi);var e=function(){t._element.classList.remove(Ui),t._element.classList.add(Wi),p(t._element).trigger(Ri.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Mi),this._element.classList.add(Ui),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Wi)&&(p(this._element).trigger(Ri.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Wi)&&this._element.classList.remove(Wi),p(this._element).off(Ri.CLICK_DISMISS),p.removeData(this._element,xi),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},qi,p(this._element).data(),"object"==typeof t&&t?t:{}),m.typeCheckConfig(Pi,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p(this._element).on(Ri.CLICK_DISMISS,Ki,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Mi),p(t._element).trigger(Ri.HIDDEN)};if(this._element.classList.remove(Wi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(xi);if(e||(e=new i(this,"object"==typeof n&&n),t.data(xi,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"DefaultType",get:function(){return Bi}}]),i}();p.fn[Pi]=Qi._jQueryInterface,p.fn[Pi].Constructor=Qi,p.fn[Pi].noConflict=function(){return p.fn[Pi]=ji,Qi._jQueryInterface},function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=m,t.Alert=g,t.Button=k,t.Carousel=at,t.Collapse=Tt,t.Dropdown=ze,t.Modal=pn,t.Popover=zn,t.Scrollspy=mi,t.Tab=Li,t.Toast=Qi,t.Tooltip=Hn,Object.defineProperty(t,"__esModule",{value:!0})});
|
7 |
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery")):"function"==typeof define&&define.amd?define(["exports","jquery"],e):e((t=t||self).bootstrap={},t.jQuery)}(this,function(t,p){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}p=p&&p.hasOwnProperty("default")?p.default:p;var e="transitionend";function n(t){var e=this,n=!1;return p(this).one(m.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||m.triggerTransitionEnd(e)},t),this}var m={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=p(t).css("transition-duration"),n=p(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){p(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&m.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?m.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};p.fn.emulateTransitionEnd=n,p.event.special[m.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(p(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=p.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},u="alert",f="fade",d="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){p.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=m.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=p(t).closest("."+u)[0]),n},t._triggerCloseEvent=function(t){var e=p.Event(h.CLOSE);return p(t).trigger(e),e},t._removeElement=function(e){var n=this;if(p(e).removeClass(d),p(e).hasClass(f)){var t=m.getTransitionDurationFromElement(e);p(e).one(m.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){p(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),p.fn[o]=g._jQueryInterface,p.fn[o].Constructor=g,p.fn[o].noConflict=function(){return p.fn[o]=c,g._jQueryInterface};var _="button",v="bs.button",y="."+v,E=".data-api",b=p.fn[_],w="active",C="btn",T="focus",S='[data-toggle^="button"]',D='[data-toggle="buttons"]',I='input:not([type="hidden"])',A=".active",O=".btn",N={CLICK_DATA_API:"click"+y+E,FOCUS_BLUR_DATA_API:"focus"+y+E+" blur"+y+E},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=this._element.querySelector(I);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(w))t=!1;else{var o=n.querySelector(A);o&&p(o).removeClass(w)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(w),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(w)),t&&p(this._element).toggleClass(w)},t.dispose=function(){p.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(v);t||(t=new n(this),p(this).data(v,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();p(document).on(N.CLICK_DATA_API,S,function(t){t.preventDefault();var e=t.target;p(e).hasClass(C)||(e=p(e).closest(O)),k._jQueryInterface.call(p(e),"toggle")}).on(N.FOCUS_BLUR_DATA_API,S,function(t){var e=p(t.target).closest(O)[0];p(e).toggleClass(T,/^focus(in)?$/.test(t.type))}),p.fn[_]=k._jQueryInterface,p.fn[_].Constructor=k,p.fn[_].noConflict=function(){return p.fn[_]=b,k._jQueryInterface};var L="carousel",x="bs.carousel",P="."+x,H=".data-api",j=p.fn[L],R={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},F={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},M="next",W="prev",U="left",B="right",q={SLIDE:"slide"+P,SLID:"slid"+P,KEYDOWN:"keydown"+P,MOUSEENTER:"mouseenter"+P,MOUSELEAVE:"mouseleave"+P,TOUCHSTART:"touchstart"+P,TOUCHMOVE:"touchmove"+P,TOUCHEND:"touchend"+P,POINTERDOWN:"pointerdown"+P,POINTERUP:"pointerup"+P,DRAG_START:"dragstart"+P,LOAD_DATA_API:"load"+P+H,CLICK_DATA_API:"click"+P+H},K="carousel",Q="active",V="slide",Y="carousel-item-right",z="carousel-item-left",X="carousel-item-next",G="carousel-item-prev",$="pointer-event",J=".active",Z=".active.carousel-item",tt=".carousel-item",et=".carousel-item img",nt=".carousel-item-next, .carousel-item-prev",it=".carousel-indicators",ot="[data-slide], [data-slide-to]",rt='[data-ride="carousel"]',st={TOUCH:"touch",PEN:"pen"},at=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(it),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(M)},t.nextWhenVisible=function(){!document.hidden&&p(this._element).is(":visible")&&"hidden"!==p(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(W)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(nt)&&(m.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(Z);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)p(this._element).one(q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?M:W;this._slide(i,this._items[t])}},t.dispose=function(){p(this._element).off(P),p.removeData(this._element,x),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},R,t),m.typeCheckConfig(L,t,F),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&p(this._element).on(q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&p(this._element).on(q.MOUSEENTER,function(t){return e.pause(t)}).on(q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&st[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};p(this._element.querySelectorAll(et)).on(q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(p(this._element).on(q.POINTERDOWN,function(t){return e(t)}),p(this._element).on(q.POINTERUP,function(t){return i(t)}),this._element.classList.add($)):(p(this._element).on(q.TOUCHSTART,function(t){return e(t)}),p(this._element).on(q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),p(this._element).on(q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(tt)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===M,i=t===W,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===W?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(Z)),o=p.Event(q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return p(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(J));p(e).removeClass(Q);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&p(n).addClass(Q)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(Z),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===M?(n=z,i=X,U):(n=Y,i=G,B),l&&p(l).hasClass(Q))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=p.Event(q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(p(this._element).hasClass(V)){p(l).addClass(i),m.reflow(l),p(s).addClass(n),p(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=m.getTransitionDurationFromElement(s);p(s).one(m.TRANSITION_END,function(){p(l).removeClass(n+" "+i).addClass(Q),p(s).removeClass(Q+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return p(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else p(s).removeClass(Q),p(l).addClass(Q),this._isSliding=!1,p(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=p(this).data(x),e=l({},R,p(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),p(this).data(x,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=m.getSelectorFromElement(this);if(e){var n=p(e)[0];if(n&&p(n).hasClass(K)){var i=l({},p(n).data(),p(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(p(n),i),o&&p(n).data(x).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return R}}]),r}();p(document).on(q.CLICK_DATA_API,ot,at._dataApiClickHandler),p(window).on(q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(rt)),e=0,n=t.length;e<n;e++){var i=p(t[e]);at._jQueryInterface.call(i,i.data())}}),p.fn[L]=at._jQueryInterface,p.fn[L].Constructor=at,p.fn[L].noConflict=function(){return p.fn[L]=j,at._jQueryInterface};var lt="collapse",ct="bs.collapse",ht="."+ct,ut=p.fn[lt],ft={toggle:!0,parent:""},dt={toggle:"boolean",parent:"(string|element)"},pt={SHOW:"show"+ht,SHOWN:"shown"+ht,HIDE:"hide"+ht,HIDDEN:"hidden"+ht,CLICK_DATA_API:"click"+ht+".data-api"},mt="show",gt="collapse",_t="collapsing",vt="collapsed",yt="width",Et="height",bt=".show, .collapsing",wt='[data-toggle="collapse"]',Ct=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(wt)),i=0,o=n.length;i<o;i++){var r=n[i],s=m.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){p(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!p(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(bt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(gt)})).length&&(t=null),!(t&&(e=p(t).not(this._selector).data(ct))&&e._isTransitioning))){var i=p.Event(pt.SHOW);if(p(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(p(t).not(this._selector),"hide"),e||p(t).data(ct,null));var o=this._getDimension();p(this._element).removeClass(gt).addClass(_t),this._element.style[o]=0,this._triggerArray.length&&p(this._triggerArray).removeClass(vt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){p(n._element).removeClass(_t).addClass(gt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),p(n._element).trigger(pt.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&p(this._element).hasClass(mt)){var e=p.Event(pt.HIDE);if(p(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",m.reflow(this._element),p(this._element).addClass(_t).removeClass(gt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=m.getSelectorFromElement(r);if(null!==s)p([].slice.call(document.querySelectorAll(s))).hasClass(mt)||p(r).addClass(vt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(){t.setTransitioning(!1),p(t._element).removeClass(_t).addClass(gt).trigger(pt.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){p.removeData(this._element,ct),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},ft,t)).toggle=Boolean(t.toggle),m.typeCheckConfig(lt,t,dt),t},t._getDimension=function(){return p(this._element).hasClass(yt)?yt:Et},t._getParent=function(){var t,n=this;m.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return p(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=p(t).hasClass(mt);e.length&&p(e).toggleClass(vt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=m.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=p(this),e=t.data(ct),n=l({},ft,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ct,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ft}}]),a}();p(document).on(pt.CLICK_DATA_API,wt,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=p(this),e=m.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));p(i).each(function(){var t=p(this),e=t.data(ct)?"toggle":n.data();Ct._jQueryInterface.call(t,e)})}),p.fn[lt]=Ct._jQueryInterface,p.fn[lt].Constructor=Ct,p.fn[lt].noConflict=function(){return p.fn[lt]=ut,Ct._jQueryInterface};for(var Tt="undefined"!=typeof window&&"undefined"!=typeof document,St=["Edge","Trident","Firefox"],Dt=0,It=0;It<St.length;It+=1)if(Tt&&0<=navigator.userAgent.indexOf(St[It])){Dt=1;break}var At=Tt&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Dt))}};function Ot(t){return t&&"[object Function]"==={}.toString.call(t)}function Nt(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function kt(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function Lt(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Nt(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:Lt(kt(t))}var xt=Tt&&!(!window.MSInputMethodContext||!document.documentMode),Pt=Tt&&/MSIE 10/.test(navigator.userAgent);function Ht(t){return 11===t?xt:10===t?Pt:xt||Pt}function jt(t){if(!t)return document.documentElement;for(var e=Ht(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===Nt(n,"position")?jt(n):n:t?t.ownerDocument.documentElement:document.documentElement}function Rt(t){return null!==t.parentNode?Rt(t.parentNode):t}function Ft(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var s,a,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(a=(s=l).nodeName)||"HTML"!==a&&jt(s.firstElementChild)!==s?jt(l):l;var c=Rt(t);return c.host?Ft(c.host,e):Ft(t,Rt(e).host)}function Mt(t){var e="top"===(1<arguments.length&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=t.nodeName;if("BODY"!==n&&"HTML"!==n)return t[e];var i=t.ownerDocument.documentElement;return(t.ownerDocument.scrollingElement||i)[e]}function Wt(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"],10)+parseFloat(t["border"+i+"Width"],10)}function Ut(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Ht(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function Bt(t){var e=t.body,n=t.documentElement,i=Ht(10)&&getComputedStyle(n);return{height:Ut("Height",e,n,i),width:Ut("Width",e,n,i)}}var qt=function(){function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}}(),Kt=function(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t},Qt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t};function Vt(t){return Qt({},t,{right:t.left+t.width,bottom:t.top+t.height})}function Yt(t){var e={};try{if(Ht(10)){e=t.getBoundingClientRect();var n=Mt(t,"top"),i=Mt(t,"left");e.top+=n,e.left+=i,e.bottom+=n,e.right+=i}else e=t.getBoundingClientRect()}catch(t){}var o={left:e.left,top:e.top,width:e.right-e.left,height:e.bottom-e.top},r="HTML"===t.nodeName?Bt(t.ownerDocument):{},s=r.width||t.clientWidth||o.right-o.left,a=r.height||t.clientHeight||o.bottom-o.top,l=t.offsetWidth-s,c=t.offsetHeight-a;if(l||c){var h=Nt(t);l-=Wt(h,"x"),c-=Wt(h,"y"),o.width-=l,o.height-=c}return Vt(o)}function zt(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Ht(10),o="HTML"===e.nodeName,r=Yt(t),s=Yt(e),a=Lt(t),l=Nt(e),c=parseFloat(l.borderTopWidth,10),h=parseFloat(l.borderLeftWidth,10);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var u=Vt({top:r.top-s.top-c,left:r.left-s.left-h,width:r.width,height:r.height});if(u.marginTop=0,u.marginLeft=0,!i&&o){var f=parseFloat(l.marginTop,10),d=parseFloat(l.marginLeft,10);u.top-=c-f,u.bottom-=c-f,u.left-=h-d,u.right-=h-d,u.marginTop=f,u.marginLeft=d}return(i&&!n?e.contains(a):e===a&&"BODY"!==a.nodeName)&&(u=function(t,e){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=Mt(e,"top"),o=Mt(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}(u,e)),u}function Xt(t){if(!t||!t.parentElement||Ht())return document.documentElement;for(var e=t.parentElement;e&&"none"===Nt(e,"transform");)e=e.parentElement;return e||document.documentElement}function Gt(t,e,n,i){var o=4<arguments.length&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},s=o?Xt(t):Ft(t,e);if("viewport"===i)r=function(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=zt(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),s=e?0:Mt(n),a=e?0:Mt(n,"left");return Vt({top:s-i.top+i.marginTop,left:a-i.left+i.marginLeft,width:o,height:r})}(s,o);else{var a=void 0;"scrollParent"===i?"BODY"===(a=Lt(kt(e))).nodeName&&(a=t.ownerDocument.documentElement):a="window"===i?t.ownerDocument.documentElement:i;var l=zt(a,s,o);if("HTML"!==a.nodeName||function t(e){var n=e.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===Nt(e,"position"))return!0;var i=kt(e);return!!i&&t(i)}(s))r=l;else{var c=Bt(t.ownerDocument),h=c.height,u=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=u+l.left}}var f="number"==typeof(n=n||0);return r.left+=f?n:n.left||0,r.top+=f?n:n.top||0,r.right-=f?n:n.right||0,r.bottom-=f?n:n.bottom||0,r}function $t(t,e,i,n,o){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var s=Gt(i,n,r,o),a={top:{width:s.width,height:e.top-s.top},right:{width:s.right-e.right,height:s.height},bottom:{width:s.width,height:s.bottom-e.bottom},left:{width:e.left-s.left,height:s.height}},l=Object.keys(a).map(function(t){return Qt({key:t},a[t],{area:(e=a[t],e.width*e.height)});var e}).sort(function(t,e){return e.area-t.area}),c=l.filter(function(t){var e=t.width,n=t.height;return e>=i.clientWidth&&n>=i.clientHeight}),h=0<c.length?c[0].key:l[0].key,u=t.split("-")[1];return h+(u?"-"+u:"")}function Jt(t,e,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return zt(n,i?Xt(e):Ft(e,n),i)}function Zt(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function te(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(t){return e[t]})}function ee(t,e,n){n=n.split("-")[0];var i=Zt(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),s=r?"top":"left",a=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return o[s]=e[s]+e[l]/2-i[l]/2,o[a]=n===a?e[a]-i[c]:e[te(a)],o}function ne(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ie(t,n,e){return(void 0===e?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(t){return t[e]===n});var i=ne(t,function(t){return t[e]===n});return t.indexOf(i)}(t,"name",e))).forEach(function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var e=t.function||t.fn;t.enabled&&Ot(e)&&(n.offsets.popper=Vt(n.offsets.popper),n.offsets.reference=Vt(n.offsets.reference),n=e(n,t))}),n}function oe(t,n){return t.some(function(t){var e=t.name;return t.enabled&&e===n})}function re(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i<e.length;i++){var o=e[i],r=o?""+o+n:t;if("undefined"!=typeof document.body.style[r])return r}return null}function se(t){var e=t.ownerDocument;return e?e.defaultView:window}function ae(t,e,n,i){n.updateBound=i,se(t).addEventListener("resize",n.updateBound,{passive:!0});var o=Lt(t);return function t(e,n,i,o){var r="BODY"===e.nodeName,s=r?e.ownerDocument.defaultView:e;s.addEventListener(n,i,{passive:!0}),r||t(Lt(s.parentNode),n,i,o),o.push(s)}(o,"scroll",n.updateBound,n.scrollParents),n.scrollElement=o,n.eventsEnabled=!0,n}function le(){var t,e;this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=(t=this.reference,e=this.state,se(t).removeEventListener("resize",e.updateBound),e.scrollParents.forEach(function(t){t.removeEventListener("scroll",e.updateBound)}),e.updateBound=null,e.scrollParents=[],e.scrollElement=null,e.eventsEnabled=!1,e))}function ce(t){return""!==t&&!isNaN(parseFloat(t))&&isFinite(t)}function he(n,i){Object.keys(i).forEach(function(t){var e="";-1!==["width","height","top","right","bottom","left"].indexOf(t)&&ce(i[t])&&(e="px"),n.style[t]=i[t]+e})}var ue=Tt&&/Firefox/i.test(navigator.userAgent);function fe(t,e,n){var i=ne(t,function(t){return t.name===e}),o=!!i&&t.some(function(t){return t.name===n&&t.enabled&&t.order<i.order});if(!o){var r="`"+e+"`",s="`"+n+"`";console.warn(s+" modifier is required by "+r+" modifier in order to work, be sure to include it before "+r+"!")}return o}var de=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],pe=de.slice(3);function me(t){var e=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=pe.indexOf(t),i=pe.slice(n+1).concat(pe.slice(0,n));return e?i.reverse():i}var ge="flip",_e="clockwise",ve="counterclockwise";function ye(t,o,r,e){var s=[0,0],a=-1!==["right","left"].indexOf(e),n=t.split(/(\+|\-)/).map(function(t){return t.trim()}),i=n.indexOf(ne(n,function(t){return-1!==t.search(/,|\s/)}));n[i]&&-1===n[i].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==i?[n.slice(0,i).concat([n[i].split(l)[0]]),[n[i].split(l)[1]].concat(n.slice(i+1))]:[n];return(c=c.map(function(t,e){var n=(1===e?!a:a)?"height":"width",i=!1;return t.reduce(function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,i=!0,t):i?(t[t.length-1]+=e,i=!1,t):t.concat(e)},[]).map(function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],s=o[2];if(!r)return t;if(0!==s.indexOf("%"))return"vh"!==s&&"vw"!==s?r:("vh"===s?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;var a=void 0;switch(s){case"%p":a=n;break;case"%":case"%r":default:a=i}return Vt(a)[e]/100*r}(t,n,o,r)})})).forEach(function(n,i){n.forEach(function(t,e){ce(t)&&(s[i]+=t*("-"===n[e-1]?-1:1))})}),s}var Ee={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,s=o.popper,a=-1!==["bottom","top"].indexOf(n),l=a?"left":"top",c=a?"width":"height",h={start:Kt({},l,r[l]),end:Kt({},l,r[l]+r[c]-s[c])};t.offsets.popper=Qt({},s,h[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,s=o.reference,a=i.split("-")[0],l=void 0;return l=ce(+n)?[+n,0]:ye(n,r,s,a),"left"===a?(r.top+=l[0],r.left-=l[1]):"right"===a?(r.top+=l[0],r.left+=l[1]):"top"===a?(r.left+=l[0],r.top-=l[1]):"bottom"===a&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,i){var e=i.boundariesElement||jt(t.instance.popper);t.instance.reference===e&&(e=jt(e));var n=re("transform"),o=t.instance.popper.style,r=o.top,s=o.left,a=o[n];o.top="",o.left="",o[n]="";var l=Gt(t.instance.popper,t.instance.reference,i.padding,e,t.positionFixed);o.top=r,o.left=s,o[n]=a,i.boundaries=l;var c=i.priority,h=t.offsets.popper,u={primary:function(t){var e=h[t];return h[t]<l[t]&&!i.escapeWithReference&&(e=Math.max(h[t],l[t])),Kt({},t,e)},secondary:function(t){var e="right"===t?"left":"top",n=h[e];return h[t]>l[t]&&!i.escapeWithReference&&(n=Math.min(h[e],l[t]-("right"===t?h.width:h.height))),Kt({},e,n)}};return c.forEach(function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";h=Qt({},h,u[e](t))}),t.offsets.popper=h,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,s=-1!==["top","bottom"].indexOf(o),a=s?"right":"bottom",l=s?"left":"top",c=s?"width":"height";return n[a]<r(i[l])&&(t.offsets.popper[l]=r(i[l])-n[c]),n[l]>r(i[a])&&(t.offsets.popper[l]=r(i[a])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!fe(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,a=r.reference,l=-1!==["left","right"].indexOf(o),c=l?"height":"width",h=l?"Top":"Left",u=h.toLowerCase(),f=l?"left":"top",d=l?"bottom":"right",p=Zt(i)[c];a[d]-p<s[u]&&(t.offsets.popper[u]-=s[u]-(a[d]-p)),a[u]+p>s[d]&&(t.offsets.popper[u]+=a[u]+p-s[d]),t.offsets.popper=Vt(t.offsets.popper);var m=a[u]+a[c]/2-p/2,g=Nt(t.instance.popper),_=parseFloat(g["margin"+h],10),v=parseFloat(g["border"+h+"Width"],10),y=m-t.offsets.popper[u]-_-v;return y=Math.max(Math.min(s[c]-p,y),0),t.arrowElement=i,t.offsets.arrow=(Kt(n={},u,Math.round(y)),Kt(n,f,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(p,m){if(oe(p.instance.modifiers,"inner"))return p;if(p.flipped&&p.placement===p.originalPlacement)return p;var g=Gt(p.instance.popper,p.instance.reference,m.padding,m.boundariesElement,p.positionFixed),_=p.placement.split("-")[0],v=te(_),y=p.placement.split("-")[1]||"",E=[];switch(m.behavior){case ge:E=[_,v];break;case _e:E=me(_);break;case ve:E=me(_,!0);break;default:E=m.behavior}return E.forEach(function(t,e){if(_!==t||E.length===e+1)return p;_=p.placement.split("-")[0],v=te(_);var n,i=p.offsets.popper,o=p.offsets.reference,r=Math.floor,s="left"===_&&r(i.right)>r(o.left)||"right"===_&&r(i.left)<r(o.right)||"top"===_&&r(i.bottom)>r(o.top)||"bottom"===_&&r(i.top)<r(o.bottom),a=r(i.left)<r(g.left),l=r(i.right)>r(g.right),c=r(i.top)<r(g.top),h=r(i.bottom)>r(g.bottom),u="left"===_&&a||"right"===_&&l||"top"===_&&c||"bottom"===_&&h,f=-1!==["top","bottom"].indexOf(_),d=!!m.flipVariations&&(f&&"start"===y&&a||f&&"end"===y&&l||!f&&"start"===y&&c||!f&&"end"===y&&h);(s||u||d)&&(p.flipped=!0,(s||u)&&(_=E[e+1]),d&&(y="end"===(n=y)?"start":"start"===n?"end":n),p.placement=_+(y?"-"+y:""),p.offsets.popper=Qt({},p.offsets.popper,ee(p.instance.popper,p.offsets.reference,p.placement)),p=ie(p.instance.modifiers,p,"flip"))}),p},behavior:"flip",padding:5,boundariesElement:"viewport"},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,s=-1!==["left","right"].indexOf(n),a=-1===["top","left"].indexOf(n);return o[s?"left":"top"]=r[n]-(a?o[s?"width":"height"]:0),t.placement=te(e),t.offsets.popper=Vt(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!fe(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ne(t.instance.modifiers,function(t){return"preventOverflow"===t.name}).boundaries;if(e.bottom<n.top||e.left>n.right||e.top>n.bottom||e.right<n.left){if(!0===t.hide)return t;t.hide=!0,t.attributes["x-out-of-boundaries"]=""}else{if(!1===t.hide)return t;t.hide=!1,t.attributes["x-out-of-boundaries"]=!1}return t}},computeStyle:{order:850,enabled:!0,fn:function(t,e){var n=e.x,i=e.y,o=t.offsets.popper,r=ne(t.instance.modifiers,function(t){return"applyStyle"===t.name}).gpuAcceleration;void 0!==r&&console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");var s,a,l,c,h,u,f,d,p,m,g,_,v,y,E=void 0!==r?r:e.gpuAcceleration,b=jt(t.instance.popper),w=Yt(b),C={position:o.position},T=(s=t,a=window.devicePixelRatio<2||!ue,l=s.offsets,c=l.popper,h=l.reference,u=Math.round,f=Math.floor,d=function(t){return t},p=u(h.width),m=u(c.width),g=-1!==["left","right"].indexOf(s.placement),_=-1!==s.placement.indexOf("-"),y=a?u:d,{left:(v=a?g||_||p%2==m%2?u:f:d)(p%2==1&&m%2==1&&!_&&a?c.left-1:c.left),top:y(c.top),bottom:y(c.bottom),right:v(c.right)}),S="bottom"===n?"top":"bottom",D="right"===i?"left":"right",I=re("transform"),A=void 0,O=void 0;if(O="bottom"===S?"HTML"===b.nodeName?-b.clientHeight+T.bottom:-w.height+T.bottom:T.top,A="right"===D?"HTML"===b.nodeName?-b.clientWidth+T.right:-w.width+T.right:T.left,E&&I)C[I]="translate3d("+A+"px, "+O+"px, 0)",C[S]=0,C[D]=0,C.willChange="transform";else{var N="bottom"===S?-1:1,k="right"===D?-1:1;C[S]=O*N,C[D]=A*k,C.willChange=S+", "+D}var L={"x-placement":t.placement};return t.attributes=Qt({},L,t.attributes),t.styles=Qt({},C,t.styles),t.arrowStyles=Qt({},t.offsets.arrow,t.arrowStyles),t},gpuAcceleration:!0,x:"bottom",y:"right"},applyStyle:{order:900,enabled:!0,fn:function(t){var e,n;return he(t.instance.popper,t.styles),e=t.instance.popper,n=t.attributes,Object.keys(n).forEach(function(t){!1!==n[t]?e.setAttribute(t,n[t]):e.removeAttribute(t)}),t.arrowElement&&Object.keys(t.arrowStyles).length&&he(t.arrowElement,t.arrowStyles),t},onLoad:function(t,e,n,i,o){var r=Jt(o,e,t,n.positionFixed),s=$t(n.placement,r,e,t,n.modifiers.flip.boundariesElement,n.modifiers.flip.padding);return e.setAttribute("x-placement",s),he(e,{position:n.positionFixed?"fixed":"absolute"}),n},gpuAcceleration:void 0}}},be=function(){function r(t,e){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=At(this.update.bind(this)),this.options=Qt({},r.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=e&&e.jquery?e[0]:e,this.options.modifiers={},Object.keys(Qt({},r.Defaults.modifiers,i.modifiers)).forEach(function(t){n.options.modifiers[t]=Qt({},r.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(t){return Qt({name:t},n.options.modifiers[t])}).sort(function(t,e){return t.order-e.order}),this.modifiers.forEach(function(t){t.enabled&&Ot(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var o=this.options.eventsEnabled;o&&this.enableEventListeners(),this.state.eventsEnabled=o}return qt(r,[{key:"update",value:function(){return function(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=Jt(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=$t(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=ee(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=ie(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}.call(this)}},{key:"destroy",value:function(){return function(){return this.state.isDestroyed=!0,oe(this.modifiers,"applyStyle")&&(this.popper.removeAttribute("x-placement"),this.popper.style.position="",this.popper.style.top="",this.popper.style.left="",this.popper.style.right="",this.popper.style.bottom="",this.popper.style.willChange="",this.popper.style[re("transform")]=""),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}.call(this)}},{key:"enableEventListeners",value:function(){return function(){this.state.eventsEnabled||(this.state=ae(this.reference,this.options,this.state,this.scheduleUpdate))}.call(this)}},{key:"disableEventListeners",value:function(){return le.call(this)}}]),r}();be.Utils=("undefined"!=typeof window?window:global).PopperUtils,be.placements=de,be.Defaults=Ee;var we="dropdown",Ce="bs.dropdown",Te="."+Ce,Se=".data-api",De=p.fn[we],Ie=new RegExp("38|40|27"),Ae={HIDE:"hide"+Te,HIDDEN:"hidden"+Te,SHOW:"show"+Te,SHOWN:"shown"+Te,CLICK:"click"+Te,CLICK_DATA_API:"click"+Te+Se,KEYDOWN_DATA_API:"keydown"+Te+Se,KEYUP_DATA_API:"keyup"+Te+Se},Oe="disabled",Ne="show",ke="dropup",Le="dropright",xe="dropleft",Pe="dropdown-menu-right",He="position-static",je='[data-toggle="dropdown"]',Re=".dropdown form",Fe=".dropdown-menu",Me=".navbar-nav",We=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ue="top-start",Be="top-end",qe="bottom-start",Ke="bottom-end",Qe="right-start",Ve="left-start",Ye={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},ze={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Xe=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)){var t=c._getParentFromElement(this._element),e=p(this._menu).hasClass(Ne);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=p.Event(Ae.SHOW,n);if(p(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof be)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:m.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&p(t).addClass(He),this._popper=new be(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===p(t).closest(Me).length&&p(document.body).children().on("mouseover",null,p.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),p(this._menu).toggleClass(Ne),p(t).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||p(this._element).hasClass(Oe)||p(this._menu).hasClass(Ne))){var t={relatedTarget:this._element},e=p.Event(Ae.SHOW,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!p(this._element).hasClass(Oe)&&p(this._menu).hasClass(Ne)){var t={relatedTarget:this._element},e=p.Event(Ae.HIDE,t),n=c._getParentFromElement(this._element);p(n).trigger(e),e.isDefaultPrevented()||(p(this._menu).toggleClass(Ne),p(n).toggleClass(Ne).trigger(p.Event(Ae.HIDDEN,t)))}},t.dispose=function(){p.removeData(this._element,Ce),p(this._element).off(Te),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;p(this._element).on(Ae.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,p(this._element).data(),t),m.typeCheckConfig(we,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(Fe))}return this._menu},t._getPlacement=function(){var t=p(this._element.parentNode),e=qe;return t.hasClass(ke)?(e=Ue,p(this._menu).hasClass(Pe)&&(e=Be)):t.hasClass(Le)?e=Qe:t.hasClass(xe)?e=Ve:p(this._menu).hasClass(Pe)&&(e=Ke),e},t._detectNavbar=function(){return 0<p(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(Ce);if(t||(t=new c(this,"object"==typeof e?e:null),p(this).data(Ce,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(je)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=p(e[n]).data(Ce),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(p(o).hasClass(Ne)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&p.contains(o,t.target))){var l=p.Event(Ae.HIDE,s);p(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),e[n].setAttribute("aria-expanded","false"),p(a).removeClass(Ne),p(o).removeClass(Ne).trigger(p.Event(Ae.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=m.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||p(t.target).closest(Fe).length)):Ie.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!p(this).hasClass(Oe))){var e=c._getParentFromElement(this),n=p(e).hasClass(Ne);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(We));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(je);p(r).trigger("focus")}p(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Ye}},{key:"DefaultType",get:function(){return ze}}]),c}();p(document).on(Ae.KEYDOWN_DATA_API,je,Xe._dataApiKeydownHandler).on(Ae.KEYDOWN_DATA_API,Fe,Xe._dataApiKeydownHandler).on(Ae.CLICK_DATA_API+" "+Ae.KEYUP_DATA_API,Xe._clearMenus).on(Ae.CLICK_DATA_API,je,function(t){t.preventDefault(),t.stopPropagation(),Xe._jQueryInterface.call(p(this),"toggle")}).on(Ae.CLICK_DATA_API,Re,function(t){t.stopPropagation()}),p.fn[we]=Xe._jQueryInterface,p.fn[we].Constructor=Xe,p.fn[we].noConflict=function(){return p.fn[we]=De,Xe._jQueryInterface};var Ge="modal",$e="bs.modal",Je="."+$e,Ze=p.fn[Ge],tn={backdrop:!0,keyboard:!0,focus:!0,show:!0},en={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},nn={HIDE:"hide"+Je,HIDDEN:"hidden"+Je,SHOW:"show"+Je,SHOWN:"shown"+Je,FOCUSIN:"focusin"+Je,RESIZE:"resize"+Je,CLICK_DISMISS:"click.dismiss"+Je,KEYDOWN_DISMISS:"keydown.dismiss"+Je,MOUSEUP_DISMISS:"mouseup.dismiss"+Je,MOUSEDOWN_DISMISS:"mousedown.dismiss"+Je,CLICK_DATA_API:"click"+Je+".data-api"},on="modal-dialog-scrollable",rn="modal-scrollbar-measure",sn="modal-backdrop",an="modal-open",ln="fade",cn="show",hn=".modal-dialog",un=".modal-body",fn='[data-toggle="modal"]',dn='[data-dismiss="modal"]',pn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",mn=".sticky-top",gn=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(hn),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){p(this._element).hasClass(ln)&&(this._isTransitioning=!0);var n=p.Event(nn.SHOW,{relatedTarget:t});p(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),p(this._element).on(nn.CLICK_DISMISS,dn,function(t){return e.hide(t)}),p(this._dialog).on(nn.MOUSEDOWN_DISMISS,function(){p(e._element).one(nn.MOUSEUP_DISMISS,function(t){p(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=p.Event(nn.HIDE);if(p(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=p(this._element).hasClass(ln);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),p(document).off(nn.FOCUSIN),p(this._element).removeClass(cn),p(this._element).off(nn.CLICK_DISMISS),p(this._dialog).off(nn.MOUSEDOWN_DISMISS),i){var o=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return p(t).off(Je)}),p(document).off(nn.FOCUSIN),p.removeData(this._element,$e),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},tn,t),m.typeCheckConfig(Ge,t,en),t},t._showElement=function(t){var e=this,n=p(this._element).hasClass(ln);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),p(this._dialog).hasClass(on)?this._dialog.querySelector(un).scrollTop=0:this._element.scrollTop=0,n&&m.reflow(this._element),p(this._element).addClass(cn),this._config.focus&&this._enforceFocus();var i=p.Event(nn.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,p(e._element).trigger(i)};if(n){var r=m.getTransitionDurationFromElement(this._dialog);p(this._dialog).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;p(document).off(nn.FOCUSIN).on(nn.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===p(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?p(this._element).on(nn.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||p(this._element).off(nn.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?p(window).on(nn.RESIZE,function(t){return e.handleUpdate(t)}):p(window).off(nn.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){p(document.body).removeClass(an),t._resetAdjustments(),t._resetScrollbar(),p(t._element).trigger(nn.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(p(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=p(this._element).hasClass(ln)?ln:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=sn,n&&this._backdrop.classList.add(n),p(this._backdrop).appendTo(document.body),p(this._element).on(nn.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&m.reflow(this._backdrop),p(this._backdrop).addClass(cn),!t)return;if(!n)return void t();var i=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){p(this._backdrop).removeClass(cn);var o=function(){e._removeBackdrop(),t&&t()};if(p(this._element).hasClass(ln)){var r=m.getTransitionDurationFromElement(this._backdrop);p(this._backdrop).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(pn)),e=[].slice.call(document.querySelectorAll(mn));p(t).each(function(t,e){var n=e.style.paddingRight,i=p(e).css("padding-right");p(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),p(e).each(function(t,e){var n=e.style.marginRight,i=p(e).css("margin-right");p(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=p(document.body).css("padding-right");p(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}p(document.body).addClass(an)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(pn));p(t).each(function(t,e){var n=p(e).data("padding-right");p(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+mn));p(e).each(function(t,e){var n=p(e).data("margin-right");"undefined"!=typeof n&&p(e).css("margin-right",n).removeData("margin-right")});var n=p(document.body).data("padding-right");p(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=rn,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=p(this).data($e),e=l({},tn,p(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),p(this).data($e,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return tn}}]),o}();p(document).on(nn.CLICK_DATA_API,fn,function(t){var e,n=this,i=m.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=p(e).data($e)?"toggle":l({},p(e).data(),p(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=p(e).one(nn.SHOW,function(t){t.isDefaultPrevented()||r.one(nn.HIDDEN,function(){p(n).is(":visible")&&n.focus()})});gn._jQueryInterface.call(p(e),o,this)}),p.fn[Ge]=gn._jQueryInterface,p.fn[Ge].Constructor=gn,p.fn[Ge].noConflict=function(){return p.fn[Ge]=Ze,gn._jQueryInterface};var _n=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},yn=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,En=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function bn(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===_n.indexOf(n)||Boolean(t.nodeValue.match(yn)||t.nodeValue.match(En));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var wn="tooltip",Cn="bs.tooltip",Tn="."+Cn,Sn=p.fn[wn],Dn="bs-tooltip",In=new RegExp("(^|\\s)"+Dn+"\\S+","g"),An=["sanitize","whiteList","sanitizeFn"],On={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Nn={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},kn={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:vn},Ln="show",xn="out",Pn={HIDE:"hide"+Tn,HIDDEN:"hidden"+Tn,SHOW:"show"+Tn,SHOWN:"shown"+Tn,INSERTED:"inserted"+Tn,CLICK:"click"+Tn,FOCUSIN:"focusin"+Tn,FOCUSOUT:"focusout"+Tn,MOUSEENTER:"mouseenter"+Tn,MOUSELEAVE:"mouseleave"+Tn},Hn="fade",jn="show",Rn=".tooltip-inner",Fn=".arrow",Mn="hover",Wn="focus",Un="click",Bn="manual",qn=function(){function i(t,e){if("undefined"==typeof be)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=p(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(p(this.getTipElement()).hasClass(jn))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),p.removeData(this.element,this.constructor.DATA_KEY),p(this.element).off(this.constructor.EVENT_KEY),p(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&p(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===p(this.element).css("display"))throw new Error("Please use show on visible elements");var t=p.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){p(this.element).trigger(t);var n=m.findShadowRoot(this.element),i=p.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=m.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&p(o).addClass(Hn);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();p(o).data(this.constructor.DATA_KEY,this),p.contains(this.element.ownerDocument.documentElement,this.tip)||p(o).appendTo(l),p(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new be(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Fn},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),p(o).addClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().on("mouseover",null,p.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,p(e.element).trigger(e.constructor.Event.SHOWN),t===xn&&e._leave(null,e)};if(p(this.tip).hasClass(Hn)){var h=m.getTransitionDurationFromElement(this.tip);p(this.tip).one(m.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=p.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==Ln&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),p(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(p(this.element).trigger(i),!i.isDefaultPrevented()){if(p(n).removeClass(jn),"ontouchstart"in document.documentElement&&p(document.body).children().off("mouseover",null,p.noop),this._activeTrigger[Un]=!1,this._activeTrigger[Wn]=!1,this._activeTrigger[Mn]=!1,p(this.tip).hasClass(Hn)){var r=m.getTransitionDurationFromElement(n);p(n).one(m.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){p(this.getTipElement()).addClass(Dn+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(p(t.querySelectorAll(Rn)),this.getTitle()),p(t).removeClass(Hn+" "+jn)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=bn(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?p(e).parent().is(t)||t.empty().append(e):t.text(p(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:m.isElement(this.config.container)?p(this.config.container):p(document).find(this.config.container)},t._getAttachment=function(t){return Nn[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)p(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Bn){var e=t===Mn?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Mn?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;p(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),p(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Wn:Mn]=!0),p(e.getTipElement()).hasClass(jn)||e._hoverState===Ln?e._hoverState=Ln:(clearTimeout(e._timeout),e._hoverState=Ln,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Ln&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||p(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),p(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Wn:Mn]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=xn,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===xn&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=p(this.element).data();return Object.keys(e).forEach(function(t){-1!==An.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),m.typeCheckConfig(wn,t,this.constructor.DefaultType),t.sanitize&&(t.template=bn(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(In);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(p(t).removeClass(Hn),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Cn),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Cn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return kn}},{key:"NAME",get:function(){return wn}},{key:"DATA_KEY",get:function(){return Cn}},{key:"Event",get:function(){return Pn}},{key:"EVENT_KEY",get:function(){return Tn}},{key:"DefaultType",get:function(){return On}}]),i}();p.fn[wn]=qn._jQueryInterface,p.fn[wn].Constructor=qn,p.fn[wn].noConflict=function(){return p.fn[wn]=Sn,qn._jQueryInterface};var Kn="popover",Qn="bs.popover",Vn="."+Qn,Yn=p.fn[Kn],zn="bs-popover",Xn=new RegExp("(^|\\s)"+zn+"\\S+","g"),Gn=l({},qn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),$n=l({},qn.DefaultType,{content:"(string|element|function)"}),Jn="fade",Zn="show",ti=".popover-header",ei=".popover-body",ni={HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn,INSERTED:"inserted"+Vn,CLICK:"click"+Vn,FOCUSIN:"focusin"+Vn,FOCUSOUT:"focusout"+Vn,MOUSEENTER:"mouseenter"+Vn,MOUSELEAVE:"mouseleave"+Vn},ii=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){p(this.getTipElement()).addClass(zn+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||p(this.config.template)[0],this.tip},o.setContent=function(){var t=p(this.getTipElement());this.setElementContent(t.find(ti),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ei),e),t.removeClass(Jn+" "+Zn)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=p(this.getTipElement()),e=t.attr("class").match(Xn);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=p(this).data(Qn),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),p(this).data(Qn,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Gn}},{key:"NAME",get:function(){return Kn}},{key:"DATA_KEY",get:function(){return Qn}},{key:"Event",get:function(){return ni}},{key:"EVENT_KEY",get:function(){return Vn}},{key:"DefaultType",get:function(){return $n}}]),i}(qn);p.fn[Kn]=ii._jQueryInterface,p.fn[Kn].Constructor=ii,p.fn[Kn].noConflict=function(){return p.fn[Kn]=Yn,ii._jQueryInterface};var oi="scrollspy",ri="bs.scrollspy",si="."+ri,ai=p.fn[oi],li={offset:10,method:"auto",target:""},ci={offset:"number",method:"string",target:"(string|element)"},hi={ACTIVATE:"activate"+si,SCROLL:"scroll"+si,LOAD_DATA_API:"load"+si+".data-api"},ui="dropdown-item",fi="active",di='[data-spy="scroll"]',pi=".nav, .list-group",mi=".nav-link",gi=".nav-item",_i=".list-group-item",vi=".dropdown",yi=".dropdown-item",Ei=".dropdown-toggle",bi="offset",wi="position",Ci=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+mi+","+this._config.target+" "+_i+","+this._config.target+" "+yi,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,p(this._scrollElement).on(hi.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bi:wi,o="auto"===this._config.method?t:this._config.method,r=o===wi?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=m.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[p(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){p.removeData(this._element,ri),p(this._scrollElement).off(si),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},li,"object"==typeof t&&t?t:{})).target){var e=p(t.target).attr("id");e||(e=m.getUID(oi),p(t.target).attr("id",e)),t.target="#"+e}return m.typeCheckConfig(oi,t,ci),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=p([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(ui)?(n.closest(vi).find(Ei).addClass(fi),n.addClass(fi)):(n.addClass(fi),n.parents(pi).prev(mi+", "+_i).addClass(fi),n.parents(pi).prev(gi).children(mi).addClass(fi)),p(this._scrollElement).trigger(hi.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(fi)}).forEach(function(t){return t.classList.remove(fi)})},n._jQueryInterface=function(e){return this.each(function(){var t=p(this).data(ri);if(t||(t=new n(this,"object"==typeof e&&e),p(this).data(ri,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return li}}]),n}();p(window).on(hi.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(di)),e=t.length;e--;){var n=p(t[e]);Ci._jQueryInterface.call(n,n.data())}}),p.fn[oi]=Ci._jQueryInterface,p.fn[oi].Constructor=Ci,p.fn[oi].noConflict=function(){return p.fn[oi]=ai,Ci._jQueryInterface};var Ti="bs.tab",Si="."+Ti,Di=p.fn.tab,Ii={HIDE:"hide"+Si,HIDDEN:"hidden"+Si,SHOW:"show"+Si,SHOWN:"shown"+Si,CLICK_DATA_API:"click"+Si+".data-api"},Ai="dropdown-menu",Oi="active",Ni="disabled",ki="fade",Li="show",xi=".dropdown",Pi=".nav, .list-group",Hi=".active",ji="> li > .active",Ri='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Fi=".dropdown-toggle",Mi="> .dropdown-menu .active",Wi=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&p(this._element).hasClass(Oi)||p(this._element).hasClass(Ni))){var t,i,e=p(this._element).closest(Pi)[0],o=m.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?ji:Hi;i=(i=p.makeArray(p(e).find(r)))[i.length-1]}var s=p.Event(Ii.HIDE,{relatedTarget:this._element}),a=p.Event(Ii.SHOW,{relatedTarget:i});if(i&&p(i).trigger(s),p(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=p.Event(Ii.HIDDEN,{relatedTarget:n._element}),e=p.Event(Ii.SHOWN,{relatedTarget:i});p(i).trigger(t),p(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){p.removeData(this._element,Ti),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?p(e).children(Hi):p(e).find(ji))[0],r=n&&o&&p(o).hasClass(ki),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=m.getTransitionDurationFromElement(o);p(o).removeClass(Li).one(m.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){p(e).removeClass(Oi);var i=p(e.parentNode).find(Mi)[0];i&&p(i).removeClass(Oi),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(p(t).addClass(Oi),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m.reflow(t),t.classList.contains(ki)&&t.classList.add(Li),t.parentNode&&p(t.parentNode).hasClass(Ai)){var o=p(t).closest(xi)[0];if(o){var r=[].slice.call(o.querySelectorAll(Fi));p(r).addClass(Oi)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Ti);if(e||(e=new i(this),t.data(Ti,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();p(document).on(Ii.CLICK_DATA_API,Ri,function(t){t.preventDefault(),Wi._jQueryInterface.call(p(this),"show")}),p.fn.tab=Wi._jQueryInterface,p.fn.tab.Constructor=Wi,p.fn.tab.noConflict=function(){return p.fn.tab=Di,Wi._jQueryInterface};var Ui="toast",Bi="bs.toast",qi="."+Bi,Ki=p.fn[Ui],Qi={CLICK_DISMISS:"click.dismiss"+qi,HIDE:"hide"+qi,HIDDEN:"hidden"+qi,SHOW:"show"+qi,SHOWN:"shown"+qi},Vi="fade",Yi="hide",zi="show",Xi="showing",Gi={animation:"boolean",autohide:"boolean",delay:"number"},$i={animation:!0,autohide:!0,delay:500},Ji='[data-dismiss="toast"]',Zi=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;p(this._element).trigger(Qi.SHOW),this._config.animation&&this._element.classList.add(Vi);var e=function(){t._element.classList.remove(Xi),t._element.classList.add(zi),p(t._element).trigger(Qi.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Yi),this._element.classList.add(Xi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(zi)&&(p(this._element).trigger(Qi.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(zi)&&this._element.classList.remove(zi),p(this._element).off(Qi.CLICK_DISMISS),p.removeData(this._element,Bi),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},$i,p(this._element).data(),"object"==typeof t&&t?t:{}),m.typeCheckConfig(Ui,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;p(this._element).on(Qi.CLICK_DISMISS,Ji,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Yi),p(t._element).trigger(Qi.HIDDEN)};if(this._element.classList.remove(zi),this._config.animation){var n=m.getTransitionDurationFromElement(this._element);p(this._element).one(m.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=p(this),e=t.data(Bi);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bi,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Gi}},{key:"Default",get:function(){return $i}}]),i}();p.fn[Ui]=Zi._jQueryInterface,p.fn[Ui].Constructor=Zi,p.fn[Ui].noConflict=function(){return p.fn[Ui]=Ki,Zi._jQueryInterface},function(){if("undefined"==typeof p)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=p.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=m,t.Alert=g,t.Button=k,t.Carousel=at,t.Collapse=Ct,t.Dropdown=Xe,t.Modal=gn,t.Popover=ii,t.Scrollspy=Ci,t.Tab=Wi,t.Toast=Zi,t.Tooltip=qn,Object.defineProperty(t,"__esModule",{value:!0})});
|
7 |
//# sourceMappingURL=bootstrap.bundle.min.js.map
|
resources/js/bootstrap4.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
(function (global, factory) {
|
7 |
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('
|
8 |
-
typeof define === 'function' && define.amd ? define(['exports', '
|
9 |
-
(factory(
|
10 |
-
}(this,
|
11 |
|
12 |
-
Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
|
13 |
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
|
|
14 |
|
15 |
function _defineProperties(target, props) {
|
16 |
for (var i = 0; i < props.length; i++) {
|
@@ -70,7 +70,7 @@
|
|
70 |
|
71 |
/**
|
72 |
* --------------------------------------------------------------------------
|
73 |
-
* Bootstrap (v4.
|
74 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
75 |
* --------------------------------------------------------------------------
|
76 |
*/
|
@@ -146,7 +146,11 @@
|
|
146 |
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
|
147 |
}
|
148 |
|
149 |
-
|
|
|
|
|
|
|
|
|
150 |
},
|
151 |
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
|
152 |
if (!element) {
|
@@ -226,7 +230,7 @@
|
|
226 |
*/
|
227 |
|
228 |
var NAME = 'alert';
|
229 |
-
var VERSION = '4.
|
230 |
var DATA_KEY = 'bs.alert';
|
231 |
var EVENT_KEY = "." + DATA_KEY;
|
232 |
var DATA_API_KEY = '.data-api';
|
@@ -281,8 +285,8 @@
|
|
281 |
_proto.dispose = function dispose() {
|
282 |
$.removeData(this._element, DATA_KEY);
|
283 |
this._element = null;
|
284 |
-
}
|
285 |
-
|
286 |
|
287 |
_proto._getRootElement = function _getRootElement(element) {
|
288 |
var selector = Util.getSelectorFromElement(element);
|
@@ -324,8 +328,8 @@
|
|
324 |
|
325 |
_proto._destroyElement = function _destroyElement(element) {
|
326 |
$(element).detach().trigger(Event.CLOSED).remove();
|
327 |
-
}
|
328 |
-
|
329 |
|
330 |
Alert._jQueryInterface = function _jQueryInterface(config) {
|
331 |
return this.each(function () {
|
@@ -391,7 +395,7 @@
|
|
391 |
*/
|
392 |
|
393 |
var NAME$1 = 'button';
|
394 |
-
var VERSION$1 = '4.
|
395 |
var DATA_KEY$1 = 'bs.button';
|
396 |
var EVENT_KEY$1 = "." + DATA_KEY$1;
|
397 |
var DATA_API_KEY$1 = '.data-api';
|
@@ -477,8 +481,8 @@
|
|
477 |
_proto.dispose = function dispose() {
|
478 |
$.removeData(this._element, DATA_KEY$1);
|
479 |
this._element = null;
|
480 |
-
}
|
481 |
-
|
482 |
|
483 |
Button._jQueryInterface = function _jQueryInterface(config) {
|
484 |
return this.each(function () {
|
@@ -545,7 +549,7 @@
|
|
545 |
*/
|
546 |
|
547 |
var NAME$2 = 'carousel';
|
548 |
-
var VERSION$2 = '4.
|
549 |
var DATA_KEY$2 = 'bs.carousel';
|
550 |
var EVENT_KEY$2 = "." + DATA_KEY$2;
|
551 |
var DATA_API_KEY$2 = '.data-api';
|
@@ -740,8 +744,8 @@
|
|
740 |
this._isSliding = null;
|
741 |
this._activeElement = null;
|
742 |
this._indicatorsElement = null;
|
743 |
-
}
|
744 |
-
|
745 |
|
746 |
_proto._getConfig = function _getConfig(config) {
|
747 |
config = _objectSpread({}, Default, config);
|
@@ -785,7 +789,9 @@
|
|
785 |
});
|
786 |
}
|
787 |
|
788 |
-
this.
|
|
|
|
|
789 |
};
|
790 |
|
791 |
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
@@ -1026,8 +1032,8 @@
|
|
1026 |
if (isCycling) {
|
1027 |
this.cycle();
|
1028 |
}
|
1029 |
-
}
|
1030 |
-
|
1031 |
|
1032 |
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
1033 |
return this.each(function () {
|
@@ -1054,7 +1060,7 @@
|
|
1054 |
}
|
1055 |
|
1056 |
data[action]();
|
1057 |
-
} else if (_config.interval) {
|
1058 |
data.pause();
|
1059 |
data.cycle();
|
1060 |
}
|
@@ -1143,7 +1149,7 @@
|
|
1143 |
*/
|
1144 |
|
1145 |
var NAME$3 = 'collapse';
|
1146 |
-
var VERSION$3 = '4.
|
1147 |
var DATA_KEY$3 = 'bs.collapse';
|
1148 |
var EVENT_KEY$3 = "." + DATA_KEY$3;
|
1149 |
var DATA_API_KEY$3 = '.data-api';
|
@@ -1365,8 +1371,8 @@
|
|
1365 |
this._element = null;
|
1366 |
this._triggerArray = null;
|
1367 |
this._isTransitioning = null;
|
1368 |
-
}
|
1369 |
-
|
1370 |
|
1371 |
_proto._getConfig = function _getConfig(config) {
|
1372 |
config = _objectSpread({}, Default$1, config);
|
@@ -1410,8 +1416,8 @@
|
|
1410 |
if (triggerArray.length) {
|
1411 |
$(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
1412 |
}
|
1413 |
-
}
|
1414 |
-
|
1415 |
|
1416 |
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
|
1417 |
var selector = Util.getSelectorFromElement(element);
|
@@ -1503,7 +1509,7 @@
|
|
1503 |
*/
|
1504 |
|
1505 |
var NAME$4 = 'dropdown';
|
1506 |
-
var VERSION$4 = '4.
|
1507 |
var DATA_KEY$4 = 'bs.dropdown';
|
1508 |
var EVENT_KEY$4 = "." + DATA_KEY$4;
|
1509 |
var DATA_API_KEY$4 = '.data-api';
|
@@ -1732,8 +1738,8 @@
|
|
1732 |
if (this._popper !== null) {
|
1733 |
this._popper.scheduleUpdate();
|
1734 |
}
|
1735 |
-
}
|
1736 |
-
|
1737 |
|
1738 |
_proto._addEventListeners = function _addEventListeners() {
|
1739 |
var _this = this;
|
@@ -1789,24 +1795,28 @@
|
|
1789 |
return $(this._element).closest('.navbar').length > 0;
|
1790 |
};
|
1791 |
|
1792 |
-
_proto.
|
1793 |
var _this2 = this;
|
1794 |
|
1795 |
-
var
|
1796 |
|
1797 |
if (typeof this._config.offset === 'function') {
|
1798 |
-
|
1799 |
-
data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {});
|
1800 |
return data;
|
1801 |
};
|
1802 |
} else {
|
1803 |
-
|
1804 |
}
|
1805 |
|
|
|
|
|
|
|
|
|
1806 |
var popperConfig = {
|
1807 |
placement: this._getPlacement(),
|
1808 |
modifiers: {
|
1809 |
-
offset:
|
1810 |
flip: {
|
1811 |
enabled: this._config.flip
|
1812 |
},
|
@@ -1824,8 +1834,8 @@
|
|
1824 |
}
|
1825 |
|
1826 |
return popperConfig;
|
1827 |
-
}
|
1828 |
-
|
1829 |
|
1830 |
Dropdown._jQueryInterface = function _jQueryInterface(config) {
|
1831 |
return this.each(function () {
|
@@ -1909,8 +1919,8 @@
|
|
1909 |
}
|
1910 |
|
1911 |
return parent || element.parentNode;
|
1912 |
-
}
|
1913 |
-
|
1914 |
|
1915 |
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
1916 |
// If not input/textarea:
|
@@ -2025,7 +2035,7 @@
|
|
2025 |
*/
|
2026 |
|
2027 |
var NAME$5 = 'modal';
|
2028 |
-
var VERSION$5 = '4.
|
2029 |
var DATA_KEY$5 = 'bs.modal';
|
2030 |
var EVENT_KEY$5 = "." + DATA_KEY$5;
|
2031 |
var DATA_API_KEY$5 = '.data-api';
|
@@ -2058,6 +2068,7 @@
|
|
2058 |
CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
|
2059 |
};
|
2060 |
var ClassName$5 = {
|
|
|
2061 |
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
2062 |
BACKDROP: 'modal-backdrop',
|
2063 |
OPEN: 'modal-open',
|
@@ -2066,6 +2077,7 @@
|
|
2066 |
};
|
2067 |
var Selector$5 = {
|
2068 |
DIALOG: '.modal-dialog',
|
|
|
2069 |
DATA_TOGGLE: '[data-toggle="modal"]',
|
2070 |
DATA_DISMISS: '[data-dismiss="modal"]',
|
2071 |
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
@@ -2218,8 +2230,8 @@
|
|
2218 |
|
2219 |
_proto.handleUpdate = function handleUpdate() {
|
2220 |
this._adjustDialog();
|
2221 |
-
}
|
2222 |
-
|
2223 |
|
2224 |
_proto._getConfig = function _getConfig(config) {
|
2225 |
config = _objectSpread({}, Default$3, config);
|
@@ -2243,7 +2255,11 @@
|
|
2243 |
|
2244 |
this._element.setAttribute('aria-modal', true);
|
2245 |
|
2246 |
-
this.
|
|
|
|
|
|
|
|
|
2247 |
|
2248 |
if (transition) {
|
2249 |
Util.reflow(this._element);
|
@@ -2413,11 +2429,11 @@
|
|
2413 |
} else if (callback) {
|
2414 |
callback();
|
2415 |
}
|
2416 |
-
}
|
2417 |
// the following methods are used to handle overflowing modals
|
2418 |
// todo (fat): these should probably be refactored out of modal.js
|
2419 |
// ----------------------------------------------------------------------
|
2420 |
-
|
2421 |
|
2422 |
_proto._adjustDialog = function _adjustDialog() {
|
2423 |
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
@@ -2502,8 +2518,8 @@
|
|
2502 |
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
2503 |
document.body.removeChild(scrollDiv);
|
2504 |
return scrollbarWidth;
|
2505 |
-
}
|
2506 |
-
|
2507 |
|
2508 |
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
2509 |
return this.each(function () {
|
@@ -2594,6 +2610,127 @@
|
|
2594 |
return Modal._jQueryInterface;
|
2595 |
};
|
2596 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2597 |
/**
|
2598 |
* ------------------------------------------------------------------------
|
2599 |
* Constants
|
@@ -2601,12 +2738,13 @@
|
|
2601 |
*/
|
2602 |
|
2603 |
var NAME$6 = 'tooltip';
|
2604 |
-
var VERSION$6 = '4.
|
2605 |
var DATA_KEY$6 = 'bs.tooltip';
|
2606 |
var EVENT_KEY$6 = "." + DATA_KEY$6;
|
2607 |
var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
|
2608 |
var CLASS_PREFIX = 'bs-tooltip';
|
2609 |
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
|
|
2610 |
var DefaultType$4 = {
|
2611 |
animation: 'boolean',
|
2612 |
template: 'string',
|
@@ -2616,10 +2754,13 @@
|
|
2616 |
html: 'boolean',
|
2617 |
selector: '(string|boolean)',
|
2618 |
placement: '(string|function)',
|
2619 |
-
offset: '(number|string)',
|
2620 |
container: '(string|element|boolean)',
|
2621 |
fallbackPlacement: '(string|array)',
|
2622 |
-
boundary: '(string|element)'
|
|
|
|
|
|
|
2623 |
};
|
2624 |
var AttachmentMap$1 = {
|
2625 |
AUTO: 'auto',
|
@@ -2640,7 +2781,10 @@
|
|
2640 |
offset: 0,
|
2641 |
container: false,
|
2642 |
fallbackPlacement: 'flip',
|
2643 |
-
boundary: 'scrollParent'
|
|
|
|
|
|
|
2644 |
};
|
2645 |
var HoverState = {
|
2646 |
SHOW: 'show',
|
@@ -2825,9 +2969,7 @@
|
|
2825 |
this._popper = new Popper(this.element, tip, {
|
2826 |
placement: attachment,
|
2827 |
modifiers: {
|
2828 |
-
offset:
|
2829 |
-
offset: this.config.offset
|
2830 |
-
},
|
2831 |
flip: {
|
2832 |
behavior: this.config.fallbackPlacement
|
2833 |
},
|
@@ -2936,8 +3078,8 @@
|
|
2936 |
if (this._popper !== null) {
|
2937 |
this._popper.scheduleUpdate();
|
2938 |
}
|
2939 |
-
}
|
2940 |
-
|
2941 |
|
2942 |
_proto.isWithContent = function isWithContent() {
|
2943 |
return Boolean(this.getTitle());
|
@@ -2959,19 +3101,27 @@
|
|
2959 |
};
|
2960 |
|
2961 |
_proto.setElementContent = function setElementContent($element, content) {
|
2962 |
-
var html = this.config.html;
|
2963 |
-
|
2964 |
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
|
2965 |
// Content is a DOM node or a jQuery
|
2966 |
-
if (html) {
|
2967 |
if (!$(content).parent().is($element)) {
|
2968 |
$element.empty().append(content);
|
2969 |
}
|
2970 |
} else {
|
2971 |
$element.text($(content).text());
|
2972 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2973 |
} else {
|
2974 |
-
$element
|
2975 |
}
|
2976 |
};
|
2977 |
|
@@ -2983,8 +3133,25 @@
|
|
2983 |
}
|
2984 |
|
2985 |
return title;
|
2986 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2987 |
|
|
|
|
|
2988 |
|
2989 |
_proto._getContainer = function _getContainer() {
|
2990 |
if (this.config.container === false) {
|
@@ -3003,27 +3170,27 @@
|
|
3003 |
};
|
3004 |
|
3005 |
_proto._setListeners = function _setListeners() {
|
3006 |
-
var
|
3007 |
|
3008 |
var triggers = this.config.trigger.split(' ');
|
3009 |
triggers.forEach(function (trigger) {
|
3010 |
if (trigger === 'click') {
|
3011 |
-
$(
|
3012 |
-
return
|
3013 |
});
|
3014 |
} else if (trigger !== Trigger.MANUAL) {
|
3015 |
-
var eventIn = trigger === Trigger.HOVER ?
|
3016 |
-
var eventOut = trigger === Trigger.HOVER ?
|
3017 |
-
$(
|
3018 |
-
return
|
3019 |
-
}).on(eventOut,
|
3020 |
-
return
|
3021 |
});
|
3022 |
}
|
3023 |
});
|
3024 |
$(this.element).closest('.modal').on('hide.bs.modal', function () {
|
3025 |
-
if (
|
3026 |
-
|
3027 |
}
|
3028 |
});
|
3029 |
|
@@ -3122,7 +3289,13 @@
|
|
3122 |
};
|
3123 |
|
3124 |
_proto._getConfig = function _getConfig(config) {
|
3125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
3126 |
|
3127 |
if (typeof config.delay === 'number') {
|
3128 |
config.delay = {
|
@@ -3140,6 +3313,11 @@
|
|
3140 |
}
|
3141 |
|
3142 |
Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
|
|
|
|
|
|
|
|
|
|
|
3143 |
return config;
|
3144 |
};
|
3145 |
|
@@ -3188,8 +3366,8 @@
|
|
3188 |
this.hide();
|
3189 |
this.show();
|
3190 |
this.config.animation = initConfigAnimation;
|
3191 |
-
}
|
3192 |
-
|
3193 |
|
3194 |
Tooltip._jQueryInterface = function _jQueryInterface(config) {
|
3195 |
return this.each(function () {
|
@@ -3277,7 +3455,7 @@
|
|
3277 |
*/
|
3278 |
|
3279 |
var NAME$7 = 'popover';
|
3280 |
-
var VERSION$7 = '4.
|
3281 |
var DATA_KEY$7 = 'bs.popover';
|
3282 |
var EVENT_KEY$7 = "." + DATA_KEY$7;
|
3283 |
var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
|
@@ -3360,8 +3538,8 @@
|
|
3360 |
|
3361 |
this.setElementContent($tip.find(Selector$7.CONTENT), content);
|
3362 |
$tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
|
3363 |
-
}
|
3364 |
-
|
3365 |
|
3366 |
_proto._getContent = function _getContent() {
|
3367 |
return this.element.getAttribute('data-content') || this.config.content;
|
@@ -3374,8 +3552,8 @@
|
|
3374 |
if (tabClass !== null && tabClass.length > 0) {
|
3375 |
$tip.removeClass(tabClass.join(''));
|
3376 |
}
|
3377 |
-
}
|
3378 |
-
|
3379 |
|
3380 |
Popover._jQueryInterface = function _jQueryInterface(config) {
|
3381 |
return this.each(function () {
|
@@ -3464,7 +3642,7 @@
|
|
3464 |
*/
|
3465 |
|
3466 |
var NAME$8 = 'scrollspy';
|
3467 |
-
var VERSION$8 = '4.
|
3468 |
var DATA_KEY$8 = 'bs.scrollspy';
|
3469 |
var EVENT_KEY$8 = "." + DATA_KEY$8;
|
3470 |
var DATA_API_KEY$6 = '.data-api';
|
@@ -3587,8 +3765,8 @@
|
|
3587 |
this._targets = null;
|
3588 |
this._activeTarget = null;
|
3589 |
this._scrollHeight = null;
|
3590 |
-
}
|
3591 |
-
|
3592 |
|
3593 |
_proto._getConfig = function _getConfig(config) {
|
3594 |
config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
|
@@ -3695,8 +3873,8 @@
|
|
3695 |
}).forEach(function (node) {
|
3696 |
return node.classList.remove(ClassName$8.ACTIVE);
|
3697 |
});
|
3698 |
-
}
|
3699 |
-
|
3700 |
|
3701 |
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
3702 |
return this.each(function () {
|
@@ -3771,7 +3949,7 @@
|
|
3771 |
*/
|
3772 |
|
3773 |
var NAME$9 = 'tab';
|
3774 |
-
var VERSION$9 = '4.
|
3775 |
var DATA_KEY$9 = 'bs.tab';
|
3776 |
var EVENT_KEY$9 = "." + DATA_KEY$9;
|
3777 |
var DATA_API_KEY$7 = '.data-api';
|
@@ -3879,8 +4057,8 @@
|
|
3879 |
_proto.dispose = function dispose() {
|
3880 |
$.removeData(this._element, DATA_KEY$9);
|
3881 |
this._element = null;
|
3882 |
-
}
|
3883 |
-
|
3884 |
|
3885 |
_proto._activate = function _activate(element, container, callback) {
|
3886 |
var _this2 = this;
|
@@ -3922,7 +4100,10 @@
|
|
3922 |
}
|
3923 |
|
3924 |
Util.reflow(element);
|
3925 |
-
|
|
|
|
|
|
|
3926 |
|
3927 |
if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
|
3928 |
var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
|
@@ -3938,8 +4119,8 @@
|
|
3938 |
if (callback) {
|
3939 |
callback();
|
3940 |
}
|
3941 |
-
}
|
3942 |
-
|
3943 |
|
3944 |
Tab._jQueryInterface = function _jQueryInterface(config) {
|
3945 |
return this.each(function () {
|
@@ -4003,7 +4184,7 @@
|
|
4003 |
*/
|
4004 |
|
4005 |
var NAME$a = 'toast';
|
4006 |
-
var VERSION$a = '4.
|
4007 |
var DATA_KEY$a = 'bs.toast';
|
4008 |
var EVENT_KEY$a = "." + DATA_KEY$a;
|
4009 |
var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
|
@@ -4118,8 +4299,8 @@
|
|
4118 |
$.removeData(this._element, DATA_KEY$a);
|
4119 |
this._element = null;
|
4120 |
this._config = null;
|
4121 |
-
}
|
4122 |
-
|
4123 |
|
4124 |
_proto._getConfig = function _getConfig(config) {
|
4125 |
config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
|
@@ -4152,8 +4333,8 @@
|
|
4152 |
} else {
|
4153 |
complete();
|
4154 |
}
|
4155 |
-
}
|
4156 |
-
|
4157 |
|
4158 |
Toast._jQueryInterface = function _jQueryInterface(config) {
|
4159 |
return this.each(function () {
|
@@ -4187,6 +4368,11 @@
|
|
4187 |
get: function get() {
|
4188 |
return DefaultType$7;
|
4189 |
}
|
|
|
|
|
|
|
|
|
|
|
4190 |
}]);
|
4191 |
|
4192 |
return Toast;
|
@@ -4208,7 +4394,7 @@
|
|
4208 |
|
4209 |
/**
|
4210 |
* --------------------------------------------------------------------------
|
4211 |
-
* Bootstrap (v4.
|
4212 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
4213 |
* --------------------------------------------------------------------------
|
4214 |
*/
|
@@ -4245,5 +4431,5 @@
|
|
4245 |
|
4246 |
Object.defineProperty(exports, '__esModule', { value: true });
|
4247 |
|
4248 |
-
}))
|
4249 |
//# sourceMappingURL=bootstrap.js.map
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
(function (global, factory) {
|
7 |
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :
|
8 |
+
typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :
|
9 |
+
(global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));
|
10 |
+
}(this, function (exports, $, Popper) { 'use strict';
|
11 |
|
|
|
12 |
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
13 |
+
Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;
|
14 |
|
15 |
function _defineProperties(target, props) {
|
16 |
for (var i = 0; i < props.length; i++) {
|
70 |
|
71 |
/**
|
72 |
* --------------------------------------------------------------------------
|
73 |
+
* Bootstrap (v4.3.1): util.js
|
74 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
75 |
* --------------------------------------------------------------------------
|
76 |
*/
|
146 |
selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
|
147 |
}
|
148 |
|
149 |
+
try {
|
150 |
+
return document.querySelector(selector) ? selector : null;
|
151 |
+
} catch (err) {
|
152 |
+
return null;
|
153 |
+
}
|
154 |
},
|
155 |
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
|
156 |
if (!element) {
|
230 |
*/
|
231 |
|
232 |
var NAME = 'alert';
|
233 |
+
var VERSION = '4.3.1';
|
234 |
var DATA_KEY = 'bs.alert';
|
235 |
var EVENT_KEY = "." + DATA_KEY;
|
236 |
var DATA_API_KEY = '.data-api';
|
285 |
_proto.dispose = function dispose() {
|
286 |
$.removeData(this._element, DATA_KEY);
|
287 |
this._element = null;
|
288 |
+
} // Private
|
289 |
+
;
|
290 |
|
291 |
_proto._getRootElement = function _getRootElement(element) {
|
292 |
var selector = Util.getSelectorFromElement(element);
|
328 |
|
329 |
_proto._destroyElement = function _destroyElement(element) {
|
330 |
$(element).detach().trigger(Event.CLOSED).remove();
|
331 |
+
} // Static
|
332 |
+
;
|
333 |
|
334 |
Alert._jQueryInterface = function _jQueryInterface(config) {
|
335 |
return this.each(function () {
|
395 |
*/
|
396 |
|
397 |
var NAME$1 = 'button';
|
398 |
+
var VERSION$1 = '4.3.1';
|
399 |
var DATA_KEY$1 = 'bs.button';
|
400 |
var EVENT_KEY$1 = "." + DATA_KEY$1;
|
401 |
var DATA_API_KEY$1 = '.data-api';
|
481 |
_proto.dispose = function dispose() {
|
482 |
$.removeData(this._element, DATA_KEY$1);
|
483 |
this._element = null;
|
484 |
+
} // Static
|
485 |
+
;
|
486 |
|
487 |
Button._jQueryInterface = function _jQueryInterface(config) {
|
488 |
return this.each(function () {
|
549 |
*/
|
550 |
|
551 |
var NAME$2 = 'carousel';
|
552 |
+
var VERSION$2 = '4.3.1';
|
553 |
var DATA_KEY$2 = 'bs.carousel';
|
554 |
var EVENT_KEY$2 = "." + DATA_KEY$2;
|
555 |
var DATA_API_KEY$2 = '.data-api';
|
744 |
this._isSliding = null;
|
745 |
this._activeElement = null;
|
746 |
this._indicatorsElement = null;
|
747 |
+
} // Private
|
748 |
+
;
|
749 |
|
750 |
_proto._getConfig = function _getConfig(config) {
|
751 |
config = _objectSpread({}, Default, config);
|
789 |
});
|
790 |
}
|
791 |
|
792 |
+
if (this._config.touch) {
|
793 |
+
this._addTouchEventListeners();
|
794 |
+
}
|
795 |
};
|
796 |
|
797 |
_proto._addTouchEventListeners = function _addTouchEventListeners() {
|
1032 |
if (isCycling) {
|
1033 |
this.cycle();
|
1034 |
}
|
1035 |
+
} // Static
|
1036 |
+
;
|
1037 |
|
1038 |
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
1039 |
return this.each(function () {
|
1060 |
}
|
1061 |
|
1062 |
data[action]();
|
1063 |
+
} else if (_config.interval && _config.ride) {
|
1064 |
data.pause();
|
1065 |
data.cycle();
|
1066 |
}
|
1149 |
*/
|
1150 |
|
1151 |
var NAME$3 = 'collapse';
|
1152 |
+
var VERSION$3 = '4.3.1';
|
1153 |
var DATA_KEY$3 = 'bs.collapse';
|
1154 |
var EVENT_KEY$3 = "." + DATA_KEY$3;
|
1155 |
var DATA_API_KEY$3 = '.data-api';
|
1371 |
this._element = null;
|
1372 |
this._triggerArray = null;
|
1373 |
this._isTransitioning = null;
|
1374 |
+
} // Private
|
1375 |
+
;
|
1376 |
|
1377 |
_proto._getConfig = function _getConfig(config) {
|
1378 |
config = _objectSpread({}, Default$1, config);
|
1416 |
if (triggerArray.length) {
|
1417 |
$(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
1418 |
}
|
1419 |
+
} // Static
|
1420 |
+
;
|
1421 |
|
1422 |
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
|
1423 |
var selector = Util.getSelectorFromElement(element);
|
1509 |
*/
|
1510 |
|
1511 |
var NAME$4 = 'dropdown';
|
1512 |
+
var VERSION$4 = '4.3.1';
|
1513 |
var DATA_KEY$4 = 'bs.dropdown';
|
1514 |
var EVENT_KEY$4 = "." + DATA_KEY$4;
|
1515 |
var DATA_API_KEY$4 = '.data-api';
|
1738 |
if (this._popper !== null) {
|
1739 |
this._popper.scheduleUpdate();
|
1740 |
}
|
1741 |
+
} // Private
|
1742 |
+
;
|
1743 |
|
1744 |
_proto._addEventListeners = function _addEventListeners() {
|
1745 |
var _this = this;
|
1795 |
return $(this._element).closest('.navbar').length > 0;
|
1796 |
};
|
1797 |
|
1798 |
+
_proto._getOffset = function _getOffset() {
|
1799 |
var _this2 = this;
|
1800 |
|
1801 |
+
var offset = {};
|
1802 |
|
1803 |
if (typeof this._config.offset === 'function') {
|
1804 |
+
offset.fn = function (data) {
|
1805 |
+
data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});
|
1806 |
return data;
|
1807 |
};
|
1808 |
} else {
|
1809 |
+
offset.offset = this._config.offset;
|
1810 |
}
|
1811 |
|
1812 |
+
return offset;
|
1813 |
+
};
|
1814 |
+
|
1815 |
+
_proto._getPopperConfig = function _getPopperConfig() {
|
1816 |
var popperConfig = {
|
1817 |
placement: this._getPlacement(),
|
1818 |
modifiers: {
|
1819 |
+
offset: this._getOffset(),
|
1820 |
flip: {
|
1821 |
enabled: this._config.flip
|
1822 |
},
|
1834 |
}
|
1835 |
|
1836 |
return popperConfig;
|
1837 |
+
} // Static
|
1838 |
+
;
|
1839 |
|
1840 |
Dropdown._jQueryInterface = function _jQueryInterface(config) {
|
1841 |
return this.each(function () {
|
1919 |
}
|
1920 |
|
1921 |
return parent || element.parentNode;
|
1922 |
+
} // eslint-disable-next-line complexity
|
1923 |
+
;
|
1924 |
|
1925 |
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
1926 |
// If not input/textarea:
|
2035 |
*/
|
2036 |
|
2037 |
var NAME$5 = 'modal';
|
2038 |
+
var VERSION$5 = '4.3.1';
|
2039 |
var DATA_KEY$5 = 'bs.modal';
|
2040 |
var EVENT_KEY$5 = "." + DATA_KEY$5;
|
2041 |
var DATA_API_KEY$5 = '.data-api';
|
2068 |
CLICK_DATA_API: "click" + EVENT_KEY$5 + DATA_API_KEY$5
|
2069 |
};
|
2070 |
var ClassName$5 = {
|
2071 |
+
SCROLLABLE: 'modal-dialog-scrollable',
|
2072 |
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
2073 |
BACKDROP: 'modal-backdrop',
|
2074 |
OPEN: 'modal-open',
|
2077 |
};
|
2078 |
var Selector$5 = {
|
2079 |
DIALOG: '.modal-dialog',
|
2080 |
+
MODAL_BODY: '.modal-body',
|
2081 |
DATA_TOGGLE: '[data-toggle="modal"]',
|
2082 |
DATA_DISMISS: '[data-dismiss="modal"]',
|
2083 |
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
2230 |
|
2231 |
_proto.handleUpdate = function handleUpdate() {
|
2232 |
this._adjustDialog();
|
2233 |
+
} // Private
|
2234 |
+
;
|
2235 |
|
2236 |
_proto._getConfig = function _getConfig(config) {
|
2237 |
config = _objectSpread({}, Default$3, config);
|
2255 |
|
2256 |
this._element.setAttribute('aria-modal', true);
|
2257 |
|
2258 |
+
if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {
|
2259 |
+
this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0;
|
2260 |
+
} else {
|
2261 |
+
this._element.scrollTop = 0;
|
2262 |
+
}
|
2263 |
|
2264 |
if (transition) {
|
2265 |
Util.reflow(this._element);
|
2429 |
} else if (callback) {
|
2430 |
callback();
|
2431 |
}
|
2432 |
+
} // ----------------------------------------------------------------------
|
2433 |
// the following methods are used to handle overflowing modals
|
2434 |
// todo (fat): these should probably be refactored out of modal.js
|
2435 |
// ----------------------------------------------------------------------
|
2436 |
+
;
|
2437 |
|
2438 |
_proto._adjustDialog = function _adjustDialog() {
|
2439 |
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
2518 |
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
2519 |
document.body.removeChild(scrollDiv);
|
2520 |
return scrollbarWidth;
|
2521 |
+
} // Static
|
2522 |
+
;
|
2523 |
|
2524 |
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
2525 |
return this.each(function () {
|
2610 |
return Modal._jQueryInterface;
|
2611 |
};
|
2612 |
|
2613 |
+
/**
|
2614 |
+
* --------------------------------------------------------------------------
|
2615 |
+
* Bootstrap (v4.3.1): tools/sanitizer.js
|
2616 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
2617 |
+
* --------------------------------------------------------------------------
|
2618 |
+
*/
|
2619 |
+
var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
|
2620 |
+
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
|
2621 |
+
var DefaultWhitelist = {
|
2622 |
+
// Global attributes allowed on any supplied element below.
|
2623 |
+
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
|
2624 |
+
a: ['target', 'href', 'title', 'rel'],
|
2625 |
+
area: [],
|
2626 |
+
b: [],
|
2627 |
+
br: [],
|
2628 |
+
col: [],
|
2629 |
+
code: [],
|
2630 |
+
div: [],
|
2631 |
+
em: [],
|
2632 |
+
hr: [],
|
2633 |
+
h1: [],
|
2634 |
+
h2: [],
|
2635 |
+
h3: [],
|
2636 |
+
h4: [],
|
2637 |
+
h5: [],
|
2638 |
+
h6: [],
|
2639 |
+
i: [],
|
2640 |
+
img: ['src', 'alt', 'title', 'width', 'height'],
|
2641 |
+
li: [],
|
2642 |
+
ol: [],
|
2643 |
+
p: [],
|
2644 |
+
pre: [],
|
2645 |
+
s: [],
|
2646 |
+
small: [],
|
2647 |
+
span: [],
|
2648 |
+
sub: [],
|
2649 |
+
sup: [],
|
2650 |
+
strong: [],
|
2651 |
+
u: [],
|
2652 |
+
ul: []
|
2653 |
+
/**
|
2654 |
+
* A pattern that recognizes a commonly useful subset of URLs that are safe.
|
2655 |
+
*
|
2656 |
+
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
2657 |
+
*/
|
2658 |
+
|
2659 |
+
};
|
2660 |
+
var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
|
2661 |
+
/**
|
2662 |
+
* A pattern that matches safe data URLs. Only matches image, video and audio types.
|
2663 |
+
*
|
2664 |
+
* Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
|
2665 |
+
*/
|
2666 |
+
|
2667 |
+
var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
|
2668 |
+
|
2669 |
+
function allowedAttribute(attr, allowedAttributeList) {
|
2670 |
+
var attrName = attr.nodeName.toLowerCase();
|
2671 |
+
|
2672 |
+
if (allowedAttributeList.indexOf(attrName) !== -1) {
|
2673 |
+
if (uriAttrs.indexOf(attrName) !== -1) {
|
2674 |
+
return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
|
2675 |
+
}
|
2676 |
+
|
2677 |
+
return true;
|
2678 |
+
}
|
2679 |
+
|
2680 |
+
var regExp = allowedAttributeList.filter(function (attrRegex) {
|
2681 |
+
return attrRegex instanceof RegExp;
|
2682 |
+
}); // Check if a regular expression validates the attribute.
|
2683 |
+
|
2684 |
+
for (var i = 0, l = regExp.length; i < l; i++) {
|
2685 |
+
if (attrName.match(regExp[i])) {
|
2686 |
+
return true;
|
2687 |
+
}
|
2688 |
+
}
|
2689 |
+
|
2690 |
+
return false;
|
2691 |
+
}
|
2692 |
+
|
2693 |
+
function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
|
2694 |
+
if (unsafeHtml.length === 0) {
|
2695 |
+
return unsafeHtml;
|
2696 |
+
}
|
2697 |
+
|
2698 |
+
if (sanitizeFn && typeof sanitizeFn === 'function') {
|
2699 |
+
return sanitizeFn(unsafeHtml);
|
2700 |
+
}
|
2701 |
+
|
2702 |
+
var domParser = new window.DOMParser();
|
2703 |
+
var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
|
2704 |
+
var whitelistKeys = Object.keys(whiteList);
|
2705 |
+
var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
|
2706 |
+
|
2707 |
+
var _loop = function _loop(i, len) {
|
2708 |
+
var el = elements[i];
|
2709 |
+
var elName = el.nodeName.toLowerCase();
|
2710 |
+
|
2711 |
+
if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
|
2712 |
+
el.parentNode.removeChild(el);
|
2713 |
+
return "continue";
|
2714 |
+
}
|
2715 |
+
|
2716 |
+
var attributeList = [].slice.call(el.attributes);
|
2717 |
+
var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
|
2718 |
+
attributeList.forEach(function (attr) {
|
2719 |
+
if (!allowedAttribute(attr, whitelistedAttributes)) {
|
2720 |
+
el.removeAttribute(attr.nodeName);
|
2721 |
+
}
|
2722 |
+
});
|
2723 |
+
};
|
2724 |
+
|
2725 |
+
for (var i = 0, len = elements.length; i < len; i++) {
|
2726 |
+
var _ret = _loop(i, len);
|
2727 |
+
|
2728 |
+
if (_ret === "continue") continue;
|
2729 |
+
}
|
2730 |
+
|
2731 |
+
return createdDocument.body.innerHTML;
|
2732 |
+
}
|
2733 |
+
|
2734 |
/**
|
2735 |
* ------------------------------------------------------------------------
|
2736 |
* Constants
|
2738 |
*/
|
2739 |
|
2740 |
var NAME$6 = 'tooltip';
|
2741 |
+
var VERSION$6 = '4.3.1';
|
2742 |
var DATA_KEY$6 = 'bs.tooltip';
|
2743 |
var EVENT_KEY$6 = "." + DATA_KEY$6;
|
2744 |
var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];
|
2745 |
var CLASS_PREFIX = 'bs-tooltip';
|
2746 |
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
2747 |
+
var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
|
2748 |
var DefaultType$4 = {
|
2749 |
animation: 'boolean',
|
2750 |
template: 'string',
|
2754 |
html: 'boolean',
|
2755 |
selector: '(string|boolean)',
|
2756 |
placement: '(string|function)',
|
2757 |
+
offset: '(number|string|function)',
|
2758 |
container: '(string|element|boolean)',
|
2759 |
fallbackPlacement: '(string|array)',
|
2760 |
+
boundary: '(string|element)',
|
2761 |
+
sanitize: 'boolean',
|
2762 |
+
sanitizeFn: '(null|function)',
|
2763 |
+
whiteList: 'object'
|
2764 |
};
|
2765 |
var AttachmentMap$1 = {
|
2766 |
AUTO: 'auto',
|
2781 |
offset: 0,
|
2782 |
container: false,
|
2783 |
fallbackPlacement: 'flip',
|
2784 |
+
boundary: 'scrollParent',
|
2785 |
+
sanitize: true,
|
2786 |
+
sanitizeFn: null,
|
2787 |
+
whiteList: DefaultWhitelist
|
2788 |
};
|
2789 |
var HoverState = {
|
2790 |
SHOW: 'show',
|
2969 |
this._popper = new Popper(this.element, tip, {
|
2970 |
placement: attachment,
|
2971 |
modifiers: {
|
2972 |
+
offset: this._getOffset(),
|
|
|
|
|
2973 |
flip: {
|
2974 |
behavior: this.config.fallbackPlacement
|
2975 |
},
|
3078 |
if (this._popper !== null) {
|
3079 |
this._popper.scheduleUpdate();
|
3080 |
}
|
3081 |
+
} // Protected
|
3082 |
+
;
|
3083 |
|
3084 |
_proto.isWithContent = function isWithContent() {
|
3085 |
return Boolean(this.getTitle());
|
3101 |
};
|
3102 |
|
3103 |
_proto.setElementContent = function setElementContent($element, content) {
|
|
|
|
|
3104 |
if (typeof content === 'object' && (content.nodeType || content.jquery)) {
|
3105 |
// Content is a DOM node or a jQuery
|
3106 |
+
if (this.config.html) {
|
3107 |
if (!$(content).parent().is($element)) {
|
3108 |
$element.empty().append(content);
|
3109 |
}
|
3110 |
} else {
|
3111 |
$element.text($(content).text());
|
3112 |
}
|
3113 |
+
|
3114 |
+
return;
|
3115 |
+
}
|
3116 |
+
|
3117 |
+
if (this.config.html) {
|
3118 |
+
if (this.config.sanitize) {
|
3119 |
+
content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
|
3120 |
+
}
|
3121 |
+
|
3122 |
+
$element.html(content);
|
3123 |
} else {
|
3124 |
+
$element.text(content);
|
3125 |
}
|
3126 |
};
|
3127 |
|
3133 |
}
|
3134 |
|
3135 |
return title;
|
3136 |
+
} // Private
|
3137 |
+
;
|
3138 |
+
|
3139 |
+
_proto._getOffset = function _getOffset() {
|
3140 |
+
var _this3 = this;
|
3141 |
+
|
3142 |
+
var offset = {};
|
3143 |
+
|
3144 |
+
if (typeof this.config.offset === 'function') {
|
3145 |
+
offset.fn = function (data) {
|
3146 |
+
data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.element) || {});
|
3147 |
+
return data;
|
3148 |
+
};
|
3149 |
+
} else {
|
3150 |
+
offset.offset = this.config.offset;
|
3151 |
+
}
|
3152 |
|
3153 |
+
return offset;
|
3154 |
+
};
|
3155 |
|
3156 |
_proto._getContainer = function _getContainer() {
|
3157 |
if (this.config.container === false) {
|
3170 |
};
|
3171 |
|
3172 |
_proto._setListeners = function _setListeners() {
|
3173 |
+
var _this4 = this;
|
3174 |
|
3175 |
var triggers = this.config.trigger.split(' ');
|
3176 |
triggers.forEach(function (trigger) {
|
3177 |
if (trigger === 'click') {
|
3178 |
+
$(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
|
3179 |
+
return _this4.toggle(event);
|
3180 |
});
|
3181 |
} else if (trigger !== Trigger.MANUAL) {
|
3182 |
+
var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
|
3183 |
+
var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
|
3184 |
+
$(_this4.element).on(eventIn, _this4.config.selector, function (event) {
|
3185 |
+
return _this4._enter(event);
|
3186 |
+
}).on(eventOut, _this4.config.selector, function (event) {
|
3187 |
+
return _this4._leave(event);
|
3188 |
});
|
3189 |
}
|
3190 |
});
|
3191 |
$(this.element).closest('.modal').on('hide.bs.modal', function () {
|
3192 |
+
if (_this4.element) {
|
3193 |
+
_this4.hide();
|
3194 |
}
|
3195 |
});
|
3196 |
|
3289 |
};
|
3290 |
|
3291 |
_proto._getConfig = function _getConfig(config) {
|
3292 |
+
var dataAttributes = $(this.element).data();
|
3293 |
+
Object.keys(dataAttributes).forEach(function (dataAttr) {
|
3294 |
+
if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
|
3295 |
+
delete dataAttributes[dataAttr];
|
3296 |
+
}
|
3297 |
+
});
|
3298 |
+
config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});
|
3299 |
|
3300 |
if (typeof config.delay === 'number') {
|
3301 |
config.delay = {
|
3313 |
}
|
3314 |
|
3315 |
Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);
|
3316 |
+
|
3317 |
+
if (config.sanitize) {
|
3318 |
+
config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
|
3319 |
+
}
|
3320 |
+
|
3321 |
return config;
|
3322 |
};
|
3323 |
|
3366 |
this.hide();
|
3367 |
this.show();
|
3368 |
this.config.animation = initConfigAnimation;
|
3369 |
+
} // Static
|
3370 |
+
;
|
3371 |
|
3372 |
Tooltip._jQueryInterface = function _jQueryInterface(config) {
|
3373 |
return this.each(function () {
|
3455 |
*/
|
3456 |
|
3457 |
var NAME$7 = 'popover';
|
3458 |
+
var VERSION$7 = '4.3.1';
|
3459 |
var DATA_KEY$7 = 'bs.popover';
|
3460 |
var EVENT_KEY$7 = "." + DATA_KEY$7;
|
3461 |
var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];
|
3538 |
|
3539 |
this.setElementContent($tip.find(Selector$7.CONTENT), content);
|
3540 |
$tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW);
|
3541 |
+
} // Private
|
3542 |
+
;
|
3543 |
|
3544 |
_proto._getContent = function _getContent() {
|
3545 |
return this.element.getAttribute('data-content') || this.config.content;
|
3552 |
if (tabClass !== null && tabClass.length > 0) {
|
3553 |
$tip.removeClass(tabClass.join(''));
|
3554 |
}
|
3555 |
+
} // Static
|
3556 |
+
;
|
3557 |
|
3558 |
Popover._jQueryInterface = function _jQueryInterface(config) {
|
3559 |
return this.each(function () {
|
3642 |
*/
|
3643 |
|
3644 |
var NAME$8 = 'scrollspy';
|
3645 |
+
var VERSION$8 = '4.3.1';
|
3646 |
var DATA_KEY$8 = 'bs.scrollspy';
|
3647 |
var EVENT_KEY$8 = "." + DATA_KEY$8;
|
3648 |
var DATA_API_KEY$6 = '.data-api';
|
3765 |
this._targets = null;
|
3766 |
this._activeTarget = null;
|
3767 |
this._scrollHeight = null;
|
3768 |
+
} // Private
|
3769 |
+
;
|
3770 |
|
3771 |
_proto._getConfig = function _getConfig(config) {
|
3772 |
config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});
|
3873 |
}).forEach(function (node) {
|
3874 |
return node.classList.remove(ClassName$8.ACTIVE);
|
3875 |
});
|
3876 |
+
} // Static
|
3877 |
+
;
|
3878 |
|
3879 |
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
3880 |
return this.each(function () {
|
3949 |
*/
|
3950 |
|
3951 |
var NAME$9 = 'tab';
|
3952 |
+
var VERSION$9 = '4.3.1';
|
3953 |
var DATA_KEY$9 = 'bs.tab';
|
3954 |
var EVENT_KEY$9 = "." + DATA_KEY$9;
|
3955 |
var DATA_API_KEY$7 = '.data-api';
|
4057 |
_proto.dispose = function dispose() {
|
4058 |
$.removeData(this._element, DATA_KEY$9);
|
4059 |
this._element = null;
|
4060 |
+
} // Private
|
4061 |
+
;
|
4062 |
|
4063 |
_proto._activate = function _activate(element, container, callback) {
|
4064 |
var _this2 = this;
|
4100 |
}
|
4101 |
|
4102 |
Util.reflow(element);
|
4103 |
+
|
4104 |
+
if (element.classList.contains(ClassName$9.FADE)) {
|
4105 |
+
element.classList.add(ClassName$9.SHOW);
|
4106 |
+
}
|
4107 |
|
4108 |
if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {
|
4109 |
var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];
|
4119 |
if (callback) {
|
4120 |
callback();
|
4121 |
}
|
4122 |
+
} // Static
|
4123 |
+
;
|
4124 |
|
4125 |
Tab._jQueryInterface = function _jQueryInterface(config) {
|
4126 |
return this.each(function () {
|
4184 |
*/
|
4185 |
|
4186 |
var NAME$a = 'toast';
|
4187 |
+
var VERSION$a = '4.3.1';
|
4188 |
var DATA_KEY$a = 'bs.toast';
|
4189 |
var EVENT_KEY$a = "." + DATA_KEY$a;
|
4190 |
var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];
|
4299 |
$.removeData(this._element, DATA_KEY$a);
|
4300 |
this._element = null;
|
4301 |
this._config = null;
|
4302 |
+
} // Private
|
4303 |
+
;
|
4304 |
|
4305 |
_proto._getConfig = function _getConfig(config) {
|
4306 |
config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});
|
4333 |
} else {
|
4334 |
complete();
|
4335 |
}
|
4336 |
+
} // Static
|
4337 |
+
;
|
4338 |
|
4339 |
Toast._jQueryInterface = function _jQueryInterface(config) {
|
4340 |
return this.each(function () {
|
4368 |
get: function get() {
|
4369 |
return DefaultType$7;
|
4370 |
}
|
4371 |
+
}, {
|
4372 |
+
key: "Default",
|
4373 |
+
get: function get() {
|
4374 |
+
return Default$7;
|
4375 |
+
}
|
4376 |
}]);
|
4377 |
|
4378 |
return Toast;
|
4394 |
|
4395 |
/**
|
4396 |
* --------------------------------------------------------------------------
|
4397 |
+
* Bootstrap (v4.3.1): index.js
|
4398 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
4399 |
* --------------------------------------------------------------------------
|
4400 |
*/
|
4431 |
|
4432 |
Object.defineProperty(exports, '__esModule', { value: true });
|
4433 |
|
4434 |
+
}));
|
4435 |
//# sourceMappingURL=bootstrap.js.map
|
resources/js/bootstrap4.min.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap v4.
|
3 |
-
* Copyright 2011-
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("popper.js"),require("jquery")):"function"==typeof define&&define.amd?define(["exports","popper.js","jquery"],e):e(t.bootstrap={},t.Popper,t.jQuery)}(this,function(t,u,g){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}u=u&&u.hasOwnProperty("default")?u.default:u,g=g&&g.hasOwnProperty("default")?g.default:g;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}return e&&document.querySelector(e)?e:null},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",E="bs.button",y="."+E,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+y+C,FOCUS_BLUR_DATA_API:"focus"+y+C+" blur"+y+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(S),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,E),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(E);t||(t=new n(this),g(this).data(E,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),"toggle")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L="carousel",j="bs.carousel",H="."+j,R=".data-api",U=g.fn[L],W={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},x={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},F="next",q="prev",M="left",K="right",Q={SLIDE:"slide"+H,SLID:"slid"+H,KEYDOWN:"keydown"+H,MOUSEENTER:"mouseenter"+H,MOUSELEAVE:"mouseleave"+H,TOUCHSTART:"touchstart"+H,TOUCHMOVE:"touchmove"+H,TOUCHEND:"touchend"+H,POINTERDOWN:"pointerdown"+H,POINTERUP:"pointerup"+H,DRAG_START:"dragstart"+H,LOAD_DATA_API:"load"+H+R,CLICK_DATA_API:"click"+H+R},B="carousel",V="active",Y="slide",X="carousel-item-right",z="carousel-item-left",G="carousel-item-next",J="carousel-item-prev",Z="pointer-event",$=".active",tt=".active.carousel-item",et=".carousel-item",nt=".carousel-item img",it=".carousel-item-next, .carousel-item-prev",ot=".carousel-indicators",rt="[data-slide], [data-slide-to]",st='[data-ride="carousel"]',at={TOUCH:"touch",PEN:"pen"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(F)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(":visible")&&"hidden"!==g(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?F:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},W,t),_.typeCheckConfig(L,t,x),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(Z)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===F,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll($));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===F?(n=z,i=G,M):(n=X,i=J,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+" "+i).addClass(V),g(s).removeClass(V+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},W,g(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return W}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=U,lt._jQueryInterface};var ct="collapse",ht="bs.collapse",ut="."+ht,ft=g.fn[ct],dt={toggle:!0,parent:""},gt={toggle:"boolean",parent:"(string|element)"},_t={SHOW:"show"+ut,SHOWN:"shown"+ut,HIDE:"hide"+ut,HIDDEN:"hidden"+ut,CLICK_DATA_API:"click"+ut+".data-api"},mt="show",pt="collapse",vt="collapsing",Et="collapsed",yt="width",Ct="height",Tt=".show, .collapsing",St='[data-toggle="collapse"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),"hide"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(Et).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(Et).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.typeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(yt)?yt:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(Et,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?"toggle":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It="dropdown",Dt="bs.dropdown",wt="."+Dt,At=".data-api",Nt=g.fn[It],Ot=new RegExp("38|40|27"),kt={HIDE:"hide"+wt,HIDDEN:"hidden"+wt,SHOW:"show"+wt,SHOWN:"shown"+wt,CLICK:"click"+wt,CLICK_DATA_API:"click"+wt+At,KEYDOWN_DATA_API:"keydown"+wt+At,KEYUP_DATA_API:"keyup"+wt+At},Pt="disabled",Lt="show",jt="dropup",Ht="dropright",Rt="dropleft",Ut="dropdown-menu-right",Wt="position-static",xt='[data-toggle="dropdown"]',Ft=".dropdown form",qt=".dropdown-menu",Mt=".navbar-nav",Kt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Qt="top-start",Bt="top-end",Vt="bottom-start",Yt="bottom-end",Xt="right-start",zt="left-start",Gt={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Jt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Zt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof u)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&g(t).addClass(Wt),this._popper=new u(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on("mouseover",null,g.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(Ut)&&(e=Bt)):t.hasClass(Ht)?e=Xt:t.hasClass(Rt)?e=zt:g(this._menu).hasClass(Ut)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(".navbar").length},t._getPopperConfig=function(){var e=this,t={};"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,"object"==typeof e?e:null),g(this).data(Dt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(xt)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),e[n].setAttribute("aria-expanded","false"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(xt);g(r).trigger("focus")}g(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Gt}},{key:"DefaultType",get:function(){return Jt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,xt,Zt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Zt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+" "+kt.KEYUP_DATA_API,Zt._clearMenus).on(kt.CLICK_DATA_API,xt,function(t){t.preventDefault(),t.stopPropagation(),Zt._jQueryInterface.call(g(this),"toggle")}).on(kt.CLICK_DATA_API,Ft,function(t){t.stopPropagation()}),g.fn[It]=Zt._jQueryInterface,g.fn[It].Constructor=Zt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Zt._jQueryInterface};var $t="modal",te="bs.modal",ee="."+te,ne=g.fn[$t],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},re={HIDE:"hide"+ee,HIDDEN:"hidden"+ee,SHOW:"show"+ee,SHOWN:"shown"+ee,FOCUSIN:"focusin"+ee,RESIZE:"resize"+ee,CLICK_DISMISS:"click.dismiss"+ee,KEYDOWN_DISMISS:"keydown.dismiss"+ee,MOUSEUP_DISMISS:"mouseup.dismiss"+ee,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ee,CLICK_DATA_API:"click"+ee+".data-api"},se="modal-scrollbar-measure",ae="modal-backdrop",le="modal-open",ce="fade",he="show",ue=".modal-dialog",fe='[data-toggle="modal"]',de='[data-dismiss="modal"]',ge=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",_e=".sticky-top",me=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(ue),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(ce)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,de,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(ce);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(he),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig($t,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(ce);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(he),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(le),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(ce)?ce:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=ae,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(this._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(he),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(he);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(ce)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(ge)),e=[].slice.call(document.querySelectorAll(_e));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css("padding-right");g(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css("margin-right");g(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=g(document.body).css("padding-right");g(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}g(document.body).addClass(le)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(ge));g(t).each(function(t,e){var n=g(e).data("padding-right");g(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+_e));g(e).each(function(t,e){var n=g(e).data("margin-right");"undefined"!=typeof n&&g(e).css("margin-right",n).removeData("margin-right")});var n=g(document.body).data("padding-right");g(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=se,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,fe,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?"toggle":l({},g(e).data(),g(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(":visible")&&n.focus()})});me._jQueryInterface.call(g(e),o,this)}),g.fn[$t]=me._jQueryInterface,g.fn[$t].Constructor=me,g.fn[$t].noConflict=function(){return g.fn[$t]=ne,me._jQueryInterface};var pe="tooltip",ve="bs.tooltip",Ee="."+ve,ye=g.fn[pe],Ce="bs-tooltip",Te=new RegExp("(^|\\s)"+Ce+"\\S+","g"),Se={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"},be={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ie={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},De="show",we="out",Ae={HIDE:"hide"+Ee,HIDDEN:"hidden"+Ee,SHOW:"show"+Ee,SHOWN:"shown"+Ee,INSERTED:"inserted"+Ee,CLICK:"click"+Ee,FOCUSIN:"focusin"+Ee,FOCUSOUT:"focusout"+Ee,MOUSEENTER:"mouseenter"+Ee,MOUSELEAVE:"mouseleave"+Ee},Ne="fade",Oe="show",ke=".tooltip-inner",Pe=".arrow",Le="hover",je="focus",He="click",Re="manual",Ue=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Oe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(Ne);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Pe},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Oe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===we&&e._leave(null,e)};if(g(this.tip).hasClass(Ne)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==De&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Oe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[He]=!1,this._activeTrigger[je]=!1,this._activeTrigger[Le]=!1,g(this.tip).hasClass(Ne)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ce+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(ke)),this.getTitle()),g(t).removeClass(Ne+" "+Oe)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return be[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Re){var e=t===Le?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Le?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?je:Le]=!0),g(e.getTipElement()).hasClass(Oe)||e._hoverState===De?e._hoverState=De:(clearTimeout(e._timeout),e._hoverState=De,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===De&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?je:Le]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=we,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===we&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=l({},this.constructor.Default,g(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(pe,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Te);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(Ne),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(ve),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(ve,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Ie}},{key:"NAME",get:function(){return pe}},{key:"DATA_KEY",get:function(){return ve}},{key:"Event",get:function(){return Ae}},{key:"EVENT_KEY",get:function(){return Ee}},{key:"DefaultType",get:function(){return Se}}]),i}();g.fn[pe]=Ue._jQueryInterface,g.fn[pe].Constructor=Ue,g.fn[pe].noConflict=function(){return g.fn[pe]=ye,Ue._jQueryInterface};var We="popover",xe="bs.popover",Fe="."+xe,qe=g.fn[We],Me="bs-popover",Ke=new RegExp("(^|\\s)"+Me+"\\S+","g"),Qe=l({},Ue.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Be=l({},Ue.DefaultType,{content:"(string|element|function)"}),Ve="fade",Ye="show",Xe=".popover-header",ze=".popover-body",Ge={HIDE:"hide"+Fe,HIDDEN:"hidden"+Fe,SHOW:"show"+Fe,SHOWN:"shown"+Fe,INSERTED:"inserted"+Fe,CLICK:"click"+Fe,FOCUSIN:"focusin"+Fe,FOCUSOUT:"focusout"+Fe,MOUSEENTER:"mouseenter"+Fe,MOUSELEAVE:"mouseleave"+Fe},Je=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Me+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(Xe),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ze),e),t.removeClass(Ve+" "+Ye)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ke);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(xe),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(xe,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return Qe}},{key:"NAME",get:function(){return We}},{key:"DATA_KEY",get:function(){return xe}},{key:"Event",get:function(){return Ge}},{key:"EVENT_KEY",get:function(){return Fe}},{key:"DefaultType",get:function(){return Be}}]),i}(Ue);g.fn[We]=Je._jQueryInterface,g.fn[We].Constructor=Je,g.fn[We].noConflict=function(){return g.fn[We]=qe,Je._jQueryInterface};var Ze="scrollspy",$e="bs.scrollspy",tn="."+$e,en=g.fn[Ze],nn={offset:10,method:"auto",target:""},on={offset:"number",method:"string",target:"(string|element)"},rn={ACTIVATE:"activate"+tn,SCROLL:"scroll"+tn,LOAD_DATA_API:"load"+tn+".data-api"},sn="dropdown-item",an="active",ln='[data-spy="scroll"]',cn=".nav, .list-group",hn=".nav-link",un=".nav-item",fn=".list-group-item",dn=".dropdown",gn=".dropdown-item",_n=".dropdown-toggle",mn="offset",pn="position",vn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+hn+","+this._config.target+" "+fn+","+this._config.target+" "+gn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(rn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?mn:pn,o="auto"===this._config.method?t:this._config.method,r=o===pn?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,$e),g(this._scrollElement).off(tn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},nn,"object"==typeof t&&t?t:{})).target){var e=g(t.target).attr("id");e||(e=_.getUID(Ze),g(t.target).attr("id",e)),t.target="#"+e}return _.typeCheckConfig(Ze,t,on),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=g([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(sn)?(n.closest(dn).find(_n).addClass(an),n.addClass(an)):(n.addClass(an),n.parents(cn).prev(hn+", "+fn).addClass(an),n.parents(cn).prev(un).children(hn).addClass(an)),g(this._scrollElement).trigger(rn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(an)}).forEach(function(t){return t.classList.remove(an)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data($e);if(t||(t=new n(this,"object"==typeof e&&e),g(this).data($e,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"Default",get:function(){return nn}}]),n}();g(window).on(rn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(ln)),e=t.length;e--;){var n=g(t[e]);vn._jQueryInterface.call(n,n.data())}}),g.fn[Ze]=vn._jQueryInterface,g.fn[Ze].Constructor=vn,g.fn[Ze].noConflict=function(){return g.fn[Ze]=en,vn._jQueryInterface};var En="bs.tab",yn="."+En,Cn=g.fn.tab,Tn={HIDE:"hide"+yn,HIDDEN:"hidden"+yn,SHOW:"show"+yn,SHOWN:"shown"+yn,CLICK_DATA_API:"click"+yn+".data-api"},Sn="dropdown-menu",bn="active",In="disabled",Dn="fade",wn="show",An=".dropdown",Nn=".nav, .list-group",On=".active",kn="> li > .active",Pn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',Ln=".dropdown-toggle",jn="> .dropdown-menu .active",Hn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(bn)||g(this._element).hasClass(In))){var t,i,e=g(this._element).closest(Nn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?kn:On;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(Tn.HIDE,{relatedTarget:this._element}),a=g.Event(Tn.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(Tn.HIDDEN,{relatedTarget:n._element}),e=g.Event(Tn.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,En),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(On):g(e).find(kn))[0],r=n&&o&&g(o).hasClass(Dn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(wn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(bn);var i=g(e.parentNode).find(jn)[0];i&&g(i).removeClass(bn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(bn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),g(t).addClass(wn),t.parentNode&&g(t.parentNode).hasClass(Sn)){var o=g(t).closest(An)[0];if(o){var r=[].slice.call(o.querySelectorAll(Ln));g(r).addClass(bn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(En);if(e||(e=new i(this),t.data(En,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}}]),i}();g(document).on(Tn.CLICK_DATA_API,Pn,function(t){t.preventDefault(),Hn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Hn._jQueryInterface,g.fn.tab.Constructor=Hn,g.fn.tab.noConflict=function(){return g.fn.tab=Cn,Hn._jQueryInterface};var Rn="toast",Un="bs.toast",Wn="."+Un,xn=g.fn[Rn],Fn={CLICK_DISMISS:"click.dismiss"+Wn,HIDE:"hide"+Wn,HIDDEN:"hidden"+Wn,SHOW:"show"+Wn,SHOWN:"shown"+Wn},qn="fade",Mn="hide",Kn="show",Qn="showing",Bn={animation:"boolean",autohide:"boolean",delay:"number"},Vn={animation:!0,autohide:!0,delay:500},Yn='[data-dismiss="toast"]',Xn=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(Fn.SHOW),this._config.animation&&this._element.classList.add(qn);var e=function(){t._element.classList.remove(Qn),t._element.classList.add(Kn),g(t._element).trigger(Fn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove(Mn),this._element.classList.add(Qn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Kn)&&(g(this._element).trigger(Fn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Kn)&&this._element.classList.remove(Kn),g(this._element).off(Fn.CLICK_DISMISS),g.removeData(this._element,Un),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},Vn,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Rn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(Fn.CLICK_DISMISS,Yn,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add(Mn),g(t._element).trigger(Fn.HIDDEN)};if(this._element.classList.remove(Kn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Un);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Un,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.2.1"}},{key:"DefaultType",get:function(){return Bn}}]),i}();g.fn[Rn]=Xn._jQueryInterface,g.fn[Rn].Constructor=Xn,g.fn[Rn].noConflict=function(){return g.fn[Rn]=xn,Xn._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Zt,t.Modal=me,t.Popover=Je,t.Scrollspy=vn,t.Tab=Hn,t.Toast=Xn,t.Tooltip=Ue,Object.defineProperty(t,"__esModule",{value:!0})});
|
7 |
//# sourceMappingURL=bootstrap.min.js.map
|
1 |
/*!
|
2 |
+
* Bootstrap v4.3.1 (https://getbootstrap.com/)
|
3 |
+
* Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4 |
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
*/
|
6 |
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function l(o){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{},e=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.forEach(function(t){var e,n,i;e=o,i=r[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return o}g=g&&g.hasOwnProperty("default")?g.default:g,u=u&&u.hasOwnProperty("default")?u.default:u;var e="transitionend";function n(t){var e=this,n=!1;return g(this).one(_.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||_.triggerTransitionEnd(e)},t),this}var _={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=g(t).css("transition-duration"),n=g(t).css("transition-delay"),i=parseFloat(e),o=parseFloat(n);return i||o?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){g(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],r=e[i],s=r&&_.isElement(r)?"element":(a=r,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var a},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"!=typeof t.getRootNode)return t instanceof ShadowRoot?t:t.parentNode?_.findShadowRoot(t.parentNode):null;var e=t.getRootNode();return e instanceof ShadowRoot?e:null}};g.fn.emulateTransitionEnd=n,g.event.special[_.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(g(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var o="alert",r="bs.alert",a="."+r,c=g.fn[o],h={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",m="show",p=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){g.removeData(this._element,r),this._element=null},t._getRootElement=function(t){var e=_.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=g(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=g.Event(h.CLOSE);return g(t).trigger(e),e},t._removeElement=function(e){var n=this;if(g(e).removeClass(m),g(e).hasClass(d)){var t=_.getTransitionDurationFromElement(e);g(e).one(_.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){g(t).detach().trigger(h.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(r);e||(e=new i(this),t.data(r,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(h.CLICK_DATA_API,'[data-dismiss="alert"]',p._handleDismiss(new p)),g.fn[o]=p._jQueryInterface,g.fn[o].Constructor=p,g.fn[o].noConflict=function(){return g.fn[o]=c,p._jQueryInterface};var v="button",y="bs.button",E="."+y,C=".data-api",T=g.fn[v],S="active",b="btn",I="focus",D='[data-toggle^="button"]',w='[data-toggle="buttons"]',A='input:not([type="hidden"])',N=".active",O=".btn",k={CLICK_DATA_API:"click"+E+C,FOCUS_BLUR_DATA_API:"focus"+E+C+" blur"+E+C},P=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=g(this._element).closest(w)[0];if(n){var i=this._element.querySelector(A);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(S))t=!1;else{var o=n.querySelector(N);o&&g(o).removeClass(S)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!this._element.classList.contains(S),g(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(S)),t&&g(this._element).toggleClass(S)},t.dispose=function(){g.removeData(this._element,y),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(y);t||(t=new n(this),g(this).data(y,t)),"toggle"===e&&t[e]()})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),n}();g(document).on(k.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;g(e).hasClass(b)||(e=g(e).closest(O)),P._jQueryInterface.call(g(e),"toggle")}).on(k.FOCUS_BLUR_DATA_API,D,function(t){var e=g(t.target).closest(O)[0];g(e).toggleClass(I,/^focus(in)?$/.test(t.type))}),g.fn[v]=P._jQueryInterface,g.fn[v].Constructor=P,g.fn[v].noConflict=function(){return g.fn[v]=T,P._jQueryInterface};var L="carousel",j="bs.carousel",H="."+j,R=".data-api",x=g.fn[L],F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},U={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},W="next",q="prev",M="left",K="right",Q={SLIDE:"slide"+H,SLID:"slid"+H,KEYDOWN:"keydown"+H,MOUSEENTER:"mouseenter"+H,MOUSELEAVE:"mouseleave"+H,TOUCHSTART:"touchstart"+H,TOUCHMOVE:"touchmove"+H,TOUCHEND:"touchend"+H,POINTERDOWN:"pointerdown"+H,POINTERUP:"pointerup"+H,DRAG_START:"dragstart"+H,LOAD_DATA_API:"load"+H+R,CLICK_DATA_API:"click"+H+R},B="carousel",V="active",Y="slide",z="carousel-item-right",X="carousel-item-left",$="carousel-item-next",G="carousel-item-prev",J="pointer-event",Z=".active",tt=".active.carousel-item",et=".carousel-item",nt=".carousel-item img",it=".carousel-item-next, .carousel-item-prev",ot=".carousel-indicators",rt="[data-slide], [data-slide-to]",st='[data-ride="carousel"]',at={TOUCH:"touch",PEN:"pen"},lt=function(){function r(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(ot),this._touchSupported="ontouchstart"in document.documentElement||0<navigator.maxTouchPoints,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var t=r.prototype;return t.next=function(){this._isSliding||this._slide(W)},t.nextWhenVisible=function(){!document.hidden&&g(this._element).is(":visible")&&"hidden"!==g(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(q)},t.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(it)&&(_.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=this._element.querySelector(tt);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)g(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?W:q;this._slide(i,this._items[t])}},t.dispose=function(){g(this._element).off(H),g.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=l({},F,t),_.typeCheckConfig(L,t,U),t},t._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;0<e&&this.prev(),e<0&&this.next()}},t._addEventListeners=function(){var e=this;this._config.keyboard&&g(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&g(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),this._config.touch&&this._addTouchEventListeners()},t._addTouchEventListeners=function(){var n=this;if(this._touchSupported){var e=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]?n.touchStartX=t.originalEvent.clientX:n._pointerEvent||(n.touchStartX=t.originalEvent.touches[0].clientX)},i=function(t){n._pointerEvent&&at[t.originalEvent.pointerType.toUpperCase()]&&(n.touchDeltaX=t.originalEvent.clientX-n.touchStartX),n._handleSwipe(),"hover"===n._config.pause&&(n.pause(),n.touchTimeout&&clearTimeout(n.touchTimeout),n.touchTimeout=setTimeout(function(t){return n.cycle(t)},500+n._config.interval))};g(this._element.querySelectorAll(nt)).on(Q.DRAG_START,function(t){return t.preventDefault()}),this._pointerEvent?(g(this._element).on(Q.POINTERDOWN,function(t){return e(t)}),g(this._element).on(Q.POINTERUP,function(t){return i(t)}),this._element.classList.add(J)):(g(this._element).on(Q.TOUCHSTART,function(t){return e(t)}),g(this._element).on(Q.TOUCHMOVE,function(t){var e;(e=t).originalEvent.touches&&1<e.originalEvent.touches.length?n.touchDeltaX=0:n.touchDeltaX=e.originalEvent.touches[0].clientX-n.touchStartX}),g(this._element).on(Q.TOUCHEND,function(t){return i(t)}))}},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(et)):[],this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===W,i=t===q,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var s=(o+(t===q?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(tt)),o=g.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return g(this._element).trigger(o),o},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(Z));g(e).removeClass(V);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&g(n).addClass(V)}},t._slide=function(t,e){var n,i,o,r=this,s=this._element.querySelector(tt),a=this._getItemIndex(s),l=e||s&&this._getItemByDirection(t,s),c=this._getItemIndex(l),h=Boolean(this._interval);if(o=t===W?(n=X,i=$,M):(n=z,i=G,K),l&&g(l).hasClass(V))this._isSliding=!1;else if(!this._triggerSlideEvent(l,o).isDefaultPrevented()&&s&&l){this._isSliding=!0,h&&this.pause(),this._setActiveIndicatorElement(l);var u=g.Event(Q.SLID,{relatedTarget:l,direction:o,from:a,to:c});if(g(this._element).hasClass(Y)){g(l).addClass(i),_.reflow(l),g(s).addClass(n),g(l).addClass(n);var f=parseInt(l.getAttribute("data-interval"),10);this._config.interval=f?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,f):this._config.defaultInterval||this._config.interval;var d=_.getTransitionDurationFromElement(s);g(s).one(_.TRANSITION_END,function(){g(l).removeClass(n+" "+i).addClass(V),g(s).removeClass(V+" "+i+" "+n),r._isSliding=!1,setTimeout(function(){return g(r._element).trigger(u)},0)}).emulateTransitionEnd(d)}else g(s).removeClass(V),g(l).addClass(V),this._isSliding=!1,g(this._element).trigger(u);h&&this.cycle()}},r._jQueryInterface=function(i){return this.each(function(){var t=g(this).data(j),e=l({},F,g(this).data());"object"==typeof i&&(e=l({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new r(this,e),g(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&e.ride&&(t.pause(),t.cycle())})},r._dataApiClickHandler=function(t){var e=_.getSelectorFromElement(this);if(e){var n=g(e)[0];if(n&&g(n).hasClass(B)){var i=l({},g(n).data(),g(this).data()),o=this.getAttribute("data-slide-to");o&&(i.interval=!1),r._jQueryInterface.call(g(n),i),o&&g(n).data(j).to(o),t.preventDefault()}}},s(r,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return F}}]),r}();g(document).on(Q.CLICK_DATA_API,rt,lt._dataApiClickHandler),g(window).on(Q.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(st)),e=0,n=t.length;e<n;e++){var i=g(t[e]);lt._jQueryInterface.call(i,i.data())}}),g.fn[L]=lt._jQueryInterface,g.fn[L].Constructor=lt,g.fn[L].noConflict=function(){return g.fn[L]=x,lt._jQueryInterface};var ct="collapse",ht="bs.collapse",ut="."+ht,ft=g.fn[ct],dt={toggle:!0,parent:""},gt={toggle:"boolean",parent:"(string|element)"},_t={SHOW:"show"+ut,SHOWN:"shown"+ut,HIDE:"hide"+ut,HIDDEN:"hidden"+ut,CLICK_DATA_API:"click"+ut+".data-api"},mt="show",pt="collapse",vt="collapsing",yt="collapsed",Et="width",Ct="height",Tt=".show, .collapsing",St='[data-toggle="collapse"]',bt=function(){function a(e,t){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(t),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(St)),i=0,o=n.length;i<o;i++){var r=n[i],s=_.getSelectorFromElement(r),a=[].slice.call(document.querySelectorAll(s)).filter(function(t){return t===e});null!==s&&0<a.length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){g(this._element).hasClass(mt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!g(this._element).hasClass(mt)&&(this._parent&&0===(t=[].slice.call(this._parent.querySelectorAll(Tt)).filter(function(t){return"string"==typeof n._config.parent?t.getAttribute("data-parent")===n._config.parent:t.classList.contains(pt)})).length&&(t=null),!(t&&(e=g(t).not(this._selector).data(ht))&&e._isTransitioning))){var i=g.Event(_t.SHOW);if(g(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(g(t).not(this._selector),"hide"),e||g(t).data(ht,null));var o=this._getDimension();g(this._element).removeClass(pt).addClass(vt),this._element.style[o]=0,this._triggerArray.length&&g(this._triggerArray).removeClass(yt).attr("aria-expanded",!0),this.setTransitioning(!0);var r="scroll"+(o[0].toUpperCase()+o.slice(1)),s=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){g(n._element).removeClass(vt).addClass(pt).addClass(mt),n._element.style[o]="",n.setTransitioning(!1),g(n._element).trigger(_t.SHOWN)}).emulateTransitionEnd(s),this._element.style[o]=this._element[r]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&g(this._element).hasClass(mt)){var e=g.Event(_t.HIDE);if(g(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",_.reflow(this._element),g(this._element).addClass(vt).removeClass(pt).removeClass(mt);var i=this._triggerArray.length;if(0<i)for(var o=0;o<i;o++){var r=this._triggerArray[o],s=_.getSelectorFromElement(r);if(null!==s)g([].slice.call(document.querySelectorAll(s))).hasClass(mt)||g(r).addClass(yt).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var a=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(){t.setTransitioning(!1),g(t._element).removeClass(vt).addClass(pt).trigger(_t.HIDDEN)}).emulateTransitionEnd(a)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){g.removeData(this._element,ht),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=l({},dt,t)).toggle=Boolean(t.toggle),_.typeCheckConfig(ct,t,gt),t},t._getDimension=function(){return g(this._element).hasClass(Et)?Et:Ct},t._getParent=function(){var t,n=this;_.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=document.querySelector(this._config.parent);var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',i=[].slice.call(t.querySelectorAll(e));return g(i).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){var n=g(t).hasClass(mt);e.length&&g(e).toggleClass(yt,!n).attr("aria-expanded",n)},a._getTargetFromElement=function(t){var e=_.getSelectorFromElement(t);return e?document.querySelector(e):null},a._jQueryInterface=function(i){return this.each(function(){var t=g(this),e=t.data(ht),n=l({},dt,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(ht,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return dt}}]),a}();g(document).on(_t.CLICK_DATA_API,St,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=g(this),e=_.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(e));g(i).each(function(){var t=g(this),e=t.data(ht)?"toggle":n.data();bt._jQueryInterface.call(t,e)})}),g.fn[ct]=bt._jQueryInterface,g.fn[ct].Constructor=bt,g.fn[ct].noConflict=function(){return g.fn[ct]=ft,bt._jQueryInterface};var It="dropdown",Dt="bs.dropdown",wt="."+Dt,At=".data-api",Nt=g.fn[It],Ot=new RegExp("38|40|27"),kt={HIDE:"hide"+wt,HIDDEN:"hidden"+wt,SHOW:"show"+wt,SHOWN:"shown"+wt,CLICK:"click"+wt,CLICK_DATA_API:"click"+wt+At,KEYDOWN_DATA_API:"keydown"+wt+At,KEYUP_DATA_API:"keyup"+wt+At},Pt="disabled",Lt="show",jt="dropup",Ht="dropright",Rt="dropleft",xt="dropdown-menu-right",Ft="position-static",Ut='[data-toggle="dropdown"]',Wt=".dropdown form",qt=".dropdown-menu",Mt=".navbar-nav",Kt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Qt="top-start",Bt="top-end",Vt="bottom-start",Yt="bottom-end",zt="right-start",Xt="left-start",$t={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Gt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Jt=function(){function c(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=c.prototype;return t.toggle=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)){var t=c._getParentFromElement(this._element),e=g(this._menu).hasClass(Lt);if(c._clearMenus(),!e){var n={relatedTarget:this._element},i=g.Event(kt.SHOW,n);if(g(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof u)throw new TypeError("Bootstrap's dropdowns require Popper.js (https://popper.js.org/)");var o=this._element;"parent"===this._config.reference?o=t:_.isElement(this._config.reference)&&(o=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(o=this._config.reference[0])),"scrollParent"!==this._config.boundary&&g(t).addClass(Ft),this._popper=new u(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===g(t).closest(Mt).length&&g(document.body).children().on("mouseover",null,g.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),g(this._menu).toggleClass(Lt),g(t).toggleClass(Lt).trigger(g.Event(kt.SHOWN,n))}}}},t.show=function(){if(!(this._element.disabled||g(this._element).hasClass(Pt)||g(this._menu).hasClass(Lt))){var t={relatedTarget:this._element},e=g.Event(kt.SHOW,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.SHOWN,t)))}},t.hide=function(){if(!this._element.disabled&&!g(this._element).hasClass(Pt)&&g(this._menu).hasClass(Lt)){var t={relatedTarget:this._element},e=g.Event(kt.HIDE,t),n=c._getParentFromElement(this._element);g(n).trigger(e),e.isDefaultPrevented()||(g(this._menu).toggleClass(Lt),g(n).toggleClass(Lt).trigger(g.Event(kt.HIDDEN,t)))}},t.dispose=function(){g.removeData(this._element,Dt),g(this._element).off(wt),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;g(this._element).on(kt.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=l({},this.constructor.Default,g(this._element).data(),t),_.typeCheckConfig(It,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=c._getParentFromElement(this._element);t&&(this._menu=t.querySelector(qt))}return this._menu},t._getPlacement=function(){var t=g(this._element.parentNode),e=Vt;return t.hasClass(jt)?(e=Qt,g(this._menu).hasClass(xt)&&(e=Bt)):t.hasClass(Ht)?e=zt:t.hasClass(Rt)?e=Xt:g(this._menu).hasClass(xt)&&(e=Yt),e},t._detectNavbar=function(){return 0<g(this._element).closest(".navbar").length},t._getOffset=function(){var e=this,t={};return"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e._config.offset(t.offsets,e._element)||{}),t}:t.offset=this._config.offset,t},t._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),t},c._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(Dt);if(t||(t=new c(this,"object"==typeof e?e:null),g(this).data(Dt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},c._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=[].slice.call(document.querySelectorAll(Ut)),n=0,i=e.length;n<i;n++){var o=c._getParentFromElement(e[n]),r=g(e[n]).data(Dt),s={relatedTarget:e[n]};if(t&&"click"===t.type&&(s.clickEvent=t),r){var a=r._menu;if(g(o).hasClass(Lt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&g.contains(o,t.target))){var l=g.Event(kt.HIDE,s);g(o).trigger(l),l.isDefaultPrevented()||("ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),e[n].setAttribute("aria-expanded","false"),g(a).removeClass(Lt),g(o).removeClass(Lt).trigger(g.Event(kt.HIDDEN,s)))}}}},c._getParentFromElement=function(t){var e,n=_.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},c._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||g(t.target).closest(qt).length)):Ot.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!g(this).hasClass(Pt))){var e=c._getParentFromElement(this),n=g(e).hasClass(Lt);if(n&&(!n||27!==t.which&&32!==t.which)){var i=[].slice.call(e.querySelectorAll(Kt));if(0!==i.length){var o=i.indexOf(t.target);38===t.which&&0<o&&o--,40===t.which&&o<i.length-1&&o++,o<0&&(o=0),i[o].focus()}}else{if(27===t.which){var r=e.querySelector(Ut);g(r).trigger("focus")}g(this).trigger("click")}}},s(c,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return $t}},{key:"DefaultType",get:function(){return Gt}}]),c}();g(document).on(kt.KEYDOWN_DATA_API,Ut,Jt._dataApiKeydownHandler).on(kt.KEYDOWN_DATA_API,qt,Jt._dataApiKeydownHandler).on(kt.CLICK_DATA_API+" "+kt.KEYUP_DATA_API,Jt._clearMenus).on(kt.CLICK_DATA_API,Ut,function(t){t.preventDefault(),t.stopPropagation(),Jt._jQueryInterface.call(g(this),"toggle")}).on(kt.CLICK_DATA_API,Wt,function(t){t.stopPropagation()}),g.fn[It]=Jt._jQueryInterface,g.fn[It].Constructor=Jt,g.fn[It].noConflict=function(){return g.fn[It]=Nt,Jt._jQueryInterface};var Zt="modal",te="bs.modal",ee="."+te,ne=g.fn[Zt],ie={backdrop:!0,keyboard:!0,focus:!0,show:!0},oe={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},re={HIDE:"hide"+ee,HIDDEN:"hidden"+ee,SHOW:"show"+ee,SHOWN:"shown"+ee,FOCUSIN:"focusin"+ee,RESIZE:"resize"+ee,CLICK_DISMISS:"click.dismiss"+ee,KEYDOWN_DISMISS:"keydown.dismiss"+ee,MOUSEUP_DISMISS:"mouseup.dismiss"+ee,MOUSEDOWN_DISMISS:"mousedown.dismiss"+ee,CLICK_DATA_API:"click"+ee+".data-api"},se="modal-dialog-scrollable",ae="modal-scrollbar-measure",le="modal-backdrop",ce="modal-open",he="fade",ue="show",fe=".modal-dialog",de=".modal-body",ge='[data-toggle="modal"]',_e='[data-dismiss="modal"]',me=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",pe=".sticky-top",ve=function(){function o(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(fe),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var t=o.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){g(this._element).hasClass(he)&&(this._isTransitioning=!0);var n=g.Event(re.SHOW,{relatedTarget:t});g(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),g(this._element).on(re.CLICK_DISMISS,_e,function(t){return e.hide(t)}),g(this._dialog).on(re.MOUSEDOWN_DISMISS,function(){g(e._element).one(re.MOUSEUP_DISMISS,function(t){g(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=g.Event(re.HIDE);if(g(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=g(this._element).hasClass(he);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),g(document).off(re.FOCUSIN),g(this._element).removeClass(ue),g(this._element).off(re.CLICK_DISMISS),g(this._dialog).off(re.MOUSEDOWN_DISMISS),i){var o=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(o)}else this._hideModal()}}},t.dispose=function(){[window,this._element,this._dialog].forEach(function(t){return g(t).off(ee)}),g(document).off(re.FOCUSIN),g.removeData(this._element,te),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=l({},ie,t),_.typeCheckConfig(Zt,t,oe),t},t._showElement=function(t){var e=this,n=g(this._element).hasClass(he);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),g(this._dialog).hasClass(se)?this._dialog.querySelector(de).scrollTop=0:this._element.scrollTop=0,n&&_.reflow(this._element),g(this._element).addClass(ue),this._config.focus&&this._enforceFocus();var i=g.Event(re.SHOWN,{relatedTarget:t}),o=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,g(e._element).trigger(i)};if(n){var r=_.getTransitionDurationFromElement(this._dialog);g(this._dialog).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()},t._enforceFocus=function(){var e=this;g(document).off(re.FOCUSIN).on(re.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===g(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?g(this._element).on(re.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||g(this._element).off(re.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?g(window).on(re.RESIZE,function(t){return e.handleUpdate(t)}):g(window).off(re.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._isTransitioning=!1,this._showBackdrop(function(){g(document.body).removeClass(ce),t._resetAdjustments(),t._resetScrollbar(),g(t._element).trigger(re.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(g(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=g(this._element).hasClass(he)?he:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=le,n&&this._backdrop.classList.add(n),g(this._backdrop).appendTo(document.body),g(this._element).on(re.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&_.reflow(this._backdrop),g(this._backdrop).addClass(ue),!t)return;if(!n)return void t();var i=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){g(this._backdrop).removeClass(ue);var o=function(){e._removeBackdrop(),t&&t()};if(g(this._element).hasClass(he)){var r=_.getTransitionDurationFromElement(this._backdrop);g(this._backdrop).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var o=this;if(this._isBodyOverflowing){var t=[].slice.call(document.querySelectorAll(me)),e=[].slice.call(document.querySelectorAll(pe));g(t).each(function(t,e){var n=e.style.paddingRight,i=g(e).css("padding-right");g(e).data("padding-right",n).css("padding-right",parseFloat(i)+o._scrollbarWidth+"px")}),g(e).each(function(t,e){var n=e.style.marginRight,i=g(e).css("margin-right");g(e).data("margin-right",n).css("margin-right",parseFloat(i)-o._scrollbarWidth+"px")});var n=document.body.style.paddingRight,i=g(document.body).css("padding-right");g(document.body).data("padding-right",n).css("padding-right",parseFloat(i)+this._scrollbarWidth+"px")}g(document.body).addClass(ce)},t._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(me));g(t).each(function(t,e){var n=g(e).data("padding-right");g(e).removeData("padding-right"),e.style.paddingRight=n||""});var e=[].slice.call(document.querySelectorAll(""+pe));g(e).each(function(t,e){var n=g(e).data("margin-right");"undefined"!=typeof n&&g(e).css("margin-right",n).removeData("margin-right")});var n=g(document.body).data("padding-right");g(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=ae,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},o._jQueryInterface=function(n,i){return this.each(function(){var t=g(this).data(te),e=l({},ie,g(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new o(this,e),g(this).data(te,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},s(o,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return ie}}]),o}();g(document).on(re.CLICK_DATA_API,ge,function(t){var e,n=this,i=_.getSelectorFromElement(this);i&&(e=document.querySelector(i));var o=g(e).data(te)?"toggle":l({},g(e).data(),g(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var r=g(e).one(re.SHOW,function(t){t.isDefaultPrevented()||r.one(re.HIDDEN,function(){g(n).is(":visible")&&n.focus()})});ve._jQueryInterface.call(g(e),o,this)}),g.fn[Zt]=ve._jQueryInterface,g.fn[Zt].Constructor=ve,g.fn[Zt].noConflict=function(){return g.fn[Zt]=ne,ve._jQueryInterface};var ye=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Ee={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Ce=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,Te=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;function Se(t,s,e){if(0===t.length)return t;if(e&&"function"==typeof e)return e(t);for(var n=(new window.DOMParser).parseFromString(t,"text/html"),a=Object.keys(s),l=[].slice.call(n.body.querySelectorAll("*")),i=function(t,e){var n=l[t],i=n.nodeName.toLowerCase();if(-1===a.indexOf(n.nodeName.toLowerCase()))return n.parentNode.removeChild(n),"continue";var o=[].slice.call(n.attributes),r=[].concat(s["*"]||[],s[i]||[]);o.forEach(function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===ye.indexOf(n)||Boolean(t.nodeValue.match(Ce)||t.nodeValue.match(Te));for(var i=e.filter(function(t){return t instanceof RegExp}),o=0,r=i.length;o<r;o++)if(n.match(i[o]))return!0;return!1})(t,r)||n.removeAttribute(t.nodeName)})},o=0,r=l.length;o<r;o++)i(o);return n.body.innerHTML}var be="tooltip",Ie="bs.tooltip",De="."+Ie,we=g.fn[be],Ae="bs-tooltip",Ne=new RegExp("(^|\\s)"+Ae+"\\S+","g"),Oe=["sanitize","whiteList","sanitizeFn"],ke={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object"},Pe={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Le={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ye),e="object"==typeof n?n:null;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ye,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Je}},{key:"NAME",get:function(){return Ve}},{key:"DATA_KEY",get:function(){return Ye}},{key:"Event",get:function(){return rn}},{key:"EVENT_KEY",get:function(){return ze}},{key:"DefaultType",get:function(){return Ze}}]),i}(Be);g.fn[Ve]=sn._jQueryInterface,g.fn[Ve].Constructor=sn,g.fn[Ve].noConflict=function(){return g.fn[Ve]=Xe,sn._jQueryInterface};var an="scrollspy",ln="bs.scrollspy",cn="."+ln,hn=g.fn[an],un={offset:10,method:"auto",target:""},fn={offset:"number",method:"string",target:"(string|element)"},dn={ACTIVATE:"activate"+cn,SCROLL:"scroll"+cn,LOAD_DATA_API:"load"+cn+".data-api"},gn="dropdown-item",_n="active",mn='[data-spy="scroll"]',pn=".nav, .list-group",vn=".nav-link",yn=".nav-item",En=".list-group-item",Cn=".dropdown",Tn=".dropdown-item",Sn=".dropdown-toggle",bn="offset",In="position",Dn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+vn+","+this._config.target+" "+En+","+this._config.target+" "+Tn,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,g(this._scrollElement).on(dn.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?bn:In,o="auto"===this._config.method?t:this._config.method,r=o===In?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map(function(t){var e,n=_.getSelectorFromElement(t);if(n&&(e=document.querySelector(n)),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[g(e)[o]().top+r,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){g.removeData(this._element,ln),g(this._scrollElement).off(cn),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=l({},un,"object"==typeof t&&t?t:{})).target){var e=g(t.target).attr("id");e||(e=_.getUID(an),g(t.target).attr("id",e)),t.target="#"+e}return _.typeCheckConfig(an,t,fn),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;){this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",").map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'}),n=g([].slice.call(document.querySelectorAll(t.join(","))));n.hasClass(gn)?(n.closest(Cn).find(Sn).addClass(_n),n.addClass(_n)):(n.addClass(_n),n.parents(pn).prev(vn+", "+En).addClass(_n),n.parents(pn).prev(yn).children(vn).addClass(_n)),g(this._scrollElement).trigger(dn.ACTIVATE,{relatedTarget:e})},t._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter(function(t){return t.classList.contains(_n)}).forEach(function(t){return t.classList.remove(_n)})},n._jQueryInterface=function(e){return this.each(function(){var t=g(this).data(ln);if(t||(t=new n(this,"object"==typeof e&&e),g(this).data(ln,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},s(n,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return un}}]),n}();g(window).on(dn.LOAD_DATA_API,function(){for(var t=[].slice.call(document.querySelectorAll(mn)),e=t.length;e--;){var n=g(t[e]);Dn._jQueryInterface.call(n,n.data())}}),g.fn[an]=Dn._jQueryInterface,g.fn[an].Constructor=Dn,g.fn[an].noConflict=function(){return g.fn[an]=hn,Dn._jQueryInterface};var wn="bs.tab",An="."+wn,Nn=g.fn.tab,On={HIDE:"hide"+An,HIDDEN:"hidden"+An,SHOW:"show"+An,SHOWN:"shown"+An,CLICK_DATA_API:"click"+An+".data-api"},kn="dropdown-menu",Pn="active",Ln="disabled",jn="fade",Hn="show",Rn=".dropdown",xn=".nav, .list-group",Fn=".active",Un="> li > .active",Wn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',qn=".dropdown-toggle",Mn="> .dropdown-menu .active",Kn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&g(this._element).hasClass(Pn)||g(this._element).hasClass(Ln))){var t,i,e=g(this._element).closest(xn)[0],o=_.getSelectorFromElement(this._element);if(e){var r="UL"===e.nodeName||"OL"===e.nodeName?Un:Fn;i=(i=g.makeArray(g(e).find(r)))[i.length-1]}var s=g.Event(On.HIDE,{relatedTarget:this._element}),a=g.Event(On.SHOW,{relatedTarget:i});if(i&&g(i).trigger(s),g(this._element).trigger(a),!a.isDefaultPrevented()&&!s.isDefaultPrevented()){o&&(t=document.querySelector(o)),this._activate(this._element,e);var l=function(){var t=g.Event(On.HIDDEN,{relatedTarget:n._element}),e=g.Event(On.SHOWN,{relatedTarget:i});g(i).trigger(t),g(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){g.removeData(this._element,wn),this._element=null},t._activate=function(t,e,n){var i=this,o=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?g(e).children(Fn):g(e).find(Un))[0],r=n&&o&&g(o).hasClass(jn),s=function(){return i._transitionComplete(t,o,n)};if(o&&r){var a=_.getTransitionDurationFromElement(o);g(o).removeClass(Hn).one(_.TRANSITION_END,s).emulateTransitionEnd(a)}else s()},t._transitionComplete=function(t,e,n){if(e){g(e).removeClass(Pn);var i=g(e.parentNode).find(Mn)[0];i&&g(i).removeClass(Pn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(g(t).addClass(Pn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),_.reflow(t),t.classList.contains(jn)&&t.classList.add(Hn),t.parentNode&&g(t.parentNode).hasClass(kn)){var o=g(t).closest(Rn)[0];if(o){var r=[].slice.call(o.querySelectorAll(qn));g(r).addClass(Pn)}t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(wn);if(e||(e=new i(this),t.data(wn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}}]),i}();g(document).on(On.CLICK_DATA_API,Wn,function(t){t.preventDefault(),Kn._jQueryInterface.call(g(this),"show")}),g.fn.tab=Kn._jQueryInterface,g.fn.tab.Constructor=Kn,g.fn.tab.noConflict=function(){return g.fn.tab=Nn,Kn._jQueryInterface};var Qn="toast",Bn="bs.toast",Vn="."+Bn,Yn=g.fn[Qn],zn={CLICK_DISMISS:"click.dismiss"+Vn,HIDE:"hide"+Vn,HIDDEN:"hidden"+Vn,SHOW:"show"+Vn,SHOWN:"shown"+Vn},Xn="fade",$n="hide",Gn="show",Jn="showing",Zn={animation:"boolean",autohide:"boolean",delay:"number"},ti={animation:!0,autohide:!0,delay:500},ei='[data-dismiss="toast"]',ni=function(){function i(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var t=i.prototype;return t.show=function(){var t=this;g(this._element).trigger(zn.SHOW),this._config.animation&&this._element.classList.add(Xn);var e=function(){t._element.classList.remove(Jn),t._element.classList.add(Gn),g(t._element).trigger(zn.SHOWN),t._config.autohide&&t.hide()};if(this._element.classList.remove($n),this._element.classList.add(Jn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},t.hide=function(t){var e=this;this._element.classList.contains(Gn)&&(g(this._element).trigger(zn.HIDE),t?this._close():this._timeout=setTimeout(function(){e._close()},this._config.delay))},t.dispose=function(){clearTimeout(this._timeout),this._timeout=null,this._element.classList.contains(Gn)&&this._element.classList.remove(Gn),g(this._element).off(zn.CLICK_DISMISS),g.removeData(this._element,Bn),this._element=null,this._config=null},t._getConfig=function(t){return t=l({},ti,g(this._element).data(),"object"==typeof t&&t?t:{}),_.typeCheckConfig(Qn,t,this.constructor.DefaultType),t},t._setListeners=function(){var t=this;g(this._element).on(zn.CLICK_DISMISS,ei,function(){return t.hide(!0)})},t._close=function(){var t=this,e=function(){t._element.classList.add($n),g(t._element).trigger(zn.HIDDEN)};if(this._element.classList.remove(Gn),this._config.animation){var n=_.getTransitionDurationFromElement(this._element);g(this._element).one(_.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},i._jQueryInterface=function(n){return this.each(function(){var t=g(this),e=t.data(Bn);if(e||(e=new i(this,"object"==typeof n&&n),t.data(Bn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n](this)}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"DefaultType",get:function(){return Zn}},{key:"Default",get:function(){return ti}}]),i}();g.fn[Qn]=ni._jQueryInterface,g.fn[Qn].Constructor=ni,g.fn[Qn].noConflict=function(){return g.fn[Qn]=Yn,ni._jQueryInterface},function(){if("undefined"==typeof g)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=g.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||4<=t[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),t.Util=_,t.Alert=p,t.Button=P,t.Carousel=lt,t.Collapse=bt,t.Dropdown=Jt,t.Modal=ve,t.Popover=sn,t.Scrollspy=Dn,t.Tab=Kn,t.Toast=ni,t.Tooltip=Be,Object.defineProperty(t,"__esModule",{value:!0})});
|
7 |
//# sourceMappingURL=bootstrap.min.js.map
|
resources/js/shield-import.js
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
*/
|
3 |
+
jQuery.fn.icwpWpsfImportExport = function ( aOptions ) {
|
4 |
+
|
5 |
+
var startScans = function ( evt ) {
|
6 |
+
evt.preventDefault();
|
7 |
+
sendReq( { 'form_params': $oThis.serialize() } );
|
8 |
+
return false;
|
9 |
+
};
|
10 |
+
|
11 |
+
var sendReq = function ( aParams ) {
|
12 |
+
iCWP_WPSF_BodyOverlay.show();
|
13 |
+
|
14 |
+
var aReqData = aOpts[ 'ajax_import_from_site' ];
|
15 |
+
jQuery.post( ajaxurl, jQuery.extend( aReqData, aParams ),
|
16 |
+
function ( oResponse ) {
|
17 |
+
|
18 |
+
if ( oResponse.success ) {
|
19 |
+
iCWP_WPSF_Toaster.showMessage( oResponse.data.message, oResponse.success );
|
20 |
+
location.reload( true );
|
21 |
+
}
|
22 |
+
else {
|
23 |
+
var sMessage = 'Communications error with site.';
|
24 |
+
if ( oResponse.data.message !== undefined ) {
|
25 |
+
sMessage = oResponse.data.message;
|
26 |
+
}
|
27 |
+
alert( sMessage );
|
28 |
+
iCWP_WPSF_BodyOverlay.hide();
|
29 |
+
}
|
30 |
+
|
31 |
+
}
|
32 |
+
).always( function () {
|
33 |
+
}
|
34 |
+
);
|
35 |
+
};
|
36 |
+
|
37 |
+
var initialise = function () {
|
38 |
+
jQuery( document ).ready( function () {
|
39 |
+
$oThis.on( 'submit', startScans );
|
40 |
+
} );
|
41 |
+
};
|
42 |
+
|
43 |
+
var $oThis = this;
|
44 |
+
var aOpts = jQuery.extend( {}, aOptions );
|
45 |
+
initialise();
|
46 |
+
|
47 |
+
return this;
|
48 |
+
};
|
src/common/icwp-data.php
CHANGED
@@ -147,8 +147,7 @@ class ICWP_WPSF_DataProcessor extends ICWP_WPSF_Foundation {
|
|
147 |
|
148 |
$sUrl = trim( $this->urlStripQueryPart( $sUrl ) );
|
149 |
if ( filter_var( $sUrl, FILTER_VALIDATE_URL ) ) { // we have a scheme+host
|
150 |
-
|
151 |
-
if ( in_array( $aParts[ 'scheme' ], array( 'http', 'https' ) ) ) {
|
152 |
$sValidatedUrl = rtrim( $sUrl, '/' );
|
153 |
}
|
154 |
}
|
147 |
|
148 |
$sUrl = trim( $this->urlStripQueryPart( $sUrl ) );
|
149 |
if ( filter_var( $sUrl, FILTER_VALIDATE_URL ) ) { // we have a scheme+host
|
150 |
+
if ( in_array( parse_url( $sUrl, PHP_URL_SCHEME ), array( 'http', 'https' ) ) ) {
|
|
|
151 |
$sValidatedUrl = rtrim( $sUrl, '/' );
|
152 |
}
|
153 |
}
|
src/common/icwp-optionsvo.php
CHANGED
@@ -420,11 +420,13 @@ class ICWP_WPSF_OptionsVO extends ICWP_WPSF_Foundation {
|
|
420 |
public function getOptDefault( $sOptionKey, $mDefault = null ) {
|
421 |
foreach ( $this->getRawData_AllOptions() as $aOption ) {
|
422 |
if ( $aOption[ 'key' ] == $sOptionKey ) {
|
423 |
-
if ( isset( $aOption[ '
|
424 |
-
|
|
|
425 |
}
|
426 |
-
|
427 |
-
|
|
|
428 |
}
|
429 |
}
|
430 |
}
|
@@ -600,6 +602,21 @@ class ICWP_WPSF_OptionsVO extends ICWP_WPSF_Foundation {
|
|
600 |
return $this->bRebuildFromFile;
|
601 |
}
|
602 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
603 |
/**
|
604 |
* @return bool
|
605 |
*/
|
420 |
public function getOptDefault( $sOptionKey, $mDefault = null ) {
|
421 |
foreach ( $this->getRawData_AllOptions() as $aOption ) {
|
422 |
if ( $aOption[ 'key' ] == $sOptionKey ) {
|
423 |
+
if ( isset( $aOption[ 'default' ] ) ) {
|
424 |
+
$mDefault = $aOption[ 'default' ];
|
425 |
+
break;
|
426 |
}
|
427 |
+
if ( isset( $aOption[ 'value' ] ) ) {
|
428 |
+
$mDefault = $aOption[ 'value' ];
|
429 |
+
break;
|
430 |
}
|
431 |
}
|
432 |
}
|
602 |
return $this->bRebuildFromFile;
|
603 |
}
|
604 |
|
605 |
+
/**
|
606 |
+
* @param string $sKey
|
607 |
+
* @return string
|
608 |
+
*/
|
609 |
+
public function getSelectOptionValueText( $sKey ) {
|
610 |
+
$sText = '';
|
611 |
+
foreach ( $this->getOptDefinition( $sKey )[ 'value_options' ] as $aOpt ) {
|
612 |
+
if ( $aOpt[ 'value_key' ] == $this->getOpt( $sKey ) ) {
|
613 |
+
$sText = $aOpt[ 'text' ];
|
614 |
+
break;
|
615 |
+
}
|
616 |
+
}
|
617 |
+
return $sText;
|
618 |
+
}
|
619 |
+
|
620 |
/**
|
621 |
* @return bool
|
622 |
*/
|
src/common/icwp-serviceproviders.php
CHANGED
@@ -8,6 +8,7 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
8 |
class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
9 |
|
10 |
const URL_STATUS_CAKE_IPS = 'https://app.statuscake.com/Workfloor/Locations.php?format=json';
|
|
|
11 |
|
12 |
/**
|
13 |
* @var string
|
@@ -70,6 +71,23 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
70 |
return array( '107.20.237.51', '23.21.226.191', '107.21.1.8', '54.208.102.37' );
|
71 |
}
|
72 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
/**
|
74 |
* @return array[]
|
75 |
*/
|
@@ -209,7 +227,7 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
209 |
public function isIp_Cloudflare( $sIp ) {
|
210 |
$bIs = false;
|
211 |
try {
|
212 |
-
$oIp =
|
213 |
if ( $oIp->getIpVersion( $sIp ) == 4 ) {
|
214 |
$bIs = $oIp->checkIp( $sIp, $this->getIps_CloudFlareV4() );
|
215 |
}
|
@@ -237,6 +255,19 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
237 |
return $bIsBot;
|
238 |
}
|
239 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
240 |
/**
|
241 |
* https://support.google.com/webmasters/answer/80553?hl=en
|
242 |
* @param string $sIp
|
@@ -283,7 +314,7 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
283 |
$bIsIp = false;
|
284 |
if ( stripos( $sAgent, 'pingdom.com' ) !== false ) {
|
285 |
$aIps = $this->getIps_Pingdom();
|
286 |
-
$bIsIp = in_array( $sIp, $aIps[
|
287 |
}
|
288 |
return $bIsIp;
|
289 |
}
|
@@ -297,7 +328,7 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
297 |
$bIsIp = false;
|
298 |
if ( stripos( $sAgent, 'UptimeRobot' ) !== false ) {
|
299 |
$aIps = $this->getIps_UptimeRobot();
|
300 |
-
$bIsIp = in_array( $sIp, $aIps[
|
301 |
}
|
302 |
return $bIsIp;
|
303 |
}
|
@@ -357,7 +388,7 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
357 |
* @return bool
|
358 |
*/
|
359 |
private function verifyIp_AppleBot( $sIp, $sUserAgent = '' ) {
|
360 |
-
return (
|
361 |
&& $this->isIpOfBot( [ 'Applebot/' ], '#.*\.applebot.apple.com\.?$#i', $sIp, $sUserAgent );
|
362 |
}
|
363 |
|
@@ -456,6 +487,14 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
456 |
return $this->downloadServiceIps_Standard( 'https://managewp.com/wp-content/uploads/2016/11/managewp-ips.txt' );
|
457 |
}
|
458 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
459 |
/**
|
460 |
* @param int $sIpVersion
|
461 |
* @return string[]
|
@@ -469,7 +508,7 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
469 |
*/
|
470 |
private function downloadServiceIps_StatusCake() {
|
471 |
$aIps = array();
|
472 |
-
$aData = @json_decode(
|
473 |
if ( is_array( $aData ) ) {
|
474 |
foreach ( $aData as $aItem ) {
|
475 |
if ( !empty( $aItem[ 'ip' ] ) ) {
|
@@ -498,9 +537,9 @@ class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
|
498 |
if ( !in_array( (int)$sIpVersion, array( 4, 6 ) ) ) {
|
499 |
$sIpVersion = 4;
|
500 |
}
|
501 |
-
$sSourceUrl =
|
502 |
}
|
503 |
-
$sRaw =
|
504 |
$aIps = empty( $sRaw ) ? array() : explode( "\n", $sRaw );
|
505 |
return array_filter( array_map( 'trim', $aIps ) );
|
506 |
}
|
8 |
class ICWP_WPSF_ServiceProviders extends ICWP_WPSF_Foundation {
|
9 |
|
10 |
const URL_STATUS_CAKE_IPS = 'https://app.statuscake.com/Workfloor/Locations.php?format=json';
|
11 |
+
const URL_ICONTROLWP_IPS = 'https://www.icontrolwp.com/?icwp_ips';
|
12 |
|
13 |
/**
|
14 |
* @var string
|
71 |
return array( '107.20.237.51', '23.21.226.191', '107.21.1.8', '54.208.102.37' );
|
72 |
}
|
73 |
|
74 |
+
/**
|
75 |
+
* @param bool $bFlat
|
76 |
+
* @return array[]|string[]
|
77 |
+
*/
|
78 |
+
public function getIps_iControlWP( $bFlat = false ) {
|
79 |
+
$oWp = $this->loadWp();
|
80 |
+
|
81 |
+
$sStoreKey = $this->prefix( 'serviceips_icontrolwp' );
|
82 |
+
$aIps = $oWp->getTransient( $sStoreKey );
|
83 |
+
if ( empty( $aIps ) ) {
|
84 |
+
$aIps = $this->downloadServiceIps_iControlWP();
|
85 |
+
$oWp->setTransient( $sStoreKey, $aIps, WEEK_IN_SECONDS*2 );
|
86 |
+
}
|
87 |
+
|
88 |
+
return $bFlat ? array_merge( $aIps[ 4 ], $aIps[ 6 ] ) : $aIps;
|
89 |
+
}
|
90 |
+
|
91 |
/**
|
92 |
* @return array[]
|
93 |
*/
|
227 |
public function isIp_Cloudflare( $sIp ) {
|
228 |
$bIs = false;
|
229 |
try {
|
230 |
+
$oIp = Services::IP();
|
231 |
if ( $oIp->getIpVersion( $sIp ) == 4 ) {
|
232 |
$bIs = $oIp->checkIp( $sIp, $this->getIps_CloudFlareV4() );
|
233 |
}
|
255 |
return $bIsBot;
|
256 |
}
|
257 |
|
258 |
+
/**
|
259 |
+
* @param string $sIp
|
260 |
+
* @param string $sAgent
|
261 |
+
* @return bool
|
262 |
+
*/
|
263 |
+
public function isIp_iControlWP( $sIp, $sAgent = null ) { //TODO: Agent
|
264 |
+
$bIsBot = false;
|
265 |
+
if ( is_null( $sAgent ) || stripos( $sAgent, 'iControlWPApp' ) !== false ) {
|
266 |
+
$bIsBot = in_array( $sIp, $this->getIps_iControlWP( true ) );
|
267 |
+
}
|
268 |
+
return $bIsBot;
|
269 |
+
}
|
270 |
+
|
271 |
/**
|
272 |
* https://support.google.com/webmasters/answer/80553?hl=en
|
273 |
* @param string $sIp
|
314 |
$bIsIp = false;
|
315 |
if ( stripos( $sAgent, 'pingdom.com' ) !== false ) {
|
316 |
$aIps = $this->getIps_Pingdom();
|
317 |
+
$bIsIp = in_array( $sIp, $aIps[ Services::IP()->getIpVersion( $sIp ) ] );
|
318 |
}
|
319 |
return $bIsIp;
|
320 |
}
|
328 |
$bIsIp = false;
|
329 |
if ( stripos( $sAgent, 'UptimeRobot' ) !== false ) {
|
330 |
$aIps = $this->getIps_UptimeRobot();
|
331 |
+
$bIsIp = in_array( $sIp, $aIps[ Services::IP()->getIpVersion( $sIp ) ] );
|
332 |
}
|
333 |
return $bIsIp;
|
334 |
}
|
388 |
* @return bool
|
389 |
*/
|
390 |
private function verifyIp_AppleBot( $sIp, $sUserAgent = '' ) {
|
391 |
+
return ( Services::IP()->getIpVersion( $sIp ) != 4 || strpos( $sIp, '17.' ) === 0 )
|
392 |
&& $this->isIpOfBot( [ 'Applebot/' ], '#.*\.applebot.apple.com\.?$#i', $sIp, $sUserAgent );
|
393 |
}
|
394 |
|
487 |
return $this->downloadServiceIps_Standard( 'https://managewp.com/wp-content/uploads/2016/11/managewp-ips.txt' );
|
488 |
}
|
489 |
|
490 |
+
/**
|
491 |
+
* @return array[]
|
492 |
+
*/
|
493 |
+
private function downloadServiceIps_iControlWP() {
|
494 |
+
$aIps = @json_decode( Services::HttpRequest()->getContent( self::URL_ICONTROLWP_IPS ), true );
|
495 |
+
return is_array( $aIps ) ? $aIps : [];
|
496 |
+
}
|
497 |
+
|
498 |
/**
|
499 |
* @param int $sIpVersion
|
500 |
* @return string[]
|
508 |
*/
|
509 |
private function downloadServiceIps_StatusCake() {
|
510 |
$aIps = array();
|
511 |
+
$aData = @json_decode( Services::HttpRequest()->getContent( self::URL_STATUS_CAKE_IPS ), true );
|
512 |
if ( is_array( $aData ) ) {
|
513 |
foreach ( $aData as $aItem ) {
|
514 |
if ( !empty( $aItem[ 'ip' ] ) ) {
|
537 |
if ( !in_array( (int)$sIpVersion, array( 4, 6 ) ) ) {
|
538 |
$sIpVersion = 4;
|
539 |
}
|
540 |
+
$sSourceUrl = Services::HttpRequest()->getContent( sprintf( $sSourceUrl, $sIpVersion ) );
|
541 |
}
|
542 |
+
$sRaw = Services::HttpRequest()->getContent( $sSourceUrl );
|
543 |
$aIps = empty( $sRaw ) ? array() : explode( "\n", $sRaw );
|
544 |
return array_filter( array_map( 'trim', $aIps ) );
|
545 |
}
|
src/common/wp-admin-notices.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
4 |
|
5 |
/**
|
@@ -97,10 +99,11 @@ class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
|
97 |
}
|
98 |
|
99 |
/**
|
100 |
-
* @return
|
|
|
101 |
*/
|
102 |
protected function getCurrentUserMeta() {
|
103 |
-
return
|
104 |
}
|
105 |
|
106 |
/**
|
1 |
<?php
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Services\Services;
|
4 |
+
|
5 |
class ICWP_WPSF_WpAdminNotices extends ICWP_WPSF_Foundation {
|
6 |
|
7 |
/**
|
99 |
}
|
100 |
|
101 |
/**
|
102 |
+
* @return \FernleafSystems\Wordpress\Services\Utilities\PluginUserMeta
|
103 |
+
* @throws \Exception
|
104 |
*/
|
105 |
protected function getCurrentUserMeta() {
|
106 |
+
return \FernleafSystems\Wordpress\Services\Services::WpUsers()->metaVoForUser( rtrim( $this->getPrefix(), '-' ) );
|
107 |
}
|
108 |
|
109 |
/**
|
src/config/feature-admin_access_restriction.php
CHANGED
@@ -147,7 +147,7 @@
|
|
147 |
"key": "admin_access_restrict_plugins",
|
148 |
"section": "section_admin_access_restriction_areas",
|
149 |
"type": "multiple_select",
|
150 |
-
"default":
|
151 |
"value_options": [
|
152 |
{
|
153 |
"value_key": "activate_plugins",
|
@@ -175,7 +175,7 @@
|
|
175 |
"key": "admin_access_restrict_themes",
|
176 |
"section": "section_admin_access_restriction_areas",
|
177 |
"type": "multiple_select",
|
178 |
-
"default":
|
179 |
"value_options": [
|
180 |
{
|
181 |
"value_key": "switch_themes",
|
@@ -207,7 +207,7 @@
|
|
207 |
"key": "admin_access_restrict_posts",
|
208 |
"section": "section_admin_access_restriction_areas",
|
209 |
"type": "multiple_select",
|
210 |
-
"default":
|
211 |
"value_options": [
|
212 |
{
|
213 |
"value_key": "edit",
|
147 |
"key": "admin_access_restrict_plugins",
|
148 |
"section": "section_admin_access_restriction_areas",
|
149 |
"type": "multiple_select",
|
150 |
+
"default": [],
|
151 |
"value_options": [
|
152 |
{
|
153 |
"value_key": "activate_plugins",
|
175 |
"key": "admin_access_restrict_themes",
|
176 |
"section": "section_admin_access_restriction_areas",
|
177 |
"type": "multiple_select",
|
178 |
+
"default": [],
|
179 |
"value_options": [
|
180 |
{
|
181 |
"value_key": "switch_themes",
|
207 |
"key": "admin_access_restrict_posts",
|
208 |
"section": "section_admin_access_restriction_areas",
|
209 |
"type": "multiple_select",
|
210 |
+
"default": [],
|
211 |
"value_options": [
|
212 |
{
|
213 |
"value_key": "edit",
|
src/config/feature-autoupdates.php
CHANGED
@@ -211,15 +211,17 @@
|
|
211 |
},
|
212 |
{
|
213 |
"key": "delay_tracking",
|
|
|
214 |
"transferable": false,
|
215 |
-
"
|
216 |
-
"
|
217 |
},
|
218 |
{
|
219 |
"key": "selected_plugins",
|
|
|
220 |
"transferable": false,
|
221 |
-
"
|
222 |
-
"
|
223 |
}
|
224 |
],
|
225 |
"definitions": {
|
211 |
},
|
212 |
{
|
213 |
"key": "delay_tracking",
|
214 |
+
"section": "section_non_ui",
|
215 |
"transferable": false,
|
216 |
+
"type": "array",
|
217 |
+
"default": []
|
218 |
},
|
219 |
{
|
220 |
"key": "selected_plugins",
|
221 |
+
"section": "section_non_ui",
|
222 |
"transferable": false,
|
223 |
+
"type": "array",
|
224 |
+
"default": []
|
225 |
}
|
226 |
],
|
227 |
"definitions": {
|
src/config/feature-comments_filter.php
CHANGED
@@ -330,8 +330,9 @@
|
|
330 |
},
|
331 |
{
|
332 |
"key": "insights_last_comment_block_at",
|
333 |
-
"transferable": false,
|
334 |
"section": "section_non_ui",
|
|
|
|
|
335 |
"default": 0
|
336 |
}
|
337 |
],
|
330 |
},
|
331 |
{
|
332 |
"key": "insights_last_comment_block_at",
|
|
|
333 |
"section": "section_non_ui",
|
334 |
+
"transferable": false,
|
335 |
+
"type": "integer",
|
336 |
"default": 0
|
337 |
}
|
338 |
],
|
src/config/feature-firewall.php
CHANGED
@@ -255,8 +255,9 @@
|
|
255 |
},
|
256 |
{
|
257 |
"key": "insights_last_firewall_block_at",
|
258 |
-
"transferable": false,
|
259 |
"section": "section_non_ui",
|
|
|
|
|
260 |
"default": 0
|
261 |
}
|
262 |
],
|
@@ -271,7 +272,7 @@
|
|
271 |
"/wp-admin/page-new.php": [],
|
272 |
"/wp-admin/link-add.php": [],
|
273 |
"/wp-admin/media-upload.php": [],
|
274 |
-
"/wp-admin/admin.php":
|
275 |
"page"
|
276 |
],
|
277 |
"/wp-admin/post.php": [
|
@@ -327,8 +328,7 @@
|
|
327 |
"regex": [
|
328 |
"^wp_",
|
329 |
"^user_login",
|
330 |
-
"^user_pass"
|
331 |
-
"[^0-9]0x[0-9a-f][0-9a-f]"
|
332 |
]
|
333 |
},
|
334 |
"fieldtruncation": {
|
255 |
},
|
256 |
{
|
257 |
"key": "insights_last_firewall_block_at",
|
|
|
258 |
"section": "section_non_ui",
|
259 |
+
"transferable": false,
|
260 |
+
"type": "integer",
|
261 |
"default": 0
|
262 |
}
|
263 |
],
|
272 |
"/wp-admin/page-new.php": [],
|
273 |
"/wp-admin/link-add.php": [],
|
274 |
"/wp-admin/media-upload.php": [],
|
275 |
+
"/wp-admin/admin.php": [
|
276 |
"page"
|
277 |
],
|
278 |
"/wp-admin/post.php": [
|
328 |
"regex": [
|
329 |
"^wp_",
|
330 |
"^user_login",
|
331 |
+
"^user_pass"
|
|
|
332 |
]
|
333 |
},
|
334 |
"fieldtruncation": {
|
src/config/feature-hack_protect.php
CHANGED
@@ -68,6 +68,16 @@
|
|
68 |
"Recommendation - Ensure this is turned on and you will always know if any of your assets have known security vulnerabilities."
|
69 |
]
|
70 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
{
|
72 |
"slug": "section_integrity_checking",
|
73 |
"title": "Integrity Checks",
|
@@ -166,6 +176,43 @@
|
|
166 |
"summary": "Highlight Vulnerable Plugins",
|
167 |
"description": "Vulnerable plugins will be highlighted on the main plugins page."
|
168 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
{
|
170 |
"key": "enable_core_file_integrity_scan",
|
171 |
"section": "section_core_file_integrity_scan",
|
@@ -405,87 +452,101 @@
|
|
405 |
},
|
406 |
{
|
407 |
"key": "ptg_last_build_at",
|
408 |
-
"transferable": false,
|
409 |
"section": "section_non_ui",
|
410 |
-
"
|
|
|
|
|
411 |
},
|
412 |
{
|
413 |
"key": "ptg_candiskwrite",
|
414 |
-
"transferable": false,
|
415 |
"section": "section_non_ui",
|
416 |
-
"
|
|
|
|
|
417 |
},
|
418 |
{
|
419 |
"key": "ptg_candiskwrite_at",
|
420 |
-
"transferable": false,
|
421 |
"section": "section_non_ui",
|
422 |
-
"
|
|
|
|
|
423 |
},
|
424 |
{
|
425 |
"key": "snapshot_users",
|
|
|
426 |
"transferable": false,
|
427 |
"sensitive": true,
|
428 |
-
"
|
429 |
-
"
|
430 |
},
|
431 |
{
|
432 |
"key": "insights_last_scan_ufc_at",
|
433 |
-
"transferable": false,
|
434 |
"section": "section_non_ui",
|
|
|
|
|
435 |
"default": 0
|
436 |
},
|
437 |
{
|
438 |
"key": "insights_last_scan_wcf_at",
|
439 |
-
"transferable": false,
|
440 |
"section": "section_non_ui",
|
|
|
|
|
441 |
"default": 0
|
442 |
},
|
443 |
{
|
444 |
"key": "insights_last_scan_ptg_at",
|
445 |
-
"transferable": false,
|
446 |
"section": "section_non_ui",
|
|
|
|
|
447 |
"default": 0
|
448 |
},
|
449 |
{
|
450 |
"key": "insights_last_scan_wpv_at",
|
451 |
-
"transferable": false,
|
452 |
"section": "section_non_ui",
|
|
|
|
|
453 |
"default": 0
|
454 |
},
|
455 |
{
|
456 |
"key": "next_scan_ufc_at",
|
457 |
-
"transferable": false,
|
458 |
"section": "section_non_ui",
|
|
|
|
|
459 |
"default": 0
|
460 |
},
|
461 |
{
|
462 |
"key": "next_scan_wcf_at",
|
463 |
-
"transferable": false,
|
464 |
"section": "section_non_ui",
|
|
|
|
|
465 |
"default": 0
|
466 |
},
|
467 |
{
|
468 |
"key": "next_scan_ptg_at",
|
469 |
-
"transferable": false,
|
470 |
"section": "section_non_ui",
|
|
|
|
|
471 |
"default": 0
|
472 |
},
|
473 |
{
|
474 |
"key": "next_scan_wpv_at",
|
475 |
-
"transferable": false,
|
476 |
"section": "section_non_ui",
|
|
|
|
|
477 |
"default": 0
|
478 |
},
|
479 |
{
|
480 |
"key": "rebuild_self",
|
481 |
-
"transferable": false,
|
482 |
"section": "section_non_ui",
|
|
|
|
|
483 |
"default": false
|
484 |
},
|
485 |
{
|
486 |
"key": "ptg_update_store_format",
|
487 |
-
"transferable": false,
|
488 |
"section": "section_non_ui",
|
|
|
|
|
489 |
"default": false
|
490 |
}
|
491 |
],
|
@@ -504,6 +565,7 @@
|
|
504 |
"created_at",
|
505 |
"deleted_at"
|
506 |
],
|
|
|
507 |
"cron_scan_wpv": "wpvulnscan-notification",
|
508 |
"cron_scan_wcf": "core-checksum-notification",
|
509 |
"cron_scan_ufc": "unrecognised-scan-notification",
|
68 |
"Recommendation - Ensure this is turned on and you will always know if any of your assets have known security vulnerabilities."
|
69 |
]
|
70 |
},
|
71 |
+
{
|
72 |
+
"slug": "section_scan_apc",
|
73 |
+
"hidden": true,
|
74 |
+
"title": "Abandoned Plugin Check",
|
75 |
+
"title_short": "Abandoned Plugin Check",
|
76 |
+
"summary": [
|
77 |
+
"Purpose - Regularly scan your WordPress plugins and themes for plugins that have been abandoned.",
|
78 |
+
"Recommendation - Ensure this is turned on and you will always know if any of your assets have known security vulnerabilities."
|
79 |
+
]
|
80 |
+
},
|
81 |
{
|
82 |
"slug": "section_integrity_checking",
|
83 |
"title": "Integrity Checks",
|
176 |
"summary": "Highlight Vulnerable Plugins",
|
177 |
"description": "Vulnerable plugins will be highlighted on the main plugins page."
|
178 |
},
|
179 |
+
{
|
180 |
+
"key": "enabled_scan_apc",
|
181 |
+
"section": "section_scan_apc",
|
182 |
+
"premium": true,
|
183 |
+
"default": "enabled_email",
|
184 |
+
"type": "select",
|
185 |
+
"value_options": [
|
186 |
+
{
|
187 |
+
"value_key": "disabled",
|
188 |
+
"text": "Scan Disabled"
|
189 |
+
},
|
190 |
+
{
|
191 |
+
"value_key": "enabled_email",
|
192 |
+
"text": "Enabled - Send Email Notification"
|
193 |
+
},
|
194 |
+
{
|
195 |
+
"value_key": "enabled_no_email",
|
196 |
+
"text": "Enabled - No Email Notification"
|
197 |
+
}
|
198 |
+
],
|
199 |
+
"link_info": "",
|
200 |
+
"link_blog": "",
|
201 |
+
"name": "Abandoned Plugin Scanner",
|
202 |
+
"summary": "Enable The Abandoned Plugin Scanner",
|
203 |
+
"description": "Scan your WordPress.org assets for whether they've been abandoned."
|
204 |
+
},
|
205 |
+
{
|
206 |
+
"key": "display_apc",
|
207 |
+
"section": "section_scan_apc",
|
208 |
+
"type": "checkbox",
|
209 |
+
"default": "Y",
|
210 |
+
"link_info": "",
|
211 |
+
"link_blog": "",
|
212 |
+
"name": "Highlight Plugins",
|
213 |
+
"summary": "Highlight Abandoned Plugins",
|
214 |
+
"description": "Abandoned plugins will be highlighted on the main plugins page."
|
215 |
+
},
|
216 |
{
|
217 |
"key": "enable_core_file_integrity_scan",
|
218 |
"section": "section_core_file_integrity_scan",
|
452 |
},
|
453 |
{
|
454 |
"key": "ptg_last_build_at",
|
|
|
455 |
"section": "section_non_ui",
|
456 |
+
"transferable": false,
|
457 |
+
"type": "integer",
|
458 |
+
"default": 0
|
459 |
},
|
460 |
{
|
461 |
"key": "ptg_candiskwrite",
|
|
|
462 |
"section": "section_non_ui",
|
463 |
+
"transferable": false,
|
464 |
+
"type": "boolean",
|
465 |
+
"default": false
|
466 |
},
|
467 |
{
|
468 |
"key": "ptg_candiskwrite_at",
|
|
|
469 |
"section": "section_non_ui",
|
470 |
+
"transferable": false,
|
471 |
+
"type": "integer",
|
472 |
+
"default": false
|
473 |
},
|
474 |
{
|
475 |
"key": "snapshot_users",
|
476 |
+
"section": "section_non_ui",
|
477 |
"transferable": false,
|
478 |
"sensitive": true,
|
479 |
+
"type": "array",
|
480 |
+
"default": []
|
481 |
},
|
482 |
{
|
483 |
"key": "insights_last_scan_ufc_at",
|
|
|
484 |
"section": "section_non_ui",
|
485 |
+
"transferable": false,
|
486 |
+
"type": "integer",
|
487 |
"default": 0
|
488 |
},
|
489 |
{
|
490 |
"key": "insights_last_scan_wcf_at",
|
|
|
491 |
"section": "section_non_ui",
|
492 |
+
"transferable": false,
|
493 |
+
"type": "integer",
|
494 |
"default": 0
|
495 |
},
|
496 |
{
|
497 |
"key": "insights_last_scan_ptg_at",
|
|
|
498 |
"section": "section_non_ui",
|
499 |
+
"transferable": false,
|
500 |
+
"type": "integer",
|
501 |
"default": 0
|
502 |
},
|
503 |
{
|
504 |
"key": "insights_last_scan_wpv_at",
|
|
|
505 |
"section": "section_non_ui",
|
506 |
+
"transferable": false,
|
507 |
+
"type": "integer",
|
508 |
"default": 0
|
509 |
},
|
510 |
{
|
511 |
"key": "next_scan_ufc_at",
|
|
|
512 |
"section": "section_non_ui",
|
513 |
+
"transferable": false,
|
514 |
+
"type": "integer",
|
515 |
"default": 0
|
516 |
},
|
517 |
{
|
518 |
"key": "next_scan_wcf_at",
|
|
|
519 |
"section": "section_non_ui",
|
520 |
+
"transferable": false,
|
521 |
+
"type": "integer",
|
522 |
"default": 0
|
523 |
},
|
524 |
{
|
525 |
"key": "next_scan_ptg_at",
|
|
|
526 |
"section": "section_non_ui",
|
527 |
+
"transferable": false,
|
528 |
+
"type": "integer",
|
529 |
"default": 0
|
530 |
},
|
531 |
{
|
532 |
"key": "next_scan_wpv_at",
|
|
|
533 |
"section": "section_non_ui",
|
534 |
+
"transferable": false,
|
535 |
+
"type": "integer",
|
536 |
"default": 0
|
537 |
},
|
538 |
{
|
539 |
"key": "rebuild_self",
|
|
|
540 |
"section": "section_non_ui",
|
541 |
+
"transferable": false,
|
542 |
+
"type": "boolean",
|
543 |
"default": false
|
544 |
},
|
545 |
{
|
546 |
"key": "ptg_update_store_format",
|
|
|
547 |
"section": "section_non_ui",
|
548 |
+
"transferable": false,
|
549 |
+
"type": "boolean",
|
550 |
"default": false
|
551 |
}
|
552 |
],
|
565 |
"created_at",
|
566 |
"deleted_at"
|
567 |
],
|
568 |
+
"cron_all_scans": "all-scans",
|
569 |
"cron_scan_wpv": "wpvulnscan-notification",
|
570 |
"cron_scan_wcf": "core-checksum-notification",
|
571 |
"cron_scan_ufc": "unrecognised-scan-notification",
|
src/config/feature-ips.php
CHANGED
@@ -132,6 +132,28 @@
|
|
132 |
"summary": "After 1 'X' a black listed IP will be removed from the black list",
|
133 |
"description": "Permanent and lengthy IP Black Lists are harmful to performance. You should allow IP addresses on the black list to be eventually removed over time. Shorter IP black lists are more efficient and a more intelligent use of an IP-based blocking system."
|
134 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
135 |
{
|
136 |
"key": "text_loginfailed",
|
137 |
"section": "section_user_messages",
|
@@ -187,28 +209,39 @@
|
|
187 |
},
|
188 |
{
|
189 |
"key": "this_server_ip",
|
|
|
190 |
"transferable": false,
|
191 |
"sensitive": true,
|
192 |
-
"
|
193 |
-
"
|
194 |
},
|
195 |
{
|
196 |
"key": "this_server_ip_last_check_at",
|
197 |
-
"transferable": false,
|
198 |
"section": "section_non_ui",
|
199 |
-
"
|
|
|
|
|
200 |
},
|
201 |
{
|
202 |
"key": "insights_last_transgression_at",
|
203 |
-
"transferable": false,
|
204 |
"section": "section_non_ui",
|
|
|
|
|
205 |
"default": 0
|
206 |
},
|
207 |
{
|
208 |
"key": "insights_last_ip_block_at",
|
209 |
-
"transferable": false,
|
210 |
"section": "section_non_ui",
|
|
|
|
|
211 |
"default": 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
}
|
213 |
],
|
214 |
"definitions": {
|
132 |
"summary": "After 1 'X' a black listed IP will be removed from the black list",
|
133 |
"description": "Permanent and lengthy IP Black Lists are harmful to performance. You should allow IP addresses on the black list to be eventually removed over time. Shorter IP black lists are more efficient and a more intelligent use of an IP-based blocking system."
|
134 |
},
|
135 |
+
{
|
136 |
+
"key": "user_auto_recover",
|
137 |
+
"section": "section_auto_black_list",
|
138 |
+
"premium": true,
|
139 |
+
"default": "disabled",
|
140 |
+
"type": "select",
|
141 |
+
"value_options": [
|
142 |
+
{
|
143 |
+
"value_key": "disabled",
|
144 |
+
"text": "Disabled"
|
145 |
+
},
|
146 |
+
{
|
147 |
+
"value_key": "gasp",
|
148 |
+
"text": "With Shield Bot Protection"
|
149 |
+
}
|
150 |
+
],
|
151 |
+
"link_info": "",
|
152 |
+
"link_blog": "",
|
153 |
+
"name": "User Auto Unblock",
|
154 |
+
"summary": "Allow Visitors To Unblock Their IP",
|
155 |
+
"description": "Allow visitors blocked by the plugin to automatically unblock themselves."
|
156 |
+
},
|
157 |
{
|
158 |
"key": "text_loginfailed",
|
159 |
"section": "section_user_messages",
|
209 |
},
|
210 |
{
|
211 |
"key": "this_server_ip",
|
212 |
+
"section": "section_non_ui",
|
213 |
"transferable": false,
|
214 |
"sensitive": true,
|
215 |
+
"type": "text",
|
216 |
+
"default": ""
|
217 |
},
|
218 |
{
|
219 |
"key": "this_server_ip_last_check_at",
|
|
|
220 |
"section": "section_non_ui",
|
221 |
+
"transferable": false,
|
222 |
+
"type": "integer",
|
223 |
+
"default": 0
|
224 |
},
|
225 |
{
|
226 |
"key": "insights_last_transgression_at",
|
|
|
227 |
"section": "section_non_ui",
|
228 |
+
"transferable": false,
|
229 |
+
"type": "integer",
|
230 |
"default": 0
|
231 |
},
|
232 |
{
|
233 |
"key": "insights_last_ip_block_at",
|
|
|
234 |
"section": "section_non_ui",
|
235 |
+
"transferable": false,
|
236 |
+
"type": "integer",
|
237 |
"default": 0
|
238 |
+
},
|
239 |
+
{
|
240 |
+
"key": "autounblock_ips",
|
241 |
+
"section": "section_non_ui",
|
242 |
+
"transferable": false,
|
243 |
+
"type": "array",
|
244 |
+
"default": []
|
245 |
}
|
246 |
],
|
247 |
"definitions": {
|
src/config/feature-license.php
CHANGED
@@ -29,80 +29,92 @@
|
|
29 |
"options": [
|
30 |
{
|
31 |
"key": "license_key",
|
|
|
32 |
"sensitive": true,
|
33 |
"transferable": false,
|
34 |
-
"
|
35 |
-
"
|
36 |
},
|
37 |
{
|
38 |
"key": "license_activated_at",
|
|
|
39 |
"transferable": false,
|
40 |
-
"
|
41 |
-
"
|
42 |
},
|
43 |
{
|
44 |
"key": "license_deactivated_at",
|
|
|
45 |
"transferable": false,
|
46 |
-
"
|
47 |
-
"
|
48 |
},
|
49 |
{
|
50 |
"key": "license_last_checked_at",
|
|
|
51 |
"transferable": false,
|
52 |
-
"
|
53 |
-
"
|
54 |
},
|
55 |
{
|
56 |
"key": "license_deactivated_reason",
|
|
|
57 |
"transferable": false,
|
58 |
-
"
|
59 |
-
"
|
60 |
},
|
61 |
{
|
62 |
"key": "last_warning_email_sent_at",
|
|
|
63 |
"transferable": false,
|
64 |
-
"
|
65 |
-
"
|
66 |
},
|
67 |
{
|
68 |
"key": "last_deactivated_email_sent_at",
|
|
|
69 |
"transferable": false,
|
70 |
-
"
|
71 |
-
"
|
72 |
},
|
73 |
{
|
74 |
"key": "last_errors",
|
|
|
75 |
"transferable": false,
|
76 |
-
"
|
77 |
-
"
|
78 |
},
|
79 |
{
|
80 |
"key": "last_error_at",
|
|
|
81 |
"sensitive": true,
|
82 |
"transferable": false,
|
83 |
-
"
|
84 |
-
"
|
85 |
},
|
86 |
{
|
87 |
"key": "keyless_request_hash",
|
|
|
88 |
"sensitive": true,
|
89 |
"transferable": false,
|
90 |
-
"
|
91 |
-
"
|
92 |
},
|
93 |
{
|
94 |
"key": "keyless_request_at",
|
|
|
95 |
"sensitive": true,
|
96 |
"transferable": false,
|
97 |
-
"
|
98 |
-
"
|
99 |
},
|
100 |
{
|
101 |
"key": "license_data",
|
|
|
102 |
"sensitive": true,
|
103 |
"transferable": false,
|
104 |
-
"
|
105 |
-
"
|
106 |
}
|
107 |
],
|
108 |
"definitions": {
|
29 |
"options": [
|
30 |
{
|
31 |
"key": "license_key",
|
32 |
+
"section": "section_non_ui",
|
33 |
"sensitive": true,
|
34 |
"transferable": false,
|
35 |
+
"type": "text",
|
36 |
+
"default": ""
|
37 |
},
|
38 |
{
|
39 |
"key": "license_activated_at",
|
40 |
+
"section": "section_non_ui",
|
41 |
"transferable": false,
|
42 |
+
"type": "integer",
|
43 |
+
"default": 0
|
44 |
},
|
45 |
{
|
46 |
"key": "license_deactivated_at",
|
47 |
+
"section": "section_non_ui",
|
48 |
"transferable": false,
|
49 |
+
"type": "integer",
|
50 |
+
"default": 0
|
51 |
},
|
52 |
{
|
53 |
"key": "license_last_checked_at",
|
54 |
+
"section": "section_non_ui",
|
55 |
"transferable": false,
|
56 |
+
"type": "integer",
|
57 |
+
"default": 0
|
58 |
},
|
59 |
{
|
60 |
"key": "license_deactivated_reason",
|
61 |
+
"section": "section_non_ui",
|
62 |
"transferable": false,
|
63 |
+
"type": "text",
|
64 |
+
"default": ""
|
65 |
},
|
66 |
{
|
67 |
"key": "last_warning_email_sent_at",
|
68 |
+
"section": "section_non_ui",
|
69 |
"transferable": false,
|
70 |
+
"type": "integer",
|
71 |
+
"default": 0
|
72 |
},
|
73 |
{
|
74 |
"key": "last_deactivated_email_sent_at",
|
75 |
+
"section": "section_non_ui",
|
76 |
"transferable": false,
|
77 |
+
"type": "integer",
|
78 |
+
"default": 0
|
79 |
},
|
80 |
{
|
81 |
"key": "last_errors",
|
82 |
+
"section": "section_non_ui",
|
83 |
"transferable": false,
|
84 |
+
"type": "array",
|
85 |
+
"default": ""
|
86 |
},
|
87 |
{
|
88 |
"key": "last_error_at",
|
89 |
+
"section": "section_non_ui",
|
90 |
"sensitive": true,
|
91 |
"transferable": false,
|
92 |
+
"type": "integer",
|
93 |
+
"default": 0
|
94 |
},
|
95 |
{
|
96 |
"key": "keyless_request_hash",
|
97 |
+
"section": "section_non_ui",
|
98 |
"sensitive": true,
|
99 |
"transferable": false,
|
100 |
+
"type": "text",
|
101 |
+
"default": ""
|
102 |
},
|
103 |
{
|
104 |
"key": "keyless_request_at",
|
105 |
+
"section": "section_non_ui",
|
106 |
"sensitive": true,
|
107 |
"transferable": false,
|
108 |
+
"type": "integer",
|
109 |
+
"default": 0
|
110 |
},
|
111 |
{
|
112 |
"key": "license_data",
|
113 |
+
"section": "section_non_ui",
|
114 |
"sensitive": true,
|
115 |
"transferable": false,
|
116 |
+
"type": "array",
|
117 |
+
"default": []
|
118 |
}
|
119 |
],
|
120 |
"definitions": {
|
src/config/feature-lockdown.php
CHANGED
@@ -163,14 +163,16 @@
|
|
163 |
},
|
164 |
{
|
165 |
"key": "insights_xml_block_at",
|
166 |
-
"transferable": false,
|
167 |
"section": "section_non_ui",
|
|
|
|
|
168 |
"default": 0
|
169 |
},
|
170 |
{
|
171 |
"key": "insights_restapi_block_at",
|
172 |
-
"transferable": false,
|
173 |
"section": "section_non_ui",
|
|
|
|
|
174 |
"default": 0
|
175 |
}
|
176 |
],
|
163 |
},
|
164 |
{
|
165 |
"key": "insights_xml_block_at",
|
|
|
166 |
"section": "section_non_ui",
|
167 |
+
"transferable": false,
|
168 |
+
"type": "integer",
|
169 |
"default": 0
|
170 |
},
|
171 |
{
|
172 |
"key": "insights_restapi_block_at",
|
|
|
173 |
"section": "section_non_ui",
|
174 |
+
"transferable": false,
|
175 |
+
"type": "integer",
|
176 |
"default": 0
|
177 |
}
|
178 |
],
|
src/config/feature-login_protect.php
CHANGED
@@ -1,18 +1,18 @@
|
|
1 |
{
|
2 |
"slug": "login_protect",
|
3 |
"properties": {
|
4 |
-
"slug":
|
5 |
-
"name":
|
6 |
-
"show_module_menu_item":
|
7 |
-
"show_module_options":
|
8 |
-
"storage_key":
|
9 |
-
"tagline":
|
10 |
-
"show_central":
|
11 |
-
"access_restricted":
|
12 |
-
"premium":
|
13 |
-
"run_if_whitelisted":
|
14 |
-
"run_if_verified_bot":
|
15 |
-
"order":
|
16 |
},
|
17 |
"admin_notices": {
|
18 |
"email-verification-sent": {
|
@@ -259,7 +259,9 @@
|
|
259 |
"key": "bot_protection_locations",
|
260 |
"section": "section_brute_force_login_protection",
|
261 |
"type": "multiple_select",
|
262 |
-
"default": [
|
|
|
|
|
263 |
"value_options": [
|
264 |
{
|
265 |
"value_key": "login",
|
@@ -307,8 +309,8 @@
|
|
307 |
"description": "Adds a dynamically (Javascript) generated checkbox to the login form that prevents bots using automated login techniques. Recommended: ON."
|
308 |
},
|
309 |
{
|
310 |
-
"key":
|
311 |
-
"section":
|
312 |
"default": "disabled",
|
313 |
"type": "select",
|
314 |
"value_options": [
|
@@ -333,11 +335,11 @@
|
|
333 |
"text": "Invisible reCAPTCHA"
|
334 |
}
|
335 |
],
|
336 |
-
"link_info":
|
337 |
-
"link_blog":
|
338 |
-
"name":
|
339 |
-
"summary":
|
340 |
-
"description":
|
341 |
},
|
342 |
{
|
343 |
"key": "enable_antibot_js",
|
@@ -356,8 +358,8 @@
|
|
356 |
"section": "section_brute_force_login_protection",
|
357 |
"type": "array",
|
358 |
"default": [
|
359 |
-
|
360 |
-
|
361 |
],
|
362 |
"link_info": "",
|
363 |
"link_blog": "",
|
@@ -428,69 +430,74 @@
|
|
428 |
},
|
429 |
{
|
430 |
"key": "email_can_send_verified_at",
|
431 |
-
"transferable": false,
|
432 |
"section": "section_non_ui",
|
|
|
|
|
433 |
"default": -1
|
434 |
},
|
435 |
{
|
436 |
"key": "gasp_key",
|
|
|
437 |
"transferable": false,
|
438 |
"sensitive": true,
|
439 |
-
"
|
|
|
440 |
},
|
441 |
{
|
442 |
"key": "two_factor_secret_key",
|
|
|
443 |
"transferable": false,
|
444 |
"sensitive": true,
|
445 |
-
"
|
446 |
-
|
447 |
-
{
|
448 |
-
"key": "two_factor_auth_table_created",
|
449 |
-
"transferable": false,
|
450 |
-
"section": "section_non_ui"
|
451 |
},
|
452 |
{
|
453 |
"key": "use_login_intent_page",
|
|
|
454 |
"transferable": false,
|
455 |
-
"
|
456 |
-
"
|
457 |
},
|
458 |
{
|
459 |
"key": "insights_last_2fa_login_at",
|
460 |
-
"transferable": false,
|
461 |
"section": "section_non_ui",
|
|
|
|
|
462 |
"default": 0
|
463 |
},
|
464 |
{
|
465 |
"key": "insights_last_login_block_at",
|
466 |
-
"transferable": false,
|
467 |
"section": "section_non_ui",
|
|
|
|
|
468 |
"default": 0
|
469 |
},
|
470 |
{
|
471 |
"key": "insights_last_register_block_at",
|
472 |
-
"transferable": false,
|
473 |
"section": "section_non_ui",
|
|
|
|
|
474 |
"default": 0
|
475 |
},
|
476 |
{
|
477 |
"key": "insights_last_reset-password_block_at",
|
478 |
"transferable": false,
|
479 |
"section": "section_non_ui",
|
|
|
480 |
"default": 0
|
481 |
}
|
482 |
],
|
483 |
"definitions": {
|
484 |
-
"login_intent_timeout":
|
485 |
-
"wizards":
|
486 |
"mfa": {
|
487 |
-
"title":
|
488 |
-
"desc":
|
489 |
"min_user_permissions": "manage_options",
|
490 |
"steps": {
|
491 |
"start": {
|
492 |
"security_admin": false,
|
493 |
-
"title":
|
494 |
},
|
495 |
"authemail": {
|
496 |
"title": "Email Authentication"
|
@@ -503,7 +510,7 @@
|
|
503 |
},
|
504 |
"finished": {
|
505 |
"security_admin": false,
|
506 |
-
"title":
|
507 |
}
|
508 |
}
|
509 |
}
|
1 |
{
|
2 |
"slug": "login_protect",
|
3 |
"properties": {
|
4 |
+
"slug": "login_protect",
|
5 |
+
"name": "Login Guard",
|
6 |
+
"show_module_menu_item": false,
|
7 |
+
"show_module_options": true,
|
8 |
+
"storage_key": "loginprotect",
|
9 |
+
"tagline": "Block brute force attacks and secure user identities with Two-Factor Authentication",
|
10 |
+
"show_central": true,
|
11 |
+
"access_restricted": true,
|
12 |
+
"premium": false,
|
13 |
+
"run_if_whitelisted": false,
|
14 |
+
"run_if_verified_bot": false,
|
15 |
+
"order": 40
|
16 |
},
|
17 |
"admin_notices": {
|
18 |
"email-verification-sent": {
|
259 |
"key": "bot_protection_locations",
|
260 |
"section": "section_brute_force_login_protection",
|
261 |
"type": "multiple_select",
|
262 |
+
"default": [
|
263 |
+
"login"
|
264 |
+
],
|
265 |
"value_options": [
|
266 |
{
|
267 |
"value_key": "login",
|
309 |
"description": "Adds a dynamically (Javascript) generated checkbox to the login form that prevents bots using automated login techniques. Recommended: ON."
|
310 |
},
|
311 |
{
|
312 |
+
"key": "enable_google_recaptcha_login",
|
313 |
+
"section": "section_brute_force_login_protection",
|
314 |
"default": "disabled",
|
315 |
"type": "select",
|
316 |
"value_options": [
|
335 |
"text": "Invisible reCAPTCHA"
|
336 |
}
|
337 |
],
|
338 |
+
"link_info": "https://icwp.io/9m",
|
339 |
+
"link_blog": "https://icwp.io/shld5",
|
340 |
+
"name": "Google reCAPTCHA",
|
341 |
+
"summary": "Enable Google reCAPTCHA",
|
342 |
+
"description": "Use Google reCAPTCHA on the login screen."
|
343 |
},
|
344 |
{
|
345 |
"key": "enable_antibot_js",
|
358 |
"section": "section_brute_force_login_protection",
|
359 |
"type": "array",
|
360 |
"default": [
|
361 |
+
"form#ihc_login_form",
|
362 |
+
"form#createuser"
|
363 |
],
|
364 |
"link_info": "",
|
365 |
"link_blog": "",
|
430 |
},
|
431 |
{
|
432 |
"key": "email_can_send_verified_at",
|
|
|
433 |
"section": "section_non_ui",
|
434 |
+
"transferable": false,
|
435 |
+
"type": "integer",
|
436 |
"default": -1
|
437 |
},
|
438 |
{
|
439 |
"key": "gasp_key",
|
440 |
+
"section": "section_non_ui",
|
441 |
"transferable": false,
|
442 |
"sensitive": true,
|
443 |
+
"type": "text",
|
444 |
+
"default": ""
|
445 |
},
|
446 |
{
|
447 |
"key": "two_factor_secret_key",
|
448 |
+
"section": "section_non_ui",
|
449 |
"transferable": false,
|
450 |
"sensitive": true,
|
451 |
+
"type": "text",
|
452 |
+
"default": ""
|
|
|
|
|
|
|
|
|
453 |
},
|
454 |
{
|
455 |
"key": "use_login_intent_page",
|
456 |
+
"section": "section_non_ui",
|
457 |
"transferable": false,
|
458 |
+
"type": "boolean",
|
459 |
+
"value": true
|
460 |
},
|
461 |
{
|
462 |
"key": "insights_last_2fa_login_at",
|
|
|
463 |
"section": "section_non_ui",
|
464 |
+
"transferable": false,
|
465 |
+
"type": "integer",
|
466 |
"default": 0
|
467 |
},
|
468 |
{
|
469 |
"key": "insights_last_login_block_at",
|
|
|
470 |
"section": "section_non_ui",
|
471 |
+
"transferable": false,
|
472 |
+
"type": "integer",
|
473 |
"default": 0
|
474 |
},
|
475 |
{
|
476 |
"key": "insights_last_register_block_at",
|
|
|
477 |
"section": "section_non_ui",
|
478 |
+
"transferable": false,
|
479 |
+
"type": "integer",
|
480 |
"default": 0
|
481 |
},
|
482 |
{
|
483 |
"key": "insights_last_reset-password_block_at",
|
484 |
"transferable": false,
|
485 |
"section": "section_non_ui",
|
486 |
+
"type": "integer",
|
487 |
"default": 0
|
488 |
}
|
489 |
],
|
490 |
"definitions": {
|
491 |
+
"login_intent_timeout": 5,
|
492 |
+
"wizards": {
|
493 |
"mfa": {
|
494 |
+
"title": "Configure Multi-Factor Login Authentication",
|
495 |
+
"desc": "Easily setup multi-factor login authentication, using Email and Google Authenticator.",
|
496 |
"min_user_permissions": "manage_options",
|
497 |
"steps": {
|
498 |
"start": {
|
499 |
"security_admin": false,
|
500 |
+
"title": "Start: Multi-Factor Authentication"
|
501 |
},
|
502 |
"authemail": {
|
503 |
"title": "Email Authentication"
|
510 |
},
|
511 |
"finished": {
|
512 |
"security_admin": false,
|
513 |
+
"title": "Finished: Multi-Factor Authentication"
|
514 |
}
|
515 |
}
|
516 |
}
|
src/config/feature-plugin.php
CHANGED
@@ -18,12 +18,12 @@
|
|
18 |
},
|
19 |
"admin_notices": {
|
20 |
"override-forceoff": {
|
21 |
-
"id":
|
22 |
-
"schedule":
|
23 |
-
"valid_admin":
|
24 |
"plugin_page_only": false,
|
25 |
-
"can_dismiss":
|
26 |
-
"type":
|
27 |
},
|
28 |
"plugin-update-available": {
|
29 |
"id": "plugin-update-available",
|
@@ -340,64 +340,79 @@
|
|
340 |
},
|
341 |
{
|
342 |
"key": "tracking_last_sent_at",
|
|
|
343 |
"transferable": false,
|
344 |
-
"
|
345 |
-
"
|
346 |
},
|
347 |
{
|
348 |
"key": "unique_installation_id",
|
349 |
"section": "section_non_ui",
|
350 |
"transferable": false,
|
351 |
-
"
|
|
|
352 |
},
|
353 |
{
|
354 |
"key": "tracking_permission_set_at",
|
355 |
-
"
|
356 |
-
"
|
|
|
357 |
},
|
358 |
{
|
359 |
"key": "installation_time",
|
|
|
360 |
"transferable": false,
|
361 |
-
"
|
|
|
362 |
},
|
363 |
{
|
364 |
"key": "importexport_secretkey_expires_at",
|
|
|
365 |
"transferable": false,
|
366 |
-
"
|
|
|
367 |
},
|
368 |
{
|
369 |
"key": "importexport_handshake_expires_at",
|
|
|
370 |
"transferable": false,
|
371 |
-
"
|
|
|
372 |
},
|
373 |
{
|
374 |
"key": "importexport_last_import_hash",
|
|
|
375 |
"transferable": false,
|
376 |
-
"
|
|
|
377 |
},
|
378 |
{
|
379 |
"key": "this_server_ip",
|
|
|
380 |
"transferable": false,
|
381 |
"sensitive": true,
|
382 |
-
"
|
383 |
"default": ""
|
384 |
},
|
385 |
{
|
386 |
"key": "this_server_ip_last_check_at",
|
387 |
-
"transferable": false,
|
388 |
"section": "section_non_ui",
|
|
|
|
|
389 |
"default": 0
|
390 |
},
|
391 |
{
|
392 |
"key": "insights_test_cron_last_run_at",
|
393 |
"transferable": false,
|
394 |
"section": "section_non_ui",
|
|
|
395 |
"default": 0
|
396 |
},
|
397 |
{
|
398 |
"key": "last_ip_detect_source",
|
399 |
"transferable": false,
|
400 |
"section": "section_non_ui",
|
|
|
401 |
"default": ""
|
402 |
}
|
403 |
],
|
@@ -501,7 +516,7 @@
|
|
501 |
}
|
502 |
],
|
503 |
"wizards": {
|
504 |
-
"welcome":
|
505 |
"title": "Getting Started Setup Wizard",
|
506 |
"desc": "An introduction to this security plugin, helping you get setup and started quickly with the core features.",
|
507 |
"min_user_permissions": "manage_options",
|
@@ -546,7 +561,7 @@
|
|
546 |
}
|
547 |
}
|
548 |
},
|
549 |
-
"gdpr":
|
550 |
"title": "GDPR Data Wizard",
|
551 |
"desc": "Walks you through the searching and removal of personally identifiable data.",
|
552 |
"min_user_permissions": "manage_options",
|
@@ -567,25 +582,6 @@
|
|
567 |
"title": "Finished: GDPR Compliance"
|
568 |
}
|
569 |
}
|
570 |
-
},
|
571 |
-
"importexport": {
|
572 |
-
"title": "Options Import/Export Wizard",
|
573 |
-
"desc": "Walks you through the import and export of options, as well as configuring ongoing automated options-sync.",
|
574 |
-
"min_user_permissions": "manage_options",
|
575 |
-
"has_premium": true,
|
576 |
-
"steps": {
|
577 |
-
"start": {
|
578 |
-
"security_admin": false,
|
579 |
-
"title": "Start: Options Import"
|
580 |
-
},
|
581 |
-
"import": {
|
582 |
-
"title": "Run Options Import"
|
583 |
-
},
|
584 |
-
"finished": {
|
585 |
-
"security_admin": false,
|
586 |
-
"title": "Finished: Options Import"
|
587 |
-
}
|
588 |
-
}
|
589 |
}
|
590 |
}
|
591 |
}
|
18 |
},
|
19 |
"admin_notices": {
|
20 |
"override-forceoff": {
|
21 |
+
"id": "override-forceoff",
|
22 |
+
"schedule": "conditions",
|
23 |
+
"valid_admin": true,
|
24 |
"plugin_page_only": false,
|
25 |
+
"can_dismiss": false,
|
26 |
+
"type": "error"
|
27 |
},
|
28 |
"plugin-update-available": {
|
29 |
"id": "plugin-update-available",
|
340 |
},
|
341 |
{
|
342 |
"key": "tracking_last_sent_at",
|
343 |
+
"section": "section_non_ui",
|
344 |
"transferable": false,
|
345 |
+
"type": "integer",
|
346 |
+
"default": 0
|
347 |
},
|
348 |
{
|
349 |
"key": "unique_installation_id",
|
350 |
"section": "section_non_ui",
|
351 |
"transferable": false,
|
352 |
+
"type": "text",
|
353 |
+
"default": 0
|
354 |
},
|
355 |
{
|
356 |
"key": "tracking_permission_set_at",
|
357 |
+
"section": "section_non_ui",
|
358 |
+
"type": "integer",
|
359 |
+
"default": 0
|
360 |
},
|
361 |
{
|
362 |
"key": "installation_time",
|
363 |
+
"section": "section_non_ui",
|
364 |
"transferable": false,
|
365 |
+
"type": "integer",
|
366 |
+
"default": 0
|
367 |
},
|
368 |
{
|
369 |
"key": "importexport_secretkey_expires_at",
|
370 |
+
"section": "section_non_ui",
|
371 |
"transferable": false,
|
372 |
+
"type": "integer",
|
373 |
+
"default": 0
|
374 |
},
|
375 |
{
|
376 |
"key": "importexport_handshake_expires_at",
|
377 |
+
"section": "section_non_ui",
|
378 |
"transferable": false,
|
379 |
+
"type": "integer",
|
380 |
+
"default": 0
|
381 |
},
|
382 |
{
|
383 |
"key": "importexport_last_import_hash",
|
384 |
+
"section": "section_non_ui",
|
385 |
"transferable": false,
|
386 |
+
"type": "text",
|
387 |
+
"default": ""
|
388 |
},
|
389 |
{
|
390 |
"key": "this_server_ip",
|
391 |
+
"section": "section_non_ui",
|
392 |
"transferable": false,
|
393 |
"sensitive": true,
|
394 |
+
"type": "text",
|
395 |
"default": ""
|
396 |
},
|
397 |
{
|
398 |
"key": "this_server_ip_last_check_at",
|
|
|
399 |
"section": "section_non_ui",
|
400 |
+
"transferable": false,
|
401 |
+
"type": "integer",
|
402 |
"default": 0
|
403 |
},
|
404 |
{
|
405 |
"key": "insights_test_cron_last_run_at",
|
406 |
"transferable": false,
|
407 |
"section": "section_non_ui",
|
408 |
+
"type": "integer",
|
409 |
"default": 0
|
410 |
},
|
411 |
{
|
412 |
"key": "last_ip_detect_source",
|
413 |
"transferable": false,
|
414 |
"section": "section_non_ui",
|
415 |
+
"type": "text",
|
416 |
"default": ""
|
417 |
}
|
418 |
],
|
516 |
}
|
517 |
],
|
518 |
"wizards": {
|
519 |
+
"welcome": {
|
520 |
"title": "Getting Started Setup Wizard",
|
521 |
"desc": "An introduction to this security plugin, helping you get setup and started quickly with the core features.",
|
522 |
"min_user_permissions": "manage_options",
|
561 |
}
|
562 |
}
|
563 |
},
|
564 |
+
"gdpr": {
|
565 |
"title": "GDPR Data Wizard",
|
566 |
"desc": "Walks you through the searching and removal of personally identifiable data.",
|
567 |
"min_user_permissions": "manage_options",
|
582 |
"title": "Finished: GDPR Compliance"
|
583 |
}
|
584 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
585 |
}
|
586 |
}
|
587 |
}
|
src/config/feature-sessions.php
CHANGED
@@ -43,8 +43,10 @@
|
|
43 |
},
|
44 |
{
|
45 |
"key": "autoadd_sessions_started_at",
|
|
|
|
|
46 |
"transferable": false,
|
47 |
-
"
|
48 |
}
|
49 |
],
|
50 |
"definitions": {
|
43 |
},
|
44 |
{
|
45 |
"key": "autoadd_sessions_started_at",
|
46 |
+
"section": "section_non_ui",
|
47 |
+
"type": "integer",
|
48 |
"transferable": false,
|
49 |
+
"default": 0
|
50 |
}
|
51 |
],
|
52 |
"definitions": {
|
src/config/feature-traffic.php
CHANGED
@@ -150,8 +150,10 @@
|
|
150 |
},
|
151 |
{
|
152 |
"key": "autodisable_at",
|
|
|
|
|
153 |
"transferable": false,
|
154 |
-
"
|
155 |
}
|
156 |
],
|
157 |
"definitions": {
|
150 |
},
|
151 |
{
|
152 |
"key": "autodisable_at",
|
153 |
+
"section": "section_non_ui",
|
154 |
+
"type": "integer",
|
155 |
"transferable": false,
|
156 |
+
"default": 0
|
157 |
}
|
158 |
],
|
159 |
"definitions": {
|
src/config/feature-user_management.php
CHANGED
@@ -237,19 +237,23 @@
|
|
237 |
},
|
238 |
{
|
239 |
"key": "autoadd_sessions_started_at",
|
|
|
240 |
"transferable": false,
|
241 |
-
"
|
|
|
242 |
},
|
243 |
{
|
244 |
"key": "insights_last_idle_logout_at",
|
245 |
-
"transferable": false,
|
246 |
"section": "section_non_ui",
|
|
|
|
|
247 |
"default": 0
|
248 |
},
|
249 |
{
|
250 |
"key": "insights_last_password_block_at",
|
251 |
-
"transferable": false,
|
252 |
"section": "section_non_ui",
|
|
|
|
|
253 |
"default": 0
|
254 |
}
|
255 |
],
|
237 |
},
|
238 |
{
|
239 |
"key": "autoadd_sessions_started_at",
|
240 |
+
"section": "section_non_ui",
|
241 |
"transferable": false,
|
242 |
+
"type": "integer",
|
243 |
+
"default": 0
|
244 |
},
|
245 |
{
|
246 |
"key": "insights_last_idle_logout_at",
|
|
|
247 |
"section": "section_non_ui",
|
248 |
+
"transferable": false,
|
249 |
+
"type": "integer",
|
250 |
"default": 0
|
251 |
},
|
252 |
{
|
253 |
"key": "insights_last_password_block_at",
|
|
|
254 |
"section": "section_non_ui",
|
255 |
+
"transferable": false,
|
256 |
+
"type": "integer",
|
257 |
"default": 0
|
258 |
}
|
259 |
],
|
src/features/admin_access_restriction.php
CHANGED
@@ -499,7 +499,7 @@ class ICWP_WPSF_FeatureHandler_AdminAccessRestriction extends ICWP_WPSF_FeatureH
|
|
499 |
public function insertCustomJsVars_Admin() {
|
500 |
parent::insertCustomJsVars_Admin();
|
501 |
|
502 |
-
if ( $this->getSecAdminTimeLeft()
|
503 |
wp_localize_script(
|
504 |
$this->prefix( 'plugin' ),
|
505 |
'icwp_wpsf_vars_secadmin',
|
499 |
public function insertCustomJsVars_Admin() {
|
500 |
parent::insertCustomJsVars_Admin();
|
501 |
|
502 |
+
if ( $this->getSecAdminTimeLeft() > 0 ) {
|
503 |
wp_localize_script(
|
504 |
$this->prefix( 'plugin' ),
|
505 |
'icwp_wpsf_vars_secadmin',
|
src/features/audit_trail.php
CHANGED
@@ -50,7 +50,8 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
50 |
/** @var ICWP_WPSF_Processor_AuditTrail $oPro */
|
51 |
$oPro = $this->getProcessor();
|
52 |
/** @var Shield\Databases\AuditTrail\EntryVO $oEntry */
|
53 |
-
$oEntry = $oPro->
|
|
|
54 |
->getQuerySelector()
|
55 |
->byId( $nId );
|
56 |
|
@@ -89,7 +90,7 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
89 |
|
90 |
$oTableBuilder = ( new Shield\Tables\Build\AuditTrail() )
|
91 |
->setMod( $this )
|
92 |
-
->setDbHandler( $oPro->getDbHandler() );
|
93 |
|
94 |
return array(
|
95 |
'success' => true,
|
@@ -111,6 +112,19 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
111 |
return $this->isPremium() ? (int)$this->getOpt( 'audit_trail_max_entries' ) : $this->getDefaultMaxEntries();
|
112 |
}
|
113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
/**
|
115 |
* @return bool
|
116 |
*/
|
@@ -223,17 +237,19 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
223 |
);
|
224 |
|
225 |
try {
|
226 |
-
$oFinder = $oProc->
|
|
|
227 |
->getQuerySelector()
|
228 |
->addWhereSearch( 'wp_username', $oUser->user_login )
|
229 |
->setResultsAsVo( true );
|
230 |
|
231 |
$oWp = $this->loadWp();
|
|
|
232 |
foreach ( $oFinder->query() as $oEntry ) {
|
233 |
$aExportItem[ 'data' ][] = array(
|
234 |
$sTimeStamp = $oWp->getTimeStringForDisplay( $oEntry->getCreatedAt() ),
|
235 |
'name' => sprintf( '[%s] Audit Trail Entry', $sTimeStamp ),
|
236 |
-
'value' => sprintf( '[IP:%s] %s', $oEntry->
|
237 |
);
|
238 |
}
|
239 |
|
@@ -262,7 +278,8 @@ class ICWP_WPSF_FeatureHandler_AuditTrail extends ICWP_WPSF_FeatureHandler_BaseW
|
|
262 |
|
263 |
try {
|
264 |
$oThisUsername = $this->loadWpUsers()->getUserByEmail( $sEmail )->user_login;
|
265 |
-
$oProc->
|
|
|
266 |
->getQueryDeleter()
|
267 |
->addWhereSearch( 'wp_username', $oThisUsername )
|
268 |
->all();
|
50 |
/** @var ICWP_WPSF_Processor_AuditTrail $oPro */
|
51 |
$oPro = $this->getProcessor();
|
52 |
/** @var Shield\Databases\AuditTrail\EntryVO $oEntry */
|
53 |
+
$oEntry = $oPro->getSubProAuditor()
|
54 |
+
->getDbHandler()
|
55 |
->getQuerySelector()
|
56 |
->byId( $nId );
|
57 |
|
90 |
|
91 |
$oTableBuilder = ( new Shield\Tables\Build\AuditTrail() )
|
92 |
->setMod( $this )
|
93 |
+
->setDbHandler( $oPro->getSubProAuditor()->getDbHandler() );
|
94 |
|
95 |
return array(
|
96 |
'success' => true,
|
112 |
return $this->isPremium() ? (int)$this->getOpt( 'audit_trail_max_entries' ) : $this->getDefaultMaxEntries();
|
113 |
}
|
114 |
|
115 |
+
/**
|
116 |
+
* @return bool
|
117 |
+
*/
|
118 |
+
public function isEnabledAuditing() {
|
119 |
+
return $this->isAuditEmails()
|
120 |
+
|| $this->isAuditPlugins()
|
121 |
+
|| $this->isAuditThemes()
|
122 |
+
|| $this->isAuditPosts()
|
123 |
+
|| $this->isAuditShield()
|
124 |
+
|| $this->isAuditUsers()
|
125 |
+
|| $this->isAuditWp();
|
126 |
+
}
|
127 |
+
|
128 |
/**
|
129 |
* @return bool
|
130 |
*/
|
237 |
);
|
238 |
|
239 |
try {
|
240 |
+
$oFinder = $oProc->getSubProAuditor()
|
241 |
+
->getDbHandler()
|
242 |
->getQuerySelector()
|
243 |
->addWhereSearch( 'wp_username', $oUser->user_login )
|
244 |
->setResultsAsVo( true );
|
245 |
|
246 |
$oWp = $this->loadWp();
|
247 |
+
/** @var Shield\Databases\AuditTrail\EntryVO $oEntry */
|
248 |
foreach ( $oFinder->query() as $oEntry ) {
|
249 |
$aExportItem[ 'data' ][] = array(
|
250 |
$sTimeStamp = $oWp->getTimeStringForDisplay( $oEntry->getCreatedAt() ),
|
251 |
'name' => sprintf( '[%s] Audit Trail Entry', $sTimeStamp ),
|
252 |
+
'value' => sprintf( '[IP:%s] %s', $oEntry->ip, $oEntry->message )
|
253 |
);
|
254 |
}
|
255 |
|
278 |
|
279 |
try {
|
280 |
$oThisUsername = $this->loadWpUsers()->getUserByEmail( $sEmail )->user_login;
|
281 |
+
$oProc->getSubProAuditor()
|
282 |
+
->getDbHandler()
|
283 |
->getQueryDeleter()
|
284 |
->addWhereSearch( 'wp_username', $oThisUsername )
|
285 |
->all();
|
src/features/base.php
CHANGED
@@ -95,8 +95,8 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
95 |
add_filter( $this->prefix( 'ajaxAuthAction' ), array( $this, 'handleAuthAjax' ) );
|
96 |
add_filter( $this->prefix( 'ajaxNonAuthAction' ), array( $this, 'handleNonAuthAjax' ) );
|
97 |
|
98 |
-
if ( $oReq->
|
99 |
-
&& check_admin_referer( $oReq->
|
100 |
) {
|
101 |
add_action( $this->prefix( 'mod_request' ), array( $this, 'handleModRequest' ) );
|
102 |
}
|
@@ -373,7 +373,7 @@ abstract class ICWP_WPSF_FeatureHandler_Base extends ICWP_WPSF_Foundation {
|
|
373 |
/**
|
374 |
* @return ICWP_WPSF_OptionsVO
|
375 |
*/
|
376 |
-
|
377 |
if ( !isset( $this->oOptions ) ) {
|
378 |
$oCon = $this->getCon();
|
379 |
$this->oOptions = ( new ICWP_WPSF_OptionsVO )
|
95 |
add_filter( $this->prefix( 'ajaxAuthAction' ), array( $this, 'handleAuthAjax' ) );
|
96 |
add_filter( $this->prefix( 'ajaxNonAuthAction' ), array( $this, 'handleNonAuthAjax' ) );
|
97 |
|
98 |
+
if ( $oReq->request( 'action' ) == $this->prefix()
|
99 |
+
&& check_admin_referer( $oReq->request( 'exec' ), 'exec_nonce' )
|
100 |
) {
|
101 |
add_action( $this->prefix( 'mod_request' ), array( $this, 'handleModRequest' ) );
|
102 |
}
|
373 |
/**
|
374 |
* @return ICWP_WPSF_OptionsVO
|
375 |
*/
|
376 |
+
public function getOptionsVo() {
|
377 |
if ( !isset( $this->oOptions ) ) {
|
378 |
$oCon = $this->getCon();
|
379 |
$this->oOptions = ( new ICWP_WPSF_OptionsVO )
|
src/features/base_wpsf.php
CHANGED
@@ -135,7 +135,7 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
135 |
* @return string
|
136 |
*/
|
137 |
public function getPluginDefaultRecipientAddress() {
|
138 |
-
return apply_filters( $this->prefix( 'report_email_address' ),
|
139 |
}
|
140 |
|
141 |
/**
|
@@ -180,7 +180,10 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
180 |
),
|
181 |
'hrefs' => array(
|
182 |
'aar_forget_key' => $sHelpUrl
|
183 |
-
)
|
|
|
|
|
|
|
184 |
)
|
185 |
);
|
186 |
}
|
@@ -261,8 +264,8 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
261 |
if ( !isset( self::$bIsVerifiedBot ) ) {
|
262 |
$oSp = $this->loadServiceProviders();
|
263 |
|
264 |
-
$sIp =
|
265 |
-
$sAgent = (string)
|
266 |
if ( empty( $sAgent ) ) {
|
267 |
$sAgent = 'Unknown';
|
268 |
}
|
@@ -272,6 +275,7 @@ class ICWP_WPSF_FeatureHandler_BaseWpsf extends ICWP_WPSF_FeatureHandler_Base {
|
|
272 |
|| $oSp->isIp_YahooBot( $sIp, $sAgent )
|
273 |
|| $oSp->isIp_DuckDuckGoBot( $sIp, $sAgent )
|
274 |
|| $oSp->isIp_YandexBot( $sIp, $sAgent )
|
|
|
275 |
|| $oSp->isIp_BaiduBot( $sIp, $sAgent );
|
276 |
}
|
277 |
return self::$bIsVerifiedBot;
|
135 |
* @return string
|
136 |
*/
|
137 |
public function getPluginDefaultRecipientAddress() {
|
138 |
+
return apply_filters( $this->prefix( 'report_email_address' ), Services::WpGeneral()->getSiteAdminEmail() );
|
139 |
}
|
140 |
|
141 |
/**
|
180 |
),
|
181 |
'hrefs' => array(
|
182 |
'aar_forget_key' => $sHelpUrl
|
183 |
+
),
|
184 |
+
'classes' => array(
|
185 |
+
'top_container' => $this->isPremium() ? 'is-pro' : 'is-not-pro'
|
186 |
+
),
|
187 |
)
|
188 |
);
|
189 |
}
|
264 |
if ( !isset( self::$bIsVerifiedBot ) ) {
|
265 |
$oSp = $this->loadServiceProviders();
|
266 |
|
267 |
+
$sIp = Services::IP()->getRequestIp();
|
268 |
+
$sAgent = (string)Services::Request()->server( 'HTTP_USER_AGENT' );
|
269 |
if ( empty( $sAgent ) ) {
|
270 |
$sAgent = 'Unknown';
|
271 |
}
|
275 |
|| $oSp->isIp_YahooBot( $sIp, $sAgent )
|
276 |
|| $oSp->isIp_DuckDuckGoBot( $sIp, $sAgent )
|
277 |
|| $oSp->isIp_YandexBot( $sIp, $sAgent )
|
278 |
+
|| $oSp->isIp_iControlWP( $sIp )
|
279 |
|| $oSp->isIp_BaiduBot( $sIp, $sAgent );
|
280 |
}
|
281 |
return self::$bIsVerifiedBot;
|
src/features/hack_protect.php
CHANGED
@@ -13,7 +13,7 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
13 |
*/
|
14 |
protected function updateHandler() {
|
15 |
$this->clearCrons()
|
16 |
-
->setPtgRebuildSelfRequired( true ) // this is permanently required until a better solution is found
|
17 |
->setPtgUpdateStoreFormat( true );
|
18 |
}
|
19 |
|
@@ -37,7 +37,7 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
37 |
* @return array
|
38 |
*/
|
39 |
public function handleAuthAjax( $aAjaxResponse ) {
|
40 |
-
$oReq =
|
41 |
|
42 |
if ( empty( $aAjaxResponse ) ) {
|
43 |
|
@@ -94,7 +94,6 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
94 |
$bReinstall = (bool)$oReq->post( 'reinstall' );
|
95 |
$bActivate = (bool)$oReq->post( 'activate' );
|
96 |
$sFile = sanitize_text_field( wp_unslash( $oReq->post( 'file' ) ) );
|
97 |
-
$oWpP = $this->loadWpPlugins();
|
98 |
|
99 |
if ( $bReinstall ) {
|
100 |
/** @var ICWP_WPSF_Processor_HackProtect $oP */
|
@@ -104,13 +103,12 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
104 |
->reinstall( $sFile )
|
105 |
&& $bActivate;
|
106 |
}
|
|
|
107 |
if ( $bActivate ) {
|
108 |
-
|
109 |
}
|
110 |
|
111 |
-
return
|
112 |
-
'success' => true
|
113 |
-
);
|
114 |
}
|
115 |
|
116 |
/**
|
@@ -615,6 +613,13 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
615 |
return $this->setOpt( 'ptg_enable', $sValue );
|
616 |
}
|
617 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
618 |
public function insertCustomJsVars_Admin() {
|
619 |
parent::insertCustomJsVars_Admin();
|
620 |
|
@@ -689,6 +694,10 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
689 |
|
690 |
switch ( $this->loadRequest()->post( 'fScan' ) ) {
|
691 |
|
|
|
|
|
|
|
|
|
692 |
case 'wcf':
|
693 |
$oTableBuilder = new \FernleafSystems\Wordpress\Plugin\Shield\Tables\Build\ScanWcf();
|
694 |
break;
|
@@ -727,7 +736,7 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
727 |
);
|
728 |
}
|
729 |
|
730 |
-
|
731 |
$bSuccess = false;
|
732 |
$bPageReload = false;
|
733 |
$sMessage = _wpsf__( 'No scans were selected' );
|
@@ -760,7 +769,7 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
760 |
break;
|
761 |
}
|
762 |
|
763 |
-
if ( !empty( $oTablePro ) ) {
|
764 |
$oTablePro->doScan();
|
765 |
|
766 |
if ( isset( $aFormParams[ 'opt_clear_ignore' ] ) ) {
|
@@ -777,11 +786,11 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
777 |
}
|
778 |
}
|
779 |
|
780 |
-
return
|
781 |
'success' => $bSuccess,
|
782 |
'page_reload' => $bPageReload,
|
783 |
'message' => $sMessage,
|
784 |
-
|
785 |
}
|
786 |
|
787 |
/**
|
@@ -797,6 +806,12 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
797 |
$bSuccess = false;
|
798 |
$bReloadPage = false;
|
799 |
switch ( $oReq->post( 'fScan' ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
800 |
case 'ptg':
|
801 |
$bReloadPage = true;
|
802 |
$oTablePro = $oScanPro->getSubProcessorPtg();
|
@@ -1182,6 +1197,15 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
1182 |
);
|
1183 |
break;
|
1184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1185 |
case 'section_integrity_checking' :
|
1186 |
$sTitle = _wpsf__( 'Integrity Checks' );
|
1187 |
$sTitleShort = _wpsf__( 'Integrity Checks' );
|
@@ -1337,6 +1361,18 @@ class ICWP_WPSF_FeatureHandler_HackProtect extends ICWP_WPSF_FeatureHandler_Base
|
|
1337 |
$sDescription = _wpsf__( "Show links to re-install plugins and offer re-install when activating plugins." );
|
1338 |
break;
|
1339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1340 |
default:
|
1341 |
throw new \Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
1342 |
}
|
13 |
*/
|
14 |
protected function updateHandler() {
|
15 |
$this->clearCrons()
|
16 |
+
// ->setPtgRebuildSelfRequired( true ) // this is permanently required until a better solution is found
|
17 |
->setPtgUpdateStoreFormat( true );
|
18 |
}
|
19 |
|
37 |
* @return array
|
38 |
*/
|
39 |
public function handleAuthAjax( $aAjaxResponse ) {
|
40 |
+
$oReq = Services::Request();
|
41 |
|
42 |
if ( empty( $aAjaxResponse ) ) {
|
43 |
|
94 |
$bReinstall = (bool)$oReq->post( 'reinstall' );
|
95 |
$bActivate = (bool)$oReq->post( 'activate' );
|
96 |
$sFile = sanitize_text_field( wp_unslash( $oReq->post( 'file' ) ) );
|
|
|
97 |
|
98 |
if ( $bReinstall ) {
|
99 |
/** @var ICWP_WPSF_Processor_HackProtect $oP */
|
103 |
->reinstall( $sFile )
|
104 |
&& $bActivate;
|
105 |
}
|
106 |
+
|
107 |
if ( $bActivate ) {
|
108 |
+
Services::WpPlugins()->activate( $sFile );
|
109 |
}
|
110 |
|
111 |
+
return [ 'success' => true ];
|
|
|
|
|
112 |
}
|
113 |
|
114 |
/**
|
613 |
return $this->setOpt( 'ptg_enable', $sValue );
|
614 |
}
|
615 |
|
616 |
+
/**
|
617 |
+
* @return bool
|
618 |
+
*/
|
619 |
+
public function isApcEnabled() {
|
620 |
+
return !$this->isOpt( 'enabled_scan_apc', 'disabled' );
|
621 |
+
}
|
622 |
+
|
623 |
public function insertCustomJsVars_Admin() {
|
624 |
parent::insertCustomJsVars_Admin();
|
625 |
|
694 |
|
695 |
switch ( $this->loadRequest()->post( 'fScan' ) ) {
|
696 |
|
697 |
+
case 'apc':
|
698 |
+
$oTableBuilder = new \FernleafSystems\Wordpress\Plugin\Shield\Tables\Build\ScanApc();
|
699 |
+
break;
|
700 |
+
|
701 |
case 'wcf':
|
702 |
$oTableBuilder = new \FernleafSystems\Wordpress\Plugin\Shield\Tables\Build\ScanWcf();
|
703 |
break;
|
736 |
);
|
737 |
}
|
738 |
|
739 |
+
private function ajaxExec_StartScans() {
|
740 |
$bSuccess = false;
|
741 |
$bPageReload = false;
|
742 |
$sMessage = _wpsf__( 'No scans were selected' );
|
769 |
break;
|
770 |
}
|
771 |
|
772 |
+
if ( !empty( $oTablePro ) && $oTablePro->isEnabled() ) {
|
773 |
$oTablePro->doScan();
|
774 |
|
775 |
if ( isset( $aFormParams[ 'opt_clear_ignore' ] ) ) {
|
786 |
}
|
787 |
}
|
788 |
|
789 |
+
return [
|
790 |
'success' => $bSuccess,
|
791 |
'page_reload' => $bPageReload,
|
792 |
'message' => $sMessage,
|
793 |
+
];
|
794 |
}
|
795 |
|
796 |
/**
|
806 |
$bSuccess = false;
|
807 |
$bReloadPage = false;
|
808 |
switch ( $oReq->post( 'fScan' ) ) {
|
809 |
+
|
810 |
+
case 'apc':
|
811 |
+
$bReloadPage = true;
|
812 |
+
$oTablePro = $oScanPro->getSubProcessorApc();
|
813 |
+
break;
|
814 |
+
|
815 |
case 'ptg':
|
816 |
$bReloadPage = true;
|
817 |
$oTablePro = $oScanPro->getSubProcessorPtg();
|
1197 |
);
|
1198 |
break;
|
1199 |
|
1200 |
+
case 'section_scan_apc' :
|
1201 |
+
$sTitle = _wpsf__( 'Enable The Abandoned Plugin Scanner' );
|
1202 |
+
$sTitleShort = _wpsf__( 'Abandoned Plugin Scanner' );
|
1203 |
+
$aSummary = array(
|
1204 |
+
// sprintf( '%s - %s', _wpsf__( 'Purpose' ), _wpsf__( 'Monitor for unrecognised changes to your system.' ) ),
|
1205 |
+
// sprintf( '%s - %s', _wpsf__( 'Recommendation' ), _wpsf__( 'Enable these to prevent unauthorized changes to your WordPress site.' ) )
|
1206 |
+
);
|
1207 |
+
break;
|
1208 |
+
|
1209 |
case 'section_integrity_checking' :
|
1210 |
$sTitle = _wpsf__( 'Integrity Checks' );
|
1211 |
$sTitleShort = _wpsf__( 'Integrity Checks' );
|
1361 |
$sDescription = _wpsf__( "Show links to re-install plugins and offer re-install when activating plugins." );
|
1362 |
break;
|
1363 |
|
1364 |
+
case 'enabled_scan_apc' :
|
1365 |
+
$sName = _wpsf__( 'Abandoned Plugin Scanner' );
|
1366 |
+
$sSummary = _wpsf__( 'Enable The Abandoned Plugin Scanner' );
|
1367 |
+
$sDescription = _wpsf__( "Scan your WordPress.org assets for whether they've been abandoned." );
|
1368 |
+
break;
|
1369 |
+
|
1370 |
+
case 'display_apc' :
|
1371 |
+
$sName = _wpsf__( 'Highlight Plugins' );
|
1372 |
+
$sSummary = _wpsf__( 'Highlight Abandoned Plugins' );
|
1373 |
+
$sDescription = _wpsf__( "Abandoned plugins will be highlighted on the main plugins page." );
|
1374 |
+
break;
|
1375 |
+
|
1376 |
default:
|
1377 |
throw new \Exception( sprintf( 'An option has been defined but without strings assigned to it. Option key: "%s".', $sKey ) );
|
1378 |
}
|
src/features/insights.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
4 |
|
5 |
/**
|
@@ -31,7 +33,7 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
31 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditPro */
|
32 |
$oAuditPro = $oAuditMod->getProcessor();
|
33 |
/** @var \FernleafSystems\Wordpress\Plugin\Shield\Databases\AuditTrail\Select $oAuditSelect */
|
34 |
-
$oAuditSelect = $oAuditPro->getDbHandler()->getQuerySelector();
|
35 |
|
36 |
/** @var ICWP_WPSF_FeatureHandler_Ips $oIpMod */
|
37 |
$oIpMod = $oCon->getModule( 'ips' );
|
@@ -49,6 +51,8 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
49 |
$oModLicense = $oCon->getModule( 'license' );
|
50 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oModPlugin */
|
51 |
$oModPlugin = $oCon->getModule( 'plugin' );
|
|
|
|
|
52 |
|
53 |
$bIsPro = $this->isPremium();
|
54 |
$oCarbon = new \Carbon\Carbon();
|
@@ -113,7 +117,7 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
113 |
'bulk_action' => $oModPlugin->getAjaxActionData( 'bulk_action', true ),
|
114 |
),
|
115 |
'flags' => array(
|
116 |
-
'
|
117 |
)
|
118 |
);
|
119 |
break;
|
@@ -124,7 +128,7 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
124 |
'render_table_traffic' => $oTrafficMod->getAjaxActionData( 'render_table_traffic', true )
|
125 |
),
|
126 |
'flags' => array(
|
127 |
-
'can_traffic' => $
|
128 |
'is_enabled' => $oTrafficMod->isModOptEnabled(),
|
129 |
),
|
130 |
'hrefs' => array(
|
@@ -149,6 +153,10 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
149 |
$aData = $oProHp->buildInsightsVars();
|
150 |
break;
|
151 |
|
|
|
|
|
|
|
|
|
152 |
case 'users':
|
153 |
$aData = array(
|
154 |
'ajax' => array(
|
@@ -196,7 +204,7 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
196 |
'show_ads' => false,
|
197 |
'show_standard_options' => false,
|
198 |
'show_alt_content' => true,
|
199 |
-
'is_pro' => $
|
200 |
'has_notices' => count( $aSecNotices ) > 0,
|
201 |
),
|
202 |
);
|
@@ -204,14 +212,15 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
204 |
}
|
205 |
|
206 |
$aTopNav = array(
|
207 |
-
'insights'
|
208 |
-
'scans'
|
209 |
-
'ips'
|
210 |
-
'audit'
|
211 |
-
'
|
212 |
-
'
|
213 |
-
'
|
214 |
-
'
|
|
|
215 |
);
|
216 |
array_walk( $aTopNav, function ( &$sName, $sKey ) use ( $sSubNavSection ) {
|
217 |
$sName = array(
|
@@ -227,25 +236,29 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
227 |
'active' => false
|
228 |
);
|
229 |
|
230 |
-
$
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
249 |
echo $this->renderTemplate( sprintf( '/wpadmin_pages/insights_new/%s/index.twig', $sSubNavSection ), $aData, true );
|
250 |
}
|
251 |
|
@@ -254,47 +267,58 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
254 |
|
255 |
if ( $this->isThisModulePage() ) {
|
256 |
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
272 |
$sUnique = $this->prefix( $sAsset );
|
273 |
wp_register_script(
|
274 |
$sUnique,
|
275 |
$oConn->getPluginUrl_Js( $sAsset.'.js' ),
|
276 |
-
$aStdDeps,
|
277 |
$oConn->getVersion(),
|
278 |
false
|
279 |
);
|
280 |
wp_enqueue_script( $sUnique );
|
|
|
281 |
|
282 |
-
|
283 |
-
if ( $sSubnav == 'scans' ) {
|
284 |
-
$sAsset = 'shield-scans';
|
285 |
-
$sUnique = $this->prefix( $sAsset );
|
286 |
-
wp_register_script(
|
287 |
-
$sUnique,
|
288 |
-
$oConn->getPluginUrl_Js( $sAsset.'.js' ),
|
289 |
-
$aStdDeps,
|
290 |
-
$oConn->getVersion(),
|
291 |
-
false
|
292 |
-
);
|
293 |
-
wp_enqueue_script( $sUnique );
|
294 |
-
}
|
295 |
-
|
296 |
-
break;
|
297 |
-
}
|
298 |
}
|
299 |
}
|
300 |
}
|
@@ -316,9 +340,9 @@ class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
316 |
'never' => _wpsf__( 'Never' ),
|
317 |
'go_pro' => 'Go Pro!',
|
318 |
'options' => _wpsf__( 'Options' ),
|
319 |
-
'not_available' => _wpsf__( 'Sorry, this feature is
|
320 |
'not_enabled' => _wpsf__( "This feature isn't currently enabled." ),
|
321 |
-
'please_upgrade' => _wpsf__( '
|
322 |
'please_enable' => _wpsf__( 'Please turn on this feature in the options.' ),
|
323 |
'only_1_dollar' => _wpsf__( 'for just $1/month' ),
|
324 |
)
|
1 |
<?php
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Services\Services;
|
4 |
+
|
5 |
class ICWP_WPSF_FeatureHandler_Insights extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
6 |
|
7 |
/**
|
33 |
/** @var ICWP_WPSF_Processor_AuditTrail $oAuditPro */
|
34 |
$oAuditPro = $oAuditMod->getProcessor();
|
35 |
/** @var \FernleafSystems\Wordpress\Plugin\Shield\Databases\AuditTrail\Select $oAuditSelect */
|
36 |
+
$oAuditSelect = $oAuditPro->getSubProAuditor()->getDbHandler()->getQuerySelector();
|
37 |
|
38 |
/** @var ICWP_WPSF_FeatureHandler_Ips $oIpMod */
|
39 |
$oIpMod = $oCon->getModule( 'ips' );
|
51 |
$oModLicense = $oCon->getModule( 'license' );
|
52 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oModPlugin */
|
53 |
$oModPlugin = $oCon->getModule( 'plugin' );
|
54 |
+
/** @var ICWP_WPSF_Processor_Plugin $oProPlugin */
|
55 |
+
$oProPlugin = $oModPlugin->getProcessor();
|
56 |
|
57 |
$bIsPro = $this->isPremium();
|
58 |
$oCarbon = new \Carbon\Carbon();
|
117 |
'bulk_action' => $oModPlugin->getAjaxActionData( 'bulk_action', true ),
|
118 |
),
|
119 |
'flags' => array(
|
120 |
+
'can_adminnotes' => $bIsPro,
|
121 |
)
|
122 |
);
|
123 |
break;
|
128 |
'render_table_traffic' => $oTrafficMod->getAjaxActionData( 'render_table_traffic', true )
|
129 |
),
|
130 |
'flags' => array(
|
131 |
+
'can_traffic' => $bIsPro,
|
132 |
'is_enabled' => $oTrafficMod->isModOptEnabled(),
|
133 |
),
|
134 |
'hrefs' => array(
|
153 |
$aData = $oProHp->buildInsightsVars();
|
154 |
break;
|
155 |
|
156 |
+
case 'importexport':
|
157 |
+
$aData = $oProPlugin->getSubProImportExport()->buildInsightsVars();
|
158 |
+
break;
|
159 |
+
|
160 |
case 'users':
|
161 |
$aData = array(
|
162 |
'ajax' => array(
|
204 |
'show_ads' => false,
|
205 |
'show_standard_options' => false,
|
206 |
'show_alt_content' => true,
|
207 |
+
'is_pro' => $bIsPro,
|
208 |
'has_notices' => count( $aSecNotices ) > 0,
|
209 |
),
|
210 |
);
|
212 |
}
|
213 |
|
214 |
$aTopNav = array(
|
215 |
+
'insights' => _wpsf__( 'Overview' ),
|
216 |
+
'scans' => _wpsf__( 'Scans' ),
|
217 |
+
'ips' => _wpsf__( 'IP Lists' ),
|
218 |
+
'audit' => _wpsf__( 'Audit Trail' ),
|
219 |
+
'users' => _wpsf__( 'Users' ),
|
220 |
+
'license' => _wpsf__( 'Pro' ),
|
221 |
+
'traffic' => _wpsf__( 'Traffic' ),
|
222 |
+
'notes' => _wpsf__( 'Notes' ),
|
223 |
+
'importexport' => sprintf( '%s/%s', _wpsf__( 'Import' ), _wpsf__( 'Export' ) ),
|
224 |
);
|
225 |
array_walk( $aTopNav, function ( &$sName, $sKey ) use ( $sSubNavSection ) {
|
226 |
$sName = array(
|
236 |
'active' => false
|
237 |
);
|
238 |
|
239 |
+
$oDp = \FernleafSystems\Wordpress\Services\Services::DataManipulation();
|
240 |
+
$aData = $oDp->mergeArraysRecursive(
|
241 |
+
$this->getBaseDisplayData( false ),
|
242 |
+
array(
|
243 |
+
'classes' => array(
|
244 |
+
'page_container' => 'page-insights page-'.$sSubNavSection
|
245 |
+
),
|
246 |
+
'flags' => array(
|
247 |
+
'show_promo' => !$bIsPro
|
248 |
+
),
|
249 |
+
'hrefs' => array(
|
250 |
+
'go_pro' => 'https://icwp.io/shieldgoprofeature',
|
251 |
+
'nav_home' => $this->getUrl_AdminPage(),
|
252 |
+
'top_nav' => $aTopNav,
|
253 |
+
'img_banner' => $oCon->getPluginUrl_Image( 'pluginlogo_banner-170x40.png' )
|
254 |
+
),
|
255 |
+
'strings' => $this->getDisplayStrings(),
|
256 |
+
'vars' => [
|
257 |
+
'changelog_id' => $oCon->getPluginSpec()[ 'meta' ][ 'headway_changelog_id' ],
|
258 |
+
],
|
259 |
+
),
|
260 |
+
$aData
|
261 |
+
);
|
262 |
echo $this->renderTemplate( sprintf( '/wpadmin_pages/insights_new/%s/index.twig', $sSubNavSection ), $aData, true );
|
263 |
}
|
264 |
|
267 |
|
268 |
if ( $this->isThisModulePage() ) {
|
269 |
|
270 |
+
$oConn = $this->getCon();
|
271 |
+
$aStdDeps = array( $this->prefix( 'plugin' ) );
|
272 |
+
$sSubnav = $this->loadRequest()->query( 'subnav' );
|
273 |
+
switch ( $sSubnav ) {
|
274 |
+
|
275 |
+
case 'importexport':
|
276 |
+
|
277 |
+
$sAsset = 'shield-import';
|
278 |
+
$sUnique = $this->prefix( $sAsset );
|
279 |
+
wp_register_script(
|
280 |
+
$sUnique,
|
281 |
+
$oConn->getPluginUrl_Js( $sAsset.'.js' ),
|
282 |
+
$aStdDeps,
|
283 |
+
$oConn->getVersion(),
|
284 |
+
false
|
285 |
+
);
|
286 |
+
wp_enqueue_script( $sUnique );
|
287 |
+
break;
|
288 |
+
|
289 |
+
case 'scans':
|
290 |
+
case 'audit':
|
291 |
+
case 'ips':
|
292 |
+
case 'notes':
|
293 |
+
case 'traffic':
|
294 |
+
case 'users':
|
295 |
+
|
296 |
+
$sAsset = 'shield-tables';
|
297 |
+
$sUnique = $this->prefix( $sAsset );
|
298 |
+
wp_register_script(
|
299 |
+
$sUnique,
|
300 |
+
$oConn->getPluginUrl_Js( $sAsset.'.js' ),
|
301 |
+
$aStdDeps,
|
302 |
+
$oConn->getVersion(),
|
303 |
+
false
|
304 |
+
);
|
305 |
+
wp_enqueue_script( $sUnique );
|
306 |
+
|
307 |
+
$aStdDeps[] = $sUnique;
|
308 |
+
if ( $sSubnav == 'scans' ) {
|
309 |
+
$sAsset = 'shield-scans';
|
310 |
$sUnique = $this->prefix( $sAsset );
|
311 |
wp_register_script(
|
312 |
$sUnique,
|
313 |
$oConn->getPluginUrl_Js( $sAsset.'.js' ),
|
314 |
+
array_unique( $aStdDeps ),
|
315 |
$oConn->getVersion(),
|
316 |
false
|
317 |
);
|
318 |
wp_enqueue_script( $sUnique );
|
319 |
+
}
|
320 |
|
321 |
+
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
}
|
323 |
}
|
324 |
}
|
340 |
'never' => _wpsf__( 'Never' ),
|
341 |
'go_pro' => 'Go Pro!',
|
342 |
'options' => _wpsf__( 'Options' ),
|
343 |
+
'not_available' => _wpsf__( 'Sorry, this feature would typically be used by professionals and so is a Pro-only feature.' ),
|
344 |
'not_enabled' => _wpsf__( "This feature isn't currently enabled." ),
|
345 |
+
'please_upgrade' => _wpsf__( 'You can activate this feature (along with many others) and support development of this plugin for just $12.' ),
|
346 |
'please_enable' => _wpsf__( 'Please turn on this feature in the options.' ),
|
347 |
'only_1_dollar' => _wpsf__( 'for just $1/month' ),
|
348 |
)
|
src/features/ips.php
CHANGED
@@ -222,6 +222,49 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
222 |
];
|
223 |
}
|
224 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
225 |
/**
|
226 |
* @param string $sOptKey
|
227 |
* @return string
|
@@ -330,6 +373,12 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
330 |
.'<br />'._wpsf__( 'Shorter IP black lists are more efficient and a more intelligent use of an IP-based blocking system.' );
|
331 |
break;
|
332 |
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
case 'track_404' :
|
334 |
$sName = _wpsf__( 'Track 404s' );
|
335 |
$sSummary = _wpsf__( 'Use 404s As An Transgression' );
|
@@ -371,14 +420,22 @@ class ICWP_WPSF_FeatureHandler_Ips extends ICWP_WPSF_FeatureHandler_BaseWpsf {
|
|
371 |
/**
|
372 |
*/
|
373 |
protected function addFilterIpsToWhiteList() {
|
|
|
374 |
$oSp = $this->loadServiceProviders();
|
375 |
|
376 |
-
|
377 |
-
|
378 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
}
|
380 |
|
381 |
-
$aIps = apply_filters( 'icwp_simple_firewall_whitelist_ips', $
|
382 |
|
383 |
if ( !empty( $aIps ) && is_array( $aIps ) ) {
|
384 |
/** @var ICWP_WPSF_Processor_Ips $oPro */
|
222 |
];
|
223 |
}
|
224 |
|
225 |
+
/**
|
226 |
+
* @return array
|
227 |
+
*/
|
228 |
+
public function getAutoUnblockIps() {
|
229 |
+
$aIps = $this->getOpt( 'autounblock_ips', [] );
|
230 |
+
return is_array( $aIps ) ? $aIps : [];
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* @param string $sIp
|
235 |
+
* @return bool
|
236 |
+
*/
|
237 |
+
public function getCanIpRequestAutoUnblock( $sIp ) {
|
238 |
+
$aExistingIps = $this->getAutoUnblockIps();
|
239 |
+
return !array_key_exists( $sIp, $aExistingIps )
|
240 |
+
|| ( Services::Request()->ts() - $aExistingIps[ $sIp ] > DAY_IN_SECONDS );
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* @param string $sIp
|
245 |
+
* @return $this
|
246 |
+
*/
|
247 |
+
public function updateIpRequestAutoUnblockTs( $sIp ) {
|
248 |
+
$aExistingIps = $this->getAutoUnblockIps();
|
249 |
+
$aExistingIps[ $sIp ] = Services::Request()->ts();
|
250 |
+
return $this->setAutoUnblockIps( $aExistingIps );
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* @param array $aIps
|
255 |
+
* @return $this
|
256 |
+
*/
|
257 |
+
public function setAutoUnblockIps( $aIps ) {
|
258 |
+
return $this->setOpt( 'autounblock_ips', $aIps );
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* @return bool
|
263 |
+
*/
|
264 |
+
public function isEnabledAutoUserRecover() {
|
265 |
+
return !$this->isOpt( 'user_auto_recover', 'disabled' );
|
266 |
+
}
|
267 |
+
|
268 |
/**
|
269 |
* @param string $sOptKey
|
270 |
* @return string
|
373 |
.'<br />'._wpsf__( 'Shorter IP black lists are more efficient and a more intelligent use of an IP-based blocking system.' );
|
374 |
break;
|
375 |
|
376 |
+
case 'user_auto_recover' :
|
377 |
+
$sName = _wpsf__( 'User Auto Unblock' );
|
378 |
+
$sSummary = _wpsf__( 'Allow Visitors To Unblock Their IP' );
|
379 |
+
$sDescription = _wpsf__( 'Allow visitors blocked by the plugin to automatically unblock themselves.' );
|
380 |
+
break;
|
381 |
+
|
382 |
case 'track_404' :
|
383 |
$sName = _wpsf__( 'Track 404s' );
|
384 |
$sSummary = _wpsf__( 'Use 404s As An Transgression' );
|
420 |
/**
|
421 |
*/
|
422 |
protected function addFilterIpsToWhiteList() {
|
423 |
+
$aIps = [];
|
424 |
$oSp = $this->loadServiceProviders();
|
425 |
|
426 |
+
if ( function_exists( 'mwp_init' ) ) {
|
427 |
+
foreach ( array_flip( $oSp->getIps_ManageWp() ) as $sIp => $n ) {
|
428 |
+
$aIps[ $sIp ] = 'ManageWP';
|
429 |
+
}
|
430 |
+
}
|
431 |
+
|
432 |
+
if ( class_exists( 'ICWP_Plugin' ) ) {
|
433 |
+
foreach ( array_flip( $oSp->getIps_iControlWP( true ) ) as $sIp => $n ) {
|
434 |
+
$aIps[ $sIp ] = 'iControlWP';
|
435 |
+
}
|
436 |
}
|
437 |
|
438 |
+
$aIps = apply_filters( 'icwp_simple_firewall_whitelist_ips', $aIps );
|
439 |
|
440 |
if ( !empty( $aIps ) && is_array( $aIps ) ) {
|
441 |
/** @var ICWP_WPSF_Processor_Ips $oPro */
|
src/features/lockdown.php
CHANGED
@@ -106,11 +106,11 @@ class ICWP_WPSF_FeatureHandler_Lockdown extends ICWP_WPSF_FeatureHandler_BaseWps
|
|
106 |
$aThis[ 'key_opts' ][ 'mod' ] = $this->getModDisabledInsight();
|
107 |
}
|
108 |
else {
|
109 |
-
$
|
110 |
$aThis[ 'key_opts' ][ 'editing' ] = array(
|
111 |
'name' => _wpsf__( 'WP File Editing' ),
|
112 |
-
'enabled' => $
|
113 |
-
'summary' => $
|
114 |
_wpsf__( 'File editing is disabled' )
|
115 |
: _wpsf__( "File editing is permitted through WP admin" ),
|
116 |
'weight' => 2,
|
106 |
$aThis[ 'key_opts' ][ 'mod' ] = $this->getModDisabledInsight();
|
107 |
}
|
108 |
else {
|
109 |
+
$bEditingDisabled = !current_user_can( 'edit_plugins' );
|
110 |
$aThis[ 'key_opts' ][ 'editing' ] = array(
|
111 |
'name' => _wpsf__( 'WP File Editing' ),
|
112 |
+
'enabled' => $bEditingDisabled,
|
113 |
+
'summary' => $bEditingDisabled ?
|
114 |
_wpsf__( 'File editing is disabled' )
|
115 |
: _wpsf__( "File editing is permitted through WP admin" ),
|
116 |
'weight' => 2,
|
src/features/plugin.php
CHANGED
@@ -191,6 +191,10 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
191 |
$aAjaxResponse = $this->ajaxExec_AdminNotesInsert();
|
192 |
break;
|
193 |
|
|
|
|
|
|
|
|
|
194 |
default:
|
195 |
break;
|
196 |
}
|
@@ -198,6 +202,54 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
198 |
return parent::handleAuthAjax( $aAjaxResponse );
|
199 |
}
|
200 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
201 |
/**
|
202 |
* @return array
|
203 |
*/
|
@@ -328,6 +380,40 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
328 |
);
|
329 |
}
|
330 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
331 |
/**
|
332 |
* @return array
|
333 |
*/
|
@@ -605,7 +691,7 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
605 |
*/
|
606 |
public function hasImportExportMasterImportUrl() {
|
607 |
$sMaster = $this->getImportExportMasterImportUrl();
|
608 |
-
return !empty( $sMaster ) && ( rtrim( $this->loadWp()->getHomeUrl(), '/' ) != $sMaster );
|
609 |
}
|
610 |
|
611 |
/**
|
@@ -686,6 +772,24 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
686 |
return $this;
|
687 |
}
|
688 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
689 |
/**
|
690 |
* @param string $sKey
|
691 |
* @return bool
|
@@ -906,10 +1010,11 @@ class ICWP_WPSF_FeatureHandler_Plugin extends ICWP_WPSF_FeatureHandler_BaseWpsf
|
|
906 |
$aThis[ 'key_opts' ][ 'mod' ] = $this->getModDisabledInsight();
|
907 |
}
|
908 |
else {
|
|
|
909 |
$aThis[ 'key_opts' ][ 'editing' ] = array(
|
910 |
'name' => _wpsf__( 'Visitor IP' ),
|
911 |
'enabled' => true,
|
912 |
-
'summary' => sprintf( _wpsf__( 'Visitor IP address source is: %s' ), $
|
913 |
'weight' => 0,
|
914 |
'href' => $this->getUrl_DirectLinkToOption( 'visitor_address_source' ),
|
915 |
);
|
191 |
$aAjaxResponse = $this->ajaxExec_AdminNotesInsert();
|
192 |
break;
|
193 |
|
194 |
+
case 'import_from_site':
|
195 |
+
$aAjaxResponse = $this->ajaxExec_ImportFromSite();
|
196 |
+
break;
|
197 |
+
|
198 |
default:
|
199 |
break;
|
200 |
}
|
202 |
return parent::handleAuthAjax( $aAjaxResponse );
|
203 |
}
|
204 |
|
205 |
+
/**
|
206 |
+
*/
|
207 |
+
public function handleModRequest() {
|
208 |
+
$oReq = $this->loadRequest();
|
209 |
+
switch ( $oReq->request( 'exec' ) ) {
|
210 |
+
|
211 |
+
case 'export_file_download':
|
212 |
+
header( 'Set-Cookie: fileDownload=true; path=/' );
|
213 |
+
/** @var ICWP_WPSF_Processor_Plugin $oPro */
|
214 |
+
$oPro = $this->getProcessor();
|
215 |
+
$oPro->getSubProImportExport()
|
216 |
+
->doExportDownload();
|
217 |
+
break;
|
218 |
+
|
219 |
+
case 'import_file_upload':
|
220 |
+
/** @var ICWP_WPSF_Processor_Plugin $oPro */
|
221 |
+
$oPro = $this->getProcessor();
|
222 |
+
try {
|
223 |
+
$oPro->getSubProImportExport()
|
224 |
+
->importFromUploadFile();
|
225 |
+
$bSuccess = true;
|
226 |
+
$sMessage = _wpsf__( 'Options imported successfully' );
|
227 |
+
}
|
228 |
+
catch ( \Exception $oE ) {
|
229 |
+
$bSuccess = false;
|
230 |
+
$sMessage = $oE->getMessage();
|
231 |
+
}
|
232 |
+
$this->loadWpNotices()
|
233 |
+
->addFlashUserMessage( $sMessage, !$bSuccess );
|
234 |
+
$this->loadWp()->doRedirect( $this->getUrlImportExport() );
|
235 |
+
break;
|
236 |
+
|
237 |
+
default:
|
238 |
+
break;
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* TODO: build better/dynamic direct linking to insights sub-pages
|
244 |
+
* see also hackprotect getUrlManualScan()
|
245 |
+
*/
|
246 |
+
private function getUrlImportExport() {
|
247 |
+
return add_query_arg(
|
248 |
+
[ 'subnav' => 'importexport' ],
|
249 |
+
$this->getCon()->getModule( 'insights' )->getUrl_AdminPage()
|
250 |
+
);
|
251 |
+
}
|
252 |
+
|
253 |
/**
|
254 |
* @return array
|
255 |
*/
|
380 |
);
|
381 |
}
|
382 |
|
383 |
+
private function ajaxExec_ImportFromSite() {
|
384 |
+
$bSuccess = false;
|
385 |
+
$aFormParams = array_merge(
|
386 |
+
[
|
387 |
+
'confirm' => 'N'
|
388 |
+
],
|
389 |
+
$this->getAjaxFormParams()
|
390 |
+
);
|
391 |
+
|
392 |
+
// TODO: align with wizard AND combine with file upload errors
|
393 |
+
if ( $aFormParams[ 'confirm' ] !== 'Y' ) {
|
394 |
+
$sMessage = _wpsf__( 'Please check the box to confirm your intent to overwrite settings' );
|
395 |
+
}
|
396 |
+
else {
|
397 |
+
$sMasterSiteUrl = $aFormParams[ 'MasterSiteUrl' ];
|
398 |
+
$sSecretKey = $aFormParams[ 'MasterSiteSecretKey' ];
|
399 |
+
$bEnabledNetwork = $aFormParams[ 'ShieldNetwork' ] === 'Y';
|
400 |
+
$bDisableNetwork = $aFormParams[ 'ShieldNetwork' ] === 'N';
|
401 |
+
$bNetwork = $bEnabledNetwork ? true : ( $bDisableNetwork ? false : null );
|
402 |
+
|
403 |
+
/** @var ICWP_WPSF_Processor_Plugin $oP */
|
404 |
+
$oP = $this->getProcessor();
|
405 |
+
/** @var Shield\Databases\AdminNotes\Insert $oInserter */
|
406 |
+
$nCode = $oP->getSubProImportExport()
|
407 |
+
->runImport( $sMasterSiteUrl, $sSecretKey, $bNetwork );
|
408 |
+
$bSuccess = $nCode == 0;
|
409 |
+
$sMessage = $bSuccess ? _wpsf__( 'Options imported successfully' ) : _wpsf__( 'Options failed to import' );
|
410 |
+
}
|
411 |
+
return array(
|
412 |
+
'success' => $bSuccess,
|
413 |
+
'message' => $sMessage
|
414 |
+
);
|
415 |
+
}
|
416 |
+
|
417 |
/**
|
418 |
* @return array
|
419 |
*/
|
691 |
*/
|
692 |
public function hasImportExportMasterImportUrl() {
|
693 |
$sMaster = $this->getImportExportMasterImportUrl();
|
694 |
+
return !empty( $sMaster );// && ( rtrim( $this->loadWp()->getHomeUrl(), '/' ) != $sMaster );
|
695 |
}
|
696 |
|
697 |
/**
|
772 |
return $this;
|
773 |
}
|
774 |
|
775 |
+
/**
|
776 |
+
* @param string $sUrl
|
777 |
+
* @return $this
|
778 |
+
*/
|
779 |
+
public function removeUrlFromImportExportWhitelistUrls( $sUrl ) {
|
780 |
+
$sUrl = $this->loadDP()->validateSimpleHttpUrl( $sUrl );
|
781 |
+
if ( $sUrl !== false ) {
|
782 |
+
$aWhitelistUrls = $this->getImportExportWhitelist();
|
783 |
+
$sKey = array_search( $sUrl, $aWhitelistUrls );
|
784 |
+
if ( $sKey !== false ) {
|
785 |
+
unset( $aWhitelistUrls[ $sKey ] );
|
786 |
+
}
|
787 |
+
$this->setOpt( 'importexport_whitelist', $aWhitelistUrls )
|
788 |
+
->savePluginOptions();
|
789 |
+
}
|
790 |
+
return $this;
|
791 |
+
}
|
792 |
+
|
793 |
/**
|
794 |
* @param string $sKey
|
795 |
* @return bool
|
1010 |
$aThis[ 'key_opts' ][ 'mod' ] = $this->getModDisabledInsight();
|
1011 |
}
|
1012 |
else {
|
1013 |
+
$sSource = $this->getOptionsVo()->getSelectOptionValueText( 'visitor_address_source' );
|
1014 |
$aThis[ 'key_opts' ][ 'editing' ] = array(
|
1015 |
'name' => _wpsf__( 'Visitor IP' ),
|
1016 |
'enabled' => true,
|
1017 |
+
'summary' => sprintf( _wpsf__( 'Visitor IP address source is: %s' ), $sSource ),
|
1018 |
'weight' => 0,
|
1019 |
'href' => $this->getUrl_DirectLinkToOption( 'visitor_address_source' ),
|
1020 |
);
|
src/lib/src/Crons/StandardCron.php
CHANGED
@@ -6,19 +6,16 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
6 |
|
7 |
trait StandardCron {
|
8 |
|
|
|
|
|
|
|
|
|
|
|
9 |
protected function setupCron() {
|
10 |
try {
|
11 |
-
$sRecurrence = $this->getCronRecurrence();
|
12 |
-
if ( strpos( $sRecurrence, 'per-day' ) > 0 ) {
|
13 |
-
// It's a custom schedule so we need to set the next run time more specifically
|
14 |
-
$nNext = Services::Request()->ts() + ( DAY_IN_SECONDS/$this->getCronFrequency() );
|
15 |
-
}
|
16 |
-
else {
|
17 |
-
$nNext = null;
|
18 |
-
}
|
19 |
Services::WpCron()
|
20 |
-
->setRecurrence( $
|
21 |
-
->setNextRun( $
|
22 |
->createCronJob( $this->getCronName(), array( $this, 'runCron' ) );
|
23 |
}
|
24 |
catch ( \Exception $oE ) {
|
@@ -47,6 +44,13 @@ trait StandardCron {
|
|
47 |
*/
|
48 |
abstract protected function getCronName();
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
/**
|
51 |
* @return int
|
52 |
*/
|
@@ -56,14 +60,28 @@ trait StandardCron {
|
|
56 |
}
|
57 |
|
58 |
/**
|
59 |
-
* @throws \Exception
|
60 |
*/
|
61 |
public function deleteCron() {
|
62 |
Services::WpCron()->deleteCronJob( $this->getCronName() );
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
*/
|
67 |
public function runCron() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
}
|
69 |
}
|
6 |
|
7 |
trait StandardCron {
|
8 |
|
9 |
+
/**
|
10 |
+
* @var int
|
11 |
+
*/
|
12 |
+
private $nCronFirstRun;
|
13 |
+
|
14 |
protected function setupCron() {
|
15 |
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
Services::WpCron()
|
17 |
+
->setRecurrence( $this->getCronRecurrence() )
|
18 |
+
->setNextRun( $this->getFirstRunTimestamp() )
|
19 |
->createCronJob( $this->getCronName(), array( $this, 'runCron' ) );
|
20 |
}
|
21 |
catch ( \Exception $oE ) {
|
44 |
*/
|
45 |
abstract protected function getCronName();
|
46 |
|
47 |
+
/**
|
48 |
+
* @return int
|
49 |
+
*/
|
50 |
+
public function getFirstRunTimestamp() {
|
51 |
+
return empty( $this->nCronFirstRun ) ? ( Services::Request()->ts() + MINUTE_IN_SECONDS ) : $this->nCronFirstRun;
|
52 |
+
}
|
53 |
+
|
54 |
/**
|
55 |
* @return int
|
56 |
*/
|
60 |
}
|
61 |
|
62 |
/**
|
|
|
63 |
*/
|
64 |
public function deleteCron() {
|
65 |
Services::WpCron()->deleteCronJob( $this->getCronName() );
|
66 |
}
|
67 |
|
68 |
+
protected function resetCron() {
|
69 |
+
$this->deleteCron();
|
70 |
+
$this->setupCron();
|
71 |
+
}
|
72 |
+
|
73 |
/**
|
74 |
*/
|
75 |
public function runCron() {
|
76 |
+
// Override to run the actual Cron activity
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* @param int $nFirstRun
|
81 |
+
* @return $this
|
82 |
+
*/
|
83 |
+
public function setFirstRun( $nFirstRun ) {
|
84 |
+
$this->nCronFirstRun = $nFirstRun;
|
85 |
+
return $this;
|
86 |
}
|
87 |
}
|
src/lib/src/Scans/Apc/ConvertResultsToVos.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Databases\Scanner\EntryVO;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
7 |
+
|
8 |
+
/**
|
9 |
+
* Class ConvertResultsToVos
|
10 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc
|
11 |
+
*/
|
12 |
+
class ConvertResultsToVos extends Scans\Base\BaseConvertResultsToVos {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @param ResultItem $oIt
|
16 |
+
* @return EntryVO
|
17 |
+
*/
|
18 |
+
public function convertItem( $oIt ) {
|
19 |
+
$oVo = parent::convertItem( $oIt );
|
20 |
+
$oVo->scan = $oIt::SCAN_RESULT_TYPE;
|
21 |
+
return $oVo;
|
22 |
+
}
|
23 |
+
}
|
src/lib/src/Scans/Apc/ConvertVosToResults.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class ConvertVosToResults
|
9 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc
|
10 |
+
*/
|
11 |
+
class ConvertVosToResults extends Shield\Scans\Base\BaseConvertVosToResults {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* @param Shield\Databases\Scanner\EntryVO[] $oVos
|
15 |
+
* @return ResultsSet
|
16 |
+
*/
|
17 |
+
public function convert( $oVos ) {
|
18 |
+
$oRes = new ResultsSet();
|
19 |
+
foreach ( $oVos as $oVo ) {
|
20 |
+
$oRes->addItem( $this->convertItem( $oVo ) );
|
21 |
+
}
|
22 |
+
return $oRes;
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param Shield\Databases\Scanner\EntryVO $oVo
|
27 |
+
* @return ResultItem
|
28 |
+
*/
|
29 |
+
public function convertItem( $oVo ) {
|
30 |
+
return ( new ResultItem() )->applyFromArray( $oVo->meta );
|
31 |
+
}
|
32 |
+
}
|
src/lib/src/Scans/Apc/ResultItem.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans\Base;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class ResultItem
|
9 |
+
* @property string slug
|
10 |
+
* @property string context
|
11 |
+
* @property int last_updated_at
|
12 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc
|
13 |
+
*/
|
14 |
+
class ResultItem extends Base\BaseResultItem {
|
15 |
+
const SCAN_RESULT_TYPE = 'apc';
|
16 |
+
}
|
src/lib/src/Scans/Apc/ResultsSet.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans\Base;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class ResultsSet
|
9 |
+
* @property ResultItem[] $aItems
|
10 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc
|
11 |
+
*/
|
12 |
+
class ResultsSet extends Base\BaseResultsSet {
|
13 |
+
|
14 |
+
/**
|
15 |
+
* @return int
|
16 |
+
*/
|
17 |
+
public function countUniqueSlugs() {
|
18 |
+
return count( $this->getAllResultsSetsForUniqueSlugs() );
|
19 |
+
}
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @return int
|
23 |
+
*/
|
24 |
+
public function countUniqueSlugsForPluginsContext() {
|
25 |
+
return count( $this->getAllResultsSetsForPluginsContext() );
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @return int
|
30 |
+
*/
|
31 |
+
public function countUniqueSlugsForThemesContext() {
|
32 |
+
return count( $this->getAllResultsSetsForThemesContext() );
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Provides a collection of ResultsSets for Plugins.
|
37 |
+
* @return ResultsSet[]
|
38 |
+
*/
|
39 |
+
public function getAllResultsSetsForPluginsContext() {
|
40 |
+
return $this->getAllResultsSetsForContext( 'plugins' );
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Provides a collection of ResultsSets for Themes.
|
45 |
+
* @return ResultsSet[]
|
46 |
+
*/
|
47 |
+
public function getAllResultsSetsForThemesContext() {
|
48 |
+
return $this->getAllResultsSetsForContext( 'themes' );
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @param string $sContext
|
53 |
+
* @return ResultsSet[]
|
54 |
+
*/
|
55 |
+
public function getAllResultsSetsForContext( $sContext ) {
|
56 |
+
$aCollection = array();
|
57 |
+
foreach ( $this->getAllResultsSetsForUniqueSlugs() as $sSlug => $oRS ) {
|
58 |
+
if ( $oRS->getItems()[ 0 ]->context == $sContext ) {
|
59 |
+
$aCollection[ $sSlug ] = $oRS;
|
60 |
+
}
|
61 |
+
}
|
62 |
+
return $aCollection;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @return ResultsSet[]
|
67 |
+
*/
|
68 |
+
public function getAllResultsSetsForUniqueSlugs() {
|
69 |
+
$aCollection = array();
|
70 |
+
foreach ( $this->getUniqueSlugs() as $sSlug ) {
|
71 |
+
$oRS = $this->getResultsSetForSlug( $sSlug );
|
72 |
+
if ( $oRS->hasItems() ) {
|
73 |
+
$aCollection[ $sSlug ] = $oRS;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
ksort( $aCollection, SORT_NATURAL );
|
77 |
+
return $aCollection;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param string $sSlug
|
82 |
+
* @return ResultItem[]
|
83 |
+
*/
|
84 |
+
public function getItemsForSlug( $sSlug ) {
|
85 |
+
return array_values( array_filter(
|
86 |
+
$this->getItems(),
|
87 |
+
function ( $oItem ) use ( $sSlug ) {
|
88 |
+
/** @var ResultItem $oItem */
|
89 |
+
return $oItem->slug == $sSlug;
|
90 |
+
}
|
91 |
+
) );
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @param string $sSlug
|
96 |
+
* @return ResultsSet
|
97 |
+
*/
|
98 |
+
public function getResultsSetForSlug( $sSlug ) {
|
99 |
+
$oRes = new ResultsSet();
|
100 |
+
array_map(
|
101 |
+
function ( $oItem ) use ( $oRes ) {
|
102 |
+
/** @var ResultItem $oItem */
|
103 |
+
$oRes->addItem( $oItem );
|
104 |
+
},
|
105 |
+
$this->getItemsForSlug( $sSlug )
|
106 |
+
);
|
107 |
+
return $oRes;
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* @return string[]
|
112 |
+
*/
|
113 |
+
public function getUniqueSlugs() {
|
114 |
+
return array_unique( array_map(
|
115 |
+
function ( $oItem ) {
|
116 |
+
/** @var ResultItem $oItem */
|
117 |
+
return $oItem->slug;
|
118 |
+
},
|
119 |
+
$this->getItems()
|
120 |
+
) );
|
121 |
+
}
|
122 |
+
}
|
src/lib/src/Scans/Apc/Scanner.php
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans\Wpv\WpVulnDb\RetrieveForItem;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans\Wpv\WpVulnDb\WpVulnVO;
|
7 |
+
use FernleafSystems\Wordpress\Services\Services;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Class Scanner
|
11 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Scans\Apc
|
12 |
+
*/
|
13 |
+
class Scanner {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var
|
17 |
+
*/
|
18 |
+
private $nAbandonedLimit;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @return ResultsSet
|
22 |
+
*/
|
23 |
+
public function run() {
|
24 |
+
$oResultSet = new ResultsSet();
|
25 |
+
|
26 |
+
foreach ( $this->getAllAbandonedPlugins() as $sFile => $nLastUpdatedAt ) {
|
27 |
+
$oItem = new ResultItem();
|
28 |
+
$oItem->slug = $sFile;
|
29 |
+
$oItem->context = 'plugins';
|
30 |
+
$oItem->last_updated_at = $nLastUpdatedAt;
|
31 |
+
$oResultSet->addItem( $oItem );
|
32 |
+
}
|
33 |
+
|
34 |
+
return $oResultSet;
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @return array - keys are plugin base files, values are last_updated timestamp
|
39 |
+
*/
|
40 |
+
private function getAllAbandonedPlugins() {
|
41 |
+
$aAbandoned = [];
|
42 |
+
|
43 |
+
$oWpPlugins = Services::WpPlugins();
|
44 |
+
foreach ( $oWpPlugins->getInstalledPluginFiles() as $sFile ) {
|
45 |
+
if ( $oWpPlugins->isWpOrg( $sFile ) ) {
|
46 |
+
$aAbandoned[ $sFile ] = $this->getAbandonedTime( $sFile );
|
47 |
+
}
|
48 |
+
}
|
49 |
+
return array_filter( $aAbandoned );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return array - keys are plugin base files, values are last_updated timestamp
|
54 |
+
*/
|
55 |
+
private function getAllAbandonedThemes() {
|
56 |
+
$aAbandoned = [];
|
57 |
+
|
58 |
+
$oWp = Services::WpThemes();
|
59 |
+
foreach ( $oWp->getThemes() as $oTheme ) {
|
60 |
+
if ( $oWp->isWpOrg( $oTheme ) ) {
|
61 |
+
$aAbandoned[ $oTheme->get_stylesheet() ] = $this->getAbandonedTime( $oTheme );
|
62 |
+
}
|
63 |
+
}
|
64 |
+
return array_filter( $aAbandoned );
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param string $sFile
|
69 |
+
* @return bool
|
70 |
+
*/
|
71 |
+
private function getAbandonedTime( $sFile ) {
|
72 |
+
$nTime = 0;
|
73 |
+
$oWpPlugins = Services::WpPlugins();
|
74 |
+
|
75 |
+
$sSlug = $oWpPlugins->getSlug( $sFile );
|
76 |
+
if ( empty( $sSlug ) ) {
|
77 |
+
$sSlug = dirname( $sFile );
|
78 |
+
}
|
79 |
+
|
80 |
+
if ( !function_exists( 'plugins_api' ) ) {
|
81 |
+
require_once ABSPATH.'/wp-admin/includes/plugin-install.php';
|
82 |
+
}
|
83 |
+
$oApi = plugins_api( 'plugin_information', [
|
84 |
+
'slug' => $sSlug,
|
85 |
+
'fields' => array(
|
86 |
+
'sections' => false,
|
87 |
+
),
|
88 |
+
] );
|
89 |
+
if ( isset( $oApi->last_updated ) ) {
|
90 |
+
$nLastUpdateAt = strtotime( $oApi->last_updated );
|
91 |
+
if ( Services::Request()->ts() - $nLastUpdateAt > $this->getAbandonedLimit() ) {
|
92 |
+
$nTime = $nLastUpdateAt;
|
93 |
+
var_dump( $nTime );
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
return $nTime;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @param string $sSlug
|
102 |
+
* @return WpVulnVO[]
|
103 |
+
*/
|
104 |
+
private function getThemeVulnerabilities( $sSlug ) {
|
105 |
+
$aVulns = array();
|
106 |
+
$oWpThemes = Services::WpThemes();
|
107 |
+
|
108 |
+
try {
|
109 |
+
$aVos = ( new RetrieveForItem() )->setContext( 'themes' )
|
110 |
+
->setSlug( $sSlug )
|
111 |
+
->retrieve();
|
112 |
+
$oTheme = $oWpThemes->getTheme( $sSlug );
|
113 |
+
$aVulns = array_filter(
|
114 |
+
$aVos,
|
115 |
+
function ( $oVo ) use ( $oTheme ) {
|
116 |
+
/** @var WpVulnVO $oVo */
|
117 |
+
$sFixed = $oVo->fixed_in;
|
118 |
+
return ( empty ( $sFixed ) || version_compare( $oTheme->get( 'Version' ), $sFixed, '<' ) );
|
119 |
+
}
|
120 |
+
);
|
121 |
+
}
|
122 |
+
catch ( \Exception $oE ) {
|
123 |
+
}
|
124 |
+
|
125 |
+
return $aVulns;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* @return int
|
130 |
+
*/
|
131 |
+
private function getAbandonedLimit() {
|
132 |
+
return isset( $this->nAbandonedLimit ) ? $this->nAbandonedLimit : YEAR_IN_SECONDS*2;
|
133 |
+
}
|
134 |
+
}
|
src/lib/src/Scans/Wcf/Scanner.php
CHANGED
@@ -54,9 +54,9 @@ class Scanner {
|
|
54 |
$oRes->is_missing = !Services::WpFs()->exists( $oRes->path_full );
|
55 |
$oRes->is_checksumfail = !$oRes->is_missing && $this->isChecksumFail( $oRes );
|
56 |
$oRes->is_excluded = ( $bHasExclusions && preg_match( $sRegExclusions, $oRes->path_fragment ) )
|
57 |
-
|| ( $bHasMissingExclusions && preg_match( $sRegMissingExcl, $oRes->path_fragment ) );
|
58 |
|
59 |
-
if ( $oRes->is_missing || $oRes->is_checksumfail ) {
|
60 |
$oResultSet->addItem( $oRes );
|
61 |
}
|
62 |
}
|
54 |
$oRes->is_missing = !Services::WpFs()->exists( $oRes->path_full );
|
55 |
$oRes->is_checksumfail = !$oRes->is_missing && $this->isChecksumFail( $oRes );
|
56 |
$oRes->is_excluded = ( $bHasExclusions && preg_match( $sRegExclusions, $oRes->path_fragment ) )
|
57 |
+
|| ( $bHasMissingExclusions && $oRes->is_missing && preg_match( $sRegMissingExcl, $oRes->path_fragment ) );
|
58 |
|
59 |
+
if ( !$oRes->is_excluded && ( $oRes->is_missing || $oRes->is_checksumfail ) ) {
|
60 |
$oResultSet->addItem( $oRes );
|
61 |
}
|
62 |
}
|
src/lib/src/Tables/Build/Ip.php
CHANGED
@@ -12,7 +12,6 @@ use FernleafSystems\Wordpress\Plugin\Shield\Tables;
|
|
12 |
class Ip extends BaseBuild {
|
13 |
|
14 |
/**
|
15 |
-
* Override this to apply table-specific query filters.
|
16 |
* @return $this
|
17 |
*/
|
18 |
protected function applyCustomQueryFilters() {
|
12 |
class Ip extends BaseBuild {
|
13 |
|
14 |
/**
|
|
|
15 |
* @return $this
|
16 |
*/
|
17 |
protected function applyCustomQueryFilters() {
|
src/lib/src/Tables/Build/ScanApc.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Tables\Build;
|
4 |
+
|
5 |
+
use Carbon\Carbon;
|
6 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
7 |
+
use FernleafSystems\Wordpress\Services\Services;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Class ScanApc
|
11 |
+
* @package FernleafSystems\Wordpress\Plugin\Shield\Tables\Build
|
12 |
+
*/
|
13 |
+
class ScanApc extends ScanBase {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @return array[]
|
17 |
+
*/
|
18 |
+
protected function getEntriesFormatted() {
|
19 |
+
$aEntries = array();
|
20 |
+
|
21 |
+
$oCarbon = new Carbon();
|
22 |
+
|
23 |
+
$oWpPlugins = Services::WpPlugins();
|
24 |
+
$nTs = Services::Request()->ts();
|
25 |
+
foreach ( $this->getEntriesRaw() as $nKey => $oEntry ) {
|
26 |
+
/** @var Shield\Databases\Scanner\EntryVO $oEntry */
|
27 |
+
$oIt = ( new Shield\Scans\Apc\ConvertVosToResults() )->convertItem( $oEntry );
|
28 |
+
$oPlugin = $oWpPlugins->getPluginAsVo( $oIt->slug );
|
29 |
+
$aE = $oEntry->getRawDataAsArray();
|
30 |
+
$aE[ 'plugin' ] = sprintf( '%s (%s)', $oPlugin->Name, $oPlugin->Version );
|
31 |
+
$aE[ 'status' ] = sprintf( '%s: %s',
|
32 |
+
_wpsf__( 'Abandoned' ), $oCarbon->setTimestamp( $oIt->last_updated_at )->diffForHumans() );
|
33 |
+
$aE[ 'ignored' ] = ( $oEntry->ignored_at > 0 && $nTs > $oEntry->ignored_at ) ? 'Yes' : 'No';
|
34 |
+
$aE[ 'created_at' ] = $this->formatTimestampField( $oEntry->created_at );
|
35 |
+
$aEntries[ $nKey ] = $aE;
|
36 |
+
}
|
37 |
+
|
38 |
+
return $aEntries;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @return Shield\Tables\Render\ScanApc
|
43 |
+
*/
|
44 |
+
protected function getTableRenderer() {
|
45 |
+
return new Shield\Tables\Render\ScanApc();
|
46 |
+
}
|
47 |
+
}
|
src/lib/src/Tables/Render/ScanApc.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Tables\Render;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Scans;
|
6 |
+
|
7 |
+
class ScanApc extends ScanBase {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* @param array $aItem
|
11 |
+
* @return string
|
12 |
+
*/
|
13 |
+
public function column_plugin( $aItem ) {
|
14 |
+
$aButtons = [
|
15 |
+
$this->getActionButton_Ignore( $aItem[ 'id' ] ),
|
16 |
+
];
|
17 |
+
return $aItem[ 'plugin' ].$this->buildActions( $aButtons );
|
18 |
+
}
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @return array
|
22 |
+
*/
|
23 |
+
protected function get_bulk_actions() {
|
24 |
+
return array(
|
25 |
+
'ignore' => 'Ignore'
|
26 |
+
);
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @return array
|
31 |
+
*/
|
32 |
+
public function get_columns() {
|
33 |
+
return [
|
34 |
+
'cb' => ' ',
|
35 |
+
'plugin' => 'Item',
|
36 |
+
'status' => 'Status',
|
37 |
+
'created_at' => 'Discovered',
|
38 |
+
];
|
39 |
+
}
|
40 |
+
}
|
src/lib/src/Tables/Render/ScanBase.php
CHANGED
@@ -41,10 +41,10 @@ class ScanBase extends Base {
|
|
41 |
* @return array
|
42 |
*/
|
43 |
public function get_columns() {
|
44 |
-
return
|
45 |
'path' => 'File',
|
46 |
'status' => 'Status',
|
47 |
'created_at' => 'Discovered',
|
48 |
-
|
49 |
}
|
50 |
}
|
41 |
* @return array
|
42 |
*/
|
43 |
public function get_columns() {
|
44 |
+
return [
|
45 |
'path' => 'File',
|
46 |
'status' => 'Status',
|
47 |
'created_at' => 'Discovered',
|
48 |
+
];
|
49 |
}
|
50 |
}
|
src/lib/src/Tests/VerifyConfig.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace FernleafSystems\Wordpress\Plugin\Shield\Tests;
|
4 |
+
|
5 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Modules\OptsConsumer;
|
6 |
+
|
7 |
+
class VerifyConfig {
|
8 |
+
|
9 |
+
use OptsConsumer;
|
10 |
+
|
11 |
+
public function run() {
|
12 |
+
$oOpts = $this->getOpts();
|
13 |
+
foreach ( $oOpts->getOptionsKeys() as $sKey ) {
|
14 |
+
$sOptType = $oOpts->getOptionType( $sKey );
|
15 |
+
if ( empty( $sOptType ) ) {
|
16 |
+
var_dump( $sKey.': no type' );
|
17 |
+
continue;
|
18 |
+
}
|
19 |
+
|
20 |
+
$mDefault = $oOpts->getOptDefault( $sKey );
|
21 |
+
if ( is_null( $mDefault ) ) {
|
22 |
+
var_dump( sprintf( '%s: opt has no default.', $sKey ) );
|
23 |
+
continue;
|
24 |
+
}
|
25 |
+
|
26 |
+
$mVal = $oOpts->getOpt( $sKey );
|
27 |
+
$sValType = gettype( $mVal );
|
28 |
+
|
29 |
+
$bBroken = false;
|
30 |
+
switch ( $sOptType ) {
|
31 |
+
|
32 |
+
case 'integer':
|
33 |
+
if ( $sValType != 'integer' ) {
|
34 |
+
$bBroken = true;
|
35 |
+
}
|
36 |
+
break;
|
37 |
+
|
38 |
+
case 'text':
|
39 |
+
if ( $sValType != 'string' ) {
|
40 |
+
$bBroken = true;
|
41 |
+
}
|
42 |
+
break;
|
43 |
+
|
44 |
+
default:
|
45 |
+
break;
|
46 |
+
}
|
47 |
+
|
48 |
+
if ( $bBroken ) {
|
49 |
+
var_dump( sprintf( '%s: opt type is %s, value is %s at "%s". Default is: %s',
|
50 |
+
$sKey, $sOptType, $sValType, var_export( $mVal, true ), $oOpts->getOptDefault( $sKey ) ) );
|
51 |
+
|
52 |
+
// $oOpts->resetOptToDefault( $sKey );
|
53 |
+
}
|
54 |
+
}
|
55 |
+
}
|
56 |
+
}
|
src/lib/vendor/composer/autoload_classmap.php
CHANGED
@@ -76,6 +76,11 @@ return array(
|
|
76 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\ModConsumer' => $baseDir . '/src/Modules/ModConsumer.php',
|
77 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\OptsConsumer' => $baseDir . '/src/Modules/OptsConsumer.php',
|
78 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\PluginControllerConsumer' => $baseDir . '/src/Modules/PluginControllerConsumer.php',
|
|
|
|
|
|
|
|
|
|
|
79 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertResultsToVos' => $baseDir . '/src/Scans/Base/BaseConvertResultsToVos.php',
|
80 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertVosToResults' => $baseDir . '/src/Scans/Base/BaseConvertVosToResults.php',
|
81 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseMergeItems' => $baseDir . '/src/Scans/Base/BaseMergeItems.php',
|
@@ -128,6 +133,7 @@ return array(
|
|
128 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\AuditTrail' => $baseDir . '/src/Tables/Build/AuditTrail.php',
|
129 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\BaseBuild' => $baseDir . '/src/Tables/Build/BaseBuild.php',
|
130 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\Ip' => $baseDir . '/src/Tables/Build/Ip.php',
|
|
|
131 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanBase' => $baseDir . '/src/Tables/Build/ScanBase.php',
|
132 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanPtg' => $baseDir . '/src/Tables/Build/ScanPtg.php',
|
133 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanUfc' => $baseDir . '/src/Tables/Build/ScanUfc.php',
|
@@ -141,6 +147,7 @@ return array(
|
|
141 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBase' => $baseDir . '/src/Tables/Render/IpBase.php',
|
142 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBlack' => $baseDir . '/src/Tables/Render/IpBlack.php',
|
143 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpWhite' => $baseDir . '/src/Tables/Render/IpWhite.php',
|
|
|
144 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanBase' => $baseDir . '/src/Tables/Render/ScanBase.php',
|
145 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanPtg' => $baseDir . '/src/Tables/Render/ScanPtg.php',
|
146 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanUfc' => $baseDir . '/src/Tables/Render/ScanUfc.php',
|
@@ -148,6 +155,7 @@ return array(
|
|
148 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanWpv' => $baseDir . '/src/Tables/Render/ScanWpv.php',
|
149 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Sessions' => $baseDir . '/src/Tables/Render/Sessions.php',
|
150 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Traffic' => $baseDir . '/src/Tables/Render/Traffic.php',
|
|
|
151 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Users\\ShieldUserMeta' => $baseDir . '/src/Users/ShieldUserMeta.php',
|
152 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Utilities\\VisitorIpDetection' => $baseDir . '/src/Utilities/VisitorIpDetection.php',
|
153 |
'FernleafSystems\\Wordpress\\Services\\Core\\AdminNotices' => $vendorDir . '/fernleafsystems/wordpress-services/src/Core/AdminNotices.php',
|
@@ -228,7 +236,6 @@ return array(
|
|
228 |
'ICWP_UserMeta' => $baseDir . '/../common/icwp-usermeta.php',
|
229 |
'ICWP_WPSF_AuditTrail_Auditor_Base' => $baseDir . '/../processors/audit_trail_auditor_base.php',
|
230 |
'ICWP_WPSF_BaseDbProcessor' => $baseDir . '/../processors/basedb.php',
|
231 |
-
'ICWP_WPSF_BaseEntryVO' => $baseDir . '/../query/VOs/ICWP_WPSF_BaseEntryVO.php',
|
232 |
'ICWP_WPSF_DataProcessor' => $baseDir . '/../common/icwp-data.php',
|
233 |
'ICWP_WPSF_Edd' => $baseDir . '/../common/icwp-edd.php',
|
234 |
'ICWP_WPSF_FeatureHandler_AdminAccessRestriction' => $baseDir . '/../features/admin_access_restriction.php',
|
@@ -255,12 +262,12 @@ return array(
|
|
255 |
'ICWP_WPSF_GoogleAuthenticator' => $baseDir . '/../common/icwp-googleauthenticator.php',
|
256 |
'ICWP_WPSF_GoogleRecaptcha' => $baseDir . '/../common/icwp-googlearecaptcha.php',
|
257 |
'ICWP_WPSF_Ip' => $baseDir . '/../common/icwp-ip.php',
|
258 |
-
'ICWP_WPSF_IpsEntryVO' => $baseDir . '/../query/VOs/ICWP_WPSF_IpsEntryVO.php',
|
259 |
'ICWP_WPSF_OptionsVO' => $baseDir . '/../common/icwp-optionsvo.php',
|
260 |
'ICWP_WPSF_Plugin_Controller' => $baseDir . '/../../icwp-plugin-controller.php',
|
261 |
'ICWP_WPSF_Processor_AdminAccessRestriction' => $baseDir . '/../processors/admin_access_restriction.php',
|
262 |
'ICWP_WPSF_Processor_AdminAccess_Whitelabel' => $baseDir . '/../processors/adminaccess_whitelabel.php',
|
263 |
'ICWP_WPSF_Processor_AuditTrail' => $baseDir . '/../processors/audit_trail.php',
|
|
|
264 |
'ICWP_WPSF_Processor_AuditTrail_Emails' => $baseDir . '/../processors/audit_trail_emails.php',
|
265 |
'ICWP_WPSF_Processor_AuditTrail_Plugins' => $baseDir . '/../processors/audit_trail_plugins.php',
|
266 |
'ICWP_WPSF_Processor_AuditTrail_Posts' => $baseDir . '/../processors/audit_trail_posts.php',
|
@@ -280,6 +287,7 @@ return array(
|
|
280 |
'ICWP_WPSF_Processor_Email' => $baseDir . '/../processors/email.php',
|
281 |
'ICWP_WPSF_Processor_Firewall' => $baseDir . '/../processors/firewall.php',
|
282 |
'ICWP_WPSF_Processor_HackProtect' => $baseDir . '/../processors/hack_protect.php',
|
|
|
283 |
'ICWP_WPSF_Processor_HackProtect_Integrity' => $baseDir . '/../processors/hackprotect_integrity.php',
|
284 |
'ICWP_WPSF_Processor_HackProtect_Ptg' => $baseDir . '/../processors/hackprotect_scan_ptg.php',
|
285 |
'ICWP_WPSF_Processor_HackProtect_ScanAssetsBase' => $baseDir . '/../processors/hackprotect_scan_assets_base.php',
|
@@ -308,6 +316,7 @@ return array(
|
|
308 |
'ICWP_WPSF_Processor_Plugin' => $baseDir . '/../processors/plugin.php',
|
309 |
'ICWP_WPSF_Processor_Plugin_Badge' => $baseDir . '/../processors/plugin_badge.php',
|
310 |
'ICWP_WPSF_Processor_Plugin_BadgeWidget' => $baseDir . '/../processors/plugin_badgewidget.php',
|
|
|
311 |
'ICWP_WPSF_Processor_Plugin_ImportExport' => $baseDir . '/../processors/plugin_importexport.php',
|
312 |
'ICWP_WPSF_Processor_Plugin_Notes' => $baseDir . '/../processors/plugin_notes.php',
|
313 |
'ICWP_WPSF_Processor_Plugin_Tracking' => $baseDir . '/../processors/plugin_tracking.php',
|
@@ -321,27 +330,9 @@ return array(
|
|
321 |
'ICWP_WPSF_Processor_UserManagement' => $baseDir . '/../processors/user_management.php',
|
322 |
'ICWP_WPSF_Processor_UserManagement_Passwords' => $baseDir . '/../processors/usermanagement_passwords.php',
|
323 |
'ICWP_WPSF_Processor_UserManagement_Sessions' => $baseDir . '/../processors/usermanagement_sessions.php',
|
324 |
-
'ICWP_WPSF_Query_AuditTrail_Delete' => $baseDir . '/../query/audittrail/delete.php',
|
325 |
-
'ICWP_WPSF_Query_AuditTrail_Insert' => $baseDir . '/../query/audittrail/insert.php',
|
326 |
-
'ICWP_WPSF_Query_AuditTrail_Select' => $baseDir . '/../query/audittrail/select.php',
|
327 |
-
'ICWP_WPSF_Query_Base' => $baseDir . '/../query/base/base.php',
|
328 |
-
'ICWP_WPSF_Query_BaseDelete' => $baseDir . '/../query/base/delete.php',
|
329 |
-
'ICWP_WPSF_Query_BaseInsert' => $baseDir . '/../query/base/insert.php',
|
330 |
-
'ICWP_WPSF_Query_BaseQuery' => $baseDir . '/../query/base/query.php',
|
331 |
-
'ICWP_WPSF_Query_BaseSelect' => $baseDir . '/../query/base/select.php',
|
332 |
-
'ICWP_WPSF_Query_BaseUpdate' => $baseDir . '/../query/base/update.php',
|
333 |
-
'ICWP_WPSF_Query_Ips_Select' => $baseDir . '/../query/ips/select.php',
|
334 |
-
'ICWP_WPSF_Query_Sessions_Delete' => $baseDir . '/../query/sessions/delete.php',
|
335 |
-
'ICWP_WPSF_Query_Sessions_Insert' => $baseDir . '/../query/sessions/insert.php',
|
336 |
-
'ICWP_WPSF_Query_Sessions_Select' => $baseDir . '/../query/sessions/select.php',
|
337 |
-
'ICWP_WPSF_Query_Sessions_Update' => $baseDir . '/../query/sessions/update.php',
|
338 |
'ICWP_WPSF_Query_Statistics_Base' => $baseDir . '/../query/base/statistics_base.php',
|
339 |
'ICWP_WPSF_Query_Statistics_Consolidation' => $baseDir . '/../query/statistics/consolidation.php',
|
340 |
'ICWP_WPSF_Query_Statistics_Reporting' => $baseDir . '/../query/statistics/reporting.php',
|
341 |
-
'ICWP_WPSF_Query_TrafficEntry_Common' => $baseDir . '/../query/traffic/common.php',
|
342 |
-
'ICWP_WPSF_Query_TrafficEntry_Delete' => $baseDir . '/../query/traffic/delete.php',
|
343 |
-
'ICWP_WPSF_Query_TrafficEntry_Insert' => $baseDir . '/../query/traffic/insert.php',
|
344 |
-
'ICWP_WPSF_Query_TrafficEntry_Select' => $baseDir . '/../query/traffic/select.php',
|
345 |
'ICWP_WPSF_Render' => $baseDir . '/../common/icwp-render.php',
|
346 |
'ICWP_WPSF_Request' => $baseDir . '/../common/icwp-request.php',
|
347 |
'ICWP_WPSF_ServiceProviders' => $baseDir . '/../common/icwp-serviceproviders.php',
|
76 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\ModConsumer' => $baseDir . '/src/Modules/ModConsumer.php',
|
77 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\OptsConsumer' => $baseDir . '/src/Modules/OptsConsumer.php',
|
78 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\PluginControllerConsumer' => $baseDir . '/src/Modules/PluginControllerConsumer.php',
|
79 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ConvertResultsToVos' => $baseDir . '/src/Scans/Apc/ConvertResultsToVos.php',
|
80 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ConvertVosToResults' => $baseDir . '/src/Scans/Apc/ConvertVosToResults.php',
|
81 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ResultItem' => $baseDir . '/src/Scans/Apc/ResultItem.php',
|
82 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ResultsSet' => $baseDir . '/src/Scans/Apc/ResultsSet.php',
|
83 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\Scanner' => $baseDir . '/src/Scans/Apc/Scanner.php',
|
84 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertResultsToVos' => $baseDir . '/src/Scans/Base/BaseConvertResultsToVos.php',
|
85 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertVosToResults' => $baseDir . '/src/Scans/Base/BaseConvertVosToResults.php',
|
86 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseMergeItems' => $baseDir . '/src/Scans/Base/BaseMergeItems.php',
|
133 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\AuditTrail' => $baseDir . '/src/Tables/Build/AuditTrail.php',
|
134 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\BaseBuild' => $baseDir . '/src/Tables/Build/BaseBuild.php',
|
135 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\Ip' => $baseDir . '/src/Tables/Build/Ip.php',
|
136 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanApc' => $baseDir . '/src/Tables/Build/ScanApc.php',
|
137 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanBase' => $baseDir . '/src/Tables/Build/ScanBase.php',
|
138 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanPtg' => $baseDir . '/src/Tables/Build/ScanPtg.php',
|
139 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanUfc' => $baseDir . '/src/Tables/Build/ScanUfc.php',
|
147 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBase' => $baseDir . '/src/Tables/Render/IpBase.php',
|
148 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBlack' => $baseDir . '/src/Tables/Render/IpBlack.php',
|
149 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpWhite' => $baseDir . '/src/Tables/Render/IpWhite.php',
|
150 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanApc' => $baseDir . '/src/Tables/Render/ScanApc.php',
|
151 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanBase' => $baseDir . '/src/Tables/Render/ScanBase.php',
|
152 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanPtg' => $baseDir . '/src/Tables/Render/ScanPtg.php',
|
153 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanUfc' => $baseDir . '/src/Tables/Render/ScanUfc.php',
|
155 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanWpv' => $baseDir . '/src/Tables/Render/ScanWpv.php',
|
156 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Sessions' => $baseDir . '/src/Tables/Render/Sessions.php',
|
157 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Traffic' => $baseDir . '/src/Tables/Render/Traffic.php',
|
158 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tests\\VerifyConfig' => $baseDir . '/src/Tests/VerifyConfig.php',
|
159 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Users\\ShieldUserMeta' => $baseDir . '/src/Users/ShieldUserMeta.php',
|
160 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Utilities\\VisitorIpDetection' => $baseDir . '/src/Utilities/VisitorIpDetection.php',
|
161 |
'FernleafSystems\\Wordpress\\Services\\Core\\AdminNotices' => $vendorDir . '/fernleafsystems/wordpress-services/src/Core/AdminNotices.php',
|
236 |
'ICWP_UserMeta' => $baseDir . '/../common/icwp-usermeta.php',
|
237 |
'ICWP_WPSF_AuditTrail_Auditor_Base' => $baseDir . '/../processors/audit_trail_auditor_base.php',
|
238 |
'ICWP_WPSF_BaseDbProcessor' => $baseDir . '/../processors/basedb.php',
|
|
|
239 |
'ICWP_WPSF_DataProcessor' => $baseDir . '/../common/icwp-data.php',
|
240 |
'ICWP_WPSF_Edd' => $baseDir . '/../common/icwp-edd.php',
|
241 |
'ICWP_WPSF_FeatureHandler_AdminAccessRestriction' => $baseDir . '/../features/admin_access_restriction.php',
|
262 |
'ICWP_WPSF_GoogleAuthenticator' => $baseDir . '/../common/icwp-googleauthenticator.php',
|
263 |
'ICWP_WPSF_GoogleRecaptcha' => $baseDir . '/../common/icwp-googlearecaptcha.php',
|
264 |
'ICWP_WPSF_Ip' => $baseDir . '/../common/icwp-ip.php',
|
|
|
265 |
'ICWP_WPSF_OptionsVO' => $baseDir . '/../common/icwp-optionsvo.php',
|
266 |
'ICWP_WPSF_Plugin_Controller' => $baseDir . '/../../icwp-plugin-controller.php',
|
267 |
'ICWP_WPSF_Processor_AdminAccessRestriction' => $baseDir . '/../processors/admin_access_restriction.php',
|
268 |
'ICWP_WPSF_Processor_AdminAccess_Whitelabel' => $baseDir . '/../processors/adminaccess_whitelabel.php',
|
269 |
'ICWP_WPSF_Processor_AuditTrail' => $baseDir . '/../processors/audit_trail.php',
|
270 |
+
'ICWP_WPSF_Processor_AuditTrail_Auditor' => $baseDir . '/../processors/audit_trail_auditor.php',
|
271 |
'ICWP_WPSF_Processor_AuditTrail_Emails' => $baseDir . '/../processors/audit_trail_emails.php',
|
272 |
'ICWP_WPSF_Processor_AuditTrail_Plugins' => $baseDir . '/../processors/audit_trail_plugins.php',
|
273 |
'ICWP_WPSF_Processor_AuditTrail_Posts' => $baseDir . '/../processors/audit_trail_posts.php',
|
287 |
'ICWP_WPSF_Processor_Email' => $baseDir . '/../processors/email.php',
|
288 |
'ICWP_WPSF_Processor_Firewall' => $baseDir . '/../processors/firewall.php',
|
289 |
'ICWP_WPSF_Processor_HackProtect' => $baseDir . '/../processors/hack_protect.php',
|
290 |
+
'ICWP_WPSF_Processor_HackProtect_Apc' => $baseDir . '/../processors/hackprotect_scan_apc.php',
|
291 |
'ICWP_WPSF_Processor_HackProtect_Integrity' => $baseDir . '/../processors/hackprotect_integrity.php',
|
292 |
'ICWP_WPSF_Processor_HackProtect_Ptg' => $baseDir . '/../processors/hackprotect_scan_ptg.php',
|
293 |
'ICWP_WPSF_Processor_HackProtect_ScanAssetsBase' => $baseDir . '/../processors/hackprotect_scan_assets_base.php',
|
316 |
'ICWP_WPSF_Processor_Plugin' => $baseDir . '/../processors/plugin.php',
|
317 |
'ICWP_WPSF_Processor_Plugin_Badge' => $baseDir . '/../processors/plugin_badge.php',
|
318 |
'ICWP_WPSF_Processor_Plugin_BadgeWidget' => $baseDir . '/../processors/plugin_badgewidget.php',
|
319 |
+
'ICWP_WPSF_Processor_Plugin_CronDaily' => $baseDir . '/../processors/plugin_crondaily.php',
|
320 |
'ICWP_WPSF_Processor_Plugin_ImportExport' => $baseDir . '/../processors/plugin_importexport.php',
|
321 |
'ICWP_WPSF_Processor_Plugin_Notes' => $baseDir . '/../processors/plugin_notes.php',
|
322 |
'ICWP_WPSF_Processor_Plugin_Tracking' => $baseDir . '/../processors/plugin_tracking.php',
|
330 |
'ICWP_WPSF_Processor_UserManagement' => $baseDir . '/../processors/user_management.php',
|
331 |
'ICWP_WPSF_Processor_UserManagement_Passwords' => $baseDir . '/../processors/usermanagement_passwords.php',
|
332 |
'ICWP_WPSF_Processor_UserManagement_Sessions' => $baseDir . '/../processors/usermanagement_sessions.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
333 |
'ICWP_WPSF_Query_Statistics_Base' => $baseDir . '/../query/base/statistics_base.php',
|
334 |
'ICWP_WPSF_Query_Statistics_Consolidation' => $baseDir . '/../query/statistics/consolidation.php',
|
335 |
'ICWP_WPSF_Query_Statistics_Reporting' => $baseDir . '/../query/statistics/reporting.php',
|
|
|
|
|
|
|
|
|
336 |
'ICWP_WPSF_Render' => $baseDir . '/../common/icwp-render.php',
|
337 |
'ICWP_WPSF_Request' => $baseDir . '/../common/icwp-request.php',
|
338 |
'ICWP_WPSF_ServiceProviders' => $baseDir . '/../common/icwp-serviceproviders.php',
|
src/lib/vendor/composer/autoload_static.php
CHANGED
@@ -224,6 +224,11 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
224 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\ModConsumer' => __DIR__ . '/../..' . '/src/Modules/ModConsumer.php',
|
225 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\OptsConsumer' => __DIR__ . '/../..' . '/src/Modules/OptsConsumer.php',
|
226 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\PluginControllerConsumer' => __DIR__ . '/../..' . '/src/Modules/PluginControllerConsumer.php',
|
|
|
|
|
|
|
|
|
|
|
227 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertResultsToVos' => __DIR__ . '/../..' . '/src/Scans/Base/BaseConvertResultsToVos.php',
|
228 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertVosToResults' => __DIR__ . '/../..' . '/src/Scans/Base/BaseConvertVosToResults.php',
|
229 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseMergeItems' => __DIR__ . '/../..' . '/src/Scans/Base/BaseMergeItems.php',
|
@@ -276,6 +281,7 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
276 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\AuditTrail' => __DIR__ . '/../..' . '/src/Tables/Build/AuditTrail.php',
|
277 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\BaseBuild' => __DIR__ . '/../..' . '/src/Tables/Build/BaseBuild.php',
|
278 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\Ip' => __DIR__ . '/../..' . '/src/Tables/Build/Ip.php',
|
|
|
279 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanBase' => __DIR__ . '/../..' . '/src/Tables/Build/ScanBase.php',
|
280 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanPtg' => __DIR__ . '/../..' . '/src/Tables/Build/ScanPtg.php',
|
281 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanUfc' => __DIR__ . '/../..' . '/src/Tables/Build/ScanUfc.php',
|
@@ -289,6 +295,7 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
289 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBase' => __DIR__ . '/../..' . '/src/Tables/Render/IpBase.php',
|
290 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBlack' => __DIR__ . '/../..' . '/src/Tables/Render/IpBlack.php',
|
291 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpWhite' => __DIR__ . '/../..' . '/src/Tables/Render/IpWhite.php',
|
|
|
292 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanBase' => __DIR__ . '/../..' . '/src/Tables/Render/ScanBase.php',
|
293 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanPtg' => __DIR__ . '/../..' . '/src/Tables/Render/ScanPtg.php',
|
294 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanUfc' => __DIR__ . '/../..' . '/src/Tables/Render/ScanUfc.php',
|
@@ -296,6 +303,7 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
296 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanWpv' => __DIR__ . '/../..' . '/src/Tables/Render/ScanWpv.php',
|
297 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Sessions' => __DIR__ . '/../..' . '/src/Tables/Render/Sessions.php',
|
298 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Traffic' => __DIR__ . '/../..' . '/src/Tables/Render/Traffic.php',
|
|
|
299 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Users\\ShieldUserMeta' => __DIR__ . '/../..' . '/src/Users/ShieldUserMeta.php',
|
300 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Utilities\\VisitorIpDetection' => __DIR__ . '/../..' . '/src/Utilities/VisitorIpDetection.php',
|
301 |
'FernleafSystems\\Wordpress\\Services\\Core\\AdminNotices' => __DIR__ . '/..' . '/fernleafsystems/wordpress-services/src/Core/AdminNotices.php',
|
@@ -376,7 +384,6 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
376 |
'ICWP_UserMeta' => __DIR__ . '/../..' . '/../common/icwp-usermeta.php',
|
377 |
'ICWP_WPSF_AuditTrail_Auditor_Base' => __DIR__ . '/../..' . '/../processors/audit_trail_auditor_base.php',
|
378 |
'ICWP_WPSF_BaseDbProcessor' => __DIR__ . '/../..' . '/../processors/basedb.php',
|
379 |
-
'ICWP_WPSF_BaseEntryVO' => __DIR__ . '/../..' . '/../query/VOs/ICWP_WPSF_BaseEntryVO.php',
|
380 |
'ICWP_WPSF_DataProcessor' => __DIR__ . '/../..' . '/../common/icwp-data.php',
|
381 |
'ICWP_WPSF_Edd' => __DIR__ . '/../..' . '/../common/icwp-edd.php',
|
382 |
'ICWP_WPSF_FeatureHandler_AdminAccessRestriction' => __DIR__ . '/../..' . '/../features/admin_access_restriction.php',
|
@@ -403,12 +410,12 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
403 |
'ICWP_WPSF_GoogleAuthenticator' => __DIR__ . '/../..' . '/../common/icwp-googleauthenticator.php',
|
404 |
'ICWP_WPSF_GoogleRecaptcha' => __DIR__ . '/../..' . '/../common/icwp-googlearecaptcha.php',
|
405 |
'ICWP_WPSF_Ip' => __DIR__ . '/../..' . '/../common/icwp-ip.php',
|
406 |
-
'ICWP_WPSF_IpsEntryVO' => __DIR__ . '/../..' . '/../query/VOs/ICWP_WPSF_IpsEntryVO.php',
|
407 |
'ICWP_WPSF_OptionsVO' => __DIR__ . '/../..' . '/../common/icwp-optionsvo.php',
|
408 |
'ICWP_WPSF_Plugin_Controller' => __DIR__ . '/../..' . '/../../icwp-plugin-controller.php',
|
409 |
'ICWP_WPSF_Processor_AdminAccessRestriction' => __DIR__ . '/../..' . '/../processors/admin_access_restriction.php',
|
410 |
'ICWP_WPSF_Processor_AdminAccess_Whitelabel' => __DIR__ . '/../..' . '/../processors/adminaccess_whitelabel.php',
|
411 |
'ICWP_WPSF_Processor_AuditTrail' => __DIR__ . '/../..' . '/../processors/audit_trail.php',
|
|
|
412 |
'ICWP_WPSF_Processor_AuditTrail_Emails' => __DIR__ . '/../..' . '/../processors/audit_trail_emails.php',
|
413 |
'ICWP_WPSF_Processor_AuditTrail_Plugins' => __DIR__ . '/../..' . '/../processors/audit_trail_plugins.php',
|
414 |
'ICWP_WPSF_Processor_AuditTrail_Posts' => __DIR__ . '/../..' . '/../processors/audit_trail_posts.php',
|
@@ -428,6 +435,7 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
428 |
'ICWP_WPSF_Processor_Email' => __DIR__ . '/../..' . '/../processors/email.php',
|
429 |
'ICWP_WPSF_Processor_Firewall' => __DIR__ . '/../..' . '/../processors/firewall.php',
|
430 |
'ICWP_WPSF_Processor_HackProtect' => __DIR__ . '/../..' . '/../processors/hack_protect.php',
|
|
|
431 |
'ICWP_WPSF_Processor_HackProtect_Integrity' => __DIR__ . '/../..' . '/../processors/hackprotect_integrity.php',
|
432 |
'ICWP_WPSF_Processor_HackProtect_Ptg' => __DIR__ . '/../..' . '/../processors/hackprotect_scan_ptg.php',
|
433 |
'ICWP_WPSF_Processor_HackProtect_ScanAssetsBase' => __DIR__ . '/../..' . '/../processors/hackprotect_scan_assets_base.php',
|
@@ -456,6 +464,7 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
456 |
'ICWP_WPSF_Processor_Plugin' => __DIR__ . '/../..' . '/../processors/plugin.php',
|
457 |
'ICWP_WPSF_Processor_Plugin_Badge' => __DIR__ . '/../..' . '/../processors/plugin_badge.php',
|
458 |
'ICWP_WPSF_Processor_Plugin_BadgeWidget' => __DIR__ . '/../..' . '/../processors/plugin_badgewidget.php',
|
|
|
459 |
'ICWP_WPSF_Processor_Plugin_ImportExport' => __DIR__ . '/../..' . '/../processors/plugin_importexport.php',
|
460 |
'ICWP_WPSF_Processor_Plugin_Notes' => __DIR__ . '/../..' . '/../processors/plugin_notes.php',
|
461 |
'ICWP_WPSF_Processor_Plugin_Tracking' => __DIR__ . '/../..' . '/../processors/plugin_tracking.php',
|
@@ -469,27 +478,9 @@ class ComposerStaticInit18a31866e67f0a0bfffdc031786ecae1
|
|
469 |
'ICWP_WPSF_Processor_UserManagement' => __DIR__ . '/../..' . '/../processors/user_management.php',
|
470 |
'ICWP_WPSF_Processor_UserManagement_Passwords' => __DIR__ . '/../..' . '/../processors/usermanagement_passwords.php',
|
471 |
'ICWP_WPSF_Processor_UserManagement_Sessions' => __DIR__ . '/../..' . '/../processors/usermanagement_sessions.php',
|
472 |
-
'ICWP_WPSF_Query_AuditTrail_Delete' => __DIR__ . '/../..' . '/../query/audittrail/delete.php',
|
473 |
-
'ICWP_WPSF_Query_AuditTrail_Insert' => __DIR__ . '/../..' . '/../query/audittrail/insert.php',
|
474 |
-
'ICWP_WPSF_Query_AuditTrail_Select' => __DIR__ . '/../..' . '/../query/audittrail/select.php',
|
475 |
-
'ICWP_WPSF_Query_Base' => __DIR__ . '/../..' . '/../query/base/base.php',
|
476 |
-
'ICWP_WPSF_Query_BaseDelete' => __DIR__ . '/../..' . '/../query/base/delete.php',
|
477 |
-
'ICWP_WPSF_Query_BaseInsert' => __DIR__ . '/../..' . '/../query/base/insert.php',
|
478 |
-
'ICWP_WPSF_Query_BaseQuery' => __DIR__ . '/../..' . '/../query/base/query.php',
|
479 |
-
'ICWP_WPSF_Query_BaseSelect' => __DIR__ . '/../..' . '/../query/base/select.php',
|
480 |
-
'ICWP_WPSF_Query_BaseUpdate' => __DIR__ . '/../..' . '/../query/base/update.php',
|
481 |
-
'ICWP_WPSF_Query_Ips_Select' => __DIR__ . '/../..' . '/../query/ips/select.php',
|
482 |
-
'ICWP_WPSF_Query_Sessions_Delete' => __DIR__ . '/../..' . '/../query/sessions/delete.php',
|
483 |
-
'ICWP_WPSF_Query_Sessions_Insert' => __DIR__ . '/../..' . '/../query/sessions/insert.php',
|
484 |
-
'ICWP_WPSF_Query_Sessions_Select' => __DIR__ . '/../..' . '/../query/sessions/select.php',
|
485 |
-
'ICWP_WPSF_Query_Sessions_Update' => __DIR__ . '/../..' . '/../query/sessions/update.php',
|
486 |
'ICWP_WPSF_Query_Statistics_Base' => __DIR__ . '/../..' . '/../query/base/statistics_base.php',
|
487 |
'ICWP_WPSF_Query_Statistics_Consolidation' => __DIR__ . '/../..' . '/../query/statistics/consolidation.php',
|
488 |
'ICWP_WPSF_Query_Statistics_Reporting' => __DIR__ . '/../..' . '/../query/statistics/reporting.php',
|
489 |
-
'ICWP_WPSF_Query_TrafficEntry_Common' => __DIR__ . '/../..' . '/../query/traffic/common.php',
|
490 |
-
'ICWP_WPSF_Query_TrafficEntry_Delete' => __DIR__ . '/../..' . '/../query/traffic/delete.php',
|
491 |
-
'ICWP_WPSF_Query_TrafficEntry_Insert' => __DIR__ . '/../..' . '/../query/traffic/insert.php',
|
492 |
-
'ICWP_WPSF_Query_TrafficEntry_Select' => __DIR__ . '/../..' . '/../query/traffic/select.php',
|
493 |
'ICWP_WPSF_Render' => __DIR__ . '/../..' . '/../common/icwp-render.php',
|
494 |
'ICWP_WPSF_Request' => __DIR__ . '/../..' . '/../common/icwp-request.php',
|
495 |
'ICWP_WPSF_ServiceProviders' => __DIR__ . '/../..' . '/../common/icwp-serviceproviders.php',
|
224 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\ModConsumer' => __DIR__ . '/../..' . '/src/Modules/ModConsumer.php',
|
225 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\OptsConsumer' => __DIR__ . '/../..' . '/src/Modules/OptsConsumer.php',
|
226 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Modules\\PluginControllerConsumer' => __DIR__ . '/../..' . '/src/Modules/PluginControllerConsumer.php',
|
227 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ConvertResultsToVos' => __DIR__ . '/../..' . '/src/Scans/Apc/ConvertResultsToVos.php',
|
228 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ConvertVosToResults' => __DIR__ . '/../..' . '/src/Scans/Apc/ConvertVosToResults.php',
|
229 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ResultItem' => __DIR__ . '/../..' . '/src/Scans/Apc/ResultItem.php',
|
230 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\ResultsSet' => __DIR__ . '/../..' . '/src/Scans/Apc/ResultsSet.php',
|
231 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Apc\\Scanner' => __DIR__ . '/../..' . '/src/Scans/Apc/Scanner.php',
|
232 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertResultsToVos' => __DIR__ . '/../..' . '/src/Scans/Base/BaseConvertResultsToVos.php',
|
233 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseConvertVosToResults' => __DIR__ . '/../..' . '/src/Scans/Base/BaseConvertVosToResults.php',
|
234 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Scans\\Base\\BaseMergeItems' => __DIR__ . '/../..' . '/src/Scans/Base/BaseMergeItems.php',
|
281 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\AuditTrail' => __DIR__ . '/../..' . '/src/Tables/Build/AuditTrail.php',
|
282 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\BaseBuild' => __DIR__ . '/../..' . '/src/Tables/Build/BaseBuild.php',
|
283 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\Ip' => __DIR__ . '/../..' . '/src/Tables/Build/Ip.php',
|
284 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanApc' => __DIR__ . '/../..' . '/src/Tables/Build/ScanApc.php',
|
285 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanBase' => __DIR__ . '/../..' . '/src/Tables/Build/ScanBase.php',
|
286 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanPtg' => __DIR__ . '/../..' . '/src/Tables/Build/ScanPtg.php',
|
287 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Build\\ScanUfc' => __DIR__ . '/../..' . '/src/Tables/Build/ScanUfc.php',
|
295 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBase' => __DIR__ . '/../..' . '/src/Tables/Render/IpBase.php',
|
296 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpBlack' => __DIR__ . '/../..' . '/src/Tables/Render/IpBlack.php',
|
297 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\IpWhite' => __DIR__ . '/../..' . '/src/Tables/Render/IpWhite.php',
|
298 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanApc' => __DIR__ . '/../..' . '/src/Tables/Render/ScanApc.php',
|
299 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanBase' => __DIR__ . '/../..' . '/src/Tables/Render/ScanBase.php',
|
300 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanPtg' => __DIR__ . '/../..' . '/src/Tables/Render/ScanPtg.php',
|
301 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanUfc' => __DIR__ . '/../..' . '/src/Tables/Render/ScanUfc.php',
|
303 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\ScanWpv' => __DIR__ . '/../..' . '/src/Tables/Render/ScanWpv.php',
|
304 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Sessions' => __DIR__ . '/../..' . '/src/Tables/Render/Sessions.php',
|
305 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tables\\Render\\Traffic' => __DIR__ . '/../..' . '/src/Tables/Render/Traffic.php',
|
306 |
+
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Tests\\VerifyConfig' => __DIR__ . '/../..' . '/src/Tests/VerifyConfig.php',
|
307 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Users\\ShieldUserMeta' => __DIR__ . '/../..' . '/src/Users/ShieldUserMeta.php',
|
308 |
'FernleafSystems\\Wordpress\\Plugin\\Shield\\Utilities\\VisitorIpDetection' => __DIR__ . '/../..' . '/src/Utilities/VisitorIpDetection.php',
|
309 |
'FernleafSystems\\Wordpress\\Services\\Core\\AdminNotices' => __DIR__ . '/..' . '/fernleafsystems/wordpress-services/src/Core/AdminNotices.php',
|
384 |
'ICWP_UserMeta' => __DIR__ . '/../..' . '/../common/icwp-usermeta.php',
|
385 |
'ICWP_WPSF_AuditTrail_Auditor_Base' => __DIR__ . '/../..' . '/../processors/audit_trail_auditor_base.php',
|
386 |
'ICWP_WPSF_BaseDbProcessor' => __DIR__ . '/../..' . '/../processors/basedb.php',
|
|
|
387 |
'ICWP_WPSF_DataProcessor' => __DIR__ . '/../..' . '/../common/icwp-data.php',
|
388 |
'ICWP_WPSF_Edd' => __DIR__ . '/../..' . '/../common/icwp-edd.php',
|
389 |
'ICWP_WPSF_FeatureHandler_AdminAccessRestriction' => __DIR__ . '/../..' . '/../features/admin_access_restriction.php',
|
410 |
'ICWP_WPSF_GoogleAuthenticator' => __DIR__ . '/../..' . '/../common/icwp-googleauthenticator.php',
|
411 |
'ICWP_WPSF_GoogleRecaptcha' => __DIR__ . '/../..' . '/../common/icwp-googlearecaptcha.php',
|
412 |
'ICWP_WPSF_Ip' => __DIR__ . '/../..' . '/../common/icwp-ip.php',
|
|
|
413 |
'ICWP_WPSF_OptionsVO' => __DIR__ . '/../..' . '/../common/icwp-optionsvo.php',
|
414 |
'ICWP_WPSF_Plugin_Controller' => __DIR__ . '/../..' . '/../../icwp-plugin-controller.php',
|
415 |
'ICWP_WPSF_Processor_AdminAccessRestriction' => __DIR__ . '/../..' . '/../processors/admin_access_restriction.php',
|
416 |
'ICWP_WPSF_Processor_AdminAccess_Whitelabel' => __DIR__ . '/../..' . '/../processors/adminaccess_whitelabel.php',
|
417 |
'ICWP_WPSF_Processor_AuditTrail' => __DIR__ . '/../..' . '/../processors/audit_trail.php',
|
418 |
+
'ICWP_WPSF_Processor_AuditTrail_Auditor' => __DIR__ . '/../..' . '/../processors/audit_trail_auditor.php',
|
419 |
'ICWP_WPSF_Processor_AuditTrail_Emails' => __DIR__ . '/../..' . '/../processors/audit_trail_emails.php',
|
420 |
'ICWP_WPSF_Processor_AuditTrail_Plugins' => __DIR__ . '/../..' . '/../processors/audit_trail_plugins.php',
|
421 |
'ICWP_WPSF_Processor_AuditTrail_Posts' => __DIR__ . '/../..' . '/../processors/audit_trail_posts.php',
|
435 |
'ICWP_WPSF_Processor_Email' => __DIR__ . '/../..' . '/../processors/email.php',
|
436 |
'ICWP_WPSF_Processor_Firewall' => __DIR__ . '/../..' . '/../processors/firewall.php',
|
437 |
'ICWP_WPSF_Processor_HackProtect' => __DIR__ . '/../..' . '/../processors/hack_protect.php',
|
438 |
+
'ICWP_WPSF_Processor_HackProtect_Apc' => __DIR__ . '/../..' . '/../processors/hackprotect_scan_apc.php',
|
439 |
'ICWP_WPSF_Processor_HackProtect_Integrity' => __DIR__ . '/../..' . '/../processors/hackprotect_integrity.php',
|
440 |
'ICWP_WPSF_Processor_HackProtect_Ptg' => __DIR__ . '/../..' . '/../processors/hackprotect_scan_ptg.php',
|
441 |
'ICWP_WPSF_Processor_HackProtect_ScanAssetsBase' => __DIR__ . '/../..' . '/../processors/hackprotect_scan_assets_base.php',
|
464 |
'ICWP_WPSF_Processor_Plugin' => __DIR__ . '/../..' . '/../processors/plugin.php',
|
465 |
'ICWP_WPSF_Processor_Plugin_Badge' => __DIR__ . '/../..' . '/../processors/plugin_badge.php',
|
466 |
'ICWP_WPSF_Processor_Plugin_BadgeWidget' => __DIR__ . '/../..' . '/../processors/plugin_badgewidget.php',
|
467 |
+
'ICWP_WPSF_Processor_Plugin_CronDaily' => __DIR__ . '/../..' . '/../processors/plugin_crondaily.php',
|
468 |
'ICWP_WPSF_Processor_Plugin_ImportExport' => __DIR__ . '/../..' . '/../processors/plugin_importexport.php',
|
469 |
'ICWP_WPSF_Processor_Plugin_Notes' => __DIR__ . '/../..' . '/../processors/plugin_notes.php',
|
470 |
'ICWP_WPSF_Processor_Plugin_Tracking' => __DIR__ . '/../..' . '/../processors/plugin_tracking.php',
|
478 |
'ICWP_WPSF_Processor_UserManagement' => __DIR__ . '/../..' . '/../processors/user_management.php',
|
479 |
'ICWP_WPSF_Processor_UserManagement_Passwords' => __DIR__ . '/../..' . '/../processors/usermanagement_passwords.php',
|
480 |
'ICWP_WPSF_Processor_UserManagement_Sessions' => __DIR__ . '/../..' . '/../processors/usermanagement_sessions.php',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
481 |
'ICWP_WPSF_Query_Statistics_Base' => __DIR__ . '/../..' . '/../query/base/statistics_base.php',
|
482 |
'ICWP_WPSF_Query_Statistics_Consolidation' => __DIR__ . '/../..' . '/../query/statistics/consolidation.php',
|
483 |
'ICWP_WPSF_Query_Statistics_Reporting' => __DIR__ . '/../..' . '/../query/statistics/reporting.php',
|
|
|
|
|
|
|
|
|
484 |
'ICWP_WPSF_Render' => __DIR__ . '/../..' . '/../common/icwp-render.php',
|
485 |
'ICWP_WPSF_Request' => __DIR__ . '/../..' . '/../common/icwp-request.php',
|
486 |
'ICWP_WPSF_ServiceProviders' => __DIR__ . '/../..' . '/../common/icwp-serviceproviders.php',
|
src/lib/vendor/composer/installed.json
CHANGED
@@ -876,12 +876,12 @@
|
|
876 |
"source": {
|
877 |
"type": "git",
|
878 |
"url": "https://bitbucket.org/FernleafSystems/wordpress-services.git",
|
879 |
-
"reference": "
|
880 |
},
|
881 |
"dist": {
|
882 |
"type": "zip",
|
883 |
-
"url": "https://bitbucket.org/FernleafSystems/wordpress-services/get/
|
884 |
-
"reference": "
|
885 |
"shasum": ""
|
886 |
},
|
887 |
"require": {
|
@@ -894,7 +894,7 @@
|
|
894 |
"symfony/yaml": "~2.0||~3.0",
|
895 |
"twig/twig": "^1.0"
|
896 |
},
|
897 |
-
"time": "2019-02-
|
898 |
"type": "library",
|
899 |
"installation-source": "source",
|
900 |
"autoload": {
|
876 |
"source": {
|
877 |
"type": "git",
|
878 |
"url": "https://bitbucket.org/FernleafSystems/wordpress-services.git",
|
879 |
+
"reference": "09108bfbca852d3b1f4ae6834cfbae64f4de2681"
|
880 |
},
|
881 |
"dist": {
|
882 |
"type": "zip",
|
883 |
+
"url": "https://bitbucket.org/FernleafSystems/wordpress-services/get/09108bfbca852d3b1f4ae6834cfbae64f4de2681.zip",
|
884 |
+
"reference": "09108bfbca852d3b1f4ae6834cfbae64f4de2681",
|
885 |
"shasum": ""
|
886 |
},
|
887 |
"require": {
|
894 |
"symfony/yaml": "~2.0||~3.0",
|
895 |
"twig/twig": "^1.0"
|
896 |
},
|
897 |
+
"time": "2019-02-20T15:22:27+00:00",
|
898 |
"type": "library",
|
899 |
"installation-source": "source",
|
900 |
"autoload": {
|
src/lib/vendor/fernleafsystems/wordpress-services/src/Core/Comments.php
CHANGED
@@ -5,6 +5,8 @@ namespace FernleafSystems\Wordpress\Services\Core;
|
|
5 |
use FernleafSystems\Wordpress\Services\Services;
|
6 |
|
7 |
/**
|
|
|
|
|
8 |
*/
|
9 |
class Comments {
|
10 |
|
@@ -13,6 +15,14 @@ class Comments {
|
|
13 |
*/
|
14 |
protected $bIsCommentSubmission;
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
/**
|
17 |
* @return bool
|
18 |
*/
|
@@ -25,14 +35,14 @@ class Comments {
|
|
25 |
* @return bool
|
26 |
*/
|
27 |
public function isCommentsOpen( $oPost = null ) {
|
28 |
-
if ( is_null( $oPost ) || !is_a( $oPost, 'WP_Post' )) {
|
29 |
global $post;
|
30 |
$oPost = $post;
|
31 |
}
|
32 |
$bOpen = is_a( $oPost, '\WP_Post' )
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
return $bOpen;
|
37 |
}
|
38 |
|
@@ -76,7 +86,8 @@ class Comments {
|
|
76 |
*/
|
77 |
public function isCommentSubmission() {
|
78 |
if ( !isset( $this->bIsCommentSubmission ) ) {
|
79 |
-
$this->bIsCommentSubmission = Services::Request()->isPost()
|
|
|
80 |
if ( $this->bIsCommentSubmission ) {
|
81 |
$nPostId = Services::Request()->post( 'comment_post_ID' );
|
82 |
$this->bIsCommentSubmission = !empty( $nPostId ) && is_numeric( $nPostId );
|
5 |
use FernleafSystems\Wordpress\Services\Services;
|
6 |
|
7 |
/**
|
8 |
+
* Class Comments
|
9 |
+
* @package FernleafSystems\Wordpress\Services\Core
|
10 |
*/
|
11 |
class Comments {
|
12 |
|
15 |
*/
|
16 |
protected $bIsCommentSubmission;
|
17 |
|
18 |
+
/**
|
19 |
+
* @param int $nId
|
20 |
+
* @return \WP_Comment|false
|
21 |
+
*/
|
22 |
+
public function getById( $nId ) {
|
23 |
+
return \WP_Comment::get_instance( $nId );
|
24 |
+
}
|
25 |
+
|
26 |
/**
|
27 |
* @return bool
|
28 |
*/
|
35 |
* @return bool
|
36 |
*/
|
37 |
public function isCommentsOpen( $oPost = null ) {
|
38 |
+
if ( is_null( $oPost ) || !is_a( $oPost, 'WP_Post' ) ) {
|
39 |
global $post;
|
40 |
$oPost = $post;
|
41 |
}
|
42 |
$bOpen = is_a( $oPost, '\WP_Post' )
|
43 |
+
&& comments_open( $oPost->ID )
|
44 |
+
&& get_post_status( $oPost ) != 'trash'
|
45 |
+
&& !post_password_required( $oPost->ID );
|
46 |
return $bOpen;
|
47 |
}
|
48 |
|
86 |
*/
|
87 |
public function isCommentSubmission() {
|
88 |
if ( !isset( $this->bIsCommentSubmission ) ) {
|
89 |
+
$this->bIsCommentSubmission = Services::Request()->isPost()
|
90 |
+
&& Services::WpGeneral()->getIsCurrentPage( 'wp-comments-post.php' );
|
91 |
if ( $this->bIsCommentSubmission ) {
|
92 |
$nPostId = Services::Request()->post( 'comment_post_ID' );
|
93 |
$this->bIsCommentSubmission = !empty( $nPostId ) && is_numeric( $nPostId );
|
src/lib/vendor/fernleafsystems/wordpress-services/src/Core/General.php
CHANGED
@@ -789,6 +789,13 @@ class General {
|
|
789 |
return $this->oWpAutomaticUpdater;
|
790 |
}
|
791 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
792 |
/**
|
793 |
* Flushes the Rewrite rules and forces a re-commit to the .htaccess where applicable
|
794 |
*/
|
789 |
return $this->oWpAutomaticUpdater;
|
790 |
}
|
791 |
|
792 |
+
/**
|
793 |
+
* @return bool
|
794 |
+
*/
|
795 |
+
public function getIfAutoUpdatesInstalled() {
|
796 |
+
return (int)did_action( 'automatic_updates_complete' ) > 0;
|
797 |
+
}
|
798 |
+
|
799 |
/**
|
800 |
* Flushes the Rewrite rules and forces a re-commit to the .htaccess where applicable
|
801 |
*/
|
src/lib/vendor/fernleafsystems/wordpress-services/src/Services.php
CHANGED
@@ -50,7 +50,7 @@ class Services {
|
|
50 |
return new Core\CoreFileHashes();
|
51 |
};
|
52 |
self::$oDic[ 'service_email' ] = function () {
|
53 |
-
return new Utilities\
|
54 |
};
|
55 |
self::$oDic[ 'service_datamanipulation' ] = function () {
|
56 |
return new Utilities\DataManipulation();
|
50 |
return new Core\CoreFileHashes();
|
51 |
};
|
52 |
self::$oDic[ 'service_email' ] = function () {
|
53 |
+
return new Utilities\Email();
|
54 |
};
|
55 |
self::$oDic[ 'service_datamanipulation' ] = function () {
|
56 |
return new Utilities\DataManipulation();
|
src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/DataManipulation.php
CHANGED
@@ -13,7 +13,7 @@ class DataManipulation {
|
|
13 |
* @return string
|
14 |
*/
|
15 |
public function convertLineEndingsDosToLinux( $sFullFilePath ) {
|
16 |
-
return str_replace( ["\r\n","\r"], "\n", file_get_contents( $sFullFilePath ) );
|
17 |
}
|
18 |
|
19 |
/**
|
@@ -51,20 +51,42 @@ class DataManipulation {
|
|
51 |
}
|
52 |
|
53 |
/**
|
54 |
-
* @param
|
55 |
-
* @param array $aArray2
|
56 |
* @return array
|
57 |
*/
|
58 |
-
public function mergeArraysRecursive( $
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
}
|
67 |
-
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
13 |
* @return string
|
14 |
*/
|
15 |
public function convertLineEndingsDosToLinux( $sFullFilePath ) {
|
16 |
+
return str_replace( [ "\r\n", "\r" ], "\n", file_get_contents( $sFullFilePath ) );
|
17 |
}
|
18 |
|
19 |
/**
|
51 |
}
|
52 |
|
53 |
/**
|
54 |
+
* @param mixed $args,...
|
|
|
55 |
* @return array
|
56 |
*/
|
57 |
+
public function mergeArraysRecursive( $args ) {
|
58 |
+
$aArgs = array_values( array_filter( func_get_args(), 'is_array' ) );
|
59 |
+
switch ( count( $aArgs ) ) {
|
60 |
+
|
61 |
+
case 0:
|
62 |
+
$aResult = [];
|
63 |
+
break;
|
64 |
+
|
65 |
+
case 1:
|
66 |
+
$aResult = array_shift( $aArgs );
|
67 |
+
break;
|
68 |
+
|
69 |
+
case 2:
|
70 |
+
list( $aResult, $aArray2 ) = $aArgs;
|
71 |
+
foreach ( $aArray2 as $key => $Value ) {
|
72 |
+
if ( array_key_exists( $key, $aResult ) && is_array( $Value ) ) {
|
73 |
+
$aResult[ $key ] = $this->mergeArraysRecursive( $aResult[ $key ], $aArray2[ $key ] );
|
74 |
+
}
|
75 |
+
else {
|
76 |
+
$aResult[ $key ] = $Value;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
break;
|
80 |
+
|
81 |
+
default:
|
82 |
+
$aResult = array_shift( $aArgs );
|
83 |
+
foreach ( $aArgs as $aArg ) {
|
84 |
+
$aResult = $this->mergeArraysRecursive( $aResult, $aArg );
|
85 |
+
}
|
86 |
+
break;
|
87 |
}
|
88 |
+
|
89 |
+
return $aResult;
|
90 |
}
|
91 |
|
92 |
/**
|
src/lib/vendor/fernleafsystems/wordpress-services/src/Utilities/Email.php
CHANGED
@@ -46,6 +46,7 @@ class Email {
|
|
46 |
|
47 |
/**
|
48 |
* @param $bAdd - true to add, false to remove
|
|
|
49 |
*/
|
50 |
protected function emailFilters( $bAdd ) {
|
51 |
if ( $bAdd ) {
|
@@ -60,6 +61,7 @@ class Email {
|
|
60 |
remove_filter( 'wp_mail_from_name', array( $this, 'filterMailFromName' ), 100 );
|
61 |
remove_filter( 'wp_mail_content_type', array( $this, 'filterMailContentType' ), 100 );
|
62 |
}
|
|
|
63 |
}
|
64 |
|
65 |
/**
|
@@ -83,12 +85,12 @@ class Email {
|
|
83 |
// Add our filters for From.
|
84 |
$this->emailFilters( true );
|
85 |
$this->is_success = wp_mail(
|
86 |
-
$this->
|
87 |
$this->getSubject(),
|
88 |
$this->getMessageBody()
|
89 |
);
|
90 |
-
$this->emailFilters( false )
|
91 |
-
|
92 |
}
|
93 |
|
94 |
/**
|
@@ -125,7 +127,7 @@ class Email {
|
|
125 |
* @return array
|
126 |
*/
|
127 |
protected function getContentHeader() {
|
128 |
-
return
|
129 |
}
|
130 |
|
131 |
/**
|
@@ -162,7 +164,7 @@ class Email {
|
|
162 |
/**
|
163 |
* @return string
|
164 |
*/
|
165 |
-
protected function
|
166 |
return Services::Data()->validEmail( $this->to_email ) ? $this->to_email : Services::WpGeneral()
|
167 |
->getSiteAdminEmail();
|
168 |
}
|
@@ -190,11 +192,11 @@ class Email {
|
|
190 |
}
|
191 |
|
192 |
/**
|
193 |
-
* @param array
|
194 |
-
* @return
|
195 |
*/
|
196 |
public function setContentBody( $aContent ) {
|
197 |
-
if (
|
198 |
$aContent = [ $aContent ];
|
199 |
}
|
200 |
return $this->setParam( 'content', $aContent );
|
46 |
|
47 |
/**
|
48 |
* @param $bAdd - true to add, false to remove
|
49 |
+
* @return $this
|
50 |
*/
|
51 |
protected function emailFilters( $bAdd ) {
|
52 |
if ( $bAdd ) {
|
61 |
remove_filter( 'wp_mail_from_name', array( $this, 'filterMailFromName' ), 100 );
|
62 |
remove_filter( 'wp_mail_content_type', array( $this, 'filterMailContentType' ), 100 );
|
63 |
}
|
64 |
+
return $this;
|
65 |
}
|
66 |
|
67 |
/**
|
85 |
// Add our filters for From.
|
86 |
$this->emailFilters( true );
|
87 |
$this->is_success = wp_mail(
|
88 |
+
$this->getTo(),
|
89 |
$this->getSubject(),
|
90 |
$this->getMessageBody()
|
91 |
);
|
92 |
+
return $this->emailFilters( false )
|
93 |
+
->resetPhpMailer();
|
94 |
}
|
95 |
|
96 |
/**
|
127 |
* @return array
|
128 |
*/
|
129 |
protected function getContentHeader() {
|
130 |
+
return [ sprintf( __( 'Hi%s' ), empty( $this->to_name ) ? '' : ' '.$this->to_name ).',' ];
|
131 |
}
|
132 |
|
133 |
/**
|
164 |
/**
|
165 |
* @return string
|
166 |
*/
|
167 |
+
protected function getTo() {
|
168 |
return Services::Data()->validEmail( $this->to_email ) ? $this->to_email : Services::WpGeneral()
|
169 |
->getSiteAdminEmail();
|
170 |
}
|
192 |
}
|
193 |
|
194 |
/**
|
195 |
+
* @param array $aContent
|
196 |
+
* @return Email
|
197 |
*/
|
198 |
public function setContentBody( $aContent ) {
|
199 |
+
if ( is_string( $aContent ) ) {
|
200 |
$aContent = [ $aContent ];
|
201 |
}
|
202 |
return $this->setParam( 'content', $aContent );
|
src/processors/audit_trail.php
CHANGED
@@ -1,212 +1,30 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use FernleafSystems\Wordpress\Plugin\Shield\Databases\AuditTrail;
|
4 |
use FernleafSystems\Wordpress\Services\Services;
|
5 |
|
6 |
-
class ICWP_WPSF_Processor_AuditTrail extends
|
7 |
|
8 |
-
/**
|
9 |
-
* @param ICWP_WPSF_FeatureHandler_AuditTrail $oModCon
|
10 |
-
*/
|
11 |
-
public function __construct( ICWP_WPSF_FeatureHandler_AuditTrail $oModCon ) {
|
12 |
-
parent::__construct( $oModCon, $oModCon->getDef( 'audit_trail_table_name' ) );
|
13 |
-
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* Resets the object values to be re-used anew
|
17 |
-
*/
|
18 |
-
public function init() {
|
19 |
-
parent::init();
|
20 |
-
add_action( $this->getMod()->prefix( 'add_new_audit_entry' ), array( $this, 'addAuditTrialEntry' ) );
|
21 |
-
}
|
22 |
-
|
23 |
-
public function cleanupDatabase() {
|
24 |
-
parent::cleanupDatabase(); // Deletes based on time.
|
25 |
-
$this->trimTable();
|
26 |
-
}
|
27 |
-
|
28 |
-
/**
|
29 |
-
* ABstract this and move it into base DB class
|
30 |
-
*/
|
31 |
-
protected function trimTable() {
|
32 |
-
/** @var ICWP_WPSF_FeatureHandler_AuditTrail $oFO */
|
33 |
-
$oFO = $this->getMod();
|
34 |
-
try {
|
35 |
-
$this->getDbHandler()
|
36 |
-
->getQueryDeleter()
|
37 |
-
->deleteExcess( $oFO->getMaxEntries() );
|
38 |
-
}
|
39 |
-
catch ( \Exception $oE ) {
|
40 |
-
}
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
*/
|
45 |
public function run() {
|
46 |
-
if ( !$this->isReadyToRun() ) {
|
47 |
-
return;
|
48 |
-
}
|
49 |
/** @var ICWP_WPSF_FeatureHandler_AuditTrail $oFO */
|
50 |
$oFO = $this->getMod();
|
51 |
-
|
52 |
-
|
53 |
-
$oUsers = new ICWP_WPSF_Processor_AuditTrail_Users();
|
54 |
-
$oUsers->run();
|
55 |
-
}
|
56 |
-
|
57 |
-
if ( $oFO->isAuditPlugins() ) {
|
58 |
-
$oPlugins = new ICWP_WPSF_Processor_AuditTrail_Plugins();
|
59 |
-
$oPlugins->run();
|
60 |
-
}
|
61 |
-
|
62 |
-
if ( $oFO->isAuditThemes() ) {
|
63 |
-
$oThemes = new ICWP_WPSF_Processor_AuditTrail_Themes();
|
64 |
-
$oThemes->run();
|
65 |
-
}
|
66 |
-
|
67 |
-
if ( $oFO->isAuditWp() ) {
|
68 |
-
$oWp = new ICWP_WPSF_Processor_AuditTrail_Wordpress();
|
69 |
-
$oWp->run();
|
70 |
-
}
|
71 |
-
|
72 |
-
if ( $oFO->isAuditPosts() ) {
|
73 |
-
$oPosts = new ICWP_WPSF_Processor_AuditTrail_Posts();
|
74 |
-
$oPosts->run();
|
75 |
-
}
|
76 |
-
|
77 |
-
if ( $oFO->isAuditEmails() ) {
|
78 |
-
$oEmails = new ICWP_WPSF_Processor_AuditTrail_Emails();
|
79 |
-
$oEmails->run();
|
80 |
-
}
|
81 |
-
|
82 |
-
if ( $oFO->isAuditShield() ) {
|
83 |
-
$oWpsf = new ICWP_WPSF_Processor_AuditTrail_Wpsf();
|
84 |
-
$oWpsf->run();
|
85 |
}
|
86 |
}
|
87 |
|
88 |
/**
|
89 |
-
* @
|
90 |
-
* @return array|bool
|
91 |
*/
|
92 |
-
public function
|
93 |
-
|
94 |
-
$oCounter = $this->getDbHandler()->getQuerySelector();
|
95 |
-
if ( $sContext != 'all' ) {
|
96 |
-
$oCounter->filterByContext( $sContext );
|
97 |
-
}
|
98 |
-
return $oCounter->count();
|
99 |
-
}
|
100 |
-
|
101 |
-
/**
|
102 |
-
* @CENTRAL
|
103 |
-
* @param string $sContext
|
104 |
-
* @param string $sOrderBy
|
105 |
-
* @param string $sOrder
|
106 |
-
* @param int $nPage
|
107 |
-
* @param int $nLimit
|
108 |
-
* @return AuditTrail\EntryVO[]
|
109 |
-
*/
|
110 |
-
public function getAuditEntriesForContext( $sContext = 'all', $sOrderBy = 'created_at', $sOrder = 'DESC', $nPage = 1, $nLimit = 50 ) {
|
111 |
-
/** @var AuditTrail\Select $oSelect */
|
112 |
-
$oSelect = $this->getDbHandler()
|
113 |
-
->getQuerySelector()
|
114 |
-
->setResultsAsVo( true )
|
115 |
-
->setOrderBy( $sOrderBy, $sOrder )
|
116 |
-
->setLimit( $nLimit )
|
117 |
-
->setPage( $nPage );
|
118 |
-
if ( $sContext != 'all' ) {
|
119 |
-
$oSelect->filterByContext( $sContext );
|
120 |
-
}
|
121 |
-
|
122 |
-
return $oSelect->query();
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
* @param AuditTrail\EntryVO $oEntryVo
|
127 |
-
*/
|
128 |
-
public function addAuditTrialEntry( $oEntryVo ) {
|
129 |
-
$oCon = $this->getCon();
|
130 |
-
if ( !$oCon->isPluginDeleting() && $oEntryVo instanceof AuditTrail\EntryVO ) {
|
131 |
-
$oEntryVo->rid = $oCon->getShortRequestId();
|
132 |
-
/** @var AuditTrail\Insert $oInsQ */
|
133 |
-
$oInsQ = $this->getDbHandler()->getQueryInserter();
|
134 |
-
$oInsQ->insert( $oEntryVo );
|
135 |
-
}
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* @return string
|
140 |
-
*/
|
141 |
-
protected function getCreateTableSql() {
|
142 |
-
return "CREATE TABLE %s (
|
143 |
-
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
144 |
-
rid varchar(10) NOT NULL DEFAULT '' COMMENT 'Request ID',
|
145 |
-
ip varchar(40) NOT NULL DEFAULT 0 COMMENT 'Visitor IP Address',
|
146 |
-
wp_username varchar(255) NOT NULL DEFAULT 'none' COMMENT 'WP User',
|
147 |
-
context varchar(32) NOT NULL DEFAULT 'none' COMMENT 'Audit Context',
|
148 |
-
event varchar(50) NOT NULL DEFAULT 'none' COMMENT 'Specific Audit Event',
|
149 |
-
category int(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Severity',
|
150 |
-
message text COMMENT 'Audit Event Description',
|
151 |
-
meta text COMMENT 'Audit Event Data',
|
152 |
-
immutable tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'May Be Deleted',
|
153 |
-
created_at int(15) UNSIGNED NOT NULL DEFAULT 0,
|
154 |
-
deleted_at int(15) UNSIGNED NOT NULL DEFAULT 0,
|
155 |
-
PRIMARY KEY (id)
|
156 |
-
) %s;";
|
157 |
}
|
158 |
|
159 |
/**
|
160 |
* @return array
|
161 |
*/
|
162 |
-
protected function
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
/**
|
168 |
-
* override and do not delete
|
169 |
-
*/
|
170 |
-
public function deleteTable() {
|
171 |
-
}
|
172 |
-
|
173 |
-
/**
|
174 |
-
* @return int|null
|
175 |
-
*/
|
176 |
-
protected function getAutoExpirePeriod() {
|
177 |
-
/** @var ICWP_WPSF_FeatureHandler_Traffic $oFO */
|
178 |
-
$oFO = $this->getMod();
|
179 |
-
return $oFO->getAutoCleanDays()*DAY_IN_SECONDS;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* @return AuditTrail\Handler
|
184 |
-
*/
|
185 |
-
protected function createDbHandler() {
|
186 |
-
return new AuditTrail\Handler();
|
187 |
-
}
|
188 |
-
|
189 |
-
/**
|
190 |
-
* @deprecated
|
191 |
-
* @return AuditTrail\Delete
|
192 |
-
*/
|
193 |
-
public function getQueryDeleter() {
|
194 |
-
return parent::getQueryDeleter();
|
195 |
-
}
|
196 |
-
|
197 |
-
/**
|
198 |
-
* @deprecated
|
199 |
-
* @return AuditTrail\Insert
|
200 |
-
*/
|
201 |
-
public function getQueryInserter() {
|
202 |
-
return parent::getQueryInserter();
|
203 |
-
}
|
204 |
-
|
205 |
-
/**
|
206 |
-
* @deprecated
|
207 |
-
* @return AuditTrail\Select
|
208 |
-
*/
|
209 |
-
public function getQuerySelector() {
|
210 |
-
return parent::getQuerySelector();
|
211 |
}
|
212 |
}
|
1 |
<?php
|
2 |
|
|
|
3 |
use FernleafSystems\Wordpress\Services\Services;
|
4 |
|
5 |
+
class ICWP_WPSF_Processor_AuditTrail extends ICWP_WPSF_Processor_BaseWpsf {
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
public function run() {
|
|
|
|
|
|
|
8 |
/** @var ICWP_WPSF_FeatureHandler_AuditTrail $oFO */
|
9 |
$oFO = $this->getMod();
|
10 |
+
if ( $oFO->isEnabledAuditing() ) {
|
11 |
+
$this->getSubProAuditor()->run();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
}
|
13 |
}
|
14 |
|
15 |
/**
|
16 |
+
* @return ICWP_WPSF_Processor_AuditTrail_Auditor|mixed
|
|
|
17 |
*/
|
18 |
+
public function getSubProAuditor() {
|
19 |
+
return $this->getSubPro( 'auditor' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
}
|
21 |
|
22 |
/**
|
23 |
* @return array
|
24 |
*/
|
25 |
+
protected function getSubProMap() {
|
26 |
+
return [
|
27 |
+
'auditor' => 'ICWP_WPSF_Processor_AuditTrail_Auditor',
|
28 |
+
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
}
|
30 |
}
|
src/processors/audit_trail_auditor.php
ADDED
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use FernleafSystems\Wordpress\Plugin\Shield\Databases\AuditTrail;
|
4 |
+
use FernleafSystems\Wordpress\Services\Services;
|
5 |
+
|
6 |
+
class ICWP_WPSF_Processor_AuditTrail_Auditor extends ICWP_WPSF_BaseDbProcessor {
|
7 |
+
|
8 |
+
/**
|
9 |
+
* @param ICWP_WPSF_FeatureHandler_AuditTrail $oModCon
|
10 |
+
*/
|
11 |
+
public function __construct( ICWP_WPSF_FeatureHandler_AuditTrail $oModCon ) {
|
12 |
+
parent::__construct( $oModCon, $oModCon->getDef( 'audit_trail_table_name' ) );
|
13 |
+
}
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Resets the object values to be re-used anew
|
17 |
+
*/
|
18 |
+
public function init() {
|
19 |
+
parent::init();
|
20 |
+
add_action( $this->getMod()->prefix( 'add_new_audit_entry' ), array( $this, 'addAuditTrialEntry' ) );
|
21 |
+
}
|
22 |
+
|
23 |
+
public function cleanupDatabase() {
|
24 |
+
parent::cleanupDatabase(); // Deletes based on time.
|
25 |
+
$this->trimTable();
|
26 |
+
}
|
27 |
+
|
28 |
+
/**
|
29 |
+
* ABstract this and move it into base DB class
|
30 |
+
*/
|
31 |
+
protected function trimTable() {
|
32 |
+
/** @var ICWP_WPSF_FeatureHandler_AuditTrail $oFO */
|
33 |
+
$oFO = $this->getMod();
|
34 |
+
try {
|
35 |
+
$this->getDbHandler()
|
36 |
+
->getQueryDeleter()
|
37 |
+
->deleteExcess( $oFO->getMaxEntries() );
|
38 |
+
}
|
39 |
+
catch ( \Exception $oE ) {
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
*/
|
45 |
+
public function run() {
|
46 |
+
if ( !$this->isReadyToRun() ) {
|
47 |
+
return;
|
48 |
+
}
|
49 |
+
/** @var ICWP_WPSF_FeatureHandler_AuditTrail $oFO */
|
50 |
+
$oFO = $this->getMod();
|
51 |
+
|
52 |
+
if ( $oFO->isAuditUsers() ) {
|
53 |
+
( new ICWP_WPSF_Processor_AuditTrail_Users() )->run();
|
54 |
+
}
|
55 |
+
if ( $oFO->isAuditPlugins() ) {
|
56 |
+
( new ICWP_WPSF_Processor_AuditTrail_Plugins() )->run();
|
57 |
+
}
|
58 |
+
if ( $oFO->isAuditThemes() ) {
|
59 |
+
( new ICWP_WPSF_Processor_AuditTrail_Themes() )->run();
|
60 |
+
}
|
61 |
+
if ( $oFO->isAuditWp() ) {
|
62 |
+
( new ICWP_WPSF_Processor_AuditTrail_Wordpress() )->run();
|
63 |
+
}
|
64 |
+
if ( $oFO->isAuditPosts() ) {
|
65 |
+
( new ICWP_WPSF_Processor_AuditTrail_Posts() )->run();
|
66 |
+
}
|
67 |
+
if ( $oFO->isAuditEmails() ) {
|
68 |
+
( new ICWP_WPSF_Processor_AuditTrail_Emails() )->run();
|
69 |
+
}
|
70 |
+
if ( $oFO->isAuditShield() ) {
|
71 |
+
( new ICWP_WPSF_Processor_AuditTrail_Wpsf() )->run();
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @param string $sContext
|
77 |
+
* @return array|bool
|
78 |
+
*/
|
79 |
+
public function countAuditEntriesForContext( $sContext = 'all' ) {
|
80 |
+
/** @var AuditTrail\Select $oCounter */
|
81 |
+
$oCounter = $this->getDbHandler()->getQuerySelector();
|
82 |
+
if ( $sContext != 'all' ) {
|
83 |
+
$oCounter->filterByContext( $sContext );
|
84 |
+
}
|
85 |
+
return $oCounter->count();
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @CENTRAL
|
90 |
+
* @param string $sContext
|
91 |
+
* @param string $sOrderBy
|
92 |
+
* @param string $sOrder
|
93 |
+
* @param int $nPage
|
94 |
+
* @param int $nLimit
|
95 |
+
* @return AuditTrail\EntryVO[]
|
96 |
+
*/
|
97 |
+
public function getAuditEntriesForContext( $sContext = 'all', $sOrderBy = 'created_at', $sOrder = 'DESC', $nPage = 1, $nLimit = 50 ) {
|
98 |
+
/** @var AuditTrail\Select $oSelect */
|
99 |
+
$oSelect = $this->getDbHandler()
|
100 |
+
->getQuerySelector()
|
101 |
+
->setResultsAsVo( true )
|
102 |
+
->setOrderBy( $sOrderBy, $sOrder )
|
103 |
+
->setLimit( $nLimit )
|
104 |
+
->setPage( $nPage );
|
105 |
+
if ( $sContext != 'all' ) {
|
106 |
+
$oSelect->filterByContext( $sContext );
|
107 |
+
}
|
108 |
+
|
109 |
+
return $oSelect->query();
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* @param AuditTrail\EntryVO $oEntryVo
|
114 |
+
*/
|
115 |
+
public function addAuditTrialEntry( $oEntryVo ) {
|
116 |
+
$oCon = $this->getCon();
|
117 |
+
if ( !$oCon->isPluginDeleting() && $oEntryVo instanceof AuditTrail\EntryVO ) {
|
118 |
+
$oEntryVo->rid = $oCon->getShortRequestId();
|
119 |
+
/** @var AuditTrail\Insert $oInsQ */
|
120 |
+
$oInsQ = $this->getDbHandler()->getQueryInserter();
|
121 |
+
$oInsQ->insert( $oEntryVo );
|
122 |
+
}
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
protected function getCreateTableSql() {
|
129 |
+
return "CREATE TABLE %s (
|
130 |
+
id int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
|
131 |
+
rid varchar(10) NOT NULL DEFAULT '' COMMENT 'Request ID',
|
132 |
+
ip varchar(40) NOT NULL DEFAULT 0 COMMENT 'Visitor IP Address',
|
133 |
+
wp_username varchar(255) NOT NULL DEFAULT 'none' COMMENT 'WP User',
|
134 |
+
context varchar(32) NOT NULL DEFAULT 'none' COMMENT 'Audit Context',
|
135 |
+
event varchar(50) NOT NULL DEFAULT 'none' COMMENT 'Specific Audit Event',
|
136 |
+
category int(3) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Severity',
|
137 |
+
message text COMMENT 'Audit Event Description',
|
138 |
+
meta text COMMENT 'Audit Event Data',
|
139 |
+
immutable tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'May Be Deleted',
|
140 |
+
created_at int(15) UNSIGNED NOT NULL DEFAULT 0,
|
141 |
+
deleted_at int(15) UNSIGNED NOT NULL DEFAULT 0,
|
142 |
+
PRIMARY KEY (id)
|
143 |
+
) %s;";
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* @return array
|
148 |
+
*/
|
149 |
+
protected function getTableColumnsByDefinition() {
|
150 |
+
$aDef = $this->getMod()->getDef( 'audit_trail_table_columns' );
|
151 |
+
return ( is_array( $aDef ) ? $aDef : array() );
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* override and do not delete
|
156 |
+
*/
|
157 |
+
public function deleteTable() {
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* @return int|null
|
162 |
+
*/
|
163 |
+
protected function getAutoExpirePeriod() {
|
164 |
+
/** @var ICWP_WPSF_FeatureHandler_Traffic $oFO */
|
165 |
+
$oFO = $this->getMod();
|
166 |
+
return $oFO->getAutoCleanDays()*DAY_IN_SECONDS;
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* @return AuditTrail\Handler
|
171 |
+
*/
|
172 |
+
protected function createDbHandler() {
|
173 |
+
return new AuditTrail\Handler();
|
174 |
+
}
|
175 |
+
}
|
src/processors/basedb.php
CHANGED
@@ -118,36 +118,4 @@ abstract class ICWP_WPSF_BaseDbProcessor extends ICWP_WPSF_Processor_BaseWpsf {
|
|
118 |
protected function getAutoExpirePeriod() {
|
119 |
return null;
|
120 |
}
|
121 |
-
|
122 |
-
/**
|
123 |
-
* @deprecated
|
124 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Base\Delete
|
125 |
-
*/
|
126 |
-
protected function getQueryDeleter() {
|
127 |
-
return $this->getDbHandler()->getQueryDeleter();
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* @deprecated
|
132 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Base\Insert
|
133 |
-
*/
|
134 |
-
protected function getQueryInserter() {
|
135 |
-
return $this->getDbHandler()->getQueryInserter();
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* @deprecated
|
140 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Base\Select
|
141 |
-
*/
|
142 |
-
protected function getQuerySelector() {
|
143 |
-
return $this->getDbHandler()->getQuerySelector();
|
144 |
-
}
|
145 |
-
|
146 |
-
/**
|
147 |
-
* @deprecated
|
148 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Base\Update
|
149 |
-
*/
|
150 |
-
protected function getQueryUpdater() {
|
151 |
-
return $this->getDbHandler()->getQueryUpdater();
|
152 |
-
}
|
153 |
}
|
118 |
protected function getAutoExpirePeriod() {
|
119 |
return null;
|
120 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
}
|
src/processors/commentsfilter_antibotspam.php
CHANGED
@@ -394,25 +394,4 @@ class ICWP_WPSF_Processor_CommentsFilter_AntiBotSpam extends ICWP_WPSF_BaseDbPro
|
|
394 |
protected function createDbHandler() {
|
395 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\Comments\Handler();
|
396 |
}
|
397 |
-
|
398 |
-
/**
|
399 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Comments\Delete
|
400 |
-
*/
|
401 |
-
public function getQueryDeleter() {
|
402 |
-
return parent::getQueryDeleter();
|
403 |
-
}
|
404 |
-
|
405 |
-
/**
|
406 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Comments\Insert
|
407 |
-
*/
|
408 |
-
public function getQueryInserter() {
|
409 |
-
return parent::getQueryInserter();
|
410 |
-
}
|
411 |
-
|
412 |
-
/**
|
413 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\Comments\Select
|
414 |
-
*/
|
415 |
-
public function getQuerySelector() {
|
416 |
-
return parent::getQuerySelector();
|
417 |
-
}
|
418 |
}
|
394 |
protected function createDbHandler() {
|
395 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\Comments\Handler();
|
396 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
}
|
src/processors/hack_protect.php
CHANGED
@@ -109,7 +109,32 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
109 |
'not_enabled' => _wpsf__( 'This scan is not currently enabled.' ),
|
110 |
'please_enable' => _wpsf__( 'Please turn on this scan in the options.' ),
|
111 |
),
|
|
|
|
|
112 |
'scans' => array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
'wcf' => array(
|
114 |
'flags' => array(
|
115 |
'is_enabled' => true,
|
@@ -128,6 +153,7 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
128 |
),
|
129 |
'count' => $oSelector->countForScan( 'wcf' ),
|
130 |
'strings' => array(
|
|
|
131 |
'subtitle' => _wpsf__( "Detects changes to core WordPress files" )
|
132 |
),
|
133 |
),
|
@@ -149,6 +175,7 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
149 |
),
|
150 |
'count' => $oSelector->countForScan( 'ufc' ),
|
151 |
'strings' => array(
|
|
|
152 |
'subtitle' => _wpsf__( "Detects files that maybe shouldn't be there" )
|
153 |
),
|
154 |
),
|
@@ -170,6 +197,7 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
170 |
),
|
171 |
'count' => $oSelector->countForScan( 'wpv' ),
|
172 |
'strings' => array(
|
|
|
173 |
'subtitle' => _wpsf__( "Alerts on known security vulnerabilities" )
|
174 |
),
|
175 |
),
|
@@ -180,6 +208,9 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
180 |
return $aData;
|
181 |
}
|
182 |
|
|
|
|
|
|
|
183 |
private function getInsightVarsScan_Ptg() {
|
184 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oMod */
|
185 |
$oMod = $this->getMod();
|
@@ -312,6 +343,7 @@ class ICWP_WPSF_Processor_HackProtect extends ICWP_WPSF_Processor_BaseWpsf {
|
|
312 |
'count' => $oSelector->countForScan( 'ptg' ),
|
313 |
'assets' => array_merge( $aPlugins, $aThemes ),
|
314 |
'strings' => array(
|
|
|
315 |
'subtitle' => _wpsf__( "Detects unauthorized changes to plugins/themes" ),
|
316 |
'files_with_problems' => _wpsf__( 'Files with problems' ),
|
317 |
'root_dir' => _wpsf__( 'Root directory' ),
|
109 |
'not_enabled' => _wpsf__( 'This scan is not currently enabled.' ),
|
110 |
'please_enable' => _wpsf__( 'Please turn on this scan in the options.' ),
|
111 |
),
|
112 |
+
'vars' => [
|
113 |
+
],
|
114 |
'scans' => array(
|
115 |
+
/*
|
116 |
+
'apc' => array(
|
117 |
+
'flags' => array(
|
118 |
+
'is_enabled' => true,
|
119 |
+
'is_available' => true,
|
120 |
+
'has_items' => true,
|
121 |
+
'has_last_scan' => $oMod->getLastScanAt( 'apc' ) > 0
|
122 |
+
),
|
123 |
+
'hrefs' => array(
|
124 |
+
'options' => $oMod->getUrl_DirectLinkToSection( 'section_scan_apc' )
|
125 |
+
),
|
126 |
+
'vars' => array(
|
127 |
+
'last_scan_at' => sprintf(
|
128 |
+
_wpsf__( 'Last Scan: %s' ),
|
129 |
+
$oCarbon->setTimestamp( $oMod->getLastScanAt( 'apc' ) )->diffForHumans()
|
130 |
+
),
|
131 |
+
),
|
132 |
+
'count' => $oSelector->countForScan( 'apc' ),
|
133 |
+
'strings' => array(
|
134 |
+
'title' => _wpsf__( 'Abandoned Plugins Check' ),
|
135 |
+
'subtitle' => _wpsf__( "Discover abandoned plugins" )
|
136 |
+
),
|
137 |
+
), */
|
138 |
'wcf' => array(
|
139 |
'flags' => array(
|
140 |
'is_enabled' => true,
|
153 |
),
|
154 |
'count' => $oSelector->countForScan( 'wcf' ),
|
155 |
'strings' => array(
|
156 |
+
'title' => _wpsf__( 'WordPress Core File Integrity' ),
|
157 |
'subtitle' => _wpsf__( "Detects changes to core WordPress files" )
|
158 |
),
|
159 |
),
|
175 |
),
|
176 |
'count' => $oSelector->countForScan( 'ufc' ),
|
177 |
'strings' => array(
|
178 |
+
'title' => _wpsf__( 'Unrecognised Core Files' ),
|
179 |
'subtitle' => _wpsf__( "Detects files that maybe shouldn't be there" )
|
180 |
),
|
181 |
),
|
197 |
),
|
198 |
'count' => $oSelector->countForScan( 'wpv' ),
|
199 |
'strings' => array(
|
200 |
+
'title' => _wpsf__( 'Plugin / Theme Vulnerabilities' ),
|
201 |
'subtitle' => _wpsf__( "Alerts on known security vulnerabilities" )
|
202 |
),
|
203 |
),
|
208 |
return $aData;
|
209 |
}
|
210 |
|
211 |
+
/**
|
212 |
+
* @return array
|
213 |
+
*/
|
214 |
private function getInsightVarsScan_Ptg() {
|
215 |
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oMod */
|
216 |
$oMod = $this->getMod();
|
343 |
'count' => $oSelector->countForScan( 'ptg' ),
|
344 |
'assets' => array_merge( $aPlugins, $aThemes ),
|
345 |
'strings' => array(
|
346 |
+
'title' => _wpsf__( 'Plugin / Theme Modifications' ),
|
347 |
'subtitle' => _wpsf__( "Detects unauthorized changes to plugins/themes" ),
|
348 |
'files_with_problems' => _wpsf__( 'Files with problems' ),
|
349 |
'root_dir' => _wpsf__( 'Root directory' ),
|
src/processors/hackprotect_scan_apc.php
ADDED
@@ -0,0 +1,181 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use \FernleafSystems\Wordpress\Plugin\Shield;
|
4 |
+
|
5 |
+
class ICWP_WPSF_Processor_HackProtect_Apc extends ICWP_WPSF_Processor_ScanBase {
|
6 |
+
|
7 |
+
const SCAN_SLUG = 'apc';
|
8 |
+
|
9 |
+
/**
|
10 |
+
*/
|
11 |
+
public function run() {
|
12 |
+
parent::run();
|
13 |
+
add_action( 'deleted_plugin', [ $this, 'onDeletedPlugin' ], 10, 0 );
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @return bool
|
18 |
+
*/
|
19 |
+
public function isEnabled() {
|
20 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
21 |
+
$oFO = $this->getMod();
|
22 |
+
return $oFO->isApcEnabled();
|
23 |
+
}
|
24 |
+
|
25 |
+
public function onDeletedPlugin() {
|
26 |
+
$this->doScan();
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @param Shield\Scans\Apc\ResultsSet $oResults
|
31 |
+
* @return Shield\Databases\Scanner\EntryVO[]
|
32 |
+
*/
|
33 |
+
protected function convertResultsToVos( $oResults ) {
|
34 |
+
return ( new Shield\Scans\Apc\ConvertResultsToVos() )->convert( $oResults );
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @param mixed|Shield\Databases\Scanner\EntryVO[] $aVos
|
39 |
+
* @return Shield\Scans\Apc\ResultsSet
|
40 |
+
*/
|
41 |
+
protected function convertVosToResults( $aVos ) {
|
42 |
+
return ( new Shield\Scans\Apc\ConvertVosToResults() )->convert( $aVos );
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param Shield\Databases\Scanner\EntryVO $oVo
|
47 |
+
* @return Shield\Scans\Apc\ResultItem
|
48 |
+
*/
|
49 |
+
protected function convertVoToResultItem( $oVo ) {
|
50 |
+
return ( new Shield\Scans\Apc\ConvertVosToResults() )->convertItem( $oVo );
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @return null
|
55 |
+
*/
|
56 |
+
protected function getRepairer() {
|
57 |
+
return null;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @return Shield\Scans\Apc\Scanner
|
62 |
+
*/
|
63 |
+
protected function getScanner() {
|
64 |
+
return new Shield\Scans\Apc\Scanner();
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param Shield\Scans\Apc\ResultsSet $oRes
|
69 |
+
*/
|
70 |
+
protected function runCronAutoRepair( $oRes ) {
|
71 |
+
// no autorepair
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* @param Shield\Scans\Apc\ResultsSet $oRes
|
76 |
+
* @return bool - true if user notified
|
77 |
+
*/
|
78 |
+
protected function runCronUserNotify( $oRes ) {
|
79 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
80 |
+
$oFO = $this->getMod();
|
81 |
+
$bSend = $oFO->isWpvulnSendEmail();
|
82 |
+
if ( $bSend ) {
|
83 |
+
$this->emailResults( $oRes );
|
84 |
+
}
|
85 |
+
return $bSend;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @param Shield\Scans\Apc\ResultsSet $oRes
|
90 |
+
* @return bool
|
91 |
+
*/
|
92 |
+
protected function emailResults( $oRes ) {
|
93 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
94 |
+
$oFO = $this->getMod();
|
95 |
+
$oWpPlugins = $this->loadWpPlugins();
|
96 |
+
$oWpThemes = $this->loadWpThemes();
|
97 |
+
$oCon = $this->getCon();
|
98 |
+
|
99 |
+
$aContent = array(
|
100 |
+
sprintf( _wpsf__( '%s has detected items with known security vulnerabilities.' ), $oCon->getHumanName() ),
|
101 |
+
_wpsf__( 'You should update or remove these items at your earliest convenience.' ),
|
102 |
+
_wpsf__( 'Details for the items(s) are below:' ),
|
103 |
+
'',
|
104 |
+
);
|
105 |
+
|
106 |
+
/** @var Shield\Scans\Apc\ResultItem $oItem */
|
107 |
+
foreach ( $oRes->getItems() as $oItem ) {
|
108 |
+
|
109 |
+
if ( $oItem->context == 'plugins' ) {
|
110 |
+
$aPlugin = $oWpPlugins->getPlugin( $oItem->slug );
|
111 |
+
$sName = sprintf( '%s - %s', _wpsf__( 'Plugin' ), empty( $aPlugin ) ? 'Unknown' : $aPlugin[ 'Name' ] );
|
112 |
+
}
|
113 |
+
else {
|
114 |
+
$sName = sprintf( '%s - %s', _wpsf__( 'Theme' ), $oWpThemes->getCurrentThemeName() );
|
115 |
+
}
|
116 |
+
|
117 |
+
$oVuln = $oItem->getWpVulnVo();
|
118 |
+
$aContent[] = implode( "<br />", array(
|
119 |
+
sprintf( '%s: %s', _wpsf__( 'Item' ), $sName ),
|
120 |
+
'- '.sprintf( _wpsf__( 'Vulnerability Title: %s' ), $oVuln->title ),
|
121 |
+
'- '.sprintf( _wpsf__( 'Vulnerability Type: %s' ), $oVuln->vuln_type ),
|
122 |
+
'- '.sprintf( _wpsf__( 'Fixed Version: %s' ), $oVuln->fixed_in ),
|
123 |
+
'- '.sprintf( _wpsf__( 'Further Information: %s' ), $oVuln->getUrl() ),
|
124 |
+
'',
|
125 |
+
) );
|
126 |
+
}
|
127 |
+
|
128 |
+
$aContent[] = $this->getScannerButtonForEmail();
|
129 |
+
$aContent[] = '';
|
130 |
+
|
131 |
+
$sSubject = sprintf( '%s - %s', _wpsf__( 'Warning' ), _wpsf__( 'Plugin(s) Discovered With Known Security Vulnerabilities.' ) );
|
132 |
+
$sTo = $oFO->getPluginDefaultRecipientAddress();
|
133 |
+
$bSendSuccess = $this->getEmailProcessor()
|
134 |
+
->sendEmailWithWrap( $sTo, $sSubject, $aContent );
|
135 |
+
|
136 |
+
if ( $bSendSuccess ) {
|
137 |
+
$this->addToAuditEntry( sprintf( _wpsf__( 'Successfully sent Plugin Vulnerability Notification email alert to: %s' ), $sTo ) );
|
138 |
+
}
|
139 |
+
else {
|
140 |
+
$this->addToAuditEntry( sprintf( _wpsf__( 'Failed to send Plugin Vulnerability Notification email alert to: %s' ), $sTo ) );
|
141 |
+
}
|
142 |
+
return $bSendSuccess;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* @return string[]
|
147 |
+
*/
|
148 |
+
protected function getAllAbandonedPlugins() {
|
149 |
+
return $this->getAllAbandoned()->getUniqueSlugs();
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* @return Shield\Scans\Apc\ResultsSet
|
154 |
+
*/
|
155 |
+
protected function getAllAbandoned() {
|
156 |
+
/** @var Shield\Databases\Scanner\Select $oSel */
|
157 |
+
$oSel = $this->getScannerDb()
|
158 |
+
->getDbHandler()
|
159 |
+
->getQuerySelector();
|
160 |
+
$aVos = $oSel->filterByScan( static::SCAN_SLUG )
|
161 |
+
->filterByNotIgnored()
|
162 |
+
->query();
|
163 |
+
return $this->convertVosToResults( $aVos );
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* @return bool
|
168 |
+
*/
|
169 |
+
protected function countVulnerablePlugins() {
|
170 |
+
return $this->getAllAbandoned()->countUniqueSlugsForPluginsContext();
|
171 |
+
}
|
172 |
+
|
173 |
+
/**
|
174 |
+
* @return string
|
175 |
+
*/
|
176 |
+
protected function getCronName() {
|
177 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
178 |
+
$oFO = $this->getMod();
|
179 |
+
return $oFO->getWpvCronName();
|
180 |
+
}
|
181 |
+
}
|
src/processors/hackprotect_scan_base.php
CHANGED
@@ -29,6 +29,11 @@ abstract class ICWP_WPSF_Processor_ScanBase extends ICWP_WPSF_Processor_BaseWpsf
|
|
29 |
$this->setupCron();
|
30 |
}
|
31 |
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
* @return Shield\Scans\Base\BaseResultsSet
|
34 |
*/
|
@@ -62,7 +67,7 @@ abstract class ICWP_WPSF_Processor_ScanBase extends ICWP_WPSF_Processor_BaseWpsf
|
|
62 |
}
|
63 |
|
64 |
/**
|
65 |
-
* @return mixed
|
66 |
*/
|
67 |
abstract protected function getRepairer();
|
68 |
|
@@ -339,13 +344,10 @@ abstract class ICWP_WPSF_Processor_ScanBase extends ICWP_WPSF_Processor_BaseWpsf
|
|
339 |
* Cron callback
|
340 |
*/
|
341 |
public function runCron() {
|
342 |
-
$this->cronScan();
|
343 |
}
|
344 |
|
345 |
private function cronScan() {
|
346 |
-
if ( doing_action( 'wp_maybe_auto_update' ) || did_action( 'wp_maybe_auto_update' ) ) {
|
347 |
-
return;
|
348 |
-
}
|
349 |
$this->doScan();
|
350 |
$this->cronProcessScanResults();
|
351 |
}
|
@@ -425,6 +427,15 @@ abstract class ICWP_WPSF_Processor_ScanBase extends ICWP_WPSF_Processor_BaseWpsf
|
|
425 |
return $oFO->getScanFrequency();
|
426 |
}
|
427 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
428 |
/**
|
429 |
* @return ICWP_WPSF_Processor_HackProtect_Scanner
|
430 |
*/
|
29 |
$this->setupCron();
|
30 |
}
|
31 |
|
32 |
+
/**
|
33 |
+
* @return bool
|
34 |
+
*/
|
35 |
+
abstract public function isEnabled();
|
36 |
+
|
37 |
/**
|
38 |
* @return Shield\Scans\Base\BaseResultsSet
|
39 |
*/
|
67 |
}
|
68 |
|
69 |
/**
|
70 |
+
* @return mixed|null
|
71 |
*/
|
72 |
abstract protected function getRepairer();
|
73 |
|
344 |
* Cron callback
|
345 |
*/
|
346 |
public function runCron() {
|
347 |
+
Services::WpGeneral()->getIfAutoUpdatesInstalled() ? $this->resetCron() : $this->cronScan();
|
348 |
}
|
349 |
|
350 |
private function cronScan() {
|
|
|
|
|
|
|
351 |
$this->doScan();
|
352 |
$this->cronProcessScanResults();
|
353 |
}
|
427 |
return $oFO->getScanFrequency();
|
428 |
}
|
429 |
|
430 |
+
/**
|
431 |
+
* @return int
|
432 |
+
*/
|
433 |
+
protected function getCronName() {
|
434 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
435 |
+
$oFO = $this->getMod();
|
436 |
+
return $oFO->prefix( $oFO->getDef( 'cron_all_scans' ) );
|
437 |
+
}
|
438 |
+
|
439 |
/**
|
440 |
* @return ICWP_WPSF_Processor_HackProtect_Scanner
|
441 |
*/
|
src/processors/hackprotect_scan_ptg.php
CHANGED
@@ -50,6 +50,15 @@ class ICWP_WPSF_Processor_HackProtect_Ptg extends ICWP_WPSF_Processor_HackProtec
|
|
50 |
}
|
51 |
}
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/**
|
54 |
* @return Shield\Scans\Ptg\ResultsSet
|
55 |
*/
|
@@ -647,15 +656,6 @@ class ICWP_WPSF_Processor_HackProtect_Ptg extends ICWP_WPSF_Processor_HackProtec
|
|
647 |
return $this->getContextScanner( $sContext )->run( $aSnapHashes );
|
648 |
}
|
649 |
|
650 |
-
/**
|
651 |
-
* @return int
|
652 |
-
*/
|
653 |
-
protected function getCronName() {
|
654 |
-
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
655 |
-
$oFO = $this->getMod();
|
656 |
-
return $oFO->getPtgCronName();
|
657 |
-
}
|
658 |
-
|
659 |
/**
|
660 |
* @param string $sMsg
|
661 |
* @param int $nCategory
|
50 |
}
|
51 |
}
|
52 |
|
53 |
+
/**
|
54 |
+
* @return bool
|
55 |
+
*/
|
56 |
+
public function isEnabled() {
|
57 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
58 |
+
$oFO = $this->getMod();
|
59 |
+
return $oFO->isPtgEnabled();
|
60 |
+
}
|
61 |
+
|
62 |
/**
|
63 |
* @return Shield\Scans\Ptg\ResultsSet
|
64 |
*/
|
656 |
return $this->getContextScanner( $sContext )->run( $aSnapHashes );
|
657 |
}
|
658 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
659 |
/**
|
660 |
* @param string $sMsg
|
661 |
* @param int $nCategory
|
src/processors/hackprotect_scan_ufc.php
CHANGED
@@ -6,6 +6,15 @@ class ICWP_WPSF_Processor_HackProtect_Ufc extends ICWP_WPSF_Processor_ScanBase {
|
|
6 |
|
7 |
const SCAN_SLUG = 'ufc';
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
/**
|
10 |
* @param Shield\Scans\Ufc\ResultsSet $oResults
|
11 |
* @return Shield\Databases\Scanner\EntryVO[]
|
@@ -170,13 +179,4 @@ class ICWP_WPSF_Processor_HackProtect_Ufc extends ICWP_WPSF_Processor_ScanBase {
|
|
170 |
|
171 |
return $aContent;
|
172 |
}
|
173 |
-
|
174 |
-
/**
|
175 |
-
* @return string
|
176 |
-
*/
|
177 |
-
protected function getCronName() {
|
178 |
-
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
179 |
-
$oFO = $this->getMod();
|
180 |
-
return $oFO->getUfcCronName();
|
181 |
-
}
|
182 |
}
|
6 |
|
7 |
const SCAN_SLUG = 'ufc';
|
8 |
|
9 |
+
/**
|
10 |
+
* @return bool
|
11 |
+
*/
|
12 |
+
public function isEnabled() {
|
13 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
14 |
+
$oFO = $this->getMod();
|
15 |
+
return $oFO->isUfcEnabled();
|
16 |
+
}
|
17 |
+
|
18 |
/**
|
19 |
* @param Shield\Scans\Ufc\ResultsSet $oResults
|
20 |
* @return Shield\Databases\Scanner\EntryVO[]
|
179 |
|
180 |
return $aContent;
|
181 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
182 |
}
|
src/processors/hackprotect_scan_wcf.php
CHANGED
@@ -6,6 +6,15 @@ class ICWP_WPSF_Processor_HackProtect_Wcf extends ICWP_WPSF_Processor_ScanBase {
|
|
6 |
|
7 |
const SCAN_SLUG = 'wcf';
|
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
/**
|
10 |
* @param Shield\Scans\Wcf\ResultsSet $oResults
|
11 |
* @return Shield\Databases\Scanner\EntryVO[]
|
@@ -201,13 +210,4 @@ class ICWP_WPSF_Processor_HackProtect_Wcf extends ICWP_WPSF_Processor_ScanBase {
|
|
201 |
return $this->getMod()->getDef( 'url_wordress_core_svn' )
|
202 |
.'tags/'.$this->loadWp()->getVersion().'/'.$sFile;
|
203 |
}
|
204 |
-
|
205 |
-
/**
|
206 |
-
* @return string
|
207 |
-
*/
|
208 |
-
protected function getCronName() {
|
209 |
-
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
210 |
-
$oFO = $this->getMod();
|
211 |
-
return $oFO->getWcfCronName();
|
212 |
-
}
|
213 |
}
|
6 |
|
7 |
const SCAN_SLUG = 'wcf';
|
8 |
|
9 |
+
/**
|
10 |
+
* @return bool
|
11 |
+
*/
|
12 |
+
public function isEnabled() {
|
13 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
14 |
+
$oFO = $this->getMod();
|
15 |
+
return $oFO->isWcfScanEnabled();
|
16 |
+
}
|
17 |
+
|
18 |
/**
|
19 |
* @param Shield\Scans\Wcf\ResultsSet $oResults
|
20 |
* @return Shield\Databases\Scanner\EntryVO[]
|
210 |
return $this->getMod()->getDef( 'url_wordress_core_svn' )
|
211 |
.'tags/'.$this->loadWp()->getVersion().'/'.$sFile;
|
212 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
213 |
}
|
src/processors/hackprotect_scan_wpv.php
CHANGED
@@ -28,6 +28,15 @@ class ICWP_WPSF_Processor_HackProtect_Wpv extends ICWP_WPSF_Processor_HackProtec
|
|
28 |
}
|
29 |
}
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
/**
|
32 |
* @param Shield\Scans\Wpv\ResultsSet $oResults
|
33 |
* @return Shield\Databases\Scanner\EntryVO[]
|
@@ -313,13 +322,4 @@ class ICWP_WPSF_Processor_HackProtect_Wpv extends ICWP_WPSF_Processor_HackProtec
|
|
313 |
protected function countVulnerablePlugins() {
|
314 |
return $this->getAllVulnerabilities()->countUniqueSlugsForPluginsContext();
|
315 |
}
|
316 |
-
|
317 |
-
/**
|
318 |
-
* @return string
|
319 |
-
*/
|
320 |
-
protected function getCronName() {
|
321 |
-
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
322 |
-
$oFO = $this->getMod();
|
323 |
-
return $oFO->getWpvCronName();
|
324 |
-
}
|
325 |
}
|
28 |
}
|
29 |
}
|
30 |
|
31 |
+
/**
|
32 |
+
* @return bool
|
33 |
+
*/
|
34 |
+
public function isEnabled() {
|
35 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oFO */
|
36 |
+
$oFO = $this->getMod();
|
37 |
+
return $oFO->isWpvulnEnabled();
|
38 |
+
}
|
39 |
+
|
40 |
/**
|
41 |
* @param Shield\Scans\Wpv\ResultsSet $oResults
|
42 |
* @return Shield\Databases\Scanner\EntryVO[]
|
322 |
protected function countVulnerablePlugins() {
|
323 |
return $this->getAllVulnerabilities()->countUniqueSlugsForPluginsContext();
|
324 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
325 |
}
|
src/processors/hackprotect_scanner.php
CHANGED
@@ -31,11 +31,21 @@ class ICWP_WPSF_Processor_HackProtect_Scanner extends ICWP_WPSF_BaseDbProcessor
|
|
31 |
if ( $oFO->isWpvulnEnabled() ) {
|
32 |
$this->getSubProcessorWpv()->run();
|
33 |
}
|
|
|
|
|
|
|
34 |
if ( $oFO->isIcEnabled() ) {
|
35 |
// $this->getSubProcessorIntegrity()->run();
|
36 |
}
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
/**
|
40 |
* @return ICWP_WPSF_Processor_HackProtect_Ufc|mixed
|
41 |
*/
|
@@ -76,6 +86,7 @@ class ICWP_WPSF_Processor_HackProtect_Scanner extends ICWP_WPSF_BaseDbProcessor
|
|
76 |
*/
|
77 |
protected function getSubProMap() {
|
78 |
return [
|
|
|
79 |
'int' => 'ICWP_WPSF_Processor_HackProtect_Integrity',
|
80 |
'ptg' => 'ICWP_WPSF_Processor_HackProtect_Ptg',
|
81 |
'ufc' => 'ICWP_WPSF_Processor_HackProtect_Ufc',
|
@@ -148,36 +159,4 @@ class ICWP_WPSF_Processor_HackProtect_Scanner extends ICWP_WPSF_BaseDbProcessor
|
|
148 |
$aDef = $this->getMod()->getDef( 'table_columns_scanner' );
|
149 |
return ( is_array( $aDef ) ? $aDef : array() );
|
150 |
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* @deprecated
|
154 |
-
* @return Scanner\Delete
|
155 |
-
*/
|
156 |
-
public function getQueryDeleter() {
|
157 |
-
return parent::getQueryDeleter();
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* @deprecated
|
162 |
-
* @return Scanner\Insert
|
163 |
-
*/
|
164 |
-
public function getQueryInserter() {
|
165 |
-
return parent::getQueryInserter();
|
166 |
-
}
|
167 |
-
|
168 |
-
/**
|
169 |
-
* @deprecated
|
170 |
-
* @return Scanner\Select
|
171 |
-
*/
|
172 |
-
public function getQuerySelector() {
|
173 |
-
return parent::getQuerySelector();
|
174 |
-
}
|
175 |
-
|
176 |
-
/**
|
177 |
-
* @deprecated
|
178 |
-
* @return Scanner\Update
|
179 |
-
*/
|
180 |
-
public function getQueryUpdater() {
|
181 |
-
return parent::getQueryUpdater();
|
182 |
-
}
|
183 |
}
|
31 |
if ( $oFO->isWpvulnEnabled() ) {
|
32 |
$this->getSubProcessorWpv()->run();
|
33 |
}
|
34 |
+
if ( $oFO->isApcEnabled() ) {
|
35 |
+
// $this->getSubProcessorApc()->run();
|
36 |
+
}
|
37 |
if ( $oFO->isIcEnabled() ) {
|
38 |
// $this->getSubProcessorIntegrity()->run();
|
39 |
}
|
40 |
}
|
41 |
|
42 |
+
/**
|
43 |
+
* @return ICWP_WPSF_Processor_HackProtect_Apc|mixed
|
44 |
+
*/
|
45 |
+
public function getSubProcessorApc() {
|
46 |
+
return $this->getSubPro( 'apc' );
|
47 |
+
}
|
48 |
+
|
49 |
/**
|
50 |
* @return ICWP_WPSF_Processor_HackProtect_Ufc|mixed
|
51 |
*/
|
86 |
*/
|
87 |
protected function getSubProMap() {
|
88 |
return [
|
89 |
+
'apc' => 'ICWP_WPSF_Processor_HackProtect_Apc',
|
90 |
'int' => 'ICWP_WPSF_Processor_HackProtect_Integrity',
|
91 |
'ptg' => 'ICWP_WPSF_Processor_HackProtect_Ptg',
|
92 |
'ufc' => 'ICWP_WPSF_Processor_HackProtect_Ufc',
|
159 |
$aDef = $this->getMod()->getDef( 'table_columns_scanner' );
|
160 |
return ( is_array( $aDef ) ? $aDef : array() );
|
161 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
src/processors/ips.php
CHANGED
@@ -226,34 +226,113 @@ class ICWP_WPSF_Processor_Ips extends ICWP_WPSF_BaseDbProcessor {
|
|
226 |
/** @var IPs\Update $oUp */
|
227 |
$oUp = $this->getDbHandler()->getQueryUpdater();
|
228 |
$oUp->updateLastAccessAt( $this->getAutoBlackListIp( $sIp ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
$this->renderKillPage();
|
230 |
}
|
231 |
}
|
232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
private function renderKillPage() {
|
|
|
234 |
/** @var ICWP_WPSF_FeatureHandler_Ips $oFO */
|
235 |
$oFO = $this->getMod();
|
236 |
$oCon = $this->getCon();
|
|
|
|
|
237 |
|
|
|
|
|
|
|
238 |
$nTimeRemaining = max( floor( $oFO->getAutoExpireTime()/60 ), 0 );
|
239 |
$aData = [
|
240 |
'strings' => array(
|
241 |
'title' => sprintf( _wpsf__( "You've been blocked by the %s plugin" ),
|
242 |
sprintf( '<a href="%s" target="_blank">%s</a>',
|
243 |
-
$oCon->getPluginSpec()[ '
|
244 |
$oCon->getHumanName()
|
245 |
)
|
246 |
),
|
247 |
-
'lines'
|
248 |
sprintf( _wpsf__( 'Time remaining on black list: %s' ),
|
249 |
sprintf( _n( '%s minute', '%s minutes', $nTimeRemaining, 'wp-simple-firewall' ), $nTimeRemaining )
|
250 |
),
|
251 |
sprintf( _wpsf__( 'You tripped the security plugin defenses a total of %s times making you a suspect.' ), $oFO->getOptTransgressionLimit() ),
|
252 |
sprintf( _wpsf__( 'If you believe this to be in error, please contact the site owner and quote your IP address below.' ) ),
|
253 |
),
|
254 |
-
'your_ip'
|
255 |
-
'ip'
|
256 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
257 |
];
|
258 |
$this->loadWp()
|
259 |
->wpDie(
|
@@ -605,14 +684,6 @@ class ICWP_WPSF_Processor_Ips extends ICWP_WPSF_BaseDbProcessor {
|
|
605 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Handler();
|
606 |
}
|
607 |
|
608 |
-
/**
|
609 |
-
* @deprecated
|
610 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Select
|
611 |
-
*/
|
612 |
-
public function getQuerySelector() {
|
613 |
-
return $this->getDbHandler()->getQuerySelector();
|
614 |
-
}
|
615 |
-
|
616 |
/**
|
617 |
* @return int
|
618 |
*/
|
@@ -637,30 +708,6 @@ class ICWP_WPSF_Processor_Ips extends ICWP_WPSF_BaseDbProcessor {
|
|
637 |
return true;
|
638 |
}
|
639 |
|
640 |
-
/**
|
641 |
-
* @deprecated
|
642 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Delete
|
643 |
-
*/
|
644 |
-
public function getQueryDeleter() {
|
645 |
-
return parent::getQueryDeleter();
|
646 |
-
}
|
647 |
-
|
648 |
-
/**
|
649 |
-
* @deprecated
|
650 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Insert
|
651 |
-
*/
|
652 |
-
public function getQueryInserter() {
|
653 |
-
return parent::getQueryInserter();
|
654 |
-
}
|
655 |
-
|
656 |
-
/**
|
657 |
-
* @deprecated
|
658 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Update
|
659 |
-
*/
|
660 |
-
public function getQueryUpdater() {
|
661 |
-
return parent::getQueryUpdater();
|
662 |
-
}
|
663 |
-
|
664 |
/**
|
665 |
* @deprecated
|
666 |
*/
|
226 |
/** @var IPs\Update $oUp */
|
227 |
$oUp = $this->getDbHandler()->getQueryUpdater();
|
228 |
$oUp->updateLastAccessAt( $this->getAutoBlackListIp( $sIp ) );
|
229 |
+
|
230 |
+
try {
|
231 |
+
if ( $this->processAutoUnblockRequest() ) {
|
232 |
+
return;
|
233 |
+
}
|
234 |
+
}
|
235 |
+
catch ( \Exception $oE ) {
|
236 |
+
}
|
237 |
$this->renderKillPage();
|
238 |
}
|
239 |
}
|
240 |
|
241 |
+
/**
|
242 |
+
* @throws \Exception
|
243 |
+
*/
|
244 |
+
private function processAutoUnblockRequest() {
|
245 |
+
/** @var ICWP_WPSF_FeatureHandler_Ips $oFO */
|
246 |
+
$oFO = $this->getMod();
|
247 |
+
$oReq = Services::Request();
|
248 |
+
|
249 |
+
if ( $oFO->isEnabledAutoUserRecover() && $oReq->isPost()
|
250 |
+
&& $oReq->request( 'action' ) == $this->prefix() && $oReq->request( 'exec' ) == 'uau' ) {
|
251 |
+
|
252 |
+
if ( check_admin_referer( $oReq->request( 'exec' ), 'exec_nonce' ) !== 1 ) {
|
253 |
+
throw new \Exception( 'Nonce failed' );
|
254 |
+
}
|
255 |
+
if ( strlen( $oReq->post( 'icwp_wpsf_login_email' ) ) > 0 ) {
|
256 |
+
throw new \Exception( 'Email should not be provided in honeypot' );
|
257 |
+
}
|
258 |
+
$sIp = $this->ip();
|
259 |
+
if ( $oReq->post( 'ip' ) != $sIp ) {
|
260 |
+
throw new \Exception( 'IP does not match' );
|
261 |
+
}
|
262 |
+
|
263 |
+
/** @var ICWP_WPSF_FeatureHandler_LoginProtect $oLoginFO */
|
264 |
+
$oLoginFO = $this->getCon()->getModule( 'login_protect' );
|
265 |
+
$sGasp = $oReq->post( $oLoginFO->getGaspKey() );
|
266 |
+
if ( empty( $sGasp ) ) {
|
267 |
+
throw new \Exception( 'GASP failed' );
|
268 |
+
}
|
269 |
+
|
270 |
+
if ( !$oFO->getCanIpRequestAutoUnblock( $sIp ) ) {
|
271 |
+
throw new \Exception( 'IP already processed in the last 24hrs' );
|
272 |
+
}
|
273 |
+
$oFO->updateIpRequestAutoUnblockTs( $sIp );
|
274 |
+
|
275 |
+
/** @var IPs\Delete $oDel */
|
276 |
+
$oDel = $this->getDbHandler()->getQueryDeleter();
|
277 |
+
$oDel->deleteIpFromBlacklists( $sIp );
|
278 |
+
Services::WpGeneral()->redirectToHome();
|
279 |
+
}
|
280 |
+
|
281 |
+
return false;
|
282 |
+
}
|
283 |
+
|
284 |
private function renderKillPage() {
|
285 |
+
|
286 |
/** @var ICWP_WPSF_FeatureHandler_Ips $oFO */
|
287 |
$oFO = $this->getMod();
|
288 |
$oCon = $this->getCon();
|
289 |
+
/** @var ICWP_WPSF_FeatureHandler_LoginProtect $oLoginFO */
|
290 |
+
$oLoginFO = $oCon->getModule( 'login_protect' );
|
291 |
|
292 |
+
$sUniqId = 'uau'.uniqid();
|
293 |
+
|
294 |
+
$sIp = $this->ip();
|
295 |
$nTimeRemaining = max( floor( $oFO->getAutoExpireTime()/60 ), 0 );
|
296 |
$aData = [
|
297 |
'strings' => array(
|
298 |
'title' => sprintf( _wpsf__( "You've been blocked by the %s plugin" ),
|
299 |
sprintf( '<a href="%s" target="_blank">%s</a>',
|
300 |
+
$oCon->getPluginSpec()[ 'meta' ][ 'url_repo_home' ],
|
301 |
$oCon->getHumanName()
|
302 |
)
|
303 |
),
|
304 |
+
'lines' => array(
|
305 |
sprintf( _wpsf__( 'Time remaining on black list: %s' ),
|
306 |
sprintf( _n( '%s minute', '%s minutes', $nTimeRemaining, 'wp-simple-firewall' ), $nTimeRemaining )
|
307 |
),
|
308 |
sprintf( _wpsf__( 'You tripped the security plugin defenses a total of %s times making you a suspect.' ), $oFO->getOptTransgressionLimit() ),
|
309 |
sprintf( _wpsf__( 'If you believe this to be in error, please contact the site owner and quote your IP address below.' ) ),
|
310 |
),
|
311 |
+
'your_ip' => 'Your IP address',
|
312 |
+
'ip' => $sIp,
|
313 |
+
'gasp_element' => $this->getMod()->renderTemplate(
|
314 |
+
'snippets/gasp_js.php',
|
315 |
+
array(
|
316 |
+
'sCbName' => $oLoginFO->getGaspKey(),
|
317 |
+
'sLabel' => $oLoginFO->getTextImAHuman(),
|
318 |
+
'sAlert' => $oLoginFO->getTextPleaseCheckBox(),
|
319 |
+
'sMustJs' => _wpsf__( 'You MUST enable Javascript to be able to login' ),
|
320 |
+
'sUniqId' => $sUniqId,
|
321 |
+
'sUniqElem' => 'icwp_wpsf_login_p'.$sUniqId,
|
322 |
+
'strings' => array(
|
323 |
+
'loading' => _wpsf__( 'Loading' )
|
324 |
+
)
|
325 |
+
)
|
326 |
+
),
|
327 |
+
),
|
328 |
+
'vars' => array(
|
329 |
+
'nonce' => $oFO->getNonceActionData( 'uau' ),
|
330 |
+
'ip' => $sIp,
|
331 |
+
),
|
332 |
+
'flags' => array(
|
333 |
+
'is_autorecover' => $oFO->isEnabledAutoUserRecover(),
|
334 |
+
'is_uau_permitted' => $oFO->getCanIpRequestAutoUnblock( $sIp ),
|
335 |
+
),
|
336 |
];
|
337 |
$this->loadWp()
|
338 |
->wpDie(
|
684 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\IPs\Handler();
|
685 |
}
|
686 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
/**
|
688 |
* @return int
|
689 |
*/
|
708 |
return true;
|
709 |
}
|
710 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
711 |
/**
|
712 |
* @deprecated
|
713 |
*/
|
src/processors/loginprotect_intentprovider_base.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_WPSF_Processor_BaseWpsf {
|
4 |
|
5 |
/**
|
@@ -94,18 +96,16 @@ abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_
|
|
94 |
$sKey = $this->getStub().'_validated';
|
95 |
return ( $oUser instanceof WP_User )
|
96 |
&& $this->hasValidSecret( $oUser )
|
97 |
-
&& $this->
|
98 |
}
|
99 |
|
100 |
/**
|
101 |
-
* @since 6.9.0 removed fallback to old user meta
|
102 |
* @param WP_User $oUser
|
103 |
* @return string
|
104 |
*/
|
105 |
protected function getSecret( WP_User $oUser ) {
|
106 |
$sKey = $this->getStub().'_secret';
|
107 |
-
$oMeta = $this->
|
108 |
-
->metaVoForUser( $this->prefix(), $oUser->ID );
|
109 |
$sSecret = $oMeta->{$sKey};
|
110 |
return empty( $sSecret ) ? '' : $oMeta->{$sKey};
|
111 |
}
|
@@ -139,7 +139,7 @@ abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_
|
|
139 |
* @return $this
|
140 |
*/
|
141 |
public function deleteSecret( $oUser ) {
|
142 |
-
$oMeta = $this->
|
143 |
$sKey = $this->getStub().'_secret';
|
144 |
$oMeta->{$sKey} = null;
|
145 |
return $this;
|
@@ -162,7 +162,7 @@ abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_
|
|
162 |
*/
|
163 |
public function setProfileValidated( $oUser, $bValidated = true ) {
|
164 |
$sKey = $this->getStub().'_validated';
|
165 |
-
$oMeta = $this->
|
166 |
$oMeta->{$sKey} = $bValidated;
|
167 |
return $this;
|
168 |
}
|
@@ -173,7 +173,7 @@ abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_
|
|
173 |
* @return $this
|
174 |
*/
|
175 |
protected function setSecret( $oUser, $sNewSecret ) {
|
176 |
-
$oMeta = $this->
|
177 |
$sKey = $this->getStub().'_secret';
|
178 |
$oMeta->{$sKey} = $sNewSecret;
|
179 |
return $this;
|
1 |
<?php
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Services\Services;
|
4 |
+
|
5 |
abstract class ICWP_WPSF_Processor_LoginProtect_IntentProviderBase extends ICWP_WPSF_Processor_BaseWpsf {
|
6 |
|
7 |
/**
|
96 |
$sKey = $this->getStub().'_validated';
|
97 |
return ( $oUser instanceof WP_User )
|
98 |
&& $this->hasValidSecret( $oUser )
|
99 |
+
&& $this->getCon()->getUserMeta( $oUser )->{$sKey} === true;
|
100 |
}
|
101 |
|
102 |
/**
|
|
|
103 |
* @param WP_User $oUser
|
104 |
* @return string
|
105 |
*/
|
106 |
protected function getSecret( WP_User $oUser ) {
|
107 |
$sKey = $this->getStub().'_secret';
|
108 |
+
$oMeta = $this->getCon()->getUserMeta( $oUser );
|
|
|
109 |
$sSecret = $oMeta->{$sKey};
|
110 |
return empty( $sSecret ) ? '' : $oMeta->{$sKey};
|
111 |
}
|
139 |
* @return $this
|
140 |
*/
|
141 |
public function deleteSecret( $oUser ) {
|
142 |
+
$oMeta = $this->getCon()->getUserMeta( $oUser );
|
143 |
$sKey = $this->getStub().'_secret';
|
144 |
$oMeta->{$sKey} = null;
|
145 |
return $this;
|
162 |
*/
|
163 |
public function setProfileValidated( $oUser, $bValidated = true ) {
|
164 |
$sKey = $this->getStub().'_validated';
|
165 |
+
$oMeta = $this->getCon()->getUserMeta( $oUser );
|
166 |
$oMeta->{$sKey} = $bValidated;
|
167 |
return $this;
|
168 |
}
|
173 |
* @return $this
|
174 |
*/
|
175 |
protected function setSecret( $oUser, $sNewSecret ) {
|
176 |
+
$oMeta = $this->getCon()->getUserMeta( $oUser );
|
177 |
$sKey = $this->getStub().'_secret';
|
178 |
$oMeta->{$sKey} = $sNewSecret;
|
179 |
return $this;
|
src/processors/loginprotect_intentprovider_ga.php
CHANGED
@@ -20,6 +20,7 @@ class ICWP_WPSF_Processor_LoginProtect_GoogleAuthenticator extends ICWP_WPSF_Pro
|
|
20 |
$oCon = $this->getCon();
|
21 |
|
22 |
$bValidatedProfile = $this->hasValidatedProfile( $oUser );
|
|
|
23 |
$aData = array(
|
24 |
'has_validated_profile' => $bValidatedProfile,
|
25 |
'user_google_authenticator_secret' => $this->getSecret( $oUser ),
|
20 |
$oCon = $this->getCon();
|
21 |
|
22 |
$bValidatedProfile = $this->hasValidatedProfile( $oUser );
|
23 |
+
|
24 |
$aData = array(
|
25 |
'has_validated_profile' => $bValidatedProfile,
|
26 |
'user_google_authenticator_secret' => $this->getSecret( $oUser ),
|
src/processors/plugin.php
CHANGED
@@ -4,15 +4,14 @@ use FernleafSystems\Wordpress\Services\Services;
|
|
4 |
|
5 |
class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
6 |
|
7 |
-
use \FernleafSystems\Wordpress\Plugin\Shield\Crons\StandardCron;
|
8 |
-
|
9 |
/**
|
10 |
*/
|
11 |
public function run() {
|
12 |
parent::run();
|
13 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
14 |
$oFO = $this->getMod();
|
15 |
-
$this->
|
|
|
16 |
|
17 |
$this->removePluginConflicts();
|
18 |
$this->getSubProBadge()
|
@@ -32,10 +31,11 @@ class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
|
32 |
break;
|
33 |
|
34 |
case 'importexport_export':
|
|
|
35 |
case 'importexport_handshake':
|
36 |
case 'importexport_updatenotified':
|
37 |
if ( $oFO->isImportExportPermitted() ) {
|
38 |
-
$this->getSubProImportExport()
|
39 |
}
|
40 |
break;
|
41 |
default:
|
@@ -45,21 +45,6 @@ class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
|
45 |
add_action( 'admin_footer', array( $this, 'printAdminFooterItems' ), 100, 0 );
|
46 |
}
|
47 |
|
48 |
-
/**
|
49 |
-
* @return string
|
50 |
-
* @throws \Exception
|
51 |
-
*/
|
52 |
-
protected function getCronName() {
|
53 |
-
return $this->getMod()->prefix( 'daily' );
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* Use the included action to hook into the plugin's daily cron
|
58 |
-
*/
|
59 |
-
public function runCron() {
|
60 |
-
do_action( $this->getMod()->prefix( 'daily_cron' ) );
|
61 |
-
}
|
62 |
-
|
63 |
public function onWpLoaded() {
|
64 |
if ( $this->getCon()->isValidAdminArea() ) {
|
65 |
$this->maintainPluginLoadPosition();
|
@@ -73,6 +58,13 @@ class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
|
73 |
return $this->getSubPro( 'badge' );
|
74 |
}
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
/**
|
77 |
* @return ICWP_WPSF_Processor_Plugin_Tracking|mixed
|
78 |
*/
|
@@ -103,6 +95,7 @@ class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
|
103 |
'importexport' => 'ICWP_WPSF_Processor_Plugin_ImportExport',
|
104 |
'notes' => 'ICWP_WPSF_Processor_Plugin_Notes',
|
105 |
'tracking' => 'ICWP_WPSF_Processor_Plugin_Tracking',
|
|
|
106 |
];
|
107 |
}
|
108 |
|
4 |
|
5 |
class ICWP_WPSF_Processor_Plugin extends ICWP_WPSF_Processor_BasePlugin {
|
6 |
|
|
|
|
|
7 |
/**
|
8 |
*/
|
9 |
public function run() {
|
10 |
parent::run();
|
11 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
12 |
$oFO = $this->getMod();
|
13 |
+
$this->getSubProCronDaily()
|
14 |
+
->run();
|
15 |
|
16 |
$this->removePluginConflicts();
|
17 |
$this->getSubProBadge()
|
31 |
break;
|
32 |
|
33 |
case 'importexport_export':
|
34 |
+
case 'importexport_import':
|
35 |
case 'importexport_handshake':
|
36 |
case 'importexport_updatenotified':
|
37 |
if ( $oFO->isImportExportPermitted() ) {
|
38 |
+
add_action( 'init', [ $this->getSubProImportExport(), 'runAction' ] );
|
39 |
}
|
40 |
break;
|
41 |
default:
|
45 |
add_action( 'admin_footer', array( $this, 'printAdminFooterItems' ), 100, 0 );
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
public function onWpLoaded() {
|
49 |
if ( $this->getCon()->isValidAdminArea() ) {
|
50 |
$this->maintainPluginLoadPosition();
|
58 |
return $this->getSubPro( 'badge' );
|
59 |
}
|
60 |
|
61 |
+
/**
|
62 |
+
* @return ICWP_WPSF_Processor_Plugin_CronDaily|mixed
|
63 |
+
*/
|
64 |
+
protected function getSubProCronDaily() {
|
65 |
+
return $this->getSubPro( 'crondaily' );
|
66 |
+
}
|
67 |
+
|
68 |
/**
|
69 |
* @return ICWP_WPSF_Processor_Plugin_Tracking|mixed
|
70 |
*/
|
95 |
'importexport' => 'ICWP_WPSF_Processor_Plugin_ImportExport',
|
96 |
'notes' => 'ICWP_WPSF_Processor_Plugin_Notes',
|
97 |
'tracking' => 'ICWP_WPSF_Processor_Plugin_Tracking',
|
98 |
+
'crondaily' => 'ICWP_WPSF_Processor_Plugin_CronDaily',
|
99 |
];
|
100 |
}
|
101 |
|
src/processors/plugin_crondaily.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
use FernleafSystems\Wordpress\Services\Services;
|
4 |
+
|
5 |
+
class ICWP_WPSF_Processor_Plugin_CronDaily extends ICWP_WPSF_Processor_BaseWpsf {
|
6 |
+
|
7 |
+
use \FernleafSystems\Wordpress\Plugin\Shield\Crons\StandardCron;
|
8 |
+
|
9 |
+
/**
|
10 |
+
*/
|
11 |
+
public function run() {
|
12 |
+
parent::run();
|
13 |
+
$this->setupCron();
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @return string
|
18 |
+
* @throws \Exception
|
19 |
+
*/
|
20 |
+
protected function getCronName() {
|
21 |
+
return $this->getMod()->prefix( 'daily' );
|
22 |
+
}
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Use the included action to hook into the plugin's daily cron
|
26 |
+
*/
|
27 |
+
public function runCron() {
|
28 |
+
do_action( $this->getMod()->prefix( 'daily_cron' ) );
|
29 |
+
}
|
30 |
+
}
|
src/processors/plugin_importexport.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use
|
|
|
4 |
|
5 |
class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWpsf {
|
6 |
|
@@ -11,24 +12,54 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
11 |
add_action( $this->prefix( 'importexport_notify' ), array( $this, 'runWhitelistNotify' ) );
|
12 |
|
13 |
if ( $oFO->hasImportExportMasterImportUrl() ) {
|
14 |
-
|
15 |
-
|
16 |
-
}
|
17 |
-
catch ( \Exception $oE ) {
|
18 |
-
error_log( $oE->getMessage() );
|
19 |
-
}
|
20 |
}
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
public function runWhitelistNotify() {
|
24 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
25 |
$oFO = $this->getMod();
|
26 |
|
27 |
if ( $oFO->hasImportExportWhitelistSites() ) {
|
28 |
|
29 |
-
$oFs = $this->loadFS();
|
30 |
foreach ( $oFO->getImportExportWhitelist() as $sUrl ) {
|
31 |
-
$
|
32 |
$sUrl,
|
33 |
array(
|
34 |
'blocking' => false,
|
@@ -46,22 +77,181 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
46 |
}
|
47 |
|
48 |
public function runAction() {
|
49 |
-
switch ( $this->loadRequest()->query( 'shield_action' ) ) {
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
|
55 |
-
|
56 |
-
|
57 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
62 |
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
}
|
67 |
|
@@ -122,13 +312,15 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
122 |
|
123 |
/**
|
124 |
*/
|
125 |
-
|
126 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
127 |
$oFO = $this->getMod();
|
128 |
$oReq = $this->loadRequest();
|
129 |
|
130 |
$sSecretKey = $oReq->query( 'secret', '' );
|
131 |
-
|
|
|
|
|
132 |
$sUrl = $this->loadDP()->validateSimpleHttpUrl( $oReq->query( 'url', '' ) );
|
133 |
|
134 |
if ( !$oFO->isImportExportSecretKey( $sSecretKey ) && !$this->isUrlOnWhitelist( $sUrl ) ) {
|
@@ -153,20 +345,30 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
153 |
else {
|
154 |
$nCode = 0;
|
155 |
$bSuccess = true;
|
156 |
-
$aData =
|
157 |
$sMessage = 'Options Exported Successfully';
|
158 |
|
159 |
$this->addToAuditEntry(
|
160 |
sprintf( _wpsf__( 'Options exported to site %s.' ), $sUrl ), 1, 'options_exported'
|
161 |
);
|
162 |
|
163 |
-
if ( $
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
}
|
171 |
}
|
172 |
|
@@ -207,33 +409,25 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
207 |
}
|
208 |
|
209 |
/**
|
210 |
-
* @
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
$oFO = $this->getMod();
|
215 |
-
$this->loadWpCronProcessor()
|
216 |
-
->setNextRun( strtotime( 'tomorrow 1am' ) - get_option( 'gmt_offset' )*HOUR_IN_SECONDS + rand( 0, 1800 ) )
|
217 |
-
->createCronJob( $this->getCronName(), array( $this, 'cron_autoImport' ) );
|
218 |
-
// For auto update whitelist notifications:
|
219 |
-
add_action( $oFO->prefix( 'importexport_updatenotified' ), array( $this, 'cron_autoImport' ) );
|
220 |
-
add_action( $this->getMod()->prefix( 'deactivate_plugin' ), array( $this, 'deleteCron' ) );
|
221 |
-
}
|
222 |
-
|
223 |
-
/**
|
224 |
-
* @param string $sMasterSiteUrl
|
225 |
-
* @param string $sSecretKey
|
226 |
-
* @param bool $bEnableNetwork
|
227 |
-
* @param string $sSiteResponse
|
228 |
* @return int
|
229 |
*/
|
230 |
-
public function runImport( $sMasterSiteUrl, $sSecretKey = '', $bEnableNetwork =
|
231 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
232 |
$oFO = $this->getMod();
|
233 |
$oDP = $this->loadDP();
|
234 |
|
|
|
|
|
|
|
|
|
235 |
$aParts = parse_url( $sMasterSiteUrl );
|
236 |
|
|
|
|
|
237 |
$bCheckKeyFormat = !$oFO->hasImportExportMasterImportUrl();
|
238 |
$sSecretKey = preg_replace( '#[^0-9a-z]#i', '', $sSecretKey );
|
239 |
|
@@ -273,7 +467,7 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
273 |
'url' => $this->loadWp()->getHomeUrl()
|
274 |
);
|
275 |
// Don't send the network setup request if it's the cron.
|
276 |
-
if ( !$this->loadWp()->isCron() ) {
|
277 |
$aData[ 'network' ] = $bEnableNetwork ? 'Y' : 'N';
|
278 |
}
|
279 |
|
@@ -298,24 +492,16 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
298 |
$nErrorCode = 8;
|
299 |
}
|
300 |
else {
|
301 |
-
$
|
302 |
-
if ( $sHash != $oFO->getImportExportLastImportHash() ) {
|
303 |
-
do_action( $oFO->prefix( 'import_options' ), $aParts[ 'data' ] );
|
304 |
-
$this->addToAuditEntry(
|
305 |
-
sprintf( _wpsf__( 'Options imported from %s.' ), $sMasterSiteUrl ),
|
306 |
-
1,
|
307 |
-
'options_imported'
|
308 |
-
);
|
309 |
-
$oFO->setImportExportLastImportHash( md5( serialize( $aParts[ 'data' ] ) ) );
|
310 |
|
311 |
-
|
312 |
-
|
313 |
-
|
|
|
|
|
314 |
}
|
315 |
}
|
316 |
-
|
317 |
-
// if it's network enabled, we save the new master URL.
|
318 |
-
if ( $bEnableNetwork ) {
|
319 |
$this->addToAuditEntry(
|
320 |
sprintf( _wpsf__( 'Master Site URL set to %s.' ), $sMasterSiteUrl ),
|
321 |
1,
|
@@ -323,6 +509,9 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
323 |
);
|
324 |
$oFO->setImportExportMasterImportUrl( $sMasterSiteUrl );
|
325 |
}
|
|
|
|
|
|
|
326 |
|
327 |
$nErrorCode = 0;
|
328 |
}
|
@@ -332,21 +521,32 @@ class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWp
|
|
332 |
return $nErrorCode;
|
333 |
}
|
334 |
|
335 |
-
|
|
|
|
|
|
|
|
|
|
|
336 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
337 |
$oFO = $this->getMod();
|
338 |
-
$
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
/**
|
346 |
-
*
|
347 |
*/
|
348 |
-
|
|
|
349 |
$oFO = $this->getMod();
|
350 |
-
|
351 |
}
|
352 |
}
|
1 |
<?php
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
4 |
+
use FernleafSystems\Wordpress\Services\Services;
|
5 |
|
6 |
class ICWP_WPSF_Processor_Plugin_ImportExport extends ICWP_WPSF_Processor_BaseWpsf {
|
7 |
|
12 |
add_action( $this->prefix( 'importexport_notify' ), array( $this, 'runWhitelistNotify' ) );
|
13 |
|
14 |
if ( $oFO->hasImportExportMasterImportUrl() ) {
|
15 |
+
// For auto update whitelist notifications:
|
16 |
+
add_action( $oFO->prefix( 'importexport_updatenotified' ), array( $this, 'runImport' ) );
|
|
|
|
|
|
|
|
|
17 |
}
|
18 |
}
|
19 |
|
20 |
+
/**
|
21 |
+
* @return array
|
22 |
+
*/
|
23 |
+
public function buildInsightsVars() {
|
24 |
+
/** @var ICWP_WPSF_FeatureHandler_HackProtect $oMod */
|
25 |
+
$oMod = $this->getMod();
|
26 |
+
$aData = [
|
27 |
+
'vars' => array(
|
28 |
+
'form_nonce' => $oMod->getNonceActionData( 'import_file_upload' ),
|
29 |
+
'form_action' => $oMod->getUrl_AdminPage()
|
30 |
+
),
|
31 |
+
'ajax' => array(
|
32 |
+
'import_from_site' => $oMod->getAjaxActionData( 'import_from_site', true ),
|
33 |
+
),
|
34 |
+
'flags' => array(
|
35 |
+
'can_importexport' => $this->getCon()->isPremiumActive(),
|
36 |
+
),
|
37 |
+
'hrefs' => array(
|
38 |
+
'export_file_download' => $this->createExportFileDownloadLink()
|
39 |
+
)
|
40 |
+
];
|
41 |
+
|
42 |
+
return $aData;
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @return string
|
47 |
+
*/
|
48 |
+
private function createExportFileDownloadLink() {
|
49 |
+
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
50 |
+
$oFO = $this->getMod();
|
51 |
+
$aActionNonce = $oFO->getNonceActionData( 'export_file_download' );
|
52 |
+
return add_query_arg( $aActionNonce, $oFO->getUrl_AdminPage() );
|
53 |
+
}
|
54 |
+
|
55 |
public function runWhitelistNotify() {
|
56 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
57 |
$oFO = $this->getMod();
|
58 |
|
59 |
if ( $oFO->hasImportExportWhitelistSites() ) {
|
60 |
|
|
|
61 |
foreach ( $oFO->getImportExportWhitelist() as $sUrl ) {
|
62 |
+
$this->loadFS()->getUrl(
|
63 |
$sUrl,
|
64 |
array(
|
65 |
'blocking' => false,
|
77 |
}
|
78 |
|
79 |
public function runAction() {
|
|
|
80 |
|
81 |
+
try {
|
82 |
+
$oReq = $this->loadRequest();
|
83 |
+
switch ( $oReq->query( 'shield_action' ) ) {
|
84 |
+
|
85 |
+
case 'importexport_export':
|
86 |
+
$this->executeExport( $oReq->query( 'method' ) );
|
87 |
+
break;
|
88 |
+
|
89 |
+
case 'importexport_import':
|
90 |
+
$this->executeImport( $oReq->query( 'method' ) );
|
91 |
+
break;
|
92 |
+
|
93 |
+
case 'importexport_handshake':
|
94 |
+
$this->runOptionsExportHandshake();
|
95 |
+
break;
|
96 |
+
|
97 |
+
case 'importexport_updatenotified':
|
98 |
+
$this->runOptionsUpdateNotified();
|
99 |
+
break;
|
100 |
+
|
101 |
+
default:
|
102 |
+
break;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
catch ( \Exception $oE ) {
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* @param string $sMethod
|
111 |
+
*/
|
112 |
+
private function executeExport( $sMethod = 'json' ) {
|
113 |
+
|
114 |
+
try {
|
115 |
+
$this->preActionVerify();
|
116 |
+
|
117 |
+
switch ( $sMethod ) {
|
118 |
+
case 'file':
|
119 |
+
$this->downloadExportToFile();
|
120 |
+
break;
|
121 |
+
|
122 |
+
case 'json':
|
123 |
+
default:
|
124 |
+
$this->exportToJsonResponse();
|
125 |
+
break;
|
126 |
+
}
|
127 |
+
}
|
128 |
+
catch ( \Exception $oE ) {
|
129 |
+
}
|
130 |
+
die();
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @param string $sMethod
|
135 |
+
*/
|
136 |
+
private function executeImport( $sMethod = 'file' ) {
|
137 |
+
|
138 |
+
try {
|
139 |
+
$this->preActionVerify();
|
140 |
+
|
141 |
+
switch ( $sMethod ) {
|
142 |
+
case 'file':
|
143 |
+
default:
|
144 |
+
$this->importFromUploadFile();
|
145 |
+
break;
|
146 |
+
}
|
147 |
+
}
|
148 |
+
catch ( \Exception $oE ) {
|
149 |
+
}
|
150 |
+
die();
|
151 |
+
}
|
152 |
+
|
153 |
+
/**
|
154 |
+
* @throws \Exception
|
155 |
+
*/
|
156 |
+
private function downloadExportToFile() {
|
157 |
+
if ( !$this->getCon()->isPluginAdmin() ) {
|
158 |
+
throw new \Exception( 'Not currently logged-in as admin' );
|
159 |
+
}
|
160 |
+
$this->doExportDownload();
|
161 |
+
}
|
162 |
+
|
163 |
+
public function doExportDownload() {
|
164 |
+
$sExport = json_encode( $this->getExportData() );
|
165 |
+
$aData = [
|
166 |
+
'# Site URL: '.Services::WpGeneral()->getHomeUrl(),
|
167 |
+
'# Export Date: '.Services::WpGeneral()->getTimeStringForDisplay(),
|
168 |
+
'# Hash: '.sha1( $sExport ),
|
169 |
+
$sExport
|
170 |
+
];
|
171 |
+
Services::Data()->downloadStringAsFile(
|
172 |
+
implode( "\n", $aData ),
|
173 |
+
sprintf( 'shieldexport-%s-%s.json',
|
174 |
+
Services::WpGeneral()->getHomeUrl( '', true ),
|
175 |
+
$sFilename = date( 'Ymd_His' )
|
176 |
+
)
|
177 |
+
);
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* @throws \Exception
|
182 |
+
*/
|
183 |
+
public function importFromUploadFile() {
|
184 |
+
if ( !$this->getCon()->isPluginAdmin() ) {
|
185 |
+
throw new \Exception( 'Not currently logged-in as admin' );
|
186 |
+
}
|
187 |
+
|
188 |
+
if ( Services::Request()->post( 'confirm' ) != 'Y' ) {
|
189 |
+
throw new \Exception( _wpsf__( 'Please check the box to confirm your intent to overwrite settings' ) );
|
190 |
+
};
|
191 |
|
192 |
+
$oFs = Services::WpFs();
|
193 |
+
if ( empty( $_FILES ) || !isset( $_FILES[ 'import_file' ] )
|
194 |
+
|| empty( $_FILES[ 'import_file' ][ 'tmp_name' ] ) ) {
|
195 |
+
throw new \Exception( 'Please select a file to upload' );
|
196 |
+
}
|
197 |
+
if ( $_FILES[ 'import_file' ][ 'size' ] == 0
|
198 |
+
|| isset( $_FILES[ 'error' ] ) && $_FILES[ 'error' ] != UPLOAD_ERR_OK
|
199 |
+
|| !$oFs->isFile( $_FILES[ 'import_file' ][ 'tmp_name' ] )
|
200 |
+
|| filesize( $_FILES[ 'import_file' ][ 'tmp_name' ] ) === 0
|
201 |
+
) {
|
202 |
+
throw new \Exception( 'Uploading of file failed' );
|
203 |
+
}
|
204 |
|
205 |
+
$sContent = Services::WpFs()->getFileContent( $_FILES[ 'import_file' ][ 'tmp_name' ] );
|
206 |
+
if ( empty( $sContent ) ) {
|
207 |
+
throw new \Exception( 'File uploaded was empty' );
|
208 |
+
}
|
209 |
|
210 |
+
{//filter any comment lines
|
211 |
+
$aParts = array_filter(
|
212 |
+
array_map( 'trim', explode( "\n", $sContent ) ),
|
213 |
+
function ( $sLine ) {
|
214 |
+
return ( strpos( $sLine, '{' ) === 0 );
|
215 |
+
}
|
216 |
+
);
|
217 |
+
if ( empty( $aParts ) ) {
|
218 |
+
throw new \Exception( 'Options JSON could not be found in uploaded content.' );
|
219 |
+
}
|
220 |
+
}
|
221 |
+
{//parse the options json
|
222 |
+
$aData = @json_decode( array_shift( $aParts ), true );
|
223 |
+
if ( empty( $aData ) || !is_array( $aData ) ) {
|
224 |
+
throw new \Exception( 'Uploaded options data was not of the correct format' );
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
$this->processDataImport( $aData, _wpsf__( 'uploaded file' ) );
|
229 |
+
$oFs->deleteFile( $_FILES[ 'import_file' ][ 'tmp_name' ] );
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* @return array
|
234 |
+
*/
|
235 |
+
private function getExportData() {
|
236 |
+
$aD = apply_filters( $this->getMod()->prefix( 'gather_options_for_export' ), array() );
|
237 |
+
return is_array( $aD ) ? $aD : [];
|
238 |
+
}
|
239 |
+
|
240 |
+
/**
|
241 |
+
* @throws \Exception
|
242 |
+
*/
|
243 |
+
private function preActionVerify() {
|
244 |
+
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
245 |
+
$oFO = $this->getMod();
|
246 |
+
|
247 |
+
if ( !$oFO->isPremium() ) {
|
248 |
+
throw new \Exception(
|
249 |
+
sprintf( _wpsf__( 'Not currently running %s Pro.' ), $this->getCon()->getHumanName() ),
|
250 |
+
1
|
251 |
+
);
|
252 |
+
}
|
253 |
+
if ( !$oFO->isImportExportPermitted() ) {
|
254 |
+
throw new \Exception( _wpsf__( 'Export of options is currently disabled.' ), 2 );
|
255 |
}
|
256 |
}
|
257 |
|
312 |
|
313 |
/**
|
314 |
*/
|
315 |
+
private function exportToJsonResponse() {
|
316 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
317 |
$oFO = $this->getMod();
|
318 |
$oReq = $this->loadRequest();
|
319 |
|
320 |
$sSecretKey = $oReq->query( 'secret', '' );
|
321 |
+
|
322 |
+
$sNetworkOpt = $oReq->query( 'network', '' );
|
323 |
+
$bDoNetwork = !empty( $sNetworkOpt );
|
324 |
$sUrl = $this->loadDP()->validateSimpleHttpUrl( $oReq->query( 'url', '' ) );
|
325 |
|
326 |
if ( !$oFO->isImportExportSecretKey( $sSecretKey ) && !$this->isUrlOnWhitelist( $sUrl ) ) {
|
345 |
else {
|
346 |
$nCode = 0;
|
347 |
$bSuccess = true;
|
348 |
+
$aData = $this->getExportData();
|
349 |
$sMessage = 'Options Exported Successfully';
|
350 |
|
351 |
$this->addToAuditEntry(
|
352 |
sprintf( _wpsf__( 'Options exported to site %s.' ), $sUrl ), 1, 'options_exported'
|
353 |
);
|
354 |
|
355 |
+
if ( $bDoNetwork ) {
|
356 |
+
if ( $sNetworkOpt === 'Y' ) {
|
357 |
+
$oFO->addUrlToImportExportWhitelistUrls( $sUrl );
|
358 |
+
$this->addToAuditEntry(
|
359 |
+
sprintf( _wpsf__( 'Site added to export white list: %s.' ), $sUrl ),
|
360 |
+
1,
|
361 |
+
'export_whitelist_site_added'
|
362 |
+
);
|
363 |
+
}
|
364 |
+
else {
|
365 |
+
$oFO->removeUrlFromImportExportWhitelistUrls( $sUrl );
|
366 |
+
$this->addToAuditEntry(
|
367 |
+
sprintf( _wpsf__( 'Site removed from export white list: %s.' ), $sUrl ),
|
368 |
+
1,
|
369 |
+
'export_whitelist_site_removed'
|
370 |
+
);
|
371 |
+
}
|
372 |
}
|
373 |
}
|
374 |
|
409 |
}
|
410 |
|
411 |
/**
|
412 |
+
* @param string $sMasterSiteUrl
|
413 |
+
* @param string $sSecretKey
|
414 |
+
* @param bool|null $bEnableNetwork
|
415 |
+
* @param string $sSiteResponse
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
416 |
* @return int
|
417 |
*/
|
418 |
+
public function runImport( $sMasterSiteUrl = '', $sSecretKey = '', $bEnableNetwork = null, &$sSiteResponse = '' ) {
|
419 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
420 |
$oFO = $this->getMod();
|
421 |
$oDP = $this->loadDP();
|
422 |
|
423 |
+
if ( empty( $sMasterSiteUrl ) ) {
|
424 |
+
$sMasterSiteUrl = $oFO->getImportExportMasterImportUrl();
|
425 |
+
}
|
426 |
+
|
427 |
$aParts = parse_url( $sMasterSiteUrl );
|
428 |
|
429 |
+
$sOriginalMasterSiteUrl = $oFO->getImportExportMasterImportUrl();
|
430 |
+
$bHadMasterSiteUrl = $oFO->hasImportExportMasterImportUrl();
|
431 |
$bCheckKeyFormat = !$oFO->hasImportExportMasterImportUrl();
|
432 |
$sSecretKey = preg_replace( '#[^0-9a-z]#i', '', $sSecretKey );
|
433 |
|
467 |
'url' => $this->loadWp()->getHomeUrl()
|
468 |
);
|
469 |
// Don't send the network setup request if it's the cron.
|
470 |
+
if ( !is_null( $bEnableNetwork ) && !$this->loadWp()->isCron() ) {
|
471 |
$aData[ 'network' ] = $bEnableNetwork ? 'Y' : 'N';
|
472 |
}
|
473 |
|
492 |
$nErrorCode = 8;
|
493 |
}
|
494 |
else {
|
495 |
+
$this->processDataImport( $aParts[ 'data' ] );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
496 |
|
497 |
+
// Fix for the overwriting of the Master Site URL with an empty string.
|
498 |
+
// Only do so if we're not turning it off. i.e on or no-change
|
499 |
+
if ( is_null( $bEnableNetwork ) ) {
|
500 |
+
if ( $bHadMasterSiteUrl && !$oFO->hasImportExportMasterImportUrl() ) {
|
501 |
+
$oFO->setImportExportMasterImportUrl( $sOriginalMasterSiteUrl );
|
502 |
}
|
503 |
}
|
504 |
+
else if ( $bEnableNetwork === true ) {
|
|
|
|
|
505 |
$this->addToAuditEntry(
|
506 |
sprintf( _wpsf__( 'Master Site URL set to %s.' ), $sMasterSiteUrl ),
|
507 |
1,
|
509 |
);
|
510 |
$oFO->setImportExportMasterImportUrl( $sMasterSiteUrl );
|
511 |
}
|
512 |
+
else if ( $bEnableNetwork === false ) {
|
513 |
+
$oFO->setImportExportMasterImportUrl( '' );
|
514 |
+
}
|
515 |
|
516 |
$nErrorCode = 0;
|
517 |
}
|
521 |
return $nErrorCode;
|
522 |
}
|
523 |
|
524 |
+
/**
|
525 |
+
* @param array $aImportData
|
526 |
+
* @param string $sImportSource
|
527 |
+
* @return bool
|
528 |
+
*/
|
529 |
+
private function processDataImport( $aImportData, $sImportSource = 'unspecified' ) {
|
530 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
531 |
$oFO = $this->getMod();
|
532 |
+
$bImported = false;
|
533 |
+
if ( md5( serialize( $aImportData ) ) != $oFO->getImportExportLastImportHash() ) {
|
534 |
+
do_action( $oFO->prefix( 'import_options' ), $aImportData );
|
535 |
+
$this->addToAuditEntry(
|
536 |
+
sprintf( _wpsf__( 'Options imported from %s.' ), $sImportSource ),
|
537 |
+
1, 'options_imported'
|
538 |
+
);
|
539 |
+
$oFO->setImportExportLastImportHash( md5( serialize( $aImportData ) ) );
|
540 |
+
}
|
541 |
+
return $bImported;
|
542 |
}
|
543 |
|
544 |
/**
|
545 |
+
* Cron callback
|
546 |
*/
|
547 |
+
public function runDailyCron() {
|
548 |
+
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
549 |
$oFO = $this->getMod();
|
550 |
+
$this->runImport( $oFO->getImportExportMasterImportUrl() );
|
551 |
}
|
552 |
}
|
src/processors/plugin_notes.php
CHANGED
@@ -40,28 +40,4 @@ class ICWP_WPSF_Processor_Plugin_Notes extends ICWP_WPSF_BaseDbProcessor {
|
|
40 |
protected function createDbHandler() {
|
41 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\AdminNotes\Handler();
|
42 |
}
|
43 |
-
|
44 |
-
/**
|
45 |
-
* @deprecated
|
46 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\AdminNotes\Insert
|
47 |
-
*/
|
48 |
-
public function getQueryInserter() {
|
49 |
-
return parent::getQueryInserter();
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* @deprecated
|
54 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\AdminNotes\Delete
|
55 |
-
*/
|
56 |
-
public function getQueryDeleter() {
|
57 |
-
return parent::getQueryDeleter();
|
58 |
-
}
|
59 |
-
|
60 |
-
/**
|
61 |
-
* @deprecated
|
62 |
-
* @return \FernleafSystems\Wordpress\Plugin\Shield\Databases\AdminNotes\Select
|
63 |
-
*/
|
64 |
-
public function getQuerySelector() {
|
65 |
-
return parent::getQuerySelector();
|
66 |
-
}
|
67 |
}
|
40 |
protected function createDbHandler() {
|
41 |
return new \FernleafSystems\Wordpress\Plugin\Shield\Databases\AdminNotes\Handler();
|
42 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
src/processors/plugin_tracking.php
CHANGED
@@ -1,16 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
|
|
4 |
|
5 |
-
|
6 |
-
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
7 |
-
$oFO = $this->getMod();
|
8 |
-
|
9 |
-
if ( $oFO->isTrackingEnabled() ) {
|
10 |
-
$this->createTrackingCollectionCron();
|
11 |
-
}
|
12 |
-
add_action( $oFO->prefix( 'deactivate_plugin' ), array( $this, 'deleteCron' ) );
|
13 |
-
}
|
14 |
|
15 |
/**
|
16 |
* @see autoAddToAdminNotices()
|
@@ -49,34 +42,33 @@ class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin
|
|
49 |
}
|
50 |
|
51 |
/**
|
|
|
52 |
*/
|
53 |
-
|
|
|
54 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
55 |
$oFO = $this->getMod();
|
56 |
-
if ( !$oFO->isTrackingEnabled() || !$oFO->readyToSendTrackingData() ) {
|
57 |
-
return false;
|
58 |
-
}
|
59 |
|
60 |
-
$
|
61 |
-
|
62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
}
|
64 |
|
65 |
-
|
66 |
-
$oFO->getDef( 'tracking_post_url' ),
|
67 |
-
array(
|
68 |
-
'method' => 'POST',
|
69 |
-
'timeout' => 20,
|
70 |
-
'redirection' => 5,
|
71 |
-
'httpversion' => '1.1',
|
72 |
-
'blocking' => true,
|
73 |
-
'body' => array( 'tracking_data' => $aData ),
|
74 |
-
'user-agent' => 'SHIELD/'.$this->getCon()->getVersion().';'
|
75 |
-
),
|
76 |
-
true
|
77 |
-
);
|
78 |
-
$oFO->setTrackingLastSentAt();
|
79 |
-
return $mResult;
|
80 |
}
|
81 |
|
82 |
/**
|
@@ -94,17 +86,17 @@ class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin
|
|
94 |
* @return array
|
95 |
*/
|
96 |
protected function getBaseTrackingData() {
|
97 |
-
$
|
98 |
-
$
|
99 |
-
$oWpPlugins = $this->loadWpPlugins();
|
100 |
return array(
|
101 |
'env' => array(
|
102 |
'options' => array(
|
103 |
-
'php' =>
|
104 |
'wordpress' => $oWP->getVersion(),
|
105 |
'slug' => $this->getCon()->getPluginSlug(),
|
106 |
'version' => $this->getCon()->getVersion(),
|
107 |
'is_wpms' => $oWP->isMultisite() ? 1 : 0,
|
|
|
108 |
'ssl' => is_ssl() ? 1 : 0,
|
109 |
'locale' => get_locale(),
|
110 |
'plugins_total' => count( $oWpPlugins->getPlugins() ),
|
@@ -116,25 +108,13 @@ class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin
|
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
-
*
|
120 |
-
*/
|
121 |
-
protected function createTrackingCollectionCron() {
|
122 |
-
$sFullHookName = $this->getCronName();
|
123 |
-
$this->loadWpCronProcessor()
|
124 |
-
->setNextRun( strtotime( 'tomorrow 3am' ) - get_option( 'gmt_offset' )*HOUR_IN_SECONDS + rand( 0, 1800 ) )
|
125 |
-
->setRecurrence( 'daily' )
|
126 |
-
->createCronJob( $sFullHookName, array( $this, 'sendTrackingData' ) );
|
127 |
-
}
|
128 |
-
|
129 |
-
public function deleteCron() {
|
130 |
-
$this->loadWpCronProcessor()->deleteCronJob( $this->getCronName() );
|
131 |
-
}
|
132 |
-
|
133 |
-
/**
|
134 |
-
* @return string
|
135 |
*/
|
136 |
-
public function
|
|
|
137 |
$oFO = $this->getMod();
|
138 |
-
|
|
|
|
|
139 |
}
|
140 |
}
|
1 |
<?php
|
2 |
|
3 |
+
use FernleafSystems\Wordpress\Plugin\Shield;
|
4 |
+
use FernleafSystems\Wordpress\Services\Services;
|
5 |
|
6 |
+
class ICWP_WPSF_Processor_Plugin_Tracking extends ICWP_WPSF_Processor_BasePlugin {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
/**
|
9 |
* @see autoAddToAdminNotices()
|
42 |
}
|
43 |
|
44 |
/**
|
45 |
+
* @return bool
|
46 |
*/
|
47 |
+
private function sendTrackingData() {
|
48 |
+
$bSuccess = false;
|
49 |
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
50 |
$oFO = $this->getMod();
|
|
|
|
|
|
|
51 |
|
52 |
+
if ( $oFO->isTrackingEnabled() && $oFO->readyToSendTrackingData() ) {
|
53 |
+
|
54 |
+
$aData = $this->collectTrackingData();
|
55 |
+
if ( !empty( $aData ) && is_array( $aData ) ) {
|
56 |
+
$oFO->setTrackingLastSentAt();
|
57 |
+
$bSuccess = Services::HttpRequest()->post(
|
58 |
+
$oFO->getDef( 'tracking_post_url' ),
|
59 |
+
[
|
60 |
+
'timeout' => 20,
|
61 |
+
'redirection' => 5,
|
62 |
+
'httpversion' => '1.1',
|
63 |
+
'blocking' => true,
|
64 |
+
'body' => [ 'tracking_data' => $aData ],
|
65 |
+
'user-agent' => 'SHIELD/'.$this->getCon()->getVersion().';'
|
66 |
+
]
|
67 |
+
);
|
68 |
+
}
|
69 |
}
|
70 |
|
71 |
+
return $bSuccess;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
}
|
73 |
|
74 |
/**
|
86 |
* @return array
|
87 |
*/
|
88 |
protected function getBaseTrackingData() {
|
89 |
+
$oWP = Services::WpGeneral();
|
90 |
+
$oWpPlugins = Services::WpPlugins();
|
|
|
91 |
return array(
|
92 |
'env' => array(
|
93 |
'options' => array(
|
94 |
+
'php' => Services::Data()->getPhpVersionCleaned(),
|
95 |
'wordpress' => $oWP->getVersion(),
|
96 |
'slug' => $this->getCon()->getPluginSlug(),
|
97 |
'version' => $this->getCon()->getVersion(),
|
98 |
'is_wpms' => $oWP->isMultisite() ? 1 : 0,
|
99 |
+
'is_cp' => $oWP->isClassicPress() ? 1 : 0,
|
100 |
'ssl' => is_ssl() ? 1 : 0,
|
101 |
'locale' => get_locale(),
|
102 |
'plugins_total' => count( $oWpPlugins->getPlugins() ),
|
108 |
}
|
109 |
|
110 |
/**
|
111 |
+
* Cron callback
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
*/
|
113 |
+
public function runDailyCron() {
|
114 |
+
/** @var ICWP_WPSF_FeatureHandler_Plugin $oFO */
|
115 |
$oFO = $this->getMod();
|
116 |
+
if ( $oFO->isTrackingEnabled() ) {
|
117 |
+
$this->sendTrackingData();
|
118 |
+
}
|
119 |
}
|
120 |
}
|
src/processors/sessions.php
CHANGED
@@ -277,33 +277,4 @@ class ICWP_WPSF_Processor_Sessions extends ICWP_WPSF_BaseDbProcessor {
|
|
277 |
protected function getAutoExpirePeriod() {
|
278 |
return DAY_IN_SECONDS*self::DAYS_TO_KEEP;
|
279 |
}
|
280 |
-
|
281 |
-
/**
|
282 |
-
* @return Session\Insert
|
283 |
-
*/
|
284 |
-
public function getQueryInserter() {
|
285 |
-
return parent::getQueryInserter();
|
286 |
-
}
|
287 |
-
|
288 |
-
/**
|
289 |
-
* @return Session\Delete
|
290 |
-
*/
|
291 |
-
public function getQueryDeleter() {
|
292 |
-
return parent::getQueryDeleter();
|
293 |
-
}
|
294 |
-
|
295 |
-
/**
|
296 |
-
* @return Session\Select
|
297 |
-
*/
|
298 |
-
public function getQuerySelector() {
|
299 |
-
return parent::getQuerySelector();
|
300 |
-
}
|
301 |
-
|
302 |
-
/**
|
303 |
-
* @deprecated
|
304 |
-
* @return Session\Update
|
305 |
-
*/
|
306 |
-
public function getQueryUpdater() {
|
307 |
-
return parent::getQueryUpdater();
|
308 |
-
}
|
309 |
}
|
277 |
protected function getAutoExpirePeriod() {
|
278 |
return DAY_IN_SECONDS*self::DAYS_TO_KEEP;
|
279 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
280 |
}
|
src/processors/statistics_tally.php
CHANGED
@@ -144,28 +144,4 @@ class ICWP_WPSF_Processor_Statistics_Tally extends ICWP_WPSF_BaseDbProcessor {
|
|
144 |
*/
|
145 |
public function deleteTable() {
|
146 |
}
|
147 |
-
|
148 |
-
/**
|
149 |
-
* @deprecated
|
150 |
-
* @return Tally\Update
|
151 |
-
*/
|
152 |
-
public function getUpdater() {
|
153 |
-
return parent::getQueryUpdater();
|
154 |
-
}
|
155 |
-
|
156 |
-
/**
|
157 |
-
* @deprecated
|
158 |
-
* @return Tally\Insert
|
159 |
-
*/
|
160 |
-
public function getQueryInserter() {
|
161 |
-
return parent::getQueryInserter();
|
162 |
-
}
|
163 |
-
|
164 |
-
/**
|
165 |
-
* @deprecated
|
166 |
-
* @return Tally\Select
|
167 |
-
*/
|
168 |
-
public function getQuerySelector() {
|
169 |
-
return parent::getQuerySelector();
|
170 |
-
}
|
171 |
}
|
144 |
*/
|
145 |
public function deleteTable() {
|
146 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
src/processors/traffic_logger.php
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
<?php
|
2 |
|
3 |
use FernleafSystems\Wordpress\Plugin\Shield\Databases\Traffic;
|
|
|
4 |
|
5 |
class ICWP_WPSF_Processor_TrafficLogger extends ICWP_WPSF_BaseDbProcessor {
|
6 |
|
@@ -184,20 +185,4 @@ class ICWP_WPSF_Processor_TrafficLogger extends ICWP_WPSF_BaseDbProcessor {
|
|
184 |
$aDef = $this->getMod()->getDef( 'traffic_table_columns' );
|
185 |
return is_array( $aDef ) ? $aDef : array();
|
186 |
}
|
187 |
-
|
188 |
-
/**
|
189 |
-
* @deprecated
|
190 |
-
* @return Traffic\Insert
|
191 |
-
*/
|
192 |
-
public function getQueryInserter() {
|
193 |
-
return parent::getQueryInserter();
|
194 |
-
}
|
195 |
-
|
196 |
-
/**
|
197 |
-
* @deprecated
|
198 |
-
* @return Traffic\Select
|
199 |
-
*/
|
200 |
-
public function getQuerySelector() {
|
201 |
-
return parent::getQuerySelector();
|
202 |
-
}
|
203 |
}
|
1 |
<?php
|
2 |
|
3 |
use FernleafSystems\Wordpress\Plugin\Shield\Databases\Traffic;
|
4 |
+
use FernleafSystems\Wordpress\Services\Services;
|
5 |
|
6 |
class ICWP_WPSF_Processor_TrafficLogger extends ICWP_WPSF_BaseDbProcessor {
|
7 |
|
185 |
$aDef = $this->getMod()->getDef( 'traffic_table_columns' );
|
186 |
return is_array( $aDef ) ? $aDef : array();
|
187 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
188 |
}
|
src/processors/user_management.php
CHANGED
@@ -138,13 +138,16 @@ class ICWP_WPSF_Processor_UserManagement extends ICWP_WPSF_Processor_BaseWpsf {
|
|
138 |
return $sContent;
|
139 |
}
|
140 |
|
141 |
-
$oWp = $this->loadWp();
|
142 |
-
$nLastLoginTime = $this->loadWpUsers()->metaVoForUser( $this->prefix(), $nUserId )->last_login_at;
|
143 |
-
|
144 |
$sLastLoginText = _wpsf__( 'Not Recorded' );
|
145 |
-
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
147 |
}
|
|
|
148 |
return $sLastLoginText;
|
149 |
}
|
150 |
|
138 |
return $sContent;
|
139 |
}
|
140 |
|
|
|
|
|
|
|
141 |
$sLastLoginText = _wpsf__( 'Not Recorded' );
|
142 |
+
|
143 |
+
$oUser = Services::WpUsers()->getUserById( $nUserId );
|
144 |
+
if ( !empty( $oUser ) ) {
|
145 |
+
$nLastLoginTime = $this->getCon()->getUserMeta( $oUser )->last_login_at;
|
146 |
+
if ( $nLastLoginTime > 0 ) {
|
147 |
+
$sLastLoginText = Services::WpGeneral()->getTimeStringForDisplay( $nLastLoginTime );
|
148 |
+
}
|
149 |
}
|
150 |
+
|
151 |
return $sLastLoginText;
|
152 |
}
|
153 |
|
src/query/VOs/ICWP_WPSF_BaseEntryVO.php
DELETED
@@ -1,89 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated v7.0.0
|
7 |
-
* Class ICWP_WPSF_BaseEntryVO
|
8 |
-
* @property int created_at
|
9 |
-
* @property int deleted_at
|
10 |
-
* @property int id
|
11 |
-
*/
|
12 |
-
class ICWP_WPSF_BaseEntryVO {
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @var stdClass
|
16 |
-
*/
|
17 |
-
protected $oRowData;
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @param stdClass $oRowData
|
21 |
-
*/
|
22 |
-
public function __construct( $oRowData = null ) {
|
23 |
-
$this->oRowData = ( $oRowData instanceof stdClass ) ? $oRowData : new stdClass();
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @return int
|
28 |
-
*/
|
29 |
-
public function getCreatedAt() {
|
30 |
-
return (int)$this->created_at;
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* @return int
|
35 |
-
*/
|
36 |
-
public function getId() {
|
37 |
-
return (int)$this->id;
|
38 |
-
}
|
39 |
-
|
40 |
-
/**
|
41 |
-
* @return bool
|
42 |
-
*/
|
43 |
-
public function isDeleted() {
|
44 |
-
return $this->deleted_at > 0;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @return stdClass
|
49 |
-
*/
|
50 |
-
public function getRawData() {
|
51 |
-
return $this->oRowData;
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* @param stdClass $oRowData
|
56 |
-
* @return $this
|
57 |
-
*/
|
58 |
-
public function setRawData( $oRowData ) {
|
59 |
-
$this->oRowData = $oRowData;
|
60 |
-
return $this;
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* @param string $sKey
|
65 |
-
* @return mixed
|
66 |
-
*/
|
67 |
-
public function __get( $sKey ) {
|
68 |
-
$oD = $this->getRawData();
|
69 |
-
return isset( $oD->{$sKey} ) ? $oD->{$sKey} : null;
|
70 |
-
}
|
71 |
-
|
72 |
-
/**
|
73 |
-
* @param string $sKey
|
74 |
-
* @return bool
|
75 |
-
*/
|
76 |
-
public function __isset( $sKey ) {
|
77 |
-
return isset( $this->getRawData()->{$sKey} );
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* @param string $sKey
|
82 |
-
* @param mixed $mValue
|
83 |
-
* @return $this
|
84 |
-
*/
|
85 |
-
public function __set( $sKey, $mValue ) {
|
86 |
-
$this->getRawData()->{$sKey} = $mValue;
|
87 |
-
return $this;
|
88 |
-
}
|
89 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/VOs/ICWP_WPSF_IpsEntryVO.php
DELETED
@@ -1,65 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated v7.0.0
|
7 |
-
* Class ICWP_WPSF_IpsEntryVO
|
8 |
-
* @property string ip
|
9 |
-
* @property bool is_range
|
10 |
-
* @property string label
|
11 |
-
* @property string list
|
12 |
-
* @property int last_access_at
|
13 |
-
* @property int transgressions
|
14 |
-
*/
|
15 |
-
class ICWP_WPSF_IpsEntryVO extends ICWP_WPSF_BaseEntryVO {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @return string
|
19 |
-
*/
|
20 |
-
public function getIp() {
|
21 |
-
return (string)$this->ip;
|
22 |
-
}
|
23 |
-
|
24 |
-
/**
|
25 |
-
* @return string
|
26 |
-
*/
|
27 |
-
public function getLabel() {
|
28 |
-
return (string)$this->label;
|
29 |
-
}
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @return int
|
33 |
-
*/
|
34 |
-
public function getLastAccessAt() {
|
35 |
-
return (int)$this->last_access_at;
|
36 |
-
}
|
37 |
-
|
38 |
-
/**
|
39 |
-
* @return string
|
40 |
-
*/
|
41 |
-
public function getList() {
|
42 |
-
return (string)$this->list;
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* @return int
|
47 |
-
*/
|
48 |
-
public function getTransgressions() {
|
49 |
-
return (int)$this->transgressions;
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* @return bool
|
54 |
-
*/
|
55 |
-
public function hasTransgressions() {
|
56 |
-
return $this->getTransgressions() > 0;
|
57 |
-
}
|
58 |
-
|
59 |
-
/**
|
60 |
-
* @return bool
|
61 |
-
*/
|
62 |
-
public function isIpRange() {
|
63 |
-
return (bool)$this->is_range;
|
64 |
-
}
|
65 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/audittrail/delete.php
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_AuditTrail_Delete extends ICWP_WPSF_Query_BaseDelete {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @return ICWP_WPSF_Query_AuditTrail_Select
|
9 |
-
*/
|
10 |
-
protected function getSelector() {
|
11 |
-
return ( new ICWP_WPSF_Query_AuditTrail_Select() )->setTable( $this->getTable() );
|
12 |
-
}
|
13 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/audittrail/insert.php
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_AuditTrail_Insert extends ICWP_WPSF_Query_BaseInsert {
|
6 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
src/query/audittrail/select.php
DELETED
@@ -1,29 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_AuditTrail_Select extends ICWP_WPSF_Query_BaseSelect {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @param string $sContext
|
9 |
-
* @return $this
|
10 |
-
*/
|
11 |
-
public function filterByContext( $sContext ) {
|
12 |
-
return $this;
|
13 |
-
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @param $sContext
|
17 |
-
* @return int|stdClass[]
|
18 |
-
*/
|
19 |
-
public function forContext( $sContext ) {
|
20 |
-
return $this->query();
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
-
protected function getVoName() {
|
27 |
-
return 'ICWP_WPSF_AuditTrailEntryVO';
|
28 |
-
}
|
29 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/base.php
DELETED
@@ -1,263 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_Base extends ICWP_WPSF_Foundation {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @var bool
|
9 |
-
*/
|
10 |
-
protected $bResultsAsVo;
|
11 |
-
|
12 |
-
/**
|
13 |
-
* @var array
|
14 |
-
*/
|
15 |
-
protected $aWheres;
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @var bool
|
19 |
-
*/
|
20 |
-
protected $bExcludeDeleted;
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @var int
|
24 |
-
*/
|
25 |
-
protected $nLimit = 0;
|
26 |
-
|
27 |
-
/**
|
28 |
-
* @var int
|
29 |
-
*/
|
30 |
-
protected $nPage;
|
31 |
-
|
32 |
-
/**
|
33 |
-
* @var string
|
34 |
-
*/
|
35 |
-
protected $sOrderBy;
|
36 |
-
|
37 |
-
/**
|
38 |
-
* @var string
|
39 |
-
*/
|
40 |
-
protected $sTable;
|
41 |
-
|
42 |
-
/**
|
43 |
-
* @param string $sColumn
|
44 |
-
* @param string $mValue
|
45 |
-
* @param string $sOperator
|
46 |
-
* @return $this
|
47 |
-
*/
|
48 |
-
public function addWhere( $sColumn, $mValue, $sOperator = '=' ) {
|
49 |
-
$aWhere = $this->getWheres();
|
50 |
-
$aWhere[] = sprintf( '`%s`%s"%s"', esc_sql( $sColumn ), esc_sql( $mValue ), $sOperator );
|
51 |
-
return $this->setWheres( $aWhere );
|
52 |
-
}
|
53 |
-
|
54 |
-
/**
|
55 |
-
* @param string $sColumn
|
56 |
-
* @param mixed $mValue
|
57 |
-
* @return $this
|
58 |
-
*/
|
59 |
-
public function addWhereEquals( $sColumn, $mValue ) {
|
60 |
-
return $this->addWhere( $sColumn, $mValue, '=' );
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* @return string
|
65 |
-
*/
|
66 |
-
public function buildExtras() {
|
67 |
-
$aExtras = array_filter(
|
68 |
-
array(
|
69 |
-
$this->getOrderBy(),
|
70 |
-
$this->buildLimitPhrase(),
|
71 |
-
$this->buildOffsetPhrase(),
|
72 |
-
)
|
73 |
-
);
|
74 |
-
return implode( "\n", $aExtras );
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* @return string
|
79 |
-
*/
|
80 |
-
public function buildLimitPhrase() {
|
81 |
-
return $this->hasLimit() ? sprintf( 'LIMIT %s', $this->getLimit() ) : '';
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* @return string
|
86 |
-
*/
|
87 |
-
public function buildOffsetPhrase() {
|
88 |
-
return $this->hasLimit() ? sprintf( 'OFFSET %s', $this->getLimit()*$this->getPage() ) : '';
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* @return string
|
93 |
-
*/
|
94 |
-
public function buildWhere() {
|
95 |
-
|
96 |
-
$aParts = $this->getWheres();
|
97 |
-
if ( $this->isExcludeDeleted() ) {
|
98 |
-
$aParts[] = '`deleted_at`=0';
|
99 |
-
}
|
100 |
-
|
101 |
-
return implode( ' AND ', $aParts );
|
102 |
-
}
|
103 |
-
|
104 |
-
/**
|
105 |
-
* @return string
|
106 |
-
*/
|
107 |
-
protected function buildQuery() {
|
108 |
-
$sQuery = sprintf( $this->getBaseQuery(),
|
109 |
-
$this->getTable(),
|
110 |
-
$this->buildWhere(),
|
111 |
-
$this->buildExtras()
|
112 |
-
);
|
113 |
-
return sprintf( $sQuery,
|
114 |
-
$this->getTable(),
|
115 |
-
$this->buildWhere(),
|
116 |
-
$this->buildExtras()
|
117 |
-
);
|
118 |
-
}
|
119 |
-
|
120 |
-
/**
|
121 |
-
* @return string
|
122 |
-
*/
|
123 |
-
protected function getBaseQuery() {
|
124 |
-
return "
|
125 |
-
SELECT * FROM `%s`
|
126 |
-
WHERE %s
|
127 |
-
%s
|
128 |
-
";
|
129 |
-
}
|
130 |
-
|
131 |
-
/**
|
132 |
-
* @return int
|
133 |
-
*/
|
134 |
-
public function getLimit() {
|
135 |
-
return max( (int)$this->nLimit, 0 );
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* @return string
|
140 |
-
*/
|
141 |
-
public function getTable() {
|
142 |
-
return $this->sTable;
|
143 |
-
}
|
144 |
-
|
145 |
-
/**
|
146 |
-
* @return array
|
147 |
-
*/
|
148 |
-
public function getWheres() {
|
149 |
-
if ( !is_array( $this->aWheres ) ) {
|
150 |
-
$this->aWheres = array();
|
151 |
-
}
|
152 |
-
return $this->aWheres;
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* @return string
|
157 |
-
*/
|
158 |
-
public function getOrderBy() {
|
159 |
-
return isset( $this->sOrderBy ) ? $this->sOrderBy : 'ORDER BY `created_at` DESC';
|
160 |
-
}
|
161 |
-
|
162 |
-
/**
|
163 |
-
* @return int
|
164 |
-
*/
|
165 |
-
public function getPage() {
|
166 |
-
return max( (int)$this->nPage, 1 );
|
167 |
-
}
|
168 |
-
|
169 |
-
/**
|
170 |
-
* @return bool
|
171 |
-
*/
|
172 |
-
public function hasLimit() {
|
173 |
-
return $this->getLimit() > 0;
|
174 |
-
}
|
175 |
-
|
176 |
-
/**
|
177 |
-
* @return bool
|
178 |
-
*/
|
179 |
-
public function isResultsAsVo() {
|
180 |
-
return $this->bResultsAsVo;
|
181 |
-
}
|
182 |
-
|
183 |
-
/**
|
184 |
-
* @return bool
|
185 |
-
*/
|
186 |
-
public function isExcludeDeleted() {
|
187 |
-
return isset( $this->bExcludeDeleted ) ? (bool)$this->bExcludeDeleted : true;
|
188 |
-
}
|
189 |
-
|
190 |
-
/**
|
191 |
-
* @return $this
|
192 |
-
*/
|
193 |
-
public function reset() {
|
194 |
-
return $this->setLimit( 0 )
|
195 |
-
->setWheres( array() )
|
196 |
-
->setPage( 1 )
|
197 |
-
->setOrderBy( '' );
|
198 |
-
}
|
199 |
-
|
200 |
-
/**
|
201 |
-
* @param array $aWheres
|
202 |
-
* @return $this
|
203 |
-
*/
|
204 |
-
public function setWheres( $aWheres ) {
|
205 |
-
$this->aWheres = $aWheres;
|
206 |
-
return $this;
|
207 |
-
}
|
208 |
-
|
209 |
-
/**
|
210 |
-
* @param mixed $bExcludeDeleted
|
211 |
-
* @return $this
|
212 |
-
*/
|
213 |
-
public function setIsExcludeDeleted( $bExcludeDeleted ) {
|
214 |
-
$this->bExcludeDeleted = $bExcludeDeleted;
|
215 |
-
return $this;
|
216 |
-
}
|
217 |
-
|
218 |
-
/**
|
219 |
-
* @param int $nLimit
|
220 |
-
* @return $this
|
221 |
-
*/
|
222 |
-
public function setLimit( $nLimit ) {
|
223 |
-
$this->nLimit = $nLimit;
|
224 |
-
return $this;
|
225 |
-
}
|
226 |
-
|
227 |
-
/**
|
228 |
-
* @param string $sOrderByColumn
|
229 |
-
* @param string $sOrder
|
230 |
-
* @return $this
|
231 |
-
*/
|
232 |
-
public function setOrderBy( $sOrderByColumn, $sOrder = 'DESC' ) {
|
233 |
-
$this->sOrderBy = sprintf( 'ORDER BY `%s` %s', $sOrderByColumn, $sOrder );
|
234 |
-
return $this;
|
235 |
-
}
|
236 |
-
|
237 |
-
/**
|
238 |
-
* @param int $nPage
|
239 |
-
* @return $this
|
240 |
-
*/
|
241 |
-
public function setPage( $nPage ) {
|
242 |
-
$this->nPage = $nPage;
|
243 |
-
return $this;
|
244 |
-
}
|
245 |
-
|
246 |
-
/**
|
247 |
-
* @param bool $bResultsAsVo
|
248 |
-
* @return $this
|
249 |
-
*/
|
250 |
-
public function setResultsAsVo( $bResultsAsVo ) {
|
251 |
-
$this->bResultsAsVo = $bResultsAsVo;
|
252 |
-
return $this;
|
253 |
-
}
|
254 |
-
|
255 |
-
/**
|
256 |
-
* @param string $sTable
|
257 |
-
* @return $this
|
258 |
-
*/
|
259 |
-
public function setTable( $sTable ) {
|
260 |
-
$this->sTable = $sTable;
|
261 |
-
return $this;
|
262 |
-
}
|
263 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/delete.php
DELETED
@@ -1,53 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
abstract class ICWP_WPSF_Query_BaseDelete extends ICWP_WPSF_Query_BaseQuery {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @return ICWP_WPSF_Query_BaseSelect
|
9 |
-
*/
|
10 |
-
abstract protected function getSelector();
|
11 |
-
|
12 |
-
/**
|
13 |
-
* @return bool
|
14 |
-
*/
|
15 |
-
public function all() {
|
16 |
-
return $this->query();
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @param int $nId
|
21 |
-
* @return bool|int
|
22 |
-
*/
|
23 |
-
public function deleteById( $nId ) {
|
24 |
-
return $this->query();
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* NOTE: Does not reset() before query, so may be customized with where.
|
29 |
-
* @param int $nMaxEntries
|
30 |
-
* @param string $sSortColumn
|
31 |
-
* @param bool $bOldestFirst
|
32 |
-
* @return int
|
33 |
-
* @throws Exception
|
34 |
-
*/
|
35 |
-
public function deleteExcess( $nMaxEntries, $sSortColumn = 'created_at', $bOldestFirst = true ) {
|
36 |
-
return 0;
|
37 |
-
}
|
38 |
-
|
39 |
-
/**
|
40 |
-
* @return string
|
41 |
-
*/
|
42 |
-
protected function getBaseQuery() {
|
43 |
-
return "DELETE FROM `%s` WHERE %s %s";
|
44 |
-
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Offset never applies to DELETE
|
48 |
-
* @return string
|
49 |
-
*/
|
50 |
-
protected function buildOffsetPhrase() {
|
51 |
-
return '';
|
52 |
-
}
|
53 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/insert.php
DELETED
@@ -1,43 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_BaseInsert extends ICWP_WPSF_Query_BaseQuery {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @var array
|
9 |
-
*/
|
10 |
-
protected $aInsertData;
|
11 |
-
|
12 |
-
/**
|
13 |
-
* @return array
|
14 |
-
*/
|
15 |
-
public function getInsertData() {
|
16 |
-
return is_array( $this->aInsertData ) ? $this->aInsertData : array();
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @param ICWP_WPSF_BaseEntryVO $oEntry
|
21 |
-
* @return bool
|
22 |
-
*/
|
23 |
-
public function insert( $oEntry ) {
|
24 |
-
return false;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* @param array $aInsertData
|
29 |
-
* @return $this
|
30 |
-
*/
|
31 |
-
public function setInsertData( $aInsertData ) {
|
32 |
-
$this->aInsertData = $aInsertData;
|
33 |
-
return $this;
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Offset never applies
|
38 |
-
* @return string
|
39 |
-
*/
|
40 |
-
protected function buildOffsetPhrase() {
|
41 |
-
return '';
|
42 |
-
}
|
43 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/query.php
DELETED
@@ -1,355 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated v7.0.0
|
7 |
-
* Class ICWP_WPSF_Query_BaseQuery
|
8 |
-
*/
|
9 |
-
abstract class ICWP_WPSF_Query_BaseQuery extends ICWP_WPSF_Foundation {
|
10 |
-
|
11 |
-
/**
|
12 |
-
* @var bool
|
13 |
-
*/
|
14 |
-
protected $bResultsAsVo;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @var array
|
18 |
-
*/
|
19 |
-
protected $aWheres;
|
20 |
-
|
21 |
-
/**
|
22 |
-
* @var bool
|
23 |
-
*/
|
24 |
-
protected $bExcludeDeleted;
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @var int
|
28 |
-
*/
|
29 |
-
protected $nLimit = 0;
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @var int
|
33 |
-
*/
|
34 |
-
protected $nPage;
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @var string
|
38 |
-
*/
|
39 |
-
protected $sOrderBy;
|
40 |
-
|
41 |
-
/**
|
42 |
-
* @var string
|
43 |
-
*/
|
44 |
-
protected $sTable;
|
45 |
-
|
46 |
-
public function __construct() {
|
47 |
-
$this->customInit();
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* override to add custom init actions
|
52 |
-
*/
|
53 |
-
protected function customInit() {
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* @param string $sColumn
|
58 |
-
* @param string $mValue
|
59 |
-
* @param string $sOperator
|
60 |
-
* @return $this
|
61 |
-
*/
|
62 |
-
public function addWhere( $sColumn, $mValue, $sOperator = '=' ) {
|
63 |
-
if ( !$this->isValidComparisonOperator( $sOperator ) ) {
|
64 |
-
return $this; // Exception?
|
65 |
-
}
|
66 |
-
|
67 |
-
$mValue = esc_sql( $mValue );
|
68 |
-
|
69 |
-
if ( strcasecmp( $sOperator, 'LIKE' ) === 0 ) {
|
70 |
-
$mValue = sprintf( '%%%s%%', $mValue );
|
71 |
-
}
|
72 |
-
|
73 |
-
if ( is_string( $mValue ) ) {
|
74 |
-
$mValue = sprintf( "'%s'", $mValue );
|
75 |
-
}
|
76 |
-
|
77 |
-
$aWhere = $this->getWheres();
|
78 |
-
$aWhere[] = sprintf( '`%s` %s %s', esc_sql( $sColumn ), $sOperator, $mValue );
|
79 |
-
return $this->setWheres( $aWhere );
|
80 |
-
}
|
81 |
-
|
82 |
-
/**
|
83 |
-
* @param string $sColumn
|
84 |
-
* @param mixed $mValue
|
85 |
-
* @return $this
|
86 |
-
*/
|
87 |
-
public function addWhereEquals( $sColumn, $mValue ) {
|
88 |
-
return $this->addWhere( $sColumn, $mValue, '=' );
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* @param int $nNewerThanTimeStamp
|
93 |
-
* @param string $sColumn
|
94 |
-
* @return $this
|
95 |
-
*/
|
96 |
-
public function addWhereNewerThan( $nNewerThanTimeStamp, $sColumn = 'created_at' ) {
|
97 |
-
return $this->addWhere( $sColumn, $nNewerThanTimeStamp, '>' );
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* @param int $nOlderThanTimeStamp
|
102 |
-
* @param string $sColumn
|
103 |
-
* @return $this
|
104 |
-
*/
|
105 |
-
public function addWhereOlderThan( $nOlderThanTimeStamp, $sColumn = 'created_at' ) {
|
106 |
-
return $this->addWhere( $sColumn, $nOlderThanTimeStamp, '<' );
|
107 |
-
}
|
108 |
-
|
109 |
-
/**
|
110 |
-
* @param string $sColumn
|
111 |
-
* @param mixed $mValue
|
112 |
-
* @return $this
|
113 |
-
*/
|
114 |
-
public function addWhereSearch( $sColumn, $mValue ) {
|
115 |
-
return $this->addWhere( $sColumn, $mValue, 'LIKE' );
|
116 |
-
}
|
117 |
-
|
118 |
-
/**
|
119 |
-
* @return string
|
120 |
-
*/
|
121 |
-
public function buildExtras() {
|
122 |
-
$aExtras = array_filter(
|
123 |
-
array(
|
124 |
-
$this->getOrderBy(),
|
125 |
-
$this->buildLimitPhrase(),
|
126 |
-
$this->buildOffsetPhrase(),
|
127 |
-
)
|
128 |
-
);
|
129 |
-
return implode( "\n", $aExtras );
|
130 |
-
}
|
131 |
-
|
132 |
-
/**
|
133 |
-
* @return string
|
134 |
-
*/
|
135 |
-
public function buildLimitPhrase() {
|
136 |
-
return $this->hasLimit() ? sprintf( 'LIMIT %s', $this->getLimit() ) : '';
|
137 |
-
}
|
138 |
-
|
139 |
-
/**
|
140 |
-
* @return string
|
141 |
-
*/
|
142 |
-
protected function buildOffsetPhrase() {
|
143 |
-
return $this->hasLimit() ? sprintf( 'OFFSET %s', $this->getOffset() ) : '';
|
144 |
-
}
|
145 |
-
|
146 |
-
/**
|
147 |
-
* @return int
|
148 |
-
*/
|
149 |
-
protected function getOffset() {
|
150 |
-
return (int)$this->getLimit()*( $this->getPage() - 1 );
|
151 |
-
}
|
152 |
-
|
153 |
-
/**
|
154 |
-
* @return string
|
155 |
-
*/
|
156 |
-
public function buildWhere() {
|
157 |
-
|
158 |
-
$aParts = $this->getWheres();
|
159 |
-
if ( $this->isExcludeDeleted() ) {
|
160 |
-
$aParts[] = '`deleted_at`=0';
|
161 |
-
}
|
162 |
-
|
163 |
-
return implode( ' AND ', $aParts );
|
164 |
-
}
|
165 |
-
|
166 |
-
/**
|
167 |
-
* @return string
|
168 |
-
*/
|
169 |
-
public function buildQuery() {
|
170 |
-
return sprintf( $this->getBaseQuery(),
|
171 |
-
$this->getTable(),
|
172 |
-
$this->buildWhere(),
|
173 |
-
$this->buildExtras()
|
174 |
-
);
|
175 |
-
}
|
176 |
-
|
177 |
-
/**
|
178 |
-
* @return string
|
179 |
-
*/
|
180 |
-
protected function getBaseQuery() {
|
181 |
-
return "SELECT * FROM `%s` WHERE %s %s";
|
182 |
-
}
|
183 |
-
|
184 |
-
/**
|
185 |
-
* @return bool
|
186 |
-
*/
|
187 |
-
public function query() {
|
188 |
-
return false;
|
189 |
-
}
|
190 |
-
|
191 |
-
/**
|
192 |
-
* @return int
|
193 |
-
*/
|
194 |
-
public function getLimit() {
|
195 |
-
return max( (int)$this->nLimit, 0 );
|
196 |
-
}
|
197 |
-
|
198 |
-
/**
|
199 |
-
* @return string
|
200 |
-
*/
|
201 |
-
public function getTable() {
|
202 |
-
return $this->sTable;
|
203 |
-
}
|
204 |
-
|
205 |
-
/**
|
206 |
-
* @return array
|
207 |
-
*/
|
208 |
-
public function getWheres() {
|
209 |
-
if ( !is_array( $this->aWheres ) ) {
|
210 |
-
$this->aWheres = array();
|
211 |
-
}
|
212 |
-
return $this->aWheres;
|
213 |
-
}
|
214 |
-
|
215 |
-
/**
|
216 |
-
* @return string
|
217 |
-
*/
|
218 |
-
public function getOrderBy() {
|
219 |
-
return !empty( $this->sOrderBy ) ? $this->sOrderBy : 'ORDER BY `created_at` DESC';
|
220 |
-
}
|
221 |
-
|
222 |
-
/**
|
223 |
-
* @return int
|
224 |
-
*/
|
225 |
-
public function getPage() {
|
226 |
-
return max( (int)$this->nPage, 1 );
|
227 |
-
}
|
228 |
-
|
229 |
-
/**
|
230 |
-
* @return bool
|
231 |
-
*/
|
232 |
-
public function hasLimit() {
|
233 |
-
return $this->getLimit() > 0;
|
234 |
-
}
|
235 |
-
|
236 |
-
/**
|
237 |
-
* @return bool
|
238 |
-
*/
|
239 |
-
public function hasWheres() {
|
240 |
-
return count( $this->getWheres() ) > 0;
|
241 |
-
}
|
242 |
-
|
243 |
-
/**
|
244 |
-
* @return bool
|
245 |
-
*/
|
246 |
-
public function isExcludeDeleted() {
|
247 |
-
return isset( $this->bExcludeDeleted ) ? (bool)$this->bExcludeDeleted : true;
|
248 |
-
}
|
249 |
-
|
250 |
-
/**
|
251 |
-
* @return bool
|
252 |
-
*/
|
253 |
-
public function isResultsAsVo() {
|
254 |
-
return $this->bResultsAsVo;
|
255 |
-
}
|
256 |
-
|
257 |
-
/**
|
258 |
-
* @return $this
|
259 |
-
*/
|
260 |
-
public function reset() {
|
261 |
-
return $this->setLimit( 0 )
|
262 |
-
->setWheres( array() )
|
263 |
-
->setPage( 1 )
|
264 |
-
->setOrderBy( '' );
|
265 |
-
}
|
266 |
-
|
267 |
-
/**
|
268 |
-
* @param mixed $bExcludeDeleted
|
269 |
-
* @return $this
|
270 |
-
*/
|
271 |
-
public function setIsExcludeDeleted( $bExcludeDeleted ) {
|
272 |
-
$this->bExcludeDeleted = $bExcludeDeleted;
|
273 |
-
return $this;
|
274 |
-
}
|
275 |
-
|
276 |
-
/**
|
277 |
-
* @param int $nLimit
|
278 |
-
* @return $this
|
279 |
-
*/
|
280 |
-
public function setLimit( $nLimit ) {
|
281 |
-
$this->nLimit = $nLimit;
|
282 |
-
return $this;
|
283 |
-
}
|
284 |
-
|
285 |
-
/**
|
286 |
-
* @param string $sOrderByColumn
|
287 |
-
* @param string $sOrder
|
288 |
-
* @return $this
|
289 |
-
*/
|
290 |
-
public function setOrderBy( $sOrderByColumn, $sOrder = 'DESC' ) {
|
291 |
-
if ( empty( $sOrderByColumn ) ) {
|
292 |
-
$this->sOrderBy = '';
|
293 |
-
}
|
294 |
-
else {
|
295 |
-
$this->sOrderBy = sprintf( 'ORDER BY `%s` %s', esc_sql( $sOrderByColumn ), esc_sql( $sOrder ) );
|
296 |
-
}
|
297 |
-
return $this;
|
298 |
-
}
|
299 |
-
|
300 |
-
/**
|
301 |
-
* @param int $nPage
|
302 |
-
* @return $this
|
303 |
-
*/
|
304 |
-
public function setPage( $nPage ) {
|
305 |
-
$this->nPage = $nPage;
|
306 |
-
return $this;
|
307 |
-
}
|
308 |
-
|
309 |
-
/**
|
310 |
-
* @param bool $bResultsAsVo
|
311 |
-
* @return $this
|
312 |
-
*/
|
313 |
-
public function setResultsAsVo( $bResultsAsVo ) {
|
314 |
-
$this->bResultsAsVo = $bResultsAsVo;
|
315 |
-
return $this;
|
316 |
-
}
|
317 |
-
|
318 |
-
/**
|
319 |
-
* @param string $sTable
|
320 |
-
* @return $this
|
321 |
-
*/
|
322 |
-
public function setTable( $sTable ) {
|
323 |
-
$this->sTable = $sTable;
|
324 |
-
return $this;
|
325 |
-
}
|
326 |
-
|
327 |
-
/**
|
328 |
-
* @param array $aWheres
|
329 |
-
* @return $this
|
330 |
-
*/
|
331 |
-
public function setWheres( $aWheres ) {
|
332 |
-
$this->aWheres = $aWheres;
|
333 |
-
return $this;
|
334 |
-
}
|
335 |
-
|
336 |
-
/**
|
337 |
-
* @param ICWP_WPSF_BaseEntryVO $oVo
|
338 |
-
* @return $this
|
339 |
-
*/
|
340 |
-
public function setWheresFromVo( $oVo ) {
|
341 |
-
return $this;
|
342 |
-
}
|
343 |
-
|
344 |
-
/**
|
345 |
-
* Very basic
|
346 |
-
* @param string $sOp
|
347 |
-
* @return bool
|
348 |
-
*/
|
349 |
-
protected function isValidComparisonOperator( $sOp ) {
|
350 |
-
return in_array(
|
351 |
-
strtoupper( $sOp ),
|
352 |
-
array( '=', '<', '>', '!=', '<>', '<=', '>=', '<=>', 'LIKE', 'NOT LIKE' )
|
353 |
-
);
|
354 |
-
}
|
355 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/select.php
DELETED
@@ -1,204 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated v7.0.0
|
7 |
-
* Class ICWP_WPSF_Query_BaseSelect
|
8 |
-
*/
|
9 |
-
class ICWP_WPSF_Query_BaseSelect extends ICWP_WPSF_Query_BaseQuery {
|
10 |
-
|
11 |
-
/**
|
12 |
-
* @var array
|
13 |
-
*/
|
14 |
-
protected $aColumnsToSelect;
|
15 |
-
|
16 |
-
/**
|
17 |
-
* @var array
|
18 |
-
*/
|
19 |
-
protected $aColumnsDefinition;
|
20 |
-
|
21 |
-
/**
|
22 |
-
* @var bool
|
23 |
-
*/
|
24 |
-
protected $bIsCount = false;
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @param string $sCol
|
28 |
-
* @return $this
|
29 |
-
*/
|
30 |
-
public function addColumnToSelect( $sCol ) {
|
31 |
-
$aCols = $this->getColumnsToSelect();
|
32 |
-
$aCols[] = $sCol;
|
33 |
-
return $this->setColumnsToSelect( $aCols );
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @return stdClass[]
|
38 |
-
*/
|
39 |
-
public function all() {
|
40 |
-
return $this->reset()->query();
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* @param int $nId
|
45 |
-
* @return stdClass
|
46 |
-
*/
|
47 |
-
public function byId( $nId ) {
|
48 |
-
return null;
|
49 |
-
}
|
50 |
-
|
51 |
-
/**
|
52 |
-
* @return string
|
53 |
-
*/
|
54 |
-
public function buildQuery() {
|
55 |
-
return sprintf( $this->getBaseQuery(),
|
56 |
-
$this->buildSelect(),
|
57 |
-
$this->getTable(),
|
58 |
-
$this->buildWhere(),
|
59 |
-
$this->buildExtras()
|
60 |
-
);
|
61 |
-
}
|
62 |
-
|
63 |
-
/**
|
64 |
-
* @return string
|
65 |
-
*/
|
66 |
-
protected function buildSelect() {
|
67 |
-
$sSubstitute = '*';
|
68 |
-
if ( $this->isCount() ) {
|
69 |
-
$sSubstitute = 'COUNT(*)';
|
70 |
-
}
|
71 |
-
else if ( $this->hasColumnsToSelect() ) {
|
72 |
-
$sSubstitute = implode( ',', $this->getColumnsToSelect() );
|
73 |
-
}
|
74 |
-
return $sSubstitute;
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* @return int
|
79 |
-
*/
|
80 |
-
public function count() {
|
81 |
-
return $this->setIsCount( true )->query();
|
82 |
-
}
|
83 |
-
|
84 |
-
/**
|
85 |
-
* @return ICWP_WPSF_BaseEntryVO|stdClass|null
|
86 |
-
*/
|
87 |
-
public function first() {
|
88 |
-
$aR = $this->query();
|
89 |
-
return empty( $aR ) ? null : array_shift( $aR );
|
90 |
-
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* @return string
|
94 |
-
*/
|
95 |
-
protected function getBaseQuery() {
|
96 |
-
return "SELECT %s FROM `%s` WHERE %s %s";
|
97 |
-
}
|
98 |
-
|
99 |
-
/**
|
100 |
-
* @return array
|
101 |
-
*/
|
102 |
-
public function getColumnsToSelect() {
|
103 |
-
return is_array( $this->aColumnsToSelect ) ? $this->aColumnsToSelect : array();
|
104 |
-
}
|
105 |
-
|
106 |
-
/**
|
107 |
-
* @return string[]
|
108 |
-
*/
|
109 |
-
public function getColumnsDefinition() {
|
110 |
-
return is_array( $this->aColumnsDefinition ) ? $this->aColumnsDefinition : array();
|
111 |
-
}
|
112 |
-
|
113 |
-
/**
|
114 |
-
* @return ICWP_WPSF_BaseEntryVO
|
115 |
-
*/
|
116 |
-
public function getVo() {
|
117 |
-
$sClass = $this->getVoName();
|
118 |
-
if ( !class_exists( $sClass ) ) {
|
119 |
-
require_once( dirname( dirname( __FILE__ ) ).'/VOs/'.$sClass.'.php' );
|
120 |
-
}
|
121 |
-
return new $sClass();
|
122 |
-
}
|
123 |
-
|
124 |
-
/**
|
125 |
-
* @return string
|
126 |
-
*/
|
127 |
-
protected function getVoName() {
|
128 |
-
return 'ICWP_WPSF_BaseEntryVO';
|
129 |
-
}
|
130 |
-
|
131 |
-
/**
|
132 |
-
* @return bool
|
133 |
-
*/
|
134 |
-
protected function hasColumnsToSelect() {
|
135 |
-
return ( count( $this->getColumnsToSelect() ) > 0 );
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* @return bool
|
140 |
-
*/
|
141 |
-
public function isCount() {
|
142 |
-
return (bool)$this->bIsCount;
|
143 |
-
}
|
144 |
-
|
145 |
-
/**
|
146 |
-
* @return stdClass[]|int
|
147 |
-
*/
|
148 |
-
public function query() {
|
149 |
-
return $this->isCount() ? $this->queryCount() : $this->querySelect();
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* @return array
|
154 |
-
*/
|
155 |
-
protected function querySelect() {
|
156 |
-
return [];
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* @return int
|
161 |
-
*/
|
162 |
-
protected function queryCount() {
|
163 |
-
return 0;
|
164 |
-
}
|
165 |
-
|
166 |
-
/**
|
167 |
-
* Verifies the given columns are valid and unique
|
168 |
-
* @param string[] $aColumns
|
169 |
-
* @return $this
|
170 |
-
*/
|
171 |
-
public function setColumnsToSelect( $aColumns ) {
|
172 |
-
if ( is_array( $aColumns ) ) {
|
173 |
-
$aColumns = array_filter( array_map( 'trim', $aColumns ) );
|
174 |
-
$aDef = $this->getColumnsDefinition();
|
175 |
-
if ( !empty( $aDef ) ) {
|
176 |
-
foreach ( $aColumns as $nKey => $sCol ) {
|
177 |
-
if ( !in_array( $sCol, $aDef ) ) {
|
178 |
-
unset( $aColumns[ $nKey ] );
|
179 |
-
}
|
180 |
-
}
|
181 |
-
}
|
182 |
-
$this->aColumnsToSelect = array_unique( $aColumns );
|
183 |
-
}
|
184 |
-
return $this;
|
185 |
-
}
|
186 |
-
|
187 |
-
/**
|
188 |
-
* @param string[] $aColumns
|
189 |
-
* @return $this
|
190 |
-
*/
|
191 |
-
public function setColumnsDefinition( $aColumns ) {
|
192 |
-
$this->aColumnsDefinition = $aColumns;
|
193 |
-
return $this;
|
194 |
-
}
|
195 |
-
|
196 |
-
/**
|
197 |
-
* @param bool $bIsCount
|
198 |
-
* @return $this
|
199 |
-
*/
|
200 |
-
public function setIsCount( $bIsCount ) {
|
201 |
-
$this->bIsCount = $bIsCount;
|
202 |
-
return $this;
|
203 |
-
}
|
204 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/base/update.php
DELETED
@@ -1,60 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_BaseUpdate extends ICWP_WPSF_Query_BaseInsert {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @var array
|
9 |
-
*/
|
10 |
-
protected $aUpdateWheres;
|
11 |
-
|
12 |
-
/**
|
13 |
-
* @return array
|
14 |
-
*/
|
15 |
-
public function getUpdateData() {
|
16 |
-
return $this->getInsertData();
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @return array
|
21 |
-
*/
|
22 |
-
public function getUpdateWheres() {
|
23 |
-
return is_array( $this->aUpdateWheres ) ? $this->aUpdateWheres : array();
|
24 |
-
}
|
25 |
-
|
26 |
-
/**
|
27 |
-
* @param array $aSetData
|
28 |
-
* @return $this
|
29 |
-
*/
|
30 |
-
public function setUpdateData( $aSetData ) {
|
31 |
-
return $this->setInsertData( $aSetData );
|
32 |
-
}
|
33 |
-
|
34 |
-
/**
|
35 |
-
* @param array $aUpdateWheres
|
36 |
-
* @return $this
|
37 |
-
*/
|
38 |
-
public function setUpdateWheres( $aUpdateWheres ) {
|
39 |
-
$this->aUpdateWheres = $aUpdateWheres;
|
40 |
-
return $this;
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* @param int $nId
|
45 |
-
* @return $this
|
46 |
-
*/
|
47 |
-
public function setUpdateId( $nId ) {
|
48 |
-
$this->aUpdateWheres = array( 'id' => $nId );
|
49 |
-
return $this;
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* @param ICWP_WPSF_BaseEntryVO $oEntry
|
54 |
-
* @param array $aUpdateData
|
55 |
-
* @return bool
|
56 |
-
*/
|
57 |
-
public function updateEntry( $oEntry, $aUpdateData = array() ) {
|
58 |
-
return false;
|
59 |
-
}
|
60 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/ips/select.php
DELETED
@@ -1,49 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
/**
|
6 |
-
* @deprecated v7.0.0
|
7 |
-
* Class ICWP_WPSF_Query_Ips_Select
|
8 |
-
*/
|
9 |
-
class ICWP_WPSF_Query_Ips_Select extends ICWP_WPSF_Query_BaseSelect {
|
10 |
-
|
11 |
-
/**
|
12 |
-
* @param string $sIp
|
13 |
-
* @return $this
|
14 |
-
*/
|
15 |
-
public function filterByIp( $sIp ) {
|
16 |
-
return $this;
|
17 |
-
}
|
18 |
-
|
19 |
-
/**
|
20 |
-
* @param string $nLastAccessAfter
|
21 |
-
* @return $this
|
22 |
-
*/
|
23 |
-
public function filterByLastAccessAfter( $nLastAccessAfter ) {
|
24 |
-
return $this;
|
25 |
-
}
|
26 |
-
|
27 |
-
/**
|
28 |
-
* @param string $sList
|
29 |
-
* @return $this
|
30 |
-
*/
|
31 |
-
public function filterByList( $sList ) {
|
32 |
-
return $this;
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* @param string $sList
|
37 |
-
* @return ICWP_WPSF_IpsEntryVO[]
|
38 |
-
*/
|
39 |
-
public function allFromList( $sList ) {
|
40 |
-
return [];
|
41 |
-
}
|
42 |
-
|
43 |
-
/**
|
44 |
-
* @return string
|
45 |
-
*/
|
46 |
-
protected function getVoName() {
|
47 |
-
return 'ICWP_WPSF_IpsEntryVO';
|
48 |
-
}
|
49 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/sessions/delete.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_Sessions_Delete extends ICWP_WPSF_Query_BaseDelete {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @param int $bOlderThan
|
9 |
-
* @return bool
|
10 |
-
*/
|
11 |
-
public function forExpiredLoginAt( $bOlderThan ) {
|
12 |
-
return $this->query();
|
13 |
-
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @param int $bOlderThan
|
17 |
-
* @return bool
|
18 |
-
*/
|
19 |
-
public function forExpiredLoginIdle( $bOlderThan ) {
|
20 |
-
return $this->query();
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @param string $sWpUsername
|
25 |
-
* @return false|int
|
26 |
-
*/
|
27 |
-
public function forUsername( $sWpUsername ) {
|
28 |
-
return $this->query();
|
29 |
-
}
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @return ICWP_WPSF_Query_Sessions_Select
|
33 |
-
*/
|
34 |
-
protected function getSelector() {
|
35 |
-
return ( new ICWP_WPSF_Query_Sessions_Select() )->setTable( $this->getTable() );
|
36 |
-
}
|
37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/sessions/insert.php
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_Sessions_Insert extends ICWP_WPSF_Query_BaseInsert {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @param string $sSessionId
|
9 |
-
* @param string $sUsername
|
10 |
-
* @return bool
|
11 |
-
*/
|
12 |
-
public function create( $sSessionId, $sUsername ) {
|
13 |
-
return $this->query();
|
14 |
-
}
|
15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/sessions/select.php
DELETED
@@ -1,62 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_Sessions_Select extends ICWP_WPSF_Query_BaseSelect {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @return array
|
9 |
-
*/
|
10 |
-
public function all() {
|
11 |
-
return $this->selectForUserSession();
|
12 |
-
}
|
13 |
-
|
14 |
-
/**
|
15 |
-
* @param int $nExpiredBoundary
|
16 |
-
* @return $this
|
17 |
-
*/
|
18 |
-
public function filterByLoginNotExpired( $nExpiredBoundary ) {
|
19 |
-
return $this;
|
20 |
-
}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @param int $nExpiredBoundary
|
24 |
-
* @return $this
|
25 |
-
*/
|
26 |
-
public function filterByLoginNotIdleExpired( $nExpiredBoundary ) {
|
27 |
-
return $this;
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* @param int $sUsername
|
32 |
-
* @return $this
|
33 |
-
*/
|
34 |
-
public function filterByUsername( $sUsername ) {
|
35 |
-
return $this;
|
36 |
-
}
|
37 |
-
|
38 |
-
/**
|
39 |
-
* @param string $sSessionId
|
40 |
-
* @param string $sWpUsername
|
41 |
-
* @return null
|
42 |
-
*/
|
43 |
-
public function retrieveUserSession( $sSessionId, $sWpUsername = '' ) {
|
44 |
-
return null;
|
45 |
-
}
|
46 |
-
|
47 |
-
/**
|
48 |
-
* @param string $sSessionId
|
49 |
-
* @param string $sWpUsername
|
50 |
-
* @return array
|
51 |
-
*/
|
52 |
-
protected function selectForUserSession( $sSessionId = '', $sWpUsername = '' ) {
|
53 |
-
return [];
|
54 |
-
}
|
55 |
-
|
56 |
-
/**
|
57 |
-
* @return string
|
58 |
-
*/
|
59 |
-
protected function getVoName() {
|
60 |
-
return 'ICWP_WPSF_SessionVO';
|
61 |
-
}
|
62 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/sessions/update.php
DELETED
@@ -1,75 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_Sessions_Update extends ICWP_WPSF_Query_BaseUpdate {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @param $oSession
|
9 |
-
* @return bool
|
10 |
-
*/
|
11 |
-
public function startSecurityAdmin( $oSession ) {
|
12 |
-
return $this->updateSession( $oSession, array( 'secadmin_at' => $this->loadRequest()->ts() ) );
|
13 |
-
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @param $oSession
|
17 |
-
* @return bool
|
18 |
-
*/
|
19 |
-
public function terminateSecurityAdmin( $oSession ) {
|
20 |
-
return $this->updateSession( $oSession, array( 'secadmin_at' => 0 ) );
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @param $oSession
|
25 |
-
* @return bool
|
26 |
-
*/
|
27 |
-
public function updateLastActivity( $oSession ) {
|
28 |
-
$oR = $this->loadRequest();
|
29 |
-
return $this->updateSession(
|
30 |
-
$oSession,
|
31 |
-
array(
|
32 |
-
'last_activity_at' => $oR->ts(),
|
33 |
-
'last_activity_uri' => $oR->server( 'REQUEST_URI' )
|
34 |
-
)
|
35 |
-
);
|
36 |
-
}
|
37 |
-
|
38 |
-
/**
|
39 |
-
* @param $oSession
|
40 |
-
* @param int $nExpiresAt
|
41 |
-
* @return bool
|
42 |
-
*/
|
43 |
-
public function updateLoginIntentExpiresAt( $oSession, $nExpiresAt ) {
|
44 |
-
return $this->updateSession(
|
45 |
-
$oSession,
|
46 |
-
array( 'login_intent_expires_at' => (int)$nExpiresAt )
|
47 |
-
);
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* @param $oSession
|
52 |
-
* @return bool
|
53 |
-
*/
|
54 |
-
public function clearLoginIntentCodeEmail( $oSession ) {
|
55 |
-
return $this->setLoginIntentCodeEmail( $oSession, '' );
|
56 |
-
}
|
57 |
-
|
58 |
-
/**
|
59 |
-
* @param $oSession
|
60 |
-
* @param string $sCode
|
61 |
-
* @return bool
|
62 |
-
*/
|
63 |
-
public function setLoginIntentCodeEmail( $oSession, $sCode ) {
|
64 |
-
return $this->updateSession( $oSession, array( 'li_code_email' => (string)$sCode ) );
|
65 |
-
}
|
66 |
-
|
67 |
-
/**
|
68 |
-
* @param $oSession
|
69 |
-
* @param array $aUpdateData
|
70 |
-
* @return bool
|
71 |
-
*/
|
72 |
-
public function updateSession( $oSession, $aUpdateData = array() ) {
|
73 |
-
return parent::updateEntry( $oSession, $aUpdateData );
|
74 |
-
}
|
75 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/traffic/common.php
DELETED
@@ -1,71 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
trait ICWP_WPSF_Query_TrafficEntry_Common {
|
6 |
-
|
7 |
-
/**
|
8 |
-
* Will test whether the Binary IP can be converted back before applying filter.
|
9 |
-
* @param mixed $bBinaryIp - IP has already been converted using inet_pton
|
10 |
-
* @return $this
|
11 |
-
*/
|
12 |
-
public function filterByIp( $bBinaryIp ) {
|
13 |
-
return $this;
|
14 |
-
}
|
15 |
-
|
16 |
-
/**
|
17 |
-
* Will test whether the Binary IP can be converted back before applying filter.
|
18 |
-
* @param mixed $bBinaryIp - IP has already been converted using inet_pton
|
19 |
-
* @return $this
|
20 |
-
*/
|
21 |
-
public function filterByNotIp( $bBinaryIp ) {
|
22 |
-
return $this;
|
23 |
-
}
|
24 |
-
|
25 |
-
/**
|
26 |
-
* @param bool $bIsLoggedIn - true is logged-in, false is not logged-in
|
27 |
-
* @return $this
|
28 |
-
*/
|
29 |
-
public function filterByIsLoggedIn( $bIsLoggedIn ) {
|
30 |
-
return $this;
|
31 |
-
}
|
32 |
-
|
33 |
-
/**
|
34 |
-
* @param bool $bIsTransgression
|
35 |
-
* @return $this
|
36 |
-
*/
|
37 |
-
public function filterByIsTransgression( $bIsTransgression ) {
|
38 |
-
return $this;
|
39 |
-
}
|
40 |
-
|
41 |
-
/**
|
42 |
-
* @param string $sTerm
|
43 |
-
* @return $this
|
44 |
-
*/
|
45 |
-
public function filterByPathContains( $sTerm ) {
|
46 |
-
return $this;
|
47 |
-
}
|
48 |
-
|
49 |
-
/**
|
50 |
-
* @param int $nId
|
51 |
-
* @return $this
|
52 |
-
*/
|
53 |
-
public function filterByUserId( $nId ) {
|
54 |
-
return $this;
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* @param string $sCode
|
59 |
-
* @return $this
|
60 |
-
*/
|
61 |
-
public function filterByResponseCode( $sCode ) {
|
62 |
-
return $this;
|
63 |
-
}
|
64 |
-
|
65 |
-
/**
|
66 |
-
* @return string
|
67 |
-
*/
|
68 |
-
protected function getVoName() {
|
69 |
-
return 'ICWP_WPSF_TallyVO';
|
70 |
-
}
|
71 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/traffic/delete.php
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_TrafficEntry_Delete extends ICWP_WPSF_Query_BaseDelete {
|
6 |
-
|
7 |
-
use ICWP_WPSF_Query_TrafficEntry_Common;
|
8 |
-
|
9 |
-
/**
|
10 |
-
* @return ICWP_WPSF_Query_TrafficEntry_Select
|
11 |
-
*/
|
12 |
-
protected function getSelector() {
|
13 |
-
return ( new ICWP_WPSF_Query_TrafficEntry_Select() )->setTable( $this->getTable() );
|
14 |
-
}
|
15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/query/traffic/insert.php
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_TrafficEntry_Insert extends ICWP_WPSF_Query_BaseInsert {
|
6 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
src/query/traffic/select.php
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
require_once( dirname( dirname( __DIR__ ) ).'/lib/vendor/autoload.php' );
|
4 |
-
|
5 |
-
class ICWP_WPSF_Query_TrafficEntry_Select extends ICWP_WPSF_Query_BaseSelect {
|
6 |
-
|
7 |
-
use ICWP_WPSF_Query_TrafficEntry_Common;
|
8 |
-
|
9 |
-
/**
|
10 |
-
* @return string
|
11 |
-
*/
|
12 |
-
protected function getVoName() {
|
13 |
-
return 'ICWP_WPSF_TrafficEntryVO';
|
14 |
-
}
|
15 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/wizards/plugin.php
CHANGED
@@ -654,7 +654,9 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
|
|
654 |
if ( $bDelete ) {
|
655 |
/** @var ICWP_WPSF_Processor_AuditTrail $oProc */
|
656 |
$oProc = $this->getPluginCon()->getModule( 'audit_trail' )->getProcessor();
|
657 |
-
$oDeleter = $oProc->
|
|
|
|
|
658 |
foreach ( $this->getGdprSearchItems() as $sItem ) {
|
659 |
$oDeleter->reset()
|
660 |
->addWhereSearch( 'wp_username', $sItem )
|
@@ -746,7 +748,8 @@ class ICWP_WPSF_Wizard_Plugin extends ICWP_WPSF_Wizard_BaseWpsf {
|
|
746 |
private function runGdprSearch() {
|
747 |
/** @var ICWP_WPSF_Processor_AuditTrail $oProc */
|
748 |
$oProc = $this->getPluginCon()->getModule( 'audit_trail' )->getProcessor();
|
749 |
-
$oFinder = $oProc->
|
|
|
750 |
->getQuerySelector()
|
751 |
->setResultsAsVo( false );
|
752 |
|
654 |
if ( $bDelete ) {
|
655 |
/** @var ICWP_WPSF_Processor_AuditTrail $oProc */
|
656 |
$oProc = $this->getPluginCon()->getModule( 'audit_trail' )->getProcessor();
|
657 |
+
$oDeleter = $oProc->getSubProAuditor()
|
658 |
+
->getDbHandler()
|
659 |
+
->getQueryDeleter();
|
660 |
foreach ( $this->getGdprSearchItems() as $sItem ) {
|
661 |
$oDeleter->reset()
|
662 |
->addWhereSearch( 'wp_username', $sItem )
|
748 |
private function runGdprSearch() {
|
749 |
/** @var ICWP_WPSF_Processor_AuditTrail $oProc */
|
750 |
$oProc = $this->getPluginCon()->getModule( 'audit_trail' )->getProcessor();
|
751 |
+
$oFinder = $oProc->getSubProAuditor()
|
752 |
+
->getDbHandler()
|
753 |
->getQuerySelector()
|
754 |
->setResultsAsVo( false );
|
755 |
|
templates/twig/snippets/blacklist_die.twig
CHANGED
@@ -4,4 +4,25 @@
|
|
4 |
<li>{{ line }}</li>
|
5 |
{% endfor %}
|
6 |
</ul>
|
7 |
-
<p style="text-align: center;">{{ strings.your_ip }}: <strong>{{ strings.ip }}</strong></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
<li>{{ line }}</li>
|
5 |
{% endfor %}
|
6 |
</ul>
|
7 |
+
<p style="text-align: center;">{{ strings.your_ip }}: <strong>{{ strings.ip }}</strong></p>
|
8 |
+
{% if flags.is_autorecover and flags.is_uau_permitted %}
|
9 |
+
<style>
|
10 |
+
p {
|
11 |
+
margin: 10px 0 !important;
|
12 |
+
}
|
13 |
+
</style>
|
14 |
+
<h5 style="margin: 40px 0 10px">Auto-Unblock Your IP</h5>
|
15 |
+
<p>You can automatically unblock your IP address by clicking the button below.</p>
|
16 |
+
<div style="width: 50%; margin: 20px; border: 1px solid rgba(0,0,0,0.1); padding: 20px 30px 10px;
|
17 |
+
background-color: rgba(0,0,0,0.05);">
|
18 |
+
<form method="post" action="#">
|
19 |
+
{{ strings.gasp_element|raw }}
|
20 |
+
<input type="hidden" name="email" value="" />
|
21 |
+
<input type="hidden" name="ip" value="{{ vars.ip }}" />
|
22 |
+
{% for key,val in vars.nonce %}
|
23 |
+
<input type="hidden" name="{{ key }}" value="{{ val }}" />
|
24 |
+
{% endfor %}
|
25 |
+
<p><button type="submit">Send Unblock Link</button></p>
|
26 |
+
</form>
|
27 |
+
</div>
|
28 |
+
{% endif %}
|
templates/twig/wpadmin_pages/base.twig
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
{% block inline_styles %}
|
2 |
{% endblock %}
|
3 |
|
4 |
-
<div class="container-fluid">
|
5 |
<div id="odp-body-container" class="odp-admin-page {{ classes.page_container|default('') }}">
|
6 |
{% block h1heading %}<h1 style="height: 0; display: none"> </h1>{% endblock %}
|
7 |
<div id="odp-PageContainer">
|
1 |
{% block inline_styles %}
|
2 |
{% endblock %}
|
3 |
|
4 |
+
<div class="container-fluid {{ classes.top_container|default('') }}">
|
5 |
<div id="odp-body-container" class="odp-admin-page {{ classes.page_container|default('') }}">
|
6 |
{% block h1heading %}<h1 style="height: 0; display: none"> </h1>{% endblock %}
|
7 |
<div id="odp-PageContainer">
|
templates/twig/wpadmin_pages/insights_new/base.twig
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
<div class="col-12">
|
8 |
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
9 |
<a class="navbar-brand" href="{{ hrefs.nav_home }}" id="navbar-bannerlogo"
|
10 |
-
|
11 |
> </a>
|
12 |
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup"
|
13 |
aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
|
@@ -21,15 +21,24 @@
|
|
21 |
href="{{ navdata.href }}">{{ navdata.name }}
|
22 |
{% if navdata.active %} <span class="sr-only">(current){% endif %}</a>
|
23 |
{% endfor %}
|
|
|
24 |
</div>
|
25 |
</div>
|
26 |
{#<form class="form-inline">#}
|
27 |
-
|
28 |
-
|
29 |
{#</form>#}
|
30 |
</nav>
|
31 |
</div>
|
32 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
{% endblock %}
|
34 |
|
35 |
{% block page_main %}
|
7 |
<div class="col-12">
|
8 |
<nav class="navbar navbar-expand-lg navbar-light bg-light">
|
9 |
<a class="navbar-brand" href="{{ hrefs.nav_home }}" id="navbar-bannerlogo"
|
10 |
+
style="background-image: url('{{ hrefs.img_banner }}');"
|
11 |
> </a>
|
12 |
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup"
|
13 |
aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
|
21 |
href="{{ navdata.href }}">{{ navdata.name }}
|
22 |
{% if navdata.active %} <span class="sr-only">(current){% endif %}</a>
|
23 |
{% endfor %}
|
24 |
+
<div class="nav-item" id="PluginHeadwayChangelog"></div>
|
25 |
</div>
|
26 |
</div>
|
27 |
{#<form class="form-inline">#}
|
28 |
+
{#<input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">#}
|
29 |
+
{#<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>#}
|
30 |
{#</form>#}
|
31 |
</nav>
|
32 |
</div>
|
33 |
</div>
|
34 |
+
|
35 |
+
<script>
|
36 |
+
var HW_config = {
|
37 |
+
selector: "#PluginHeadwayChangelog", // CSS selector where to inject the badge
|
38 |
+
account: "{{ vars.changelog_id }}"
|
39 |
+
}
|
40 |
+
</script>
|
41 |
+
<script async src="https://cdn.headwayapp.co/widget.js"></script>
|
42 |
{% endblock %}
|
43 |
|
44 |
{% block page_main %}
|
templates/twig/wpadmin_pages/insights_new/{traffic/traffic_unavailable.twig → common/feature_unavailable.twig}
RENAMED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="card">
|
2 |
<div class="card-header">
|
3 |
-
<h5 class="card-title m-0">
|
4 |
</div>
|
5 |
<div class="card-body p-0">
|
6 |
<div class="row">
|
@@ -8,7 +8,7 @@
|
|
8 |
<div class="alert alert-warning m-0">
|
9 |
<h6 class="alert-heading">{{ strings.not_available }}</h6>
|
10 |
<p class="mb-0">
|
11 |
-
<a href="{{ hrefs.go_pro }}" target="_blank"class="alert-link">{{ strings.please_upgrade }} ↗</a>
|
12 |
</p>
|
13 |
</div>
|
14 |
</div>
|
1 |
<div class="card">
|
2 |
<div class="card-header">
|
3 |
+
<h5 class="card-title m-0">Feature Unavailable</h5>
|
4 |
</div>
|
5 |
<div class="card-body p-0">
|
6 |
<div class="row">
|
8 |
<div class="alert alert-warning m-0">
|
9 |
<h6 class="alert-heading">{{ strings.not_available }}</h6>
|
10 |
<p class="mb-0">
|
11 |
+
<a href="{{ hrefs.go_pro }}" target="_blank" class="alert-link">{{ strings.please_upgrade }} ↗</a>
|
12 |
</p>
|
13 |
</div>
|
14 |
</div>
|
templates/twig/wpadmin_pages/insights_new/importexport/from_file.twig
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="row" id="SectionImportExportFile">
|
2 |
+
|
3 |
+
<div class="col-12">
|
4 |
+
<div class="insights_widget card">
|
5 |
+
<div class="card-header">
|
6 |
+
<h5 class="card-title">Import Options From File</h5>
|
7 |
+
<h6 class="card-subtitle text-muted">Supply a previously exported options file</h6>
|
8 |
+
</div>
|
9 |
+
<div class="card-body p-4">
|
10 |
+
<form id="ImportExportFileForm" autocomplete="off" method="post"
|
11 |
+
action="{{ vars.form_action }}" enctype="multipart/form-data">
|
12 |
+
{% for input_name,input_value in vars.form_nonce %}
|
13 |
+
<input type="hidden" name="{{ input_name }}" value="{{ input_value }}" />
|
14 |
+
{% endfor %}
|
15 |
+
<div class="form-group">
|
16 |
+
<label for="ImportFile">Select Options Import File</label>
|
17 |
+
<input name="import_file" type="file" class="form-control-file" id="ImportFile">
|
18 |
+
</div>
|
19 |
+
<div class="form-group">
|
20 |
+
<label for="_confirm_file" class="col-form-label">
|
21 |
+
<input type="checkbox" class="form-control text-right"
|
22 |
+
name="confirm" id="_confirm_file" value="Y" />
|
23 |
+
Yes, I Understand Existing Options Will Be Overwritten
|
24 |
+
<br />
|
25 |
+
<small class="form-text text-muted">
|
26 |
+
Please be sure that this is what you intend - it can't be undone.
|
27 |
+
</small>
|
28 |
+
</label>
|
29 |
+
</div>
|
30 |
+
<div class="form-group text-right">
|
31 |
+
<input id="SubmitForm" href="#" class="btn btn-primary" type="submit"
|
32 |
+
value="Import Options From File" />
|
33 |
+
</div>
|
34 |
+
</form>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</div>
|
38 |
+
|
39 |
+
<div class="col-12 insights_section">
|
40 |
+
<div class="insights_widget card">
|
41 |
+
<div class="card-header">
|
42 |
+
<h5 class="card-title">Download Export File</h5>
|
43 |
+
<h6 class="card-subtitle text-muted">Use this file on another site to import options</h6>
|
44 |
+
</div>
|
45 |
+
<div class="card-body p-4">
|
46 |
+
<div class="" id="">
|
47 |
+
<div class="form-group text-right">
|
48 |
+
<a id="ExportDownload" href="{{ hrefs.export_file_download }}"
|
49 |
+
class="btn btn-primary" type="submit">Download Options Export File</a>
|
50 |
+
</div>
|
51 |
+
</div>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
|
56 |
+
</div>
|
57 |
+
|
58 |
+
<script>
|
59 |
+
jQuery( document ).ready( function () {
|
60 |
+
jQuery( document ).on( "click", "a#ExportDownload", function () {
|
61 |
+
event.preventDefault();
|
62 |
+
jQuery.fileDownload( jQuery( this ).attr( 'href' ), {
|
63 |
+
preparingMessageHtml: "Downloading file, please wait...",
|
64 |
+
failMessageHtml: "There was a problem downloading the file."
|
65 |
+
} );
|
66 |
+
return false;
|
67 |
+
} );
|
68 |
+
} );
|
69 |
+
</script>
|
templates/twig/wpadmin_pages/insights_new/importexport/from_site.twig
ADDED
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="row" id="SectionImportExportFile">
|
2 |
+
|
3 |
+
<div class="col-12">
|
4 |
+
<div class="insights_widget card">
|
5 |
+
<div class="card-header">
|
6 |
+
<h5 class="card-title">Import From Site</h5>
|
7 |
+
<h6 class="card-subtitle text-muted">Import options from another site</h6>
|
8 |
+
</div>
|
9 |
+
<div class="card-body p-4">
|
10 |
+
<form id="ImportSiteForm" class="form-horizontal icwp-wizard-form">
|
11 |
+
<input name="wizard-step" value="import" type="hidden" />
|
12 |
+
|
13 |
+
<div class="form-group">
|
14 |
+
<label class="col-form-label" for="MasterSiteUrl">Master Site URL</label>
|
15 |
+
<div class="">
|
16 |
+
<input type="url" class="form-control"
|
17 |
+
name="MasterSiteUrl" id="MasterSiteUrl" placeholder="https://www...">
|
18 |
+
<span id="helpBlock"
|
19 |
+
class="form-text text-muted">Remember to include <code>http://</code> or <code>https://</code>.</span>
|
20 |
+
</div>
|
21 |
+
</div>
|
22 |
+
|
23 |
+
<div class="form-group">
|
24 |
+
<label class="col-form-label" for="MasterSiteSecretKey">Master Site Secret Key</label>
|
25 |
+
<div class="">
|
26 |
+
<input type="text" class="form-control" maxlength="40" minlength="40" autocomplete="off"
|
27 |
+
name="MasterSiteSecretKey" id="MasterSiteSecretKey" placeholder="Secret Key">
|
28 |
+
<span id="helpBlock" class="form-text text-muted">
|
29 |
+
The secret key can be found under<br />
|
30 |
+
Shield Security > Settings > Import/Export > Secret Key</span>
|
31 |
+
</div>
|
32 |
+
</div>
|
33 |
+
|
34 |
+
<div class="form-group">
|
35 |
+
|
36 |
+
<label class="col-form-label" for="ShieldNetwork">Create Shield Network</label>
|
37 |
+
<div class="form-check">
|
38 |
+
<div>
|
39 |
+
<input class="form-check-input" type="radio"
|
40 |
+
name="ShieldNetwork" id="ShieldNetworkOn" value="Y">
|
41 |
+
<label class="form-check-label" for="ShieldNetworkOn">Turn On</label>
|
42 |
+
</div>
|
43 |
+
<div>
|
44 |
+
<input class="form-check-input" type="radio"
|
45 |
+
name="ShieldNetwork" id="ShieldNetworkOff" value="N">
|
46 |
+
<label class="form-check-label" for="ShieldNetworkOff">Turn Off</label>
|
47 |
+
</div>
|
48 |
+
<div>
|
49 |
+
<input class="form-check-input" type="radio" aria-selected="true" checked="checked"
|
50 |
+
name="ShieldNetwork" id="ShieldNetworkNoChange" value="NC">
|
51 |
+
<label class="form-check-label" for="ShieldNetworkNoChange">No Change</label>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
<p id="helpBlock" class="form-text text-muted">
|
55 |
+
Checking this option on will link this site to Master site. Options will be
|
56 |
+
automatically imported from the Master site each night.
|
57 |
+
When you adjust options on the Master site,
|
58 |
+
they will be reflected in this site after the automatic import.
|
59 |
+
</p>
|
60 |
+
</div>
|
61 |
+
|
62 |
+
<div class="form-group">
|
63 |
+
<label for="_confirm_site" class="col-form-label">
|
64 |
+
<input type="checkbox" class="form-control text-right"
|
65 |
+
name="confirm" id="_confirm_site" value="Y" />
|
66 |
+
Yes, I Understand Existing Options Will Be Overwritten
|
67 |
+
<br />
|
68 |
+
<small class="form-text text-muted">
|
69 |
+
Please be sure that this is what you intend - it can't be undone.
|
70 |
+
</small>
|
71 |
+
</label>
|
72 |
+
</div>
|
73 |
+
|
74 |
+
<div class="form-group text-right">
|
75 |
+
<div class="">
|
76 |
+
<button type="submit" class="btn btn-primary">Run Options Import</button>
|
77 |
+
</div>
|
78 |
+
</div>
|
79 |
+
|
80 |
+
</form>
|
81 |
+
</div>
|
82 |
+
</div>
|
83 |
+
</div>
|
84 |
+
|
85 |
+
</div>
|
86 |
+
|
87 |
+
<script>
|
88 |
+
jQuery( document ).ready( function () {
|
89 |
+
jQuery( 'form#ImportSiteForm' ).icwpWpsfImportExport(
|
90 |
+
{
|
91 |
+
'ajax_import_from_site':{{ ajax.import_from_site|raw }}
|
92 |
+
}
|
93 |
+
);
|
94 |
+
} );
|
95 |
+
</script>
|
templates/twig/wpadmin_pages/insights_new/importexport/index.twig
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{% extends '/wpadmin_pages/insights_new/base.twig' %}
|
2 |
+
|
3 |
+
{% block page_main %}
|
4 |
+
<div class="row">
|
5 |
+
{% if flags.can_importexport %}
|
6 |
+
<div class="col-md-6 insights_section">
|
7 |
+
{% include '/wpadmin_pages/insights_new/importexport/from_file.twig' %}
|
8 |
+
</div>
|
9 |
+
<div class="col-md-6 insights_section">
|
10 |
+
{% include '/wpadmin_pages/insights_new/importexport/from_site.twig' %}
|
11 |
+
</div>
|
12 |
+
{% else %}
|
13 |
+
<div class="col-12 insights_section">
|
14 |
+
{% include '/wpadmin_pages/insights_new/common/feature_unavailable.twig' %}
|
15 |
+
</div>
|
16 |
+
{% endif %}
|
17 |
+
</div>
|
18 |
+
{% endblock %}
|
templates/twig/wpadmin_pages/insights_new/notes/admin_notes.twig
CHANGED
@@ -11,11 +11,11 @@
|
|
11 |
<div class="input-group-text" style="border-radius: 0">New Note:</div>
|
12 |
</div>
|
13 |
<input class="form-control" id="AdminNote" name="admin_note" type="text"
|
14 |
-
placeholder="{% if flags.
|
15 |
/>
|
16 |
<div class="input-group-append">
|
17 |
<button type="submit" class="btn btn-info action insert" style="border-radius: 0;" name="subbutt"
|
18 |
-
{% if not flags.
|
19 |
>Add Note</button>
|
20 |
</div>
|
21 |
</div>
|
11 |
<div class="input-group-text" style="border-radius: 0">New Note:</div>
|
12 |
</div>
|
13 |
<input class="form-control" id="AdminNote" name="admin_note" type="text"
|
14 |
+
placeholder="{% if flags.can_adminnotes %}Enter new note here{% else %}Sorry, Admin Notes is a Pro-only feature{% endif %}"
|
15 |
/>
|
16 |
<div class="input-group-append">
|
17 |
<button type="submit" class="btn btn-info action insert" style="border-radius: 0;" name="subbutt"
|
18 |
+
{% if not flags.can_adminnotes %}disabled="disabled"{% endif %}
|
19 |
>Add Note</button>
|
20 |
</div>
|
21 |
</div>
|
templates/twig/wpadmin_pages/insights_new/notes/index.twig
CHANGED
@@ -2,8 +2,14 @@
|
|
2 |
|
3 |
{% block page_main %}
|
4 |
<div class="row">
|
5 |
-
|
|
|
6 |
{% include '/wpadmin_pages/insights_new/notes/admin_notes.twig' %}
|
7 |
-
|
|
|
|
|
|
|
|
|
|
|
8 |
</div>
|
9 |
{% endblock %}
|
2 |
|
3 |
{% block page_main %}
|
4 |
<div class="row">
|
5 |
+
{% if flags.can_adminnotes %}
|
6 |
+
<div class="col-12 insights_section">
|
7 |
{% include '/wpadmin_pages/insights_new/notes/admin_notes.twig' %}
|
8 |
+
</div>
|
9 |
+
{% else %}
|
10 |
+
<div class="col-12 insights_section">
|
11 |
+
{% include '/wpadmin_pages/insights_new/common/feature_unavailable.twig' %}
|
12 |
+
</div>
|
13 |
+
{% endif %}
|
14 |
</div>
|
15 |
{% endblock %}
|
templates/twig/wpadmin_pages/insights_new/scans/results/apc.twig
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="row insights_widget" id="SectionScanResultsApc">
|
2 |
+
<div class="col-12">
|
3 |
+
<div class="card card-scan_results">
|
4 |
+
|
5 |
+
<div class="card-header">
|
6 |
+
<h5 class="card-title">Abandoned Plugin Check</h5>
|
7 |
+
<h6 class="card-subtitle text-muted">
|
8 |
+
Discover plugins that may have been abandoned by their authors
|
9 |
+
</h6>
|
10 |
+
</div>
|
11 |
+
|
12 |
+
<div class="card-body">
|
13 |
+
|
14 |
+
{% if scan.flags.is_available %}
|
15 |
+
|
16 |
+
{% if scan.flags.is_enabled %}
|
17 |
+
|
18 |
+
{% if not scan.flags.has_items %}
|
19 |
+
<div class="alert alert-info m-0">No items discovered</div>
|
20 |
+
{% else %}
|
21 |
+
<div id="TableScanApc" class="container-scantable"></div>
|
22 |
+
{% endif %}
|
23 |
+
|
24 |
+
{% else %}
|
25 |
+
{% include '/wpadmin_pages/insights_new/scans/results/'~scankey~'_disabled.twig' %}
|
26 |
+
{% endif %}
|
27 |
+
|
28 |
+
{% else %}
|
29 |
+
{% include '/wpadmin_pages/insights_new/scans/results/common_unavailable.twig' %}
|
30 |
+
{% endif %}
|
31 |
+
|
32 |
+
</div>
|
33 |
+
|
34 |
+
<div class="card-footer">
|
35 |
+
<div class="row">
|
36 |
+
<div class="col-sm-6">
|
37 |
+
{% if scan.flags.has_last_scan %}
|
38 |
+
{{ scan.vars.last_scan_at }}
|
39 |
+
{% else %}
|
40 |
+
{{ strings.never }}
|
41 |
+
{% endif %}
|
42 |
+
</div>
|
43 |
+
<div class="col-sm-6 text-right">
|
44 |
+
<a href="{{ scan.hrefs.options }}"
|
45 |
+
class="btn btn-sm btn-outline-dark">{{ strings.options }} →</a>
|
46 |
+
</div>
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
|
50 |
+
</div>
|
51 |
+
</div>
|
52 |
+
</div>
|
53 |
+
<script>
|
54 |
+
var $oTableScanApc = jQuery( '#TableScanApc' ).icwpWpsfAjaxTable(
|
55 |
+
{
|
56 |
+
'ajax_render':{{ ajax.render_table_scan|raw }},
|
57 |
+
'req_params': {
|
58 |
+
'fScan': 'apc'
|
59 |
+
}
|
60 |
+
}
|
61 |
+
);
|
62 |
+
jQuery( '#SectionScanResultsApc' ).icwpWpsfTableActions(
|
63 |
+
{
|
64 |
+
'table': $oTableScanApc,
|
65 |
+
'ajax_bulk_action':{{ ajax.bulk_action|raw }},
|
66 |
+
'ajax_item_ignore':{{ ajax.item_ignore|raw }},
|
67 |
+
'req_params': {
|
68 |
+
'fScan': 'apc'
|
69 |
+
}
|
70 |
+
}
|
71 |
+
);
|
72 |
+
</script>
|
templates/twig/wpadmin_pages/insights_new/scans/results/ptg.twig
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="row insights_widget" id="SectionScanResultsPtg">
|
2 |
<div class="col-12">
|
3 |
-
<div class="card card-scan_results
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Plugin / Theme Modifications</h5>
|
1 |
<div class="row insights_widget" id="SectionScanResultsPtg">
|
2 |
<div class="col-12">
|
3 |
+
<div class="card card-scan_results">
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Plugin / Theme Modifications</h5>
|
templates/twig/wpadmin_pages/insights_new/scans/results/ufc.twig
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="row insights_widget" id="SectionScanResultsUfc">
|
2 |
<div class="col-12">
|
3 |
-
<div class="card card-scan_results
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Unrecognised Core Files</h5>
|
1 |
<div class="row insights_widget" id="SectionScanResultsUfc">
|
2 |
<div class="col-12">
|
3 |
+
<div class="card card-scan_results">
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Unrecognised Core Files</h5>
|
templates/twig/wpadmin_pages/insights_new/scans/results/wcf.twig
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="row insights_widget" id="SectionScanResultsWcf">
|
2 |
<div class="col-12">
|
3 |
-
<div class="card card-scan_results
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">WordPress Core File Integrity</h5>
|
1 |
<div class="row insights_widget" id="SectionScanResultsWcf">
|
2 |
<div class="col-12">
|
3 |
+
<div class="card card-scan_results">
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">WordPress Core File Integrity</h5>
|
templates/twig/wpadmin_pages/insights_new/scans/results/wpv.twig
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="row insights_widget" id="SectionScanResultsWpv">
|
2 |
<div class="col-12">
|
3 |
-
<div class="card card-scan_results
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Plugin / Theme Vulnerabilities</h5>
|
1 |
<div class="row insights_widget" id="SectionScanResultsWpv">
|
2 |
<div class="col-12">
|
3 |
+
<div class="card card-scan_results">
|
4 |
|
5 |
<div class="card-header">
|
6 |
<h5 class="card-title">Plugin / Theme Vulnerabilities</h5>
|
templates/twig/wpadmin_pages/insights_new/scans/results/wpv_unavailable.twig
DELETED
@@ -1,11 +0,0 @@
|
|
1 |
-
<div class="row">
|
2 |
-
<div class="col-12">
|
3 |
-
<div class="alert alert-warning m-0">
|
4 |
-
<h6 class="alert-heading">{{ strings.not_available }}</h6>
|
5 |
-
<p>{{ strings.please_upgrade }}</p>
|
6 |
-
<p class="mb-0">
|
7 |
-
<a href="{{ hrefs.go_pro }}" target="_blank"class="alert-link">{{ strings.please_upgrade }} ↗</a>
|
8 |
-
</p>
|
9 |
-
</div>
|
10 |
-
</div>
|
11 |
-
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
templates/twig/wpadmin_pages/insights_new/scans/scan_areas.twig
CHANGED
@@ -1,9 +1,15 @@
|
|
1 |
<form id="StartScans">
|
2 |
<div class="card">
|
3 |
<div class="card-header">
|
4 |
-
<h5 class="card-title mb-0">
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
</div>
|
6 |
-
<div class="card-body pb-2">
|
7 |
|
8 |
<div class="row">
|
9 |
<div class="col-12">
|
@@ -14,7 +20,7 @@
|
|
14 |
<div class="scan-select pl-2 text-nowrap">
|
15 |
<label for="_wcf" class="col-form-label">
|
16 |
<input type="checkbox" class="form-control text-right"
|
17 |
-
name="wcf" id="_wcf" value="Y" />
|
18 |
WordPress Core Files
|
19 |
<br />
|
20 |
<small class="form-text text-muted">
|
@@ -28,7 +34,7 @@
|
|
28 |
<div class="scan-select pl-2 text-nowrap">
|
29 |
<label for="_ufc" class="col-form-label">
|
30 |
<input type="checkbox" class="form-control text-right"
|
31 |
-
name="ufc" id="_ufc" value="Y" />
|
32 |
Unrecognised Core Files
|
33 |
<br />
|
34 |
<small class="form-text text-muted">
|
@@ -45,7 +51,7 @@
|
|
45 |
{% if not scans.ptg.flags.is_enabled %}
|
46 |
disabled="disabled"
|
47 |
{% endif %}
|
48 |
-
name="ptg" id="_ptg" value="Y" />
|
49 |
Plugin / Theme Modifications
|
50 |
<br />
|
51 |
<small class="form-text text-muted">
|
@@ -67,7 +73,7 @@
|
|
67 |
{% if not scans.wpv.flags.is_enabled %}
|
68 |
disabled="disabled"
|
69 |
{% endif %}
|
70 |
-
name="wpv" id="_wpv" value="Y" />
|
71 |
Plugin / Theme Vulnerabilities
|
72 |
<br />
|
73 |
<small class="form-text text-muted">
|
1 |
<form id="StartScans">
|
2 |
<div class="card">
|
3 |
<div class="card-header">
|
4 |
+
<h5 class="card-title mb-0">
|
5 |
+
Scan Your Site
|
6 |
+
<small>
|
7 |
+
<a class="float-right" data-toggle="collapse"
|
8 |
+
href="#Collapse_ScanResults">options ↕</a>
|
9 |
+
</small>
|
10 |
+
</h5>
|
11 |
</div>
|
12 |
+
<div class="card-body pb-2 collapse" id="Collapse_ScanResults">
|
13 |
|
14 |
<div class="row">
|
15 |
<div class="col-12">
|
20 |
<div class="scan-select pl-2 text-nowrap">
|
21 |
<label for="_wcf" class="col-form-label">
|
22 |
<input type="checkbox" class="form-control text-right"
|
23 |
+
name="wcf" id="_wcf" value="Y" checked="checked" aria-selected="true" />
|
24 |
WordPress Core Files
|
25 |
<br />
|
26 |
<small class="form-text text-muted">
|
34 |
<div class="scan-select pl-2 text-nowrap">
|
35 |
<label for="_ufc" class="col-form-label">
|
36 |
<input type="checkbox" class="form-control text-right"
|
37 |
+
name="ufc" id="_ufc" value="Y" checked="checked" aria-selected="true" />
|
38 |
Unrecognised Core Files
|
39 |
<br />
|
40 |
<small class="form-text text-muted">
|
51 |
{% if not scans.ptg.flags.is_enabled %}
|
52 |
disabled="disabled"
|
53 |
{% endif %}
|
54 |
+
name="ptg" id="_ptg" value="Y" checked="checked" aria-selected="true" />
|
55 |
Plugin / Theme Modifications
|
56 |
<br />
|
57 |
<small class="form-text text-muted">
|
73 |
{% if not scans.wpv.flags.is_enabled %}
|
74 |
disabled="disabled"
|
75 |
{% endif %}
|
76 |
+
name="wpv" id="_wpv" value="Y" checked="checked" aria-selected="true" />
|
77 |
Plugin / Theme Vulnerabilities
|
78 |
<br />
|
79 |
<small class="form-text text-muted">
|
templates/twig/wpadmin_pages/insights_new/scans/scan_results.twig
CHANGED
@@ -1,22 +1,58 @@
|
|
1 |
-
|
2 |
-
{% set scankey = 'wcf' %}
|
3 |
-
{% set scan = attribute(scans, scankey) %}
|
4 |
-
|
5 |
-
{% include '/wpadmin_pages/insights_new/scans/results/wcf.twig' %}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
</div>
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
21 |
</div>
|
22 |
</div>
|
1 |
+
{#<div class="row">#}
|
2 |
+
{#{% set scankey = 'wcf' %}#}
|
3 |
+
{#{% set scan = attribute(scans, scankey) %}#}
|
4 |
+
{#<div class="col-lg-12 col-xl-6">#}
|
5 |
+
{#{% include '/wpadmin_pages/insights_new/scans/results/wcf.twig' %}#}
|
6 |
+
{#</div>#}
|
7 |
+
{#{% set scankey = 'ufc' %}#}
|
8 |
+
{#{% set scan = attribute(scans, scankey) %}#}
|
9 |
+
{#<div class="col-lg-12 col-xl-6">#}
|
10 |
+
{#{% include '/wpadmin_pages/insights_new/scans/results/ufc.twig' %}#}
|
11 |
+
{#</div>#}
|
12 |
+
{#{% set scankey = 'apc' %}#}
|
13 |
+
{#{% set scan = attribute(scans, scankey) %}#}
|
14 |
+
{#<div class="col-lg-12 col-xl-6">#}
|
15 |
+
{#{% include '/wpadmin_pages/insights_new/scans/results/apc.twig' %}#}
|
16 |
+
{#</div>#}
|
17 |
+
{#{% set scankey = 'ptg' %}#}
|
18 |
+
{#{% set scan = attribute(scans, scankey) %}#}
|
19 |
+
{#<div class="col-12">#}
|
20 |
+
{#{% include '/wpadmin_pages/insights_new/scans/results/ptg.twig' %}#}
|
21 |
+
{#</div>#}
|
22 |
+
{#{% set scankey = 'wpv' %}#}
|
23 |
+
{#{% set scan = attribute(scans, scankey) %}#}
|
24 |
+
{#<div class="col-12">#}
|
25 |
+
{#{% include '/wpadmin_pages/insights_new/scans/results/wpv.twig' %}#}
|
26 |
+
{#</div>#}
|
27 |
+
{#</div>#}
|
28 |
+
<div class="row" id="ScanResultsPills">
|
29 |
+
<div class="col-sm-3 col-md-2">
|
30 |
+
<nav class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
|
31 |
+
{% for scankey,scanvars in scans %}
|
32 |
+
<a class="nav-link " id="v-pills-home-tab" data-toggle="pill" href="#v-pills-{{ scankey }}"
|
33 |
+
role="tab" aria-controls="v-pills-{{ scankey }}" aria-selected="true">
|
34 |
+
<span class="badge badge-{% if scanvars.count > 0 %}danger{% else %}info{% endif %}"
|
35 |
+
>{{ scanvars.count }}</span>
|
36 |
+
{{ scanvars.strings.title }}
|
37 |
+
</a>
|
38 |
+
{% endfor %}
|
39 |
+
</nav>
|
40 |
</div>
|
41 |
+
<div class="col-sm-9 col-md-10">
|
42 |
+
<div class="tab-content" id="v-pills-tabContent">
|
43 |
+
<div class="tab-pane fade show active" id="v-pills-start" role="tabpanel"
|
44 |
+
aria-labelledby="v-pills-home-tab">
|
45 |
+
<span class="alert alert-dark d-inline-block m-3">← Click a scan to see its results.</span>
|
46 |
+
</div>
|
47 |
+
{% for scankey,scanvars in scans %}
|
48 |
+
<div class="tab-pane " id="v-pills-{{ scankey }}" role="tabpanel"
|
49 |
+
aria-labelledby="v-pills-{{ scankey }}-tab">
|
50 |
+
{% set scan = attribute(scans, scankey) %}
|
51 |
+
{% include '/wpadmin_pages/insights_new/scans/results/'~scankey~'.twig' %}
|
52 |
+
</div>
|
53 |
+
{% endfor %}
|
54 |
+
{#<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>#}
|
55 |
+
{#<div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div>#}
|
56 |
+
</div>
|
57 |
</div>
|
58 |
</div>
|
templates/twig/wpadmin_pages/insights_new/traffic/index.twig
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
{% include '/wpadmin_pages/insights_new/traffic/traffic_disabled.twig' %}
|
11 |
{% endif %}
|
12 |
{% else %}
|
13 |
-
{% include '/wpadmin_pages/insights_new/
|
14 |
{% endif %}
|
15 |
</div>
|
16 |
</div>
|
10 |
{% include '/wpadmin_pages/insights_new/traffic/traffic_disabled.twig' %}
|
11 |
{% endif %}
|
12 |
{% else %}
|
13 |
+
{% include '/wpadmin_pages/insights_new/common/feature_unavailable.twig' %}
|
14 |
{% endif %}
|
15 |
</div>
|
16 |
</div>
|